From b0e5d27b06292466da4ca7fe42b7ce94b2967e52 Mon Sep 17 00:00:00 2001
From: Kristina Mazur <kristina.mazur@tum.de>
Date: Fri, 28 Feb 2025 18:23:08 +0100
Subject: [PATCH] Initial open source version

---
 .gitattributes                                |   10 +
 .gitignore                                    |   49 +
 .gitlab-ci.yml                                |   37 +
 .gitlab/issue_templates/Default.md            |   18 +
 .gitlab/issue_templates/bug_report.md         |   22 +
 .../issue_templates/documentation_request.md  |   14 +
 .gitlab/issue_templates/feature_request.md    |   17 +
 .gitlab/issue_templates/testing_request.md    |   24 +
 .gitlab/issue_templates/todo.md               |   16 +
 .gitlab/merge_request_templates/Default.md    |   29 +
 .gitmodules                                   |    7 +
 CMakeLists.txt                                |  130 ++
 CMakePresets.json                             |  124 ++
 CODEOWNERS                                    |   28 +
 LICENSE                                       |  674 ++++++
 README.md                                     |   37 +
 UnicadoLibsConfig.cmake.in                    |   57 +
 UnicadoPythonPackages.cmake.in                |    2 +
 aerodynamics/CMakeLists.txt                   |   46 +
 .../include/aerodynamics/aerodynamics.h       |  221 ++
 aerodynamics/resources.rc                     |   25 +
 aerodynamics/src/aerodynamics.cpp             | 1240 +++++++++++
 aircraftGeometry2/CMakeLists.txt              |  109 +
 .../aircraftGeometry2/airfoil_surface.h       |  170 ++
 .../include/aircraftGeometry2/fuselage.h      |   66 +
 .../aircraftGeometry2/geometry/acxml.h        |  121 ++
 .../aircraftGeometry2/geometry/builder.h      |  208 ++
 .../aircraftGeometry2/geometry/entity3d.h     |  192 ++
 .../aircraftGeometry2/geometry/factory.h      |   81 +
 .../aircraftGeometry2/geometry/section.h      |  291 +++
 .../aircraftGeometry2/geometry/surface.h      |   55 +
 .../include/aircraftGeometry2/hull_surface.h  |   63 +
 .../include/aircraftGeometry2/io/convert.h    |  342 +++
 .../include/aircraftGeometry2/io/dat.h        |   67 +
 .../aircraftGeometry2/processing/measure.h    |  472 +++++
 .../aircraftGeometry2/processing/transform.h  |  396 ++++
 .../pyaircraftgeometry2/__init__.py           |   30 +
 .../pyaircraftgeometry2/pyproject.toml        |   18 +
 aircraftGeometry2/resources.rc                |   26 +
 aircraftGeometry2/src/builder/acxml.cpp       |  646 ++++++
 aircraftGeometry2/src/builder/builder.cpp     |   72 +
 aircraftGeometry2/src/demo.cpp                |  142 ++
 aircraftGeometry2/src/geometry/entity3d.cpp   |   25 +
 aircraftGeometry2/src/geometry/factory.cpp    |   53 +
 aircraftGeometry2/src/geometry/section.cpp    |  196 ++
 aircraftGeometry2/src/geometry/surface.cpp    |   23 +
 aircraftGeometry2/src/io/convert.cpp          |  480 +++++
 aircraftGeometry2/src/io/dat.cpp              |  141 ++
 aircraftGeometry2/src/processing/measure.cpp  | 1104 ++++++++++
 .../src/processing/transform.cpp              |  533 +++++
 .../src/py_aircraft_geometry.cpp              |  599 ++++++
 aircraftGeometry2/test/CMakeLists.txt         |   66 +
 .../test/geometry/test_builder.cpp            |  264 +++
 .../test/geometry/test_entity3d.cpp           |   88 +
 .../test/geometry/test_section.cpp            |  515 +++++
 .../test/geometry/test_surface.cpp            |   67 +
 aircraftGeometry2/test/io/test_convert.cpp    |  445 ++++
 aircraftGeometry2/test/io/test_dat.cpp        |  186 ++
 .../test/processing/test_measure.cpp          | 1107 ++++++++++
 .../test/processing/test_transform.cpp        |  935 ++++++++
 .../test/stubs/acxml-v2/fuselage.xml          |   47 +
 .../test/stubs/acxml-v2/nacelle.xml           |   48 +
 .../test/stubs/acxml-v2/pylon.xml             |   37 +
 .../test/stubs/acxml-v2/wing.xml              |   77 +
 .../test/stubs/acxml-v3/fuselage.xml          |  169 ++
 .../test/stubs/acxml-v3/nacelle.xml           |  126 ++
 .../test/stubs/acxml-v3/pylon.xml             |  128 ++
 .../test/stubs/acxml-v3/wing.xml              |  291 +++
 .../test/stubs/dat-files/F15_12.dat           |  160 ++
 .../test/stubs/dat-files/circle-comma.dat     |   43 +
 .../test/stubs/dat-files/circle-semicolon.dat |   43 +
 .../test/stubs/dat-files/circle-tab.dat       |   43 +
 .../test/stubs/dat-files/n0012-tab.dat        |  204 ++
 .../stubs/dat-files/n0012-wrong-direction.dat |  204 ++
 .../stubs/dat-files/n0012-wrong-origin.dat    |  204 ++
 .../test/test_airfoil_surface.cpp             |  394 ++++
 aircraftGeometry2/test/test_fuselage.cpp      |  292 +++
 aircraftGeometry2/test/test_nacelle.cpp       |  182 ++
 aircraftGeometry2/test/test_pylon.cpp         |  292 +++
 airfoils/CMakeLists.txt                       |   64 +
 airfoils/F15/F15_11.dat                       |  160 ++
 airfoils/F15/F15_12.dat                       |  160 ++
 airfoils/F15/F15_15.dat                       |  160 ++
 airfoils/NACA/n0012.dat                       |  204 ++
 airfoils/include/airfoils/airfoils.h          |   93 +
 airfoils/src/airfoils.cpp                     |  105 +
 airfoils/src/demo.cpp                         |   37 +
 airfoils/test/CMakeLists.txt                  |   51 +
 airfoils/test/test_airfoil_directory/F15.dat  |  160 ++
 .../test_airfoil_directory/F15_failure.dat    |    0
 .../test/test_airfoil_directory/n0012.dat     |  204 ++
 .../naca0012_failure.dat                      |    0
 airfoils/test/test_airfoils.cpp               |   98 +
 .../test/test_copy_directory/F15_failure.dat  |    0
 aixml/CMakeLists.txt                          |   82 +
 aixml/include/aixml/endnode.h                 |  856 ++++++++
 aixml/include/aixml/node.h                    |  424 ++++
 aixml/pyaixml/pyaixml/__init__.py             |   31 +
 aixml/pyaixml/pyproject.toml                  |   18 +
 aixml/resources.rc                            |   26 +
 aixml/src/main.cpp                            |   54 +
 aixml/src/node.cpp                            | 1066 ++++++++++
 aixml/src/py_aixml.cpp                        |  178 ++
 aixml/src/tinystr.cpp                         |  111 +
 aixml/src/tinystr.h                           |  302 +++
 aixml/src/tinyxml.cpp                         | 1886 +++++++++++++++++
 aixml/src/tinyxml.h                           | 1806 ++++++++++++++++
 aixml/src/tinyxmlerror.cpp                    |   52 +
 aixml/src/tinyxmlparser.cpp                   | 1635 ++++++++++++++
 aixml/test/CMakeLists.txt                     |   51 +
 aixml/test/stubs/endnode.xml                  |   18 +
 aixml/test/stubs/simple.xml                   |    4 +
 aixml/test/test_aixml.cpp                     | 1031 +++++++++
 atmosphere/CMakeLists.txt                     |   41 +
 atmosphere/include/atmosphere/atmosphere.h    |  185 ++
 atmosphere/resources.rc                       |   26 +
 atmosphere/src/atmosphere.cpp                 |   68 +
 blackboxTest/CMakeLists.txt                   |   45 +
 .../include/blackboxTest/module_test.h        |  530 +++++
 coordinateSystemConversion/CMakeLists.txt     |   72 +
 .../coordinateBase.h                          |   33 +
 .../coordinateSystemConversionConf.h          |  165 ++
 .../pycoordinatesystemconversion/__init__.py  |   30 +
 .../pyproject.toml                            |   18 +
 coordinateSystemConversion/readMe.txt         |    8 +
 coordinateSystemConversion/resources.rc       |   26 +
 .../src/coordinateSystemConversionConf.cpp    |   69 +
 .../src/py_coordinate_system_conversion.cpp   |  127 ++
 energyCarriers/CMakeLists.txt                 |   71 +
 .../include/energyCarriers/energyCarriers.h   |   54 +
 .../pyenergycarriers/__init__.py              |   30 +
 .../pyenergycarriers/pyproject.toml           |   18 +
 energyCarriers/resources.rc                   |   26 +
 energyCarriers/src/energyCarriers.cpp         |   90 +
 energyCarriers/src/py_energyCarriers.cpp      |   61 +
 energyCarriers/test/CMakeLists.txt            |   49 +
 energyCarriers/test/test_energyCarriers.cpp   |   80 +
 engine/CMakeLists.txt                         |   59 +
 engine/include/engine/engine.h                |  593 ++++++
 engine/include/engine/engine_data.h           |  387 ++++
 engine/include/engine/engine_deck.h           |  164 ++
 engine/resources.rc                           |   26 +
 engine/src/SI_units.cpp                       |  129 ++
 engine/src/SI_units.h                         |   92 +
 engine/src/engine.cpp                         |  841 ++++++++
 engine/src/engine_data.cpp                    |  506 +++++
 engine/src/engine_deck.cpp                    |  556 +++++
 engine/src/parser/csv.cpp                     |  269 +++
 engine/test/CMakeLists.txt                    |   60 +
 engine/test/stubs/V2527-A5/N_limit.csv        |  870 ++++++++
 .../stubs/V2527-A5/St45_total_temperature.csv |  870 ++++++++
 engine/test/stubs/V2527-A5/V2527-A5.xml       |  187 ++
 engine/test/stubs/V2527-A5/V2527-A5_FN.csv    |  870 ++++++++
 .../test/stubs/V2527-A5/V2527-A5_St45_T.csv   |  870 ++++++++
 engine/test/stubs/V2527-A5/V2527-A5_St5_T.csv |  870 ++++++++
 engine/test/stubs/V2527-A5/V2527-A5_W25.csv   |  870 ++++++++
 engine/test/stubs/V2527-A5/V2527-A5_WF.csv    |  870 ++++++++
 engine/test/stubs/V2527-A5/V2527-A5_WFqP3.csv |  870 ++++++++
 .../test/stubs/V2527-A5/V2527-A5_XN_HPC.csv   |  870 ++++++++
 engine/test/stubs/V2527-A5/V2527-A5_sNOx.csv  |  870 ++++++++
 engine/test/stubs/V2527-A5/core_mass_flow.csv |  870 ++++++++
 engine/test/stubs/V2527-A5/fake.csv           |  870 ++++++++
 .../V2527-A5/fraction_fuelflow_to_p3.csv      |  870 ++++++++
 engine/test/stubs/V2527-A5/fuelflow.csv       |  870 ++++++++
 engine/test/stubs/V2527-A5/sNOx.csv           |  870 ++++++++
 .../test/stubs/V2527-A5/temperature_limit.csv |  870 ++++++++
 engine/test/stubs/V2527-A5/thrust.csv         |  870 ++++++++
 .../stubs/V2527-A5/valid_operating_point.csv  |  870 ++++++++
 engine/test/stubs/engine_v3.xml               |  185 ++
 engine/test/stubs/test-engineV2/fuel_flow.csv |  870 ++++++++
 .../stubs/test-engineV2/test-engineV2.xml     |  186 ++
 engine/test/stubs/test-engineV2/thrust.csv    |  870 ++++++++
 engine/test/stubs/value.csv                   |    8 +
 engine/test/test_engine.cpp                   |  846 ++++++++
 engine/test/test_engine_data.cpp              |  169 ++
 engine/test/test_engine_deck.cpp              |  204 ++
 extern/doxygen-awesome-css                    |    1 +
 extern/pybind11                               |    1 +
 liftingLineInterface2/CMakeLists.txt          |   53 +
 .../liftingLineInterface2/liftingLineInput.h  |  128 ++
 .../liftingLineInterface.h                    |  109 +
 .../liftingLineInterface2/liftingLineOutput.h |   81 +
 .../liftingLineInterface2/liftingLinePolar.h  |  152 ++
 .../liftingLineSettings.h                     |  108 +
 .../liftingLineInterface2/liftingLineWing.h   |  167 ++
 liftingLineInterface2/resources.rc            |   26 +
 .../src/liftingLineInput.cpp                  |  308 +++
 .../src/liftingLineInterface.cpp              |  112 +
 .../src/liftingLineOutput.cpp                 |  270 +++
 .../src/liftingLinePolar.cpp                  |   74 +
 .../src/liftingLineSettings.cpp               |  111 +
 liftingLineInterface2/src/liftingLineWing.cpp |  398 ++++
 moduleBasics/CMakeLists.txt                   |   74 +
 moduleBasics/include/moduleBasics/colors.h    |  128 ++
 moduleBasics/include/moduleBasics/html.h      |  273 +++
 .../include/moduleBasics/modeSelector.h       |   63 +
 moduleBasics/include/moduleBasics/module.h    |  244 +++
 moduleBasics/include/moduleBasics/plot.h      |  165 ++
 moduleBasics/include/moduleBasics/report.h    |  176 ++
 moduleBasics/include/moduleBasics/runtimeIO.h |  827 ++++++++
 .../include/moduleBasics/strategySelector.h   |  214 ++
 moduleBasics/include/moduleBasics/svg.h       |  654 ++++++
 moduleBasics/resources.rc                     |   26 +
 moduleBasics/src/plot.cpp                     |  155 ++
 moduleBasics/src/report.cpp                   |  360 ++++
 moduleBasics/test/CMakeLists.txt              |   53 +
 .../test/stubs/control_settings_conf.xml      |   52 +
 .../test/stubs/requirements_exchange_file.xml |  490 +++++
 moduleBasics/test/test_moduleBasics.cpp       |  211 ++
 pymodulepackage/CMakeLists.txt                |    6 +
 pymodulepackage/README.md                     |   31 +
 pymodulepackage/pyproject.toml                |   20 +
 .../src/datapostprocessingmodule.py           |  959 +++++++++
 .../src/datapreprocessingmodule.py            |  801 +++++++
 pymodulepackage/src/runmodule.py              |   74 +
 pymodulepackage/src/runtimeoutputmodule.py    |  143 ++
 runtimeInfo/CMakeLists.txt                    |   44 +
 runtimeInfo/include/runtimeInfo/runtimeInfo.h |  213 ++
 runtimeInfo/resources.rc                      |   26 +
 runtimeInfo/src/runtimeInfo.cpp               |   87 +
 standardFiles/CMakeLists.txt                  |   55 +
 .../include/standardFiles/functions.h         |  604 ++++++
 .../include/standardFiles/typedefs.h          |   91 +
 standardFiles/resources.rc                    |   26 +
 standardFiles/src/functions.cpp               | 1024 +++++++++
 standardFiles/test/CMakeLists.txt             |   52 +
 standardFiles/test/test_standardFiles.cpp     |   80 +
 svl/CMakeLists.txt                            |   31 +
 svl/LICENSE                                   |   23 +
 svl/include/SVLConfig.h                       |   34 +
 svl/include/svl/Basics.h                      |  162 ++
 svl/include/svl/Constants.h                   |   43 +
 svl/include/svl/Mat.h                         |  213 ++
 svl/include/svl/Mat2.h                        |  379 ++++
 svl/include/svl/Mat3.h                        |  224 ++
 svl/include/svl/Mat4.h                        |  189 ++
 svl/include/svl/SVL.h                         |   43 +
 svl/include/svl/SVLgl.h                       |   54 +
 svl/include/svl/Transform.h                   |   41 +
 svl/include/svl/Utils.h                       |   85 +
 svl/include/svl/Vec.h                         |  237 +++
 svl/include/svl/Vec2.h                        |  364 ++++
 svl/include/svl/Vec3.h                        |  414 ++++
 svl/include/svl/Vec4.h                        |  379 ++++
 svl/resources.rc                              |   25 +
 svl/src/Basics.cpp                            |   75 +
 svl/src/LibSVL.cpp                            |   32 +
 svl/src/Mat.cpp                               |  659 ++++++
 svl/src/Mat2.cpp                              |  134 ++
 svl/src/Mat3.cpp                              |  428 ++++
 svl/src/Mat4.cpp                              |  489 +++++
 svl/src/SVLConfigBase.h                       |   31 +
 svl/src/Vec.cpp                               |  542 +++++
 svl/src/Vec2.cpp                              |   65 +
 svl/src/Vec3.cpp                              |   65 +
 svl/src/Vec4.cpp                              |  124 ++
 unitConversion/CMakeLists.txt                 |   54 +
 .../include/unitConversion/constants.h        |  151 ++
 .../include/unitConversion/unitBase.h         |  137 ++
 .../include/unitConversion/unitConversion.h   |  309 +++
 .../unitConversion/unitConversionConf.h       |  818 +++++++
 .../pyunitconversion/pyproject.toml           |   18 +
 .../pyunitconversion/__init__.py              |   30 +
 unitConversion/readMe.txt                     |    8 +
 unitConversion/src/py_unit_conversion.cpp     |  160 ++
 265 files changed, 69990 insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 .gitignore
 create mode 100644 .gitlab-ci.yml
 create mode 100644 .gitlab/issue_templates/Default.md
 create mode 100644 .gitlab/issue_templates/bug_report.md
 create mode 100644 .gitlab/issue_templates/documentation_request.md
 create mode 100644 .gitlab/issue_templates/feature_request.md
 create mode 100644 .gitlab/issue_templates/testing_request.md
 create mode 100644 .gitlab/issue_templates/todo.md
 create mode 100644 .gitlab/merge_request_templates/Default.md
 create mode 100644 .gitmodules
 create mode 100644 CMakeLists.txt
 create mode 100644 CMakePresets.json
 create mode 100644 CODEOWNERS
 create mode 100644 LICENSE
 create mode 100644 README.md
 create mode 100644 UnicadoLibsConfig.cmake.in
 create mode 100644 UnicadoPythonPackages.cmake.in
 create mode 100644 aerodynamics/CMakeLists.txt
 create mode 100644 aerodynamics/include/aerodynamics/aerodynamics.h
 create mode 100644 aerodynamics/resources.rc
 create mode 100644 aerodynamics/src/aerodynamics.cpp
 create mode 100644 aircraftGeometry2/CMakeLists.txt
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/airfoil_surface.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/fuselage.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/geometry/acxml.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/geometry/builder.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/geometry/entity3d.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/geometry/factory.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/geometry/section.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/geometry/surface.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/hull_surface.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/io/convert.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/io/dat.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/processing/measure.h
 create mode 100644 aircraftGeometry2/include/aircraftGeometry2/processing/transform.h
 create mode 100644 aircraftGeometry2/pyaircraftgeometry2/pyaircraftgeometry2/__init__.py
 create mode 100644 aircraftGeometry2/pyaircraftgeometry2/pyproject.toml
 create mode 100644 aircraftGeometry2/resources.rc
 create mode 100644 aircraftGeometry2/src/builder/acxml.cpp
 create mode 100644 aircraftGeometry2/src/builder/builder.cpp
 create mode 100644 aircraftGeometry2/src/demo.cpp
 create mode 100644 aircraftGeometry2/src/geometry/entity3d.cpp
 create mode 100644 aircraftGeometry2/src/geometry/factory.cpp
 create mode 100644 aircraftGeometry2/src/geometry/section.cpp
 create mode 100644 aircraftGeometry2/src/geometry/surface.cpp
 create mode 100644 aircraftGeometry2/src/io/convert.cpp
 create mode 100644 aircraftGeometry2/src/io/dat.cpp
 create mode 100644 aircraftGeometry2/src/processing/measure.cpp
 create mode 100644 aircraftGeometry2/src/processing/transform.cpp
 create mode 100644 aircraftGeometry2/src/py_aircraft_geometry.cpp
 create mode 100644 aircraftGeometry2/test/CMakeLists.txt
 create mode 100644 aircraftGeometry2/test/geometry/test_builder.cpp
 create mode 100644 aircraftGeometry2/test/geometry/test_entity3d.cpp
 create mode 100644 aircraftGeometry2/test/geometry/test_section.cpp
 create mode 100644 aircraftGeometry2/test/geometry/test_surface.cpp
 create mode 100644 aircraftGeometry2/test/io/test_convert.cpp
 create mode 100644 aircraftGeometry2/test/io/test_dat.cpp
 create mode 100644 aircraftGeometry2/test/processing/test_measure.cpp
 create mode 100644 aircraftGeometry2/test/processing/test_transform.cpp
 create mode 100644 aircraftGeometry2/test/stubs/acxml-v2/fuselage.xml
 create mode 100644 aircraftGeometry2/test/stubs/acxml-v2/nacelle.xml
 create mode 100644 aircraftGeometry2/test/stubs/acxml-v2/pylon.xml
 create mode 100644 aircraftGeometry2/test/stubs/acxml-v2/wing.xml
 create mode 100644 aircraftGeometry2/test/stubs/acxml-v3/fuselage.xml
 create mode 100644 aircraftGeometry2/test/stubs/acxml-v3/nacelle.xml
 create mode 100644 aircraftGeometry2/test/stubs/acxml-v3/pylon.xml
 create mode 100644 aircraftGeometry2/test/stubs/acxml-v3/wing.xml
 create mode 100644 aircraftGeometry2/test/stubs/dat-files/F15_12.dat
 create mode 100644 aircraftGeometry2/test/stubs/dat-files/circle-comma.dat
 create mode 100644 aircraftGeometry2/test/stubs/dat-files/circle-semicolon.dat
 create mode 100644 aircraftGeometry2/test/stubs/dat-files/circle-tab.dat
 create mode 100644 aircraftGeometry2/test/stubs/dat-files/n0012-tab.dat
 create mode 100644 aircraftGeometry2/test/stubs/dat-files/n0012-wrong-direction.dat
 create mode 100644 aircraftGeometry2/test/stubs/dat-files/n0012-wrong-origin.dat
 create mode 100644 aircraftGeometry2/test/test_airfoil_surface.cpp
 create mode 100644 aircraftGeometry2/test/test_fuselage.cpp
 create mode 100644 aircraftGeometry2/test/test_nacelle.cpp
 create mode 100644 aircraftGeometry2/test/test_pylon.cpp
 create mode 100644 airfoils/CMakeLists.txt
 create mode 100644 airfoils/F15/F15_11.dat
 create mode 100644 airfoils/F15/F15_12.dat
 create mode 100644 airfoils/F15/F15_15.dat
 create mode 100644 airfoils/NACA/n0012.dat
 create mode 100644 airfoils/include/airfoils/airfoils.h
 create mode 100644 airfoils/src/airfoils.cpp
 create mode 100644 airfoils/src/demo.cpp
 create mode 100644 airfoils/test/CMakeLists.txt
 create mode 100644 airfoils/test/test_airfoil_directory/F15.dat
 create mode 100644 airfoils/test/test_airfoil_directory/F15_failure.dat
 create mode 100644 airfoils/test/test_airfoil_directory/n0012.dat
 create mode 100644 airfoils/test/test_airfoil_directory/naca0012_failure.dat
 create mode 100644 airfoils/test/test_airfoils.cpp
 create mode 100644 airfoils/test/test_copy_directory/F15_failure.dat
 create mode 100644 aixml/CMakeLists.txt
 create mode 100644 aixml/include/aixml/endnode.h
 create mode 100644 aixml/include/aixml/node.h
 create mode 100644 aixml/pyaixml/pyaixml/__init__.py
 create mode 100644 aixml/pyaixml/pyproject.toml
 create mode 100644 aixml/resources.rc
 create mode 100644 aixml/src/main.cpp
 create mode 100644 aixml/src/node.cpp
 create mode 100644 aixml/src/py_aixml.cpp
 create mode 100644 aixml/src/tinystr.cpp
 create mode 100644 aixml/src/tinystr.h
 create mode 100644 aixml/src/tinyxml.cpp
 create mode 100644 aixml/src/tinyxml.h
 create mode 100644 aixml/src/tinyxmlerror.cpp
 create mode 100644 aixml/src/tinyxmlparser.cpp
 create mode 100644 aixml/test/CMakeLists.txt
 create mode 100644 aixml/test/stubs/endnode.xml
 create mode 100644 aixml/test/stubs/simple.xml
 create mode 100644 aixml/test/test_aixml.cpp
 create mode 100644 atmosphere/CMakeLists.txt
 create mode 100644 atmosphere/include/atmosphere/atmosphere.h
 create mode 100644 atmosphere/resources.rc
 create mode 100644 atmosphere/src/atmosphere.cpp
 create mode 100644 blackboxTest/CMakeLists.txt
 create mode 100644 blackboxTest/include/blackboxTest/module_test.h
 create mode 100644 coordinateSystemConversion/CMakeLists.txt
 create mode 100644 coordinateSystemConversion/include/coordinateSystemConversion/coordinateBase.h
 create mode 100644 coordinateSystemConversion/include/coordinateSystemConversion/coordinateSystemConversionConf.h
 create mode 100644 coordinateSystemConversion/pycoordinatesystemconversion/pycoordinatesystemconversion/__init__.py
 create mode 100644 coordinateSystemConversion/pycoordinatesystemconversion/pyproject.toml
 create mode 100644 coordinateSystemConversion/readMe.txt
 create mode 100644 coordinateSystemConversion/resources.rc
 create mode 100644 coordinateSystemConversion/src/coordinateSystemConversionConf.cpp
 create mode 100644 coordinateSystemConversion/src/py_coordinate_system_conversion.cpp
 create mode 100644 energyCarriers/CMakeLists.txt
 create mode 100644 energyCarriers/include/energyCarriers/energyCarriers.h
 create mode 100644 energyCarriers/pyenergycarriers/pyenergycarriers/__init__.py
 create mode 100644 energyCarriers/pyenergycarriers/pyproject.toml
 create mode 100644 energyCarriers/resources.rc
 create mode 100644 energyCarriers/src/energyCarriers.cpp
 create mode 100644 energyCarriers/src/py_energyCarriers.cpp
 create mode 100644 energyCarriers/test/CMakeLists.txt
 create mode 100644 energyCarriers/test/test_energyCarriers.cpp
 create mode 100644 engine/CMakeLists.txt
 create mode 100644 engine/include/engine/engine.h
 create mode 100644 engine/include/engine/engine_data.h
 create mode 100644 engine/include/engine/engine_deck.h
 create mode 100644 engine/resources.rc
 create mode 100644 engine/src/SI_units.cpp
 create mode 100644 engine/src/SI_units.h
 create mode 100644 engine/src/engine.cpp
 create mode 100644 engine/src/engine_data.cpp
 create mode 100644 engine/src/engine_deck.cpp
 create mode 100644 engine/src/parser/csv.cpp
 create mode 100644 engine/test/CMakeLists.txt
 create mode 100644 engine/test/stubs/V2527-A5/N_limit.csv
 create mode 100644 engine/test/stubs/V2527-A5/St45_total_temperature.csv
 create mode 100644 engine/test/stubs/V2527-A5/V2527-A5.xml
 create mode 100644 engine/test/stubs/V2527-A5/V2527-A5_FN.csv
 create mode 100644 engine/test/stubs/V2527-A5/V2527-A5_St45_T.csv
 create mode 100644 engine/test/stubs/V2527-A5/V2527-A5_St5_T.csv
 create mode 100644 engine/test/stubs/V2527-A5/V2527-A5_W25.csv
 create mode 100644 engine/test/stubs/V2527-A5/V2527-A5_WF.csv
 create mode 100644 engine/test/stubs/V2527-A5/V2527-A5_WFqP3.csv
 create mode 100644 engine/test/stubs/V2527-A5/V2527-A5_XN_HPC.csv
 create mode 100644 engine/test/stubs/V2527-A5/V2527-A5_sNOx.csv
 create mode 100644 engine/test/stubs/V2527-A5/core_mass_flow.csv
 create mode 100644 engine/test/stubs/V2527-A5/fake.csv
 create mode 100644 engine/test/stubs/V2527-A5/fraction_fuelflow_to_p3.csv
 create mode 100644 engine/test/stubs/V2527-A5/fuelflow.csv
 create mode 100644 engine/test/stubs/V2527-A5/sNOx.csv
 create mode 100644 engine/test/stubs/V2527-A5/temperature_limit.csv
 create mode 100644 engine/test/stubs/V2527-A5/thrust.csv
 create mode 100644 engine/test/stubs/V2527-A5/valid_operating_point.csv
 create mode 100644 engine/test/stubs/engine_v3.xml
 create mode 100644 engine/test/stubs/test-engineV2/fuel_flow.csv
 create mode 100644 engine/test/stubs/test-engineV2/test-engineV2.xml
 create mode 100644 engine/test/stubs/test-engineV2/thrust.csv
 create mode 100644 engine/test/stubs/value.csv
 create mode 100644 engine/test/test_engine.cpp
 create mode 100644 engine/test/test_engine_data.cpp
 create mode 100644 engine/test/test_engine_deck.cpp
 create mode 160000 extern/doxygen-awesome-css
 create mode 160000 extern/pybind11
 create mode 100644 liftingLineInterface2/CMakeLists.txt
 create mode 100644 liftingLineInterface2/include/liftingLineInterface2/liftingLineInput.h
 create mode 100644 liftingLineInterface2/include/liftingLineInterface2/liftingLineInterface.h
 create mode 100644 liftingLineInterface2/include/liftingLineInterface2/liftingLineOutput.h
 create mode 100644 liftingLineInterface2/include/liftingLineInterface2/liftingLinePolar.h
 create mode 100644 liftingLineInterface2/include/liftingLineInterface2/liftingLineSettings.h
 create mode 100644 liftingLineInterface2/include/liftingLineInterface2/liftingLineWing.h
 create mode 100644 liftingLineInterface2/resources.rc
 create mode 100644 liftingLineInterface2/src/liftingLineInput.cpp
 create mode 100644 liftingLineInterface2/src/liftingLineInterface.cpp
 create mode 100644 liftingLineInterface2/src/liftingLineOutput.cpp
 create mode 100644 liftingLineInterface2/src/liftingLinePolar.cpp
 create mode 100644 liftingLineInterface2/src/liftingLineSettings.cpp
 create mode 100644 liftingLineInterface2/src/liftingLineWing.cpp
 create mode 100644 moduleBasics/CMakeLists.txt
 create mode 100644 moduleBasics/include/moduleBasics/colors.h
 create mode 100644 moduleBasics/include/moduleBasics/html.h
 create mode 100644 moduleBasics/include/moduleBasics/modeSelector.h
 create mode 100644 moduleBasics/include/moduleBasics/module.h
 create mode 100644 moduleBasics/include/moduleBasics/plot.h
 create mode 100644 moduleBasics/include/moduleBasics/report.h
 create mode 100644 moduleBasics/include/moduleBasics/runtimeIO.h
 create mode 100644 moduleBasics/include/moduleBasics/strategySelector.h
 create mode 100644 moduleBasics/include/moduleBasics/svg.h
 create mode 100644 moduleBasics/resources.rc
 create mode 100644 moduleBasics/src/plot.cpp
 create mode 100644 moduleBasics/src/report.cpp
 create mode 100644 moduleBasics/test/CMakeLists.txt
 create mode 100644 moduleBasics/test/stubs/control_settings_conf.xml
 create mode 100644 moduleBasics/test/stubs/requirements_exchange_file.xml
 create mode 100644 moduleBasics/test/test_moduleBasics.cpp
 create mode 100644 pymodulepackage/CMakeLists.txt
 create mode 100644 pymodulepackage/README.md
 create mode 100644 pymodulepackage/pyproject.toml
 create mode 100644 pymodulepackage/src/datapostprocessingmodule.py
 create mode 100644 pymodulepackage/src/datapreprocessingmodule.py
 create mode 100644 pymodulepackage/src/runmodule.py
 create mode 100644 pymodulepackage/src/runtimeoutputmodule.py
 create mode 100644 runtimeInfo/CMakeLists.txt
 create mode 100644 runtimeInfo/include/runtimeInfo/runtimeInfo.h
 create mode 100644 runtimeInfo/resources.rc
 create mode 100644 runtimeInfo/src/runtimeInfo.cpp
 create mode 100644 standardFiles/CMakeLists.txt
 create mode 100644 standardFiles/include/standardFiles/functions.h
 create mode 100644 standardFiles/include/standardFiles/typedefs.h
 create mode 100644 standardFiles/resources.rc
 create mode 100644 standardFiles/src/functions.cpp
 create mode 100644 standardFiles/test/CMakeLists.txt
 create mode 100644 standardFiles/test/test_standardFiles.cpp
 create mode 100644 svl/CMakeLists.txt
 create mode 100644 svl/LICENSE
 create mode 100644 svl/include/SVLConfig.h
 create mode 100644 svl/include/svl/Basics.h
 create mode 100644 svl/include/svl/Constants.h
 create mode 100644 svl/include/svl/Mat.h
 create mode 100644 svl/include/svl/Mat2.h
 create mode 100644 svl/include/svl/Mat3.h
 create mode 100644 svl/include/svl/Mat4.h
 create mode 100644 svl/include/svl/SVL.h
 create mode 100644 svl/include/svl/SVLgl.h
 create mode 100644 svl/include/svl/Transform.h
 create mode 100644 svl/include/svl/Utils.h
 create mode 100644 svl/include/svl/Vec.h
 create mode 100644 svl/include/svl/Vec2.h
 create mode 100644 svl/include/svl/Vec3.h
 create mode 100644 svl/include/svl/Vec4.h
 create mode 100644 svl/resources.rc
 create mode 100644 svl/src/Basics.cpp
 create mode 100644 svl/src/LibSVL.cpp
 create mode 100644 svl/src/Mat.cpp
 create mode 100644 svl/src/Mat2.cpp
 create mode 100644 svl/src/Mat3.cpp
 create mode 100644 svl/src/Mat4.cpp
 create mode 100644 svl/src/SVLConfigBase.h
 create mode 100644 svl/src/Vec.cpp
 create mode 100644 svl/src/Vec2.cpp
 create mode 100644 svl/src/Vec3.cpp
 create mode 100644 svl/src/Vec4.cpp
 create mode 100644 unitConversion/CMakeLists.txt
 create mode 100644 unitConversion/include/unitConversion/constants.h
 create mode 100644 unitConversion/include/unitConversion/unitBase.h
 create mode 100644 unitConversion/include/unitConversion/unitConversion.h
 create mode 100644 unitConversion/include/unitConversion/unitConversionConf.h
 create mode 100644 unitConversion/pyunitconversion/pyproject.toml
 create mode 100644 unitConversion/pyunitconversion/pyunitconversion/__init__.py
 create mode 100644 unitConversion/readMe.txt
 create mode 100644 unitConversion/src/py_unit_conversion.cpp

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..d99bf9f8
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,10 @@
+# Exclude all binaries from the diff
+*.exe binary
+*.dll binary
+*.so binary
+*.a binary
+
+# Exclude image files from the diff
+*.png binary
+*.jpg binary
+*.jpeg binary
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..db66b97d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,49 @@
+# Project specific
+*.layout
+obj/
+
+# IDE Files
+.vscode
+.pdb
+
+# Prerequisites
+*.d
+
+# Compiled Object files
+*.slo
+*.lo
+*.o
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+*.smod
+
+# Compiled Static libraries
+*.lai
+*.la
+*.a
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+
+# CMake 
+build/
+cmake/
+CMakeUserPresets.json
+
+# Pip wheel artefacts
+__pycache__
+*.egg-info/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000..cfc30e8d
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,37 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+# === Configure pipeline ===
+stages:
+  - deploy
+
+# === Trigger the website deployment when new commit to default branch ===
+trigger_documentation:
+  stage: deploy
+  image: alpine:latest
+  tags:
+    - documentation
+  before_script:
+    - apk update && apk add curl
+  script:
+    - "curl --fail --request POST --form token=$TRIGGER_DEPLOY_WEBSITE --form ref=$CI_DEFAULT_BRANCH https://git.rwth-aachen.de/api/v4/projects/87829/trigger/pipeline"
+  rules:
+    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
+      when: on_success
diff --git a/.gitlab/issue_templates/Default.md b/.gitlab/issue_templates/Default.md
new file mode 100644
index 00000000..ed6f8d8c
--- /dev/null
+++ b/.gitlab/issue_templates/Default.md
@@ -0,0 +1,18 @@
+<!-- Title: Provide a concise and descriptive title for the issue incl. tool or library name -->
+
+## Choose Your Issue Template
+Before creating an issue, please review existing issues to avoid duplicates!
+ALso, select the **appropriate type for your issue in the desciption drop-down**. 
+- Bug Report Template
+- Feature Request Template
+- TODO Template
+- Documentation Request Template
+- Testing Request Template
+
+If not suitable, use the sections below and contact the owners.
+
+## Description
+Provide a concise description of the issue.
+
+## Additional Context
+Add screenshots, logs, or relevant information here.
diff --git a/.gitlab/issue_templates/bug_report.md b/.gitlab/issue_templates/bug_report.md
new file mode 100644
index 00000000..b906703d
--- /dev/null
+++ b/.gitlab/issue_templates/bug_report.md
@@ -0,0 +1,22 @@
+<!-- Title: Provide a concise and descriptive title for the issue incl. tool or library name -->
+# Bug Report
+
+## Description
+Describe the bug clearly. What happened?
+
+## Steps to Reproduce
+1. [Step 1]
+2. [Step 2]
+3. [Step 3]
+
+## Expected Behavior
+Explain what you expected to see.
+
+## Environment
+- **OS**: [e.g., Windows 10]
+- **Version/Branch**: [e.g., v1.2.3]
+
+## Additional Context
+Attach any logs, screenshots, or context.
+
+/label ~"type::bug"
diff --git a/.gitlab/issue_templates/documentation_request.md b/.gitlab/issue_templates/documentation_request.md
new file mode 100644
index 00000000..bc94cf6d
--- /dev/null
+++ b/.gitlab/issue_templates/documentation_request.md
@@ -0,0 +1,14 @@
+<!-- Title: Provide a concise and descriptive title for the issue -->
+# Documentation
+
+## Summary
+Explain what documentation is missing.
+
+- **Unicado Version**: vx.x.x 
+- **Page**: page-to-change
+
+## Additional Context
+Attach any logs, screenshots, or context.
+
+/label ~"type::documentation"
+
diff --git a/.gitlab/issue_templates/feature_request.md b/.gitlab/issue_templates/feature_request.md
new file mode 100644
index 00000000..2c12fdb6
--- /dev/null
+++ b/.gitlab/issue_templates/feature_request.md
@@ -0,0 +1,17 @@
+<!-- Title: Provide a concise and descriptive title for the issue incl. tool or library name -->
+# Feature Request
+
+## Summary
+What feature are you requesting?
+
+## Why?
+Explain the problem this feature solves or the value it adds.
+
+## Acceptance Criteria
+- [ ] Define measurable outcomes for success.
+- [ ] List specific requirements.
+
+## Additional Notes
+Include references, examples, or diagrams if applicable.
+
+/label ~"type::feature"
diff --git a/.gitlab/issue_templates/testing_request.md b/.gitlab/issue_templates/testing_request.md
new file mode 100644
index 00000000..0289f4df
--- /dev/null
+++ b/.gitlab/issue_templates/testing_request.md
@@ -0,0 +1,24 @@
+<!-- Title: Provide a concise and descriptive title for the issue incl. tool or library name -->
+# Testing Issue
+
+## Summary
+Provide a brief overview of what should be tested or changed in the test process. Also think about what is the goal of this test? E.g.
+- Verify that [feature/bug fix/module] works as expected.
+- Ensure that [specific requirement] is met.
+
+## Related Issues or Merge Requests
+- Issue(s): #[Issue ID]
+- Merge Request(s): #[Merge Request ID]
+
+## Expected Results
+- [Outcome 1]: [What should happen].
+- [Outcome 2]: [Another expected result].
+
+## Environment
+- **OS**: [e.g., Windows 10]
+- **Version/Branch**: [e.g., v1.2.3]
+
+## Additional Context
+Attach any logs, screenshots, or context.
+
+/label ~"type::testing"
diff --git a/.gitlab/issue_templates/todo.md b/.gitlab/issue_templates/todo.md
new file mode 100644
index 00000000..07bdd0f8
--- /dev/null
+++ b/.gitlab/issue_templates/todo.md
@@ -0,0 +1,16 @@
+<!-- Title: Provide a concise and descriptive title for the issue incl. tool or library name -->
+# TODO
+
+## Summary
+Briefly describe the task. Provide any background information or related issues.
+
+## Subtasks
+- [ ] Step 1
+- [ ] Step 2
+- [ ] Step 3
+
+## Acceptance Criteria
+- [ ] Define measurable outcomes for success.
+- [ ] List specific requirements.
+
+/label ~"type::todo"
diff --git a/.gitlab/merge_request_templates/Default.md b/.gitlab/merge_request_templates/Default.md
new file mode 100644
index 00000000..00be17dc
--- /dev/null
+++ b/.gitlab/merge_request_templates/Default.md
@@ -0,0 +1,29 @@
+<!-- Title: Use an imperative, clear title (e.g., "Fix login bug" or "Add new analytics feature") -->
+
+## Description
+Provide a concise explanation of the changes made in this merge request.
+
+## Related Issue(s)
+- Closes #[feature issues]
+- Fixes #[bug report issue] 
+- Resolves #[any other issues]
+
+### Other Changes
+- [Mention refactoring, tests, etc.]
+
+## Screenshots/Logs
+Attach screenshots or log outputs if applicable.
+
+## Testing Instructions
+1. [Step 1: How to test]
+2. [Step 2: Expected outcome]
+3. [Step 3: Additional steps if required]
+
+## Developer Checklist
+- [ ] Code has been tested locally and/or in pipeline.
+- [ ] (if applicable) documentation updated.
+- [ ] (if applicable) impact of new dependencies reviewed and included in project.
+- [ ] Merge conflicts resolved with the target branch.
+
+## Additional Notes
+Add any information reviewers should focus on, e.g., specific files, functions, or changes of interest.
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..6b82faff
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,7 @@
+[submodule "extern/doxygen-awesome-css"]
+	path = extern/doxygen-awesome-css
+	url = https://github.com/jothepro/doxygen-awesome-css.git
+[submodule "extern/pybind11"]
+	path = extern/pybind11
+	url = https://github.com/pybind/pybind11.git
+	branch = stable
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 00000000..0137ebbb
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,130 @@
+# set relatively new cmake version
+cmake_minimum_required(VERSION 3.29)
+
+# Start the library project
+project(UnicadoLibs
+    VERSION 2.1
+    DESCRIPTION "Libraries for UNICADO"
+    LANGUAGES CXX
+)
+
+# set the C++ standard
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED True)
+
+# When GCC is used, check if the version is 10.2.0 or higher
+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+    if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.2.0)
+        message(FATAL_ERROR "[${PROJECT_NAME}] -> GCC version 10.2.0 or higher is required!")
+    endif()
+endif()
+
+# Disable the min and max macros when building with MSVC
+if(MSVC)
+    add_compile_definitions(NOMINMAX)
+endif()
+
+# *optional* Add cppcheck and cpplint
+# set(CMAKE_CXX_CPPCHECK "cppcheck")
+# set(CMAKE_CXX_CPPLINT "cpplint")
+
+# Option whether to use gnuplot
+option(USE_GNUPLOT "Use gnuplot" ON)
+# Option for blackbox testing
+option(BUILD_BLACKBOXTESTS "Use blackbox testing" OFF)
+# Option for unit testing
+option(BUILD_UNITTEST "Use unit testing" OFF)
+# Option to include system libraries in the package archive
+option(PACKAGE_SYSTEM_LIBRARIES "Include system libraries in the package archive" ON)
+# Finally decide whether to build static or shared libraries
+option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
+
+# Set the output directory for all libraries depending on platform
+if (BUILD_SHARED_LIBS)
+    if( WIN32 )
+        message(STATUS "[${PROJECT_NAME}] -> Windows detected: Building .dll")
+    else( UNIX )
+        message(STATUS "[${PROJECT_NAME}] -> Unix detected: Building .so")
+    endif()
+else()
+    message(STATUS "[${PROJECT_NAME}] -> Building static libraries")
+endif()
+
+# Get Python and pipenv to build the Python packages
+set(PYTHON_TARGETS "") # List containing the python targets
+
+#=== Googletest setup ===
+if(BUILD_BLACKBOXTESTS OR BUILD_UNITTEST)
+    message(STATUS "[${PROJECT_NAME}] -> Building tests for the libraries.")
+    # Download and unpack googletest at configure time
+    include(FetchContent)
+    FetchContent_Declare(googletest
+    GIT_REPOSITORY https://github.com/google/googletest.git
+    GIT_TAG v1.13.0
+    )
+    # For Windows: Prevent overriding the parent project's compiler/linker settings
+    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+    FetchContent_MakeAvailable(googletest)
+
+    # *optional* Add gtest to ctest
+    # enable_testing()
+    # include(GoogleTest)
+endif()
+
+# Add library for python bindings
+set(PYBIND11_FINDPYTHON ON) # Let pybind11 find the python interpreter
+add_subdirectory(extern/pybind11)
+
+# Set the output directory for all libraries -> Use generator expressions to force multi-generator output to the same location
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/unicadoRuntimeLibs$<0:>) # .dll for Windows
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/unicadoRuntimeLibs$<0:>) # .so for Unix
+
+# Include the library directories based on dependency order
+add_subdirectory(aerodynamics)
+add_subdirectory(aixml)
+add_subdirectory(airfoils)
+add_subdirectory(blackboxTest)
+add_subdirectory(aircraftGeometry2)
+add_subdirectory(atmosphere)
+add_subdirectory(coordinateSystemConversion)
+add_subdirectory(engine)
+add_subdirectory(energyCarriers)
+add_subdirectory(liftingLineInterface2)
+add_subdirectory(moduleBasics)
+add_subdirectory(pymodulepackage)
+add_subdirectory(runtimeInfo)
+add_subdirectory(standardFiles)
+add_subdirectory(svl)
+add_subdirectory(unitConversion)
+
+# Add a custom target which installs all python packages if pipenv is available
+if(PIPENV)
+    message(STATUS "[${PROJECT_NAME}] -> Pipenv is available, use target 'install_python_packages' to install the python packages inside your virtual environment.")
+    add_custom_target(install_python_packages 
+        COMMAND ${PIPENV} run python -m pip install --force-reinstall ${PYTHON_TARGETS}
+        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} # Execute in the top level source directory
+        # List the dependencies which have to be build first:
+        DEPENDS py11aircraftGeometry2 py11aixml py11coordinateSystemConversion py11unitConversion py11energyCarriers
+    )
+endif()
+
+# === Package setup ===
+# create config file
+include(CMakePackageConfigHelpers)
+configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/UnicadoLibsConfig.cmake.in
+  "${CMAKE_CURRENT_LIST_DIR}/cmake/UnicadoLibsConfig.cmake"
+  INSTALL_DESTINATION cmake
+)
+
+# create version file
+write_basic_package_version_file(
+  "${CMAKE_CURRENT_LIST_DIR}/cmake/UnicadoLibsConfigVersion.cmake"
+  VERSION ${PROJECT_VERSION}
+  COMPATIBILITY AnyNewerVersion
+)
+
+# Provide a cmake file which can be used to get a list of all python packages
+configure_file(
+    ${CMAKE_CURRENT_LIST_DIR}/UnicadoPythonPackages.cmake.in
+    ${CMAKE_CURRENT_LIST_DIR}/cmake/UnicadoPythonPackages.cmake
+)
diff --git a/CMakePresets.json b/CMakePresets.json
new file mode 100644
index 00000000..4294d6df
--- /dev/null
+++ b/CMakePresets.json
@@ -0,0 +1,124 @@
+{
+    "version": 6,
+    "configurePresets": [
+        {
+            "name": "unix-common",
+            "description": "Common settings for Unix compilers",
+            "hidden": true,
+            "binaryDir": "${sourceDir}/build",
+            "cacheVariables": {
+                "CMAKE_CXX_FLAGS": "-fexceptions -fno-builtin"
+            }
+
+        },
+        {
+            "name": "unix-debug",
+            "description": "Base settings for building debug configuration with Unix compilers.",
+            "hidden": true,
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Debug",
+                "CMAKE_CXX_FLAGS_DEBUG": "-Wextra -Wsign-conversion -Wfloat-equal -g"
+            }
+        },
+        {
+            "name": "unix-release",
+            "description": "Base settings for building release configuration with Unix compilers.",
+            "hidden": true,
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Release",
+                "CMAKE_CXX_FLAGS_RELEASE": "-O2 -s"
+            }
+        },
+        {
+            "name": "windows-common",
+            "description": "Common settings for Windows compilers",
+            "hidden": true,
+            "binaryDir": "${sourceDir}/build",
+            "generator": "Visual Studio 17 2022",
+            "toolset": "ClangCL",
+            "toolchainFile": "C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake",
+            "cacheVariables": {
+                "Python_EXECUTABLE": {"type": "FILEPATH", "value": "$ENV{HOMEDRIVE}$ENV{HOMEPATH}/AppData/Local/Programs/Python/Python311/python.exe"},
+                "CMAKE_CXX_FLAGS": "/permissive- /EHsc"
+            }
+        },
+        {
+            "name": "windows-debug",
+            "description": "Base settings for building debug configuration with Windows compilers.",
+            "hidden": true,
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Debug",
+                "CMAKE_CXX_FLAGS_DEBUG": "/W4"
+            }
+        },
+        {
+            "name": "windows-release",
+            "description": "Base settings for building release configuration with Windows compilers.",
+            "hidden": true,
+            "cacheVariables": {
+                "CMAKE_BUILD_TYPE": "Release",
+                "CMAKE_CXX_FLAGS_RELEASE": "/O2"
+            }
+        },
+        {
+            "name": "x64-linux-debug",
+            "description": "Default debug configuration for building on Linux",
+            "generator": "Unix Makefiles",
+            "inherits": ["unix-common", "unix-debug"]
+        },
+        {
+            "name": "x64-linux-release",
+            "description": "Default release configuration for building on Linux",
+            "generator": "Unix Makefiles",
+            "inherits": ["unix-common", "unix-release"]
+        },
+        {
+            "name": "x64-mingw-debug",
+            "description": "Default debug configuration for building with MSYS2/MinGW on Windows",
+            "generator": "MinGW Makefiles",
+            "inherits": ["unix-common", "unix-debug"]
+        },
+        {
+            "name": "x64-mingw-release",
+            "description": "Default release configuration for building with MSYS2/MinGW on Windows",
+            "generator": "MinGW Makefiles",
+            "inherits": ["unix-common", "unix-release"]
+        },
+        {
+            "name": "x64-windows-debug",
+            "description": "Default debug configuration for building on Windows",
+            "architecture": "x64",
+            "inherits": ["windows-common", "windows-debug"]
+        },
+        {
+            "name": "x64-windows-release",
+            "description": "Default release configuration for building on Windows",
+            "architecture": "x64",
+            "inherits": ["windows-common", "windows-release"]
+        }
+    ],
+    "buildPresets": [
+        {
+            "name": "x64-linux-debug",
+            "description": "Sets the build type to Debug for the Linux build system.",
+            "configurePreset": "x64-linux-debug"
+        },
+        {
+            "name": "x64-linux-release",
+            "description": "Sets the build type to Release for the Linux build system.",
+            "configurePreset": "x64-linux-release"
+        },
+        {
+            "name": "x64-windows-debug",
+            "description": "Sets the build type to Debug for the Windows build system.",
+            "configurePreset": "x64-windows-debug",
+            "configuration": "Debug"
+        },
+        {
+            "name": "x64-windows-release",
+            "description": "Sets the build type to Release for the Windows build system.",
+            "configurePreset": "x64-windows-release",
+            "configuration": "Release"
+        }
+    ]
+}
diff --git a/CODEOWNERS b/CODEOWNERS
new file mode 100644
index 00000000..2b811360
--- /dev/null
+++ b/CODEOWNERS
@@ -0,0 +1,28 @@
+# Folder-specific code ownership
+aerodynamics/                @lukas.neuerburg   @ellen.seabrooke   @gPauls-TUHH
+aircraftGeometry2/           @meric.taneri      @AndiGob           @ChrisRuw
+airfoils/                    @ChrisRuw          @gPauls-TUHH
+aixml/                       @ChrisRuw          @gPauls-TUHH       @meric.taneri
+atmosphere/                  @lukas.neuerburg   @gPauls-TUHH       @ellen.seabrooke
+blackboxTest/                @maurice.zimmnau
+coordinalteSystemConversion/ @meric.taneri      @AndiGob
+engine/                      @tobi747           @ellen.seabrooke   @lukas.neuerburg
+extern/                      @meric.taneri      @ChrisRuw
+liftingLineInterface2/       @lukas.neuerburg   @ellen.seabrooke   @gPauls-TUHH
+moduleBasics/                @ChrisRuw          @gPauls-TUHH       @meric.taneri
+pymodulepackage/             @ChrisRuw          @AndiGob           @gPauls-TUHH
+runtimeInfo/                 @ellen.seabrooke   @ChrisRuw          @meric.taneri
+standardFiles/               @ellen.seabrooke   @lukas.neuerburg   @meric.taneri
+svl/                         @ChrisRuw          @gPauls-TUHH       @meric.taneri
+unitConversion/              @gPauls-TUHH       @lukas.neuerburg   @ChrisRuw
+
+# File-specific code ownership
+.gitattributes               @Florian.Schueltke
+.gitignore                   @Florian.Schueltke
+.gitlab-ci.yml               @maurice.zimmnau
+CMakeLists.txt               @Florian.Schueltke
+CMakePresets.json            @Florian.Schueltke
+CODEOWNERS                   @Florian.Schueltke
+LICENSE                      @Florian.Schueltke
+UnicadoLibsConfig.cmake.in   @Florian.Schueltke
+UnicadoPythonPackages.cmake.in @Florian.Schueltke
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..e06ae696
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  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
+them 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 prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  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.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  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.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     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
+state 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) 2025 UNICADO consortium
+
+    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 3 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, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) 2025 UNICADO consortium
+    This program 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, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<https://www.gnu.org/licenses/>.
+
+  The GNU 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.  But first, please read
+<https://www.gnu.org/licenses/why-not-lgpl.html>.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..19d74b8a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,37 @@
+# Welcome to UNICADO Libraries Repository :airplane:
+
+The libraries repository includes functionalities that are used in several modules.
+
+> &rarr; Checkout your [UNICADO website](https://unicado.io/) for more information! 
+
+## Installation
+
+### For User
+You want to use UNICADO to get familiar with the workflow and see first results? Great :fire: Then check out the [Installation Guide](https://unicado.pages.rwth-aachen.de/unicado.gitlab.io/download/installation/) and the [Cleared for Take-Off](https://unicado.pages.rwth-aachen.de/unicado.gitlab.io/download/takeoff/). It includes the prerequisites, troubleshooting hints and a standalone installer.
+
+### For Developer
+We welcome contributions! :sparkles: Please read our [developer guide](https://unicado.pages.rwth-aachen.de/unicado.gitlab.io/developer/developer-installation/). It explains step-by-step what you need to install, how to get the source code, how to build it, how to contribute and how to create the installer.
+
+## License
+This project is licensed under the GNU General Public License, Version 3 License - see the [LICENSE](LICENSE) file for details.
+
+## Acknowledgments and Funding
+This project is a collaborative effort by 
+- RWTH Aachen, Chair and Institute of Aerospace Systems
+- TU Berlin
+    - Aircraft Design and Aerostructures
+    - Flight Mechanics, Flight Control and Aeroelasticity
+- TU Braunschweig, Chair of Overall Aircraft Design
+- TU Hamburg, Institute of Air Transportation Systems
+- TU Munich, Chair of Aircraft Design
+- University of Stuttgart, Institute of Aircraft Design
+
+including its associated partner
+- Airbus SE
+- Collins Aerospace 
+- TGM Lightweight Solutions GmbH
+
+and is funded by the Federal Ministry of Economic Affairs and Climate Action on the basis of a decision by the German Bundestag.
+
+## Contact
+For questions or support, feel free to contact us :email: **E-Mail:** [contacts@unicado.io](mailto:contacts@unicado.io).
diff --git a/UnicadoLibsConfig.cmake.in b/UnicadoLibsConfig.cmake.in
new file mode 100644
index 00000000..d40c3525
--- /dev/null
+++ b/UnicadoLibsConfig.cmake.in
@@ -0,0 +1,57 @@
+# Exit when the Libs are already part of the current package
+if(UnicadoLibs_FOUND)
+    return()
+endif()
+
+@PACKAGE_INIT@
+
+# Add required dependencies
+include(CMakeFindDependencyMacro)
+find_dependency(Eigen3)
+find_dependency(Boost)
+find_dependency(CGAL)
+find_dependency(Threads) # Gtest dependencies
+
+# Define a list with the UnicadoLibs targets which are included in the package
+message(STATUS "[UnicadoLibs] -> Adding libraries as package. Make sure your CMAKE_PREFIX_PATH points to the correct directory!")
+set(UNICADO_LIBS_TARGETS 
+    "
+    aerodynamics;
+    aixml;
+    airfoils;
+    blackboxTest;
+    aircraftGeometry2;
+    atmosphere;
+    coordinateSystemConversion;
+    engine;
+    energyCarriers;
+    liftingLineInterface2;
+    moduleBasics;
+    runtimeInfo;
+    standardFiles;
+    svl;
+    unitConversion;
+    "
+)
+
+# Add the python targets if the parent package provides pipenv
+if(PIPENV)
+    message(STATUS "[UnicadoLibs] -> PIPENV available. Installing python targets:")
+    foreach(target @PYTHON_TARGETS@)
+        message(STATUS "=> Installing ${target}")
+        execute_process( COMMAND ${PIPENV} run python -m pip install --force-reinstall ${target} OUTPUT_QUIET)
+    endforeach()
+else()
+    message(WARNING "[${PROJECT_NAME}] -> PIPENV not available. Python targets will not be installed.")
+endif()
+
+# Include each of the exported targets
+foreach(comp ${UNICADO_LIBS_TARGETS})
+    include("${CMAKE_PREFIX_PATH}/cmake/UnicadoLibs${comp}Targets.cmake")
+endforeach()
+
+# check required packages as per CMake documentation (https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html#module:CMakePackageConfigHelpers)
+check_required_components(UnicadoLibs)
+
+# When the package is included tell the user
+message(STATUS "UnicadoLibs found: TRUE")
diff --git a/UnicadoPythonPackages.cmake.in b/UnicadoPythonPackages.cmake.in
new file mode 100644
index 00000000..edd3e33a
--- /dev/null
+++ b/UnicadoPythonPackages.cmake.in
@@ -0,0 +1,2 @@
+# Make the list of python packages available to the parent scope by including this file
+set(PYTHON_PACKAGES @PYTHON_TARGETS@)
diff --git a/aerodynamics/CMakeLists.txt b/aerodynamics/CMakeLists.txt
new file mode 100644
index 00000000..f174ede4
--- /dev/null
+++ b/aerodynamics/CMakeLists.txt
@@ -0,0 +1,46 @@
+# Set the library name
+set( LIBRARY_NAME aerodynamics )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/aerodynamics.cpp
+    resources.rc
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_AERODYNAMICS_SHARED" PUBLIC "IMPORT_AERODYNAMICS_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Link against dependent libraries
+target_link_libraries( ${LIBRARY_NAME} 
+    PRIVATE
+        aixml
+        runtimeInfo
+        standardFiles
+        atmosphere
+)
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/aerodynamics/include/aerodynamics/aerodynamics.h b/aerodynamics/include/aerodynamics/aerodynamics.h
new file mode 100644
index 00000000..4d858c66
--- /dev/null
+++ b/aerodynamics/include/aerodynamics/aerodynamics.h
@@ -0,0 +1,221 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AERODYNAMICS_AERODYNAMICS_H_
+#define AERODYNAMICS_AERODYNAMICS_H_
+
+#include <string>
+#include <cstdint>
+#include <vector>
+
+#ifdef BUILD_AERODYNAMICS_SHARED
+    #ifdef _WIN32
+        #define AERODYNAMICSDLLEXPORT __declspec(dllexport)
+    #else
+        #define AERODYNAMICSDLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_AERODYNAMICS_SHARED)
+    #ifdef _WIN32
+        #define AERODYNAMICSDLLEXPORT __declspec(dllimport)
+    #else
+        #define AERODYNAMICSDLLEXPORT
+    #endif
+#else
+    #define AERODYNAMICSDLLEXPORT
+#endif
+
+class atmosphere;
+class configuration;
+class node;
+
+/** \brief Class to describe the aerodynamics
+ */
+class AERODYNAMICSDLLEXPORT aerodynamics {
+ public:
+    /* Typedefs and Enums */
+    /** \brief Class describes the configuration of aerodynamics
+     */
+    class AERODYNAMICSDLLEXPORT configuration {
+     public:
+        /* Typedefs and Enums */
+        /** \brief Class describes aerodynamic polar and coeffients
+         */
+        class AERODYNAMICSDLLEXPORT polar {
+         public:
+            /* Vectors with aerodynamic coefficients */
+            std::vector<double> vAOA;
+            std::vector<double> vCL;
+            std::vector<double> vCD;
+            std::vector<double> vCD_alternate;
+            std::vector<double> vCm;
+            std::vector<double> vIStab;
+            std::vector<std::string> vOrigin_polar;
+
+            uint16_t ID_firstValid;
+            uint16_t ID_lastValid;
+
+            uint16_t ID_CLmin;
+            uint16_t ID_CLmax;
+
+            polar(const std::string& aConfig, const int& machID, const node& configuration); /**< Constructor */
+            virtual ~polar(); /**< Destructor */
+
+            /* Function interpolates linearly between the data points and returns a CD */
+            double getCD(const double& CL, const bool& useAlternateDragPolars, const bool& reqCheck) const;
+            double getIStab(const double& CL, const bool& reqCheck) const;
+            double getCL_firstValid() const;
+            double getCL_lastValid() const;
+            bool isValid(const double& CL) const;
+            bool allowGridChange;
+            double extrapolationMargin;  /* Extrapolation margin (1: no extrapolation allowed, 1.05 -> 5% extrapolation allowed, etc) */
+            std::string getOriginPolar(const double& CL, const bool& useAlternateDragPolars, const bool& reqCheck) const;
+        };
+        /* Constructor and destructor */
+        configuration(const std::string& aConfig, const double& myMMO, const node& polarXML); /**< Constructor */
+        virtual ~configuration();    /**< Destructor */
+        /* Member functions */
+        double getCD(const double& CL, const double& machNumber, const bool& useAlternateDragPolars, const bool& reqCheck) const;
+        double getIStab(const double& CL, const double& machNumber, const bool& reqCheck) const;
+        double getCLAtAlpha(const double& alpha, const double& machNumber) const;
+        double getAlphaAtCL(const double& CL, const double& machNumber) const;
+        double getCmAtAlpha(const double& alpha, const double& machNumber) const;
+        double getCmAtCL(const double& CL, const double& machNumber) const;
+        double getCmAtCLmax(const double& machNumber) const;
+        /** \brief Function returns the interpolated polar value for a given key point.
+         * \param xValue Target x value for interpolation (can be AoA, CL, etc)
+         * \param x_vec vector corresponding to target x value
+         * \param y_vec vector of y values used for interpolation
+         * \param extrapolationMargin extrapolation margin (1: no extrapolation allowed, 1.05 -> 5% extrapolation allowed, etc)
+         * \return interpolated polar value  
+         */
+        double getPolarValue(const double& xValue, const std::vector<double>& x_vec, const std::vector<double>& y_vec, const double& extrapolationMargin) const;
+        std::vector< std::vector<double> > getOriginPolar(const double& CL, const double& machNumber, const bool& useAlternateDragPolars, const bool& reqCheck);
+        /* Member variables */
+        std::string configName;
+        int numberOfFlapSettings;
+        std::vector<double> machnumbers; /**< Mach numbers of the polars [-] */
+        std::vector<double> altitudes; /**< Altitudes of the polars [m] */
+        std::vector<double> reynoldsNumbers; /**< Reynolds number of the related polar */
+        std::vector<polar> polars;
+
+     private:
+        double MMO;
+    };
+    /* Constants */
+    /* Constructors */
+    aerodynamics(const node& acXML, const node& polarXML);
+    /* Destructors */
+    virtual ~aerodynamics();
+    /* Methods */
+    double getCruiseDrag(const double& machNumber, const double& altitude, const double& bankAngle, const double& m_acft, const std::string& config, const atmosphere& atm) const;
+    std::vector< std::vector<double> > getCruiseOriginPolar(const double& machNumber, const double& altitude, const double& bankAngle, const double& m_acft,
+                                                            const std::string& config, const atmosphere& atm);
+    double getIStabPolar(const double& machNumber, const double& CL, const std::string& config) const;
+    double getCruiseLoverD(const double& machNumber, const double& altitude, const double& bankAngle, const double& m_acft, const std::string& config, const atmosphere& atm) const;
+    /** \brief Function to determine the resistance at a given CL. Application in the start calculation
+     * \param machNumber Mach number
+     * \param altitude a flight altitude [m]
+     * \param CL
+     * \param config configuration
+     * \param atm atmosphere
+     */
+    double getCLDrag(const double& machNumber, const double& altitude, const double& CL, const std::string& config, const atmosphere& atm) const;
+    /** \brief Function returns CLmax for configuration and Mach. If necessary, min. between two Mach numbers
+     * \param machNumber
+     * \param config configuration
+     */
+    double getCLmax(const double& machNumber, const std::string& config) const;
+    /** \brief Function to determine altitude [m] at a given CL and airspeed
+     * \param machNumber
+     * \param bankAngle bank angle of the aircraft
+     * \param CL
+     * \param m_acft aircraft mass
+     * \param atm atmosphere
+     * \return altitude double: altitude [m] for a given lift coefficient
+     */
+    double getAltitudeAtCL(const double& machNumber, const double& bankAngle, const double& CL, const double& m_acft, const atmosphere& atm) const;
+    /** \brief Function to determine CL
+     * \param altitude a flight altitude [m]
+     * \param machNumber
+     * \param bankAngle bank angle of the aircraft
+     * \param m_acft aircraft mass
+     * \param atm atmosphere
+     */
+    double getCL(const double& altitude, const double& machNumber, const double& bankAngle, const double& m_acft, const atmosphere& atm) const;
+    /**< Determine L/D for a CL of a specific configuration */
+    double getCLLoverD(const double& machNumber, const double& CL, const std::string& config) const;
+    /** \brief  Function to determine the angle of attack of the aircraft for a given flight condition
+    *   \param M a Mach number
+    *   \param config configuration of the secondary control devices
+    *   \param liftCoefficient a lift coefficient [-]
+    */
+    double getAlphaAtFlightCondition(const double& machNumber, const std::string& config, const double& liftCoefficient) const;
+    /** \brief Function to determine the max range CL for Rmax (CL/CD^2)max
+     * \param machNumber
+     * \param config: configuration
+     */
+    double maxRangeCL(const double& machNumber, const std::string& config) const;
+    /** \brief Function to increase the resistance to the specified value. If this value cannot be reached, the function returns false.
+     * \param dragNeeded
+     * \param drag
+     */
+    bool useSpoiler(const double& dragNeeded, double* drag) const;
+    /** \brief Function to switch between turbulent and (if present) laminar polar set
+     */
+    void switchToAlternateDragPolars();
+    /** \brief Function to switch to use of default polars
+     */
+    void switchToDefltDragPolars();
+    bool altPolarsInUse;
+
+    void switchOnReqSwitch();
+    void switchOffReqSwitch();
+
+    /** \brief function returns complete configuration information of the private vector configurations
+     *  \param numberOfConfiguration a specific number of a configuration in the list
+     *  \return an object of the class configuration with complete configuration information
+    */
+    configuration getConfiguration(const uint8_t& numberOfConfiguration) const;
+
+    /* Data Members */
+    std::vector<std::string> configurationList;
+    std::vector<configuration> configurations;
+    std::string cruiseConfiguration;
+    double CLmaxTakeoff;
+    double CLmaxLanding;
+    double CLoptimumCruise;
+    double CLgroundRoll; /**< CL during rolling */
+    double maxSpoilerFactor; /**< Maximum spoiler effectiveness related to the resistance increase */
+
+ private:
+    /* Typedefs and Enums */
+    /* Constants */
+    const node& acXML;
+    const node& polarXML;
+    /* Member variables */
+    double MMO;
+    double wingReferenceArea;
+    std::string polarFileName;
+    bool useCDalternatePolars;
+    bool reqCheck;
+};
+#endif // AERODYNAMICS_AERODYNAMICS_H_
diff --git a/aerodynamics/resources.rc b/aerodynamics/resources.rc
new file mode 100644
index 00000000..e5a11f62
--- /dev/null
+++ b/aerodynamics/resources.rc
@@ -0,0 +1,25 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "aerodynamics\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "aerodynamics.dll\0"
+            VALUE "ProductName",        "aerodynamics\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
diff --git a/aerodynamics/src/aerodynamics.cpp b/aerodynamics/src/aerodynamics.cpp
new file mode 100644
index 00000000..05fc06d5
--- /dev/null
+++ b/aerodynamics/src/aerodynamics.cpp
@@ -0,0 +1,1240 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aerodynamics/aerodynamics.h"
+#include <aixml/endnode.h>
+#include <aixml/node.h>
+#include <atmosphere/atmosphere.h>
+#include <runtimeInfo/runtimeInfo.h>
+#include <standardFiles/functions.h>
+#include <algorithm>
+#include <cmath>
+#include <climits>
+
+bool allowExtrapolation(true);
+
+// cppcheck-suppress unusedFunction
+double aerodynamics::getCruiseDrag(const double& machNumber, const double& altitude, const double& bankAngle, const double& m_acft, const std::string& config,
+                                   const atmosphere& atm) const {
+    double CL = this->getCL(altitude, machNumber, bankAngle, m_acft, atm);
+    return this->getCLDrag(machNumber, altitude, CL, config, atm);
+}
+
+// cppcheck-suppress unusedFunction
+double aerodynamics::getIStabPolar(const double& machNumber, const double& CL, const std::string& config) const {
+    if (machNumber <= 0.) {
+        return 0.;
+    } else {
+        std::vector<std::string>::const_iterator entry = find(this->configurationList.begin(), this->configurationList.end(), config);
+        if (entry == this->configurationList.end()) { // Entry not available!
+            throw("Polar for configuration " + config + " not found!");
+        } else {
+            uint16_t pos(0);
+            pos = static_cast<uint16_t>(entry - this->configurationList.begin());
+            double iStab = this->configurations.at(pos).getIStab(CL, machNumber, this->reqCheck);
+            return iStab;
+        }
+    }
+}
+
+double aerodynamics::configuration::getIStab(const double& CL, const double& machNumber, const bool& reqCheck) const {
+    bool standardCase(false);
+    double iStab_returnValue(NAN);
+    if (machNumber <= this->machnumbers.front()) {
+        standardCase = true;
+        myRuntimeInfo->debug << "Current Mach number (Ma = " << machNumber << ") is smaller or equal than first Mach number in polars (Ma = "
+                             <<  this->machnumbers.front() << ")." << std::endl;
+        myRuntimeInfo->debug << "First Mach number is used. Watch out for extrapolation." << std::endl;
+        iStab_returnValue = this->polars.front().getIStab(CL, reqCheck);
+    } else if (machNumber >= this->machnumbers.back() && machNumber <= this->MMO) {
+        standardCase = true;
+        if (machNumber > this->machnumbers.back()) {
+             myRuntimeInfo->debug << "Current Mach number (Ma = " << machNumber << ") exceeds last Mach number (Ma = " << this->machnumbers.back()
+                                  << ") but is below max. operating Mach number (MMO = " << this->MMO << ")." << std::endl;
+        }
+        if (configName != "clean") {
+            if (machNumber > this->machnumbers.back()) {
+                myRuntimeInfo->debug << "Use last polar for this configuration (" << this->configName << ")." << std::endl;
+            }
+            iStab_returnValue = this->polars.back().getIStab(CL, reqCheck);
+        } else if (this->polars.size() > 1) {
+            myRuntimeInfo->debug << "Interpolate incidence angle of stabilizer with last two clean polars." << std::endl;
+            uint16_t ID_last     = this->polars.size() - 1;
+            uint16_t ID_2ndlast  = this->polars.size() - 2;
+            double x_rel    = (machNumber - this->machnumbers.at(ID_2ndlast)) / (this->machnumbers.at(ID_last) - this->machnumbers.at(ID_2ndlast));
+            double iStab_interpol_tmp = (1. - x_rel) * this->polars.at(ID_2ndlast).getIStab(CL, reqCheck) +
+                                     x_rel  * this->polars.at(ID_last).getIStab(CL, reqCheck);
+            if (std::isnan(iStab_interpol_tmp)) {
+                myRuntimeInfo->debug << "NAN value in incidence angle of stabilizer interpolation function getiStab(CL,M). (Config: " + configName
+                                            + ", Ma = " << machNumber << ", CL = " << CL << ")." << std::endl;
+                return NAN;
+            }
+            iStab_returnValue = iStab_interpol_tmp;
+        } else {
+            standardCase = true;
+            myRuntimeInfo->err << "Incidence angle of stabilizer interpolation with last two clean polars failed since only one clean polar is available." << std::endl;
+            if (reqCheck) {
+                throw std::string("Error in aerodynamics library.");
+            } else {
+                throw("Abort program!");
+            }
+        }
+    } else if (machNumber >= this->machnumbers.back() && machNumber > this->MMO) {
+        standardCase = true;
+        myRuntimeInfo->err << "Mach number Ma = " << machNumber << " exceeds Max. operating Mach number = " << this->MMO << "." << std::endl;
+        if (reqCheck) {
+            throw std::string("Error in aerodynamics library.");
+        } else {
+            throw("Abort program!");
+        }
+    } else {
+        standardCase = true;
+        // Interpolation
+        uint16_t i(1);
+        while (i < this->machnumbers.size()) {
+            if (machNumber > this->machnumbers.at(i)) {
+                i++;
+            } else {
+                int ID_low  = i - 1;
+                // If  Mach number is present in polars, it is set to ID_high.
+                int ID_high = i;
+                /* The following parts check if the requested lift value is valid in the respective polars and if not, whether extrapolation or Mach number grid change is possible.
+                   Extrapolation has priority over changing Mach number polar. */
+
+                // Mach number is not present in polars and has to be interpolated.
+                if (machNumber != this->machnumbers.at(i)) {
+                    // Requested drag needs to be interpolated between two polars, but the lower returns NaN for requested lift value.
+                    if (i > 1 && !polars.at(ID_low).isValid(CL)) {
+                        // If requested lift value is not valid in lower polar (left interpolation key point) and extrapolation is not allowed,
+                        // next lower Mach number is used (if it holds valid data or extrapolation is allowed).
+                        if (polars.at(ID_low).allowGridChange) {
+                            if (polars.at(ID_low - 1).isValid(CL)) {
+                                ID_low--;
+                            } else {
+                                myRuntimeInfo->err  << "Changing grid point from Ma ["  << machnumbers.at(ID_low) << ", " << machnumbers.at(ID_high)
+                                                    << "] -> [" << machnumbers.at(ID_low - 1) << ", " << machnumbers.at(ID_high) << "]"
+                                                    << " not possible";
+                                if (CL > polars.at(ID_low).getCL_lastValid() && CL > polars.at(ID_low - 1).getCL_lastValid()) {
+                                    myRuntimeInfo->err << ", because for both lower grid points CL = " << CL << " > CL_max ("
+                                                       << polars.at(ID_low - 1).getCL_lastValid() << ";" << polars.at(ID_low).getCL_lastValid() << "). Abort program!" << std::endl;
+                                } else {
+                                    myRuntimeInfo->err << ". (CL = " << CL << "). BUG! Abort program!" << std::endl;
+                                }
+                                throw std::string("Error in aerodynamics library.");
+                            }
+                        }
+                    }
+                }
+                // Mach number is available (or in between two polars) but requested lift value is NaN.
+                if ((i < (this->machnumbers.size() - 1)) && !polars.at(ID_high).isValid(CL)) {
+                    // If requested lift value is not valid in high polar (actual Mach number or right interpolation key point) and extrapolation is not allowed,
+                    // next higher Mach number is used (if it holds valid data or extrapolation is allowed).
+                    if (polars.at(ID_high).allowGridChange) {
+                        if (polars.at(ID_high + 1).isValid(CL)) {
+                            ID_high++;
+                        } else {
+                            myRuntimeInfo->err  << "Changing grid point from Ma ["  << machnumbers.at(ID_low) << ", " << machnumbers.at(ID_high)
+                                                << "] -> [" << machnumbers.at(ID_low) << ", " << machnumbers.at(ID_high + 1) << "]"
+                                                << " not possible";
+                            if (CL > polars.at(ID_high).getCL_lastValid() && CL > polars.at(ID_high + 1).getCL_lastValid()) {
+                                myRuntimeInfo->err  << ", because for both upper grid points CL = " << CL << " > CL_max ("
+                                                    << polars.at(ID_high).getCL_lastValid() << ";" << polars.at(ID_high + 1).getCL_lastValid()
+                                                    << ") and extrapolation not allowed." << std::endl;
+                            } else {
+                                myRuntimeInfo->err << " (CL = " << CL << "). BUG! Abort program!" << std::endl;
+                                throw std::string("Error in aerodynamics library.");
+                            }
+                        }
+                    }
+                }
+                double x_rel = (machNumber - machnumbers.at(ID_low)) / (machnumbers.at(ID_high) - machnumbers.at(ID_low));
+                double iStab_interpol(NAN);
+                /* If Mach number is present in polars, inc. angle of stab of lower ID does not need to be calculated.
+                x_rel cannot equal zero since ID_low is only used for interpolation. */
+                if (fabs(x_rel - 1) < ACCURACY_HIGH) {
+                    iStab_interpol = polars.at(ID_high).getIStab(CL, reqCheck);
+                } else {
+                    iStab_interpol = (1. - x_rel) * polars.at(ID_low).getIStab(CL, reqCheck) +
+                                     x_rel  * polars.at(ID_high).getIStab(CL, reqCheck);
+                }
+                if (std::isnan(iStab_interpol)) {
+                    myRuntimeInfo->debug << "NAN-value in inc. angle of stabi interpolation function getIStab(CL,M)." <<
+                    " (Config: " + configName + ", Ma = " << machNumber << ", CL = " << CL << "). Return NAN" << std::endl;
+                    return NAN;
+                }
+                iStab_returnValue = iStab_interpol;
+                break;
+            }
+        }
+    }
+    if (!standardCase) {
+        myRuntimeInfo->err << "No result in iStab interpolation (Ma = " << machNumber << ", CL = " << CL << "). BUG!" << std::endl;
+        if (reqCheck) {
+            throw std::string("Error in aerodynamics library.");
+        } else {
+            throw("Abort program!");
+        }
+    }
+    return iStab_returnValue;
+}
+
+double aerodynamics::configuration::polar::getIStab(const double& CL, const bool& reqCheck) const {
+    const std::vector <double> *viStab_tmp;
+    viStab_tmp = &this->vIStab;
+    /* Interpolation of drag polars (CD = f(CL)) */
+    if (this->vCL.size() <= 1) {
+        return viStab_tmp->at(0);
+    } else {
+        if (!allowExtrapolation) {
+            /* lin. Interpolation */
+            if (CL > vCL.at(ID_lastValid)) {
+                if (CL > 1.5 * vCL.at(ID_lastValid)) {
+                    myRuntimeInfo->warn << "Stall! CLmax exceeded!" << std::endl;
+                    myRuntimeInfo->warn << "CL = "                   << CL << std::endl;
+                    myRuntimeInfo->warn << "CL_max = "               << vCL.at(ID_CLmax) << std::endl;
+                    myRuntimeInfo->warn << "CL (last valid ID) = "   << vCL.at(ID_lastValid) << std::endl;
+                    if (reqCheck) {
+                        throw std::string("Error in aerodynamics library.");
+                    } else {
+                        throw("Abort program!");
+                    }
+                }
+                return NAN;
+            } else if (CL < vCL.at(ID_firstValid)) {
+                return viStab_tmp->at(1) - ((viStab_tmp->at(1) - viStab_tmp->at(0)) / (vCL.at(1) - vCL.at(0)) * (vCL.at(1) - CL));
+            } else {
+                //Constantly increase CL vector
+                uint16_t i(ID_firstValid);
+                while (i < ID_lastValid) {
+                    if (vCL.at(i + 1) >= CL) {
+                        uint16_t foundPos(i);
+                        double x_rel = (CL - vCL.at(foundPos)) / (vCL.at(foundPos + 1) - vCL.at(foundPos));
+                        return (1. - x_rel) * viStab_tmp->at(foundPos) + x_rel * viStab_tmp->at(foundPos + 1);
+                    } else {
+                        i++;
+                    }
+                }
+            }
+        } else {
+            if (CL > vCL.at(ID_lastValid)) {
+                myRuntimeInfo->debug << "Extrapolating last valid CL = " << vCL.at(ID_lastValid) << " to requested CL = " << CL << std::endl;
+                double x_rel    = (CL - vCL.at(ID_lastValid - 1)) / (vCL.at(ID_lastValid) - vCL.at(ID_lastValid - 1));
+                return (1. - x_rel) * viStab_tmp->at(ID_lastValid - 1) +  x_rel * viStab_tmp->at(ID_lastValid);
+            } else if (CL < vCL.at(ID_firstValid)) {
+                myRuntimeInfo->debug << "Extrapolating first valid CL = " << vCL.at(ID_firstValid) << " to requested CL = " << CL << std::endl;
+                double x_rel    = (CL - vCL.at(ID_firstValid)) / (vCL.at(ID_firstValid + 1) - vCL.at(ID_firstValid));
+                if (x_rel < -10.) {
+                    return viStab_tmp->at(ID_firstValid);
+                } else {
+                    return (1. - x_rel) * viStab_tmp->at(ID_firstValid) +  x_rel * viStab_tmp->at(ID_firstValid + 1);
+                }
+            } else {
+                //Constantly increase CL vector
+                uint16_t i(ID_firstValid);
+                while (i < ID_lastValid) {
+                    if (vCL.at(i + 1) >= CL) {
+                        uint16_t foundPos(i);
+                        double x_rel = (CL - vCL.at(foundPos)) / (vCL.at(foundPos + 1) - vCL.at(foundPos));
+                        return (1. - x_rel) * viStab_tmp->at(foundPos) + x_rel * viStab_tmp->at(foundPos + 1);
+                    } else {
+                        i++;
+                    }
+                }
+            }
+        }
+    }
+    myRuntimeInfo->err << "No result in incidence angle of stabilizer interpolation (CL=" << CL << "). BUG!" << std::endl;
+    if (reqCheck) {
+        throw std::string("Error in aerodynamics library.");
+    } else {
+        throw("Abort program!");
+    }
+    return NAN;
+}
+
+// cppcheck-suppress unusedFunction
+std::vector< std::vector<double> > aerodynamics::getCruiseOriginPolar(const double& machNumber, const double& altitude, const double& bankAngle, const double& m_acft,
+                                                                      const std::string& config, const atmosphere& atm) {
+    if (machNumber <= 0.) {
+        throw("Polar for configuration " + config + " not found!");
+    } else {
+        std::vector<std::string>::const_iterator entry = find(this->configurationList.begin(), this->configurationList.end(), config);
+        if (entry == this->configurationList.end()) { //Entry not available
+            throw("Polar for configuration " + config + " not found!");
+        } else {
+            uint16_t pos(0);
+            pos = static_cast<uint16_t>(entry - this->configurationList.begin());
+            /* Calulate CL */
+            double TAS = atm.getSpeedOfSound(altitude) * machNumber;
+            double rho = atm.getDensity(altitude);
+            double CL = 2. * m_acft * G_FORCE / (rho * pow(TAS, 2.) * this->wingReferenceArea * cos(bankAngle));
+            return this->configurations.at(pos).getOriginPolar(CL, machNumber, useCDalternatePolars, this->reqCheck);
+        }
+    }
+}
+
+// cppcheck-suppress unusedFunction
+double aerodynamics::getCruiseLoverD(const double& machNumber, const double& altitude, const double& bankAngle, const double& m_acft, const std::string& config,
+                                     const atmosphere& atm) const {
+    if (machNumber <= 0.) {
+        return 0.;
+    } else {
+        std::vector<std::string>::const_iterator entry = find(this->configurationList.begin(), this->configurationList.end(), config);
+        if (entry == this->configurationList.end()) { // Entry not available
+            throw("Polar for configuration " + config + " not found!");
+        } else {
+            uint16_t pos(0);
+            pos = static_cast<uint16_t>(entry - this->configurationList.begin());
+            /** Calculate CL **/
+            double TAS = atm.getSpeedOfSound(altitude) * machNumber;
+            double rho = atm.getDensity(altitude);
+            double CL = 2. * m_acft * G_FORCE / (rho * pow(TAS, 2.) * this->wingReferenceArea * cos(bankAngle));
+            double CD = configurations.at(pos).getCD(CL, machNumber, useCDalternatePolars, this->reqCheck);
+            return CL / CD;
+        }
+    }
+}
+
+double aerodynamics::getCLDrag(const double& machNumber, const double& altitude, const double& CL, const std::string& config, const atmosphere& atm) const {
+    if (machNumber <= 0.) {
+        return 0.;
+    } else {
+        std::vector<std::string>::const_iterator entry = find(this->configurationList.begin(), this->configurationList.end(), config);
+        if (entry == this->configurationList.end()) { // Entry not available
+            throw("Polar for configuration " + config + " not found!");
+        } else {
+            uint16_t pos(0);
+            pos = static_cast<uint16_t>(entry - this->configurationList.begin());
+            double TAS = atm.getSpeedOfSound(altitude) * machNumber;
+            double rho = atm.getDensity(altitude);
+            double CD = this->configurations.at(pos).getCD(CL, machNumber, useCDalternatePolars, this->reqCheck);
+            return CD * rho * pow(TAS, 2.) * this->wingReferenceArea / 2.;
+        }
+    }
+}
+
+// cppcheck-suppress unusedFunction
+double aerodynamics::getAltitudeAtCL(const double& machNumber, const double& bankAngle, const double& CL, const double& m_acft, const atmosphere& atm) const {
+    double altitude(10000.0);
+    double TAS = atm.getSpeedOfSound(altitude) * machNumber;
+    double rho = 2. * m_acft * G_FORCE / (CL * pow(TAS, 2.) * this->wingReferenceArea * cos(bankAngle));
+    double err = altitude - atm.getAltitudeAtDensity(rho);
+    int i(0);
+    while (fabs(err) > 0.01) {
+        i++;
+        altitude = altitude - err / 2.;
+        TAS = atm.getSpeedOfSound(altitude) * machNumber;
+        rho = 2. * m_acft * G_FORCE / (CL * pow(TAS, 2.) * this->wingReferenceArea * cos(bankAngle));
+        err = altitude - atm.getAltitudeAtDensity(rho);
+        if (i >= 100) {
+            myRuntimeInfo->err << "No convergence when determining Altitude from CL-value" << std::endl;
+            break;
+        }
+    }
+    return altitude;
+}
+
+double aerodynamics::getCL(const double& altitude, const double& machNumber, const double& bankAngle, const double& m_acft, const atmosphere& atm) const {
+    double TAS = atm.getSpeedOfSound(altitude) * machNumber;
+    double rho = atm.getDensity(altitude);
+    return 2. * m_acft * G_FORCE / (rho * pow(TAS, 2.) * this->wingReferenceArea * cos(bankAngle));
+}
+
+double aerodynamics::getCLLoverD(const double& machNumber, const double& CL, const std::string& config) const { // cppcheck-suppress unusedFunction
+    std::vector<std::string>::const_iterator entry = find(this->configurationList.begin(), this->configurationList.end(), config);
+    if (entry == this->configurationList.end()) { // Entry not available
+        throw("Polar for configuration " + config + " not found!");
+    } else {
+        uint16_t pos(0);
+        pos = static_cast<uint16_t>(entry - this->configurationList.begin());
+        double CD = configurations.at(pos).getCD(CL, machNumber, useCDalternatePolars, this->reqCheck);
+        return CL / CD;
+    }
+}
+
+double aerodynamics::getCLmax(const double& machNumber, const std::string& config) const { // cppcheck-suppress unusedFunction
+    std::vector<std::string>::const_iterator entry = find(this->configurationList.begin(), this->configurationList.end(), config);
+    if (entry == this->configurationList.end()) { // Entry not available
+        throw("Polar for configuration " + config + " not found!");
+    } else {
+        uint16_t pos(0);
+        pos = static_cast<uint16_t>(entry - this->configurationList.begin());
+        /** Calculate CL_max **/
+        double CL_max(0.);
+        if (machNumber <= configurations.at(pos).machnumbers.front()) {
+            CL_max = configurations.at(pos).polars.front().getCL_lastValid();
+        } else if (machNumber >= configurations.at(pos).machnumbers.back()) {
+            if (machNumber <= this->MMO) {
+                CL_max = configurations.at(pos).polars.back().getCL_lastValid();
+            } else {
+                myRuntimeInfo->err << "Error in function aerodynamics::getCLmax(...): machNumber > M_MO." << std::endl;
+                if (this->reqCheck) {
+                    throw std::string("Errors in aerodynamics library");
+                } else {
+                    throw("Abort program!");
+                }
+            }
+        } else {
+            for (uint16_t i(0); i < configurations.at(pos).machnumbers.size() - 1; i++) {
+                if (machNumber >= configurations.at(pos).machnumbers.at(i) && machNumber < configurations.at(pos).machnumbers.at(i + 1)) {
+                    if (machNumber == configurations.at(pos).machnumbers.at(i)) {
+                        CL_max = configurations.at(pos).polars.at(i).getCL_lastValid();
+                    } else {
+                        CL_max = std::min(configurations.at(pos).polars.at(i).getCL_lastValid(), configurations.at(pos).polars.at(i + 1).getCL_lastValid());
+                    }
+                    break;
+                }
+            }
+        }
+        /* Check if extrapolation is available to increase maximum CL */
+        if (configurations.at(pos).polars.back().extrapolationMargin > 0) {
+            CL_max *= configurations.at(pos).polars.back().extrapolationMargin;
+        }
+        return CL_max;
+    }
+}
+
+double aerodynamics::maxRangeCL(const double& machNumber, const std::string& config) const { // cppcheck-suppress unusedFunction
+    std::vector<std::string>::const_iterator entry = find(this->configurationList.begin(), this->configurationList.end(), config);
+    std::vector<double> values;
+    std::vector<double> ClVals;
+    std::vector<double>::iterator max;
+    if (entry == this->configurationList.end()) { // Entry not available
+        throw("Polar for configuration " + config + " not found!");
+    } else {
+        uint16_t confIdx(0);
+        confIdx = static_cast<uint16_t>(entry - this->configurationList.begin());
+        double CLmax(this->configurations.at(confIdx).polars.front().vCL.back());
+        double CLmin(this->configurations.at(confIdx).polars.front().vCL.front());
+        double deltaCL((CLmax - CLmin) / 100.);
+        /** Get CD **/
+        for (uint16_t i(0); i <= 100; i++) {
+            double CL(0.);
+            double CD(0.);
+            CL = CLmin + i * deltaCL;
+            CD = this->configurations.at(confIdx).getCD(CL, machNumber, useCDalternatePolars, this->reqCheck);
+            ClVals.push_back(CL);
+            values.push_back(CL / CD / CD);
+        }
+        max = max_element(values.begin(), values.end());
+        uint16_t pos(0);
+        pos = static_cast<uint16_t>(max - values.begin());
+        return ClVals.at(pos);
+    }
+}
+
+bool aerodynamics::useSpoiler(const double& dragNeeded, double* drag) const { // cppcheck-suppress unusedFunction
+    if ((dragNeeded / *drag) > this->maxSpoilerFactor) {
+        myRuntimeInfo->err << "Spoiler factor " << this->maxSpoilerFactor << " exceeded with " << (dragNeeded / *drag) << "!" << std::endl;
+        return false;
+    } else if (dragNeeded <= *drag) {
+        return true;
+    } else {
+        *drag = dragNeeded;
+        return true;
+    }
+}
+
+void aerodynamics::switchToAlternateDragPolars() { // cppcheck-suppress unusedFunction
+    this->useCDalternatePolars = true;
+    altPolarsInUse = true;
+}
+
+void aerodynamics::switchToDefltDragPolars() { // cppcheck-suppress unusedFunction
+    this->useCDalternatePolars = false;
+    altPolarsInUse = false;
+}
+
+void aerodynamics::switchOnReqSwitch() { // cppcheck-suppress unusedFunction
+    this->reqCheck = true;
+}
+
+void aerodynamics::switchOffReqSwitch() { // cppcheck-suppress unusedFunction
+    this->reqCheck = false;
+}
+
+aerodynamics::configuration aerodynamics::getConfiguration(const uint8_t& numberOfConfiguration) const { // cppcheck-suppress unusedFunction
+    return this->configurations.at(numberOfConfiguration);
+}
+
+double aerodynamics::configuration::getCD(const double& CL, const double& machNumber, const bool& useAlternateDragPolars, const bool& reqCheck) const {
+    bool standardCase(false);
+    double CD_returnValue(NAN);
+    if (machNumber <= this->machnumbers.front()) {
+        standardCase = true;
+        myRuntimeInfo->debug << "Current Mach number (Ma = " << machNumber << ") is smaller or equal than first Mach number in polars (Ma = "
+                             <<  this->machnumbers.front() << ")." << std::endl;
+        myRuntimeInfo->debug << "First Mach number is used. Watch out for extrapolation." << std::endl;
+        CD_returnValue = this->polars.front().getCD(CL, useAlternateDragPolars, reqCheck);
+    } else if (machNumber >= this->machnumbers.back() && machNumber <= this->MMO) {
+        standardCase = true;
+        if (machNumber > this->machnumbers.back()) {
+             myRuntimeInfo->debug << "Current Mach number (Ma = " << machNumber << ") exceeds last Mach number (Ma = " << this->machnumbers.back()
+                                  << ") but is below max. operating Mach number (MMO = " << this->MMO << ")." << std::endl;
+        }
+        if (configName != "clean") {
+            if (machNumber > this->machnumbers.back()) {
+                myRuntimeInfo->debug << "Use last polar for this configuration (" << this->configName << ")." << std::endl;
+            }
+            CD_returnValue = this->polars.back().getCD(CL, useAlternateDragPolars, reqCheck);
+        } else if (this->polars.size() > 1) {
+            myRuntimeInfo->debug << "Interpolate drag with last two clean polars." << std::endl;
+            uint16_t ID_last     = this->polars.size() - 1;
+            uint16_t ID_2ndlast  = this->polars.size() - 2;
+            double x_rel    = (machNumber - this->machnumbers.at(ID_2ndlast)) / (this->machnumbers.at(ID_last) - this->machnumbers.at(ID_2ndlast));
+            double CD_interpol_tmp = (1. - x_rel) * this->polars.at(ID_2ndlast).getCD(CL, useAlternateDragPolars, reqCheck) +
+                                     x_rel  * this->polars.at(ID_last).getCD(CL, useAlternateDragPolars, reqCheck);
+            if (std::isnan(CD_interpol_tmp)) {
+                myRuntimeInfo->debug << "NAN value in CD interpolation function getCD(CL,M). (Config: " + configName + ", Ma = " << machNumber
+                                    << ", CL = " << CL << ")." << std::endl;
+                return NAN;
+            }
+            CD_returnValue = CD_interpol_tmp;
+        } else {
+            standardCase = true;
+            myRuntimeInfo->err << "Drag interpolation with last two clean polars failed since only one clean polar is available." << std::endl;
+            if (reqCheck) {
+                throw std::string("Error in aerodynamics library.");
+            } else {
+                throw("Abort program!");
+            }
+        }
+    } else if (machNumber >= this->machnumbers.back() && machNumber > this->MMO) {
+        standardCase = true;
+        myRuntimeInfo->err << "Mach number Ma = " << machNumber << " exceeds Max. operating Mach number = " << this->MMO << "." << std::endl;
+        if (reqCheck) {
+            throw std::string("Error in aerodynamics library.");
+        } else {
+            throw("Abort program!");
+        }
+    } else {
+        standardCase = true;
+        // Interpolation
+        uint16_t i(1);
+        while (i < this->machnumbers.size()) {
+            if (machNumber > this->machnumbers.at(i)) {
+                i++;
+            } else {
+                int ID_low  = i - 1;
+                // If  Mach number is present in polars, it is set to ID_high.
+                int ID_high = i;
+                /* The following parts check if the requested lift value is valid in the respective polars and if not, whether extrapolation or Mach number grid change is possible.
+                   Extrapolation has priority over changing Mach number polar. */
+
+                // Mach number is not present in polars and has to be interpolated.
+                if (machNumber != this->machnumbers.at(i)) {
+                    // Requested drag needs to be interpolated between two polars, but the lower returns NaN for requested lift value.
+                    if (i > 1 && !polars.at(ID_low).isValid(CL)) {
+                        // If requested lift value is not valid in lower polar (left interpolation key point) and extrapolation is not allowed,
+                        // next lower Mach number is used (if it holds valid data or extrapolation is allowed).
+                        if (polars.at(ID_low).allowGridChange) {
+                            if (polars.at(ID_low - 1).isValid(CL)) {
+                                ID_low--;
+                            } else {
+                                std::stringstream errorMsg;
+                                errorMsg << "Changing grid point from Ma ["  << machnumbers.at(ID_low) << ", " << machnumbers.at(ID_high)
+                                                    << "] -> [" << machnumbers.at(ID_low - 1) << ", " << machnumbers.at(ID_high) << "]"
+                                                    << " not possible";
+                                if (CL > polars.at(ID_low).getCL_lastValid() && CL > polars.at(ID_low - 1).getCL_lastValid()) {
+                                    errorMsg << ", because for both lower grid points CL = " << CL << " > CL_max ("
+                                                       << polars.at(ID_low - 1).getCL_lastValid() << ";" << polars.at(ID_low).getCL_lastValid() << ")" << std::endl;
+                                }
+                                errorMsg << ". CL boundary reached (CL = " << num2Str(CL) << ") in aerodynamics library.";
+                                throwError(__FILE__, __func__, __LINE__, errorMsg.str());
+                            }
+                        }
+                    }
+                }
+                // Mach number is available (or in between two polars) but requested lift value is NaN.
+                if ((i < (this->machnumbers.size() - 1)) && !polars.at(ID_high).isValid(CL)) {
+                    // If requested lift value is not valid in high polar (actual Mach number or right interpolation key point) and extrapolation is not allowed,
+                    // next higher Mach number is used (if it holds valid data or extrapolation is allowed).
+                    if (polars.at(ID_high).allowGridChange) {
+                        if (polars.at(ID_high + 1).isValid(CL)) {
+                            //myRuntimeInfo->out << "Changing grid point: Ma " << machnumbers.at(ID_high) << " -> " << machnumbers.at(ID_high+1) << "." << std::endl;
+                            ID_high++;
+                        } else {
+                            std::stringstream errorMsg;
+                            errorMsg  << "Changing grid point from Ma ["  << machnumbers.at(ID_low) << ", " << machnumbers.at(ID_high)
+                                                << "] -> [" << machnumbers.at(ID_low) << ", " << machnumbers.at(ID_high + 1) << "]"
+                                                << " not possible";
+                            if (CL > polars.at(ID_high).getCL_lastValid() && CL > polars.at(ID_high + 1).getCL_lastValid()) {
+                                errorMsg  << ", because for both upper grid points CL = " << CL << " > CL_max ("
+                                                    << polars.at(ID_high).getCL_lastValid() << ";" << polars.at(ID_high + 1).getCL_lastValid()
+                                                    << ") and extrapolation not allowed" << std::endl;
+                            }
+                            errorMsg << ". CL boundary reached (CL = " << num2Str(CL) << ") in aerodynamics library.";
+                            throwError(__FILE__, __func__, __LINE__, errorMsg.str());
+                        }
+                    }
+                }
+                double x_rel = (machNumber - machnumbers.at(ID_low)) / (machnumbers.at(ID_high) - machnumbers.at(ID_low));
+                double CD_interpol(NAN);
+                // If Mach number is present in polars, drag of lower ID does not need to be calculated. x_rel cannot equal zero since ID_low is only used for interpolation.
+                if (fabs(x_rel - 1) < ACCURACY_HIGH) {
+                    CD_interpol = polars.at(ID_high).getCD(CL, useAlternateDragPolars, reqCheck);
+                } else {
+                    CD_interpol = (1. - x_rel) * polars.at(ID_low).getCD(CL, useAlternateDragPolars, reqCheck) +
+                                     x_rel  * polars.at(ID_high).getCD(CL, useAlternateDragPolars, reqCheck);
+                }
+                if (std::isnan(CD_interpol)) {
+                    myRuntimeInfo->debug << "NAN-value in CD interpolation function getCD(CL,M). (Config: " + configName + ", Ma = " << machNumber << ", CL = " << CL
+                    << "). Return NAN" << std::endl;
+                    return NAN;
+                }
+                CD_returnValue = CD_interpol;
+                break;
+            }
+        }
+    }
+    if (!standardCase) {
+        myRuntimeInfo->err << "No result in CD interpolation (Ma = " << machNumber << ", CL = " << CL << "). BUG!" << std::endl;
+        if (reqCheck) {
+            throw std::string("Error in aerodynamics library.");
+        } else {
+            throw("Abort program!");
+        }
+    } else {
+        if (CD_returnValue < 0.) {
+            myRuntimeInfo->err << "Invalid drag in interpolation: CD=" << CD_returnValue << " (Config: " << configName << ", Ma = " << machNumber << ", CL = "
+                                << CL << ")." << std::endl;
+            if (reqCheck) {
+                throw std::string("Error in aerodynamics library.");
+            } else {
+                throw("Abort program!");
+            }
+        }
+    }
+    return CD_returnValue;
+}
+
+std::vector< std::vector<double> > aerodynamics::configuration::getOriginPolar(const double& CL, const double& machNumber, const bool& useAlternateDragPolars,
+                                                                               const bool& reqCheck) {
+    std::vector< std::vector<double> > originPolar_returnValue(2);
+    std::string originPolar_string;
+    bool is_ma(false);
+    for (uint16_t i = 0; i < this->machnumbers.size(); ++i) {
+        // If the requested Mach number does not match one from the polar, the VC segments and the respective deflections are set to the nearest neighbor.
+        if ((machNumber >= this->machnumbers.at(i)) && i != machnumbers.size()-1 && machNumber < machnumbers.at(i+1)) {
+            double delta = machNumber - this->machnumbers.at(i);
+            if ((machnumbers.at(i+1) - machNumber) < delta) {
+                originPolar_string = this->polars.at(i+1).getOriginPolar(CL, useAlternateDragPolars, reqCheck);
+            } else {
+                originPolar_string = this->polars.at(i).getOriginPolar(CL, useAlternateDragPolars, reqCheck);
+            }
+            is_ma = true;
+            break;
+        // Check if requested Mach number is slightly below first Mach number in polar.
+        } else if (fabs(machNumber - this->machnumbers.front()) < ACCURACY_LOW && machNumber < this->machnumbers.front()) {
+            originPolar_string = this->polars.front().getOriginPolar(CL, useAlternateDragPolars, reqCheck);
+            is_ma = true;
+            break;
+        // Check if requested Mach number is slightly above last Mach number in polar.
+        } else if (fabs(machNumber - this->machnumbers.back()) < ACCURACY_LOW && machNumber >= this->machnumbers.back()) {
+            originPolar_string = this->polars.back().getOriginPolar(CL, useAlternateDragPolars, reqCheck);
+            is_ma = true;
+            break;
+        }
+    }
+    if (is_ma) {
+        /** Cut of std::string **/
+        std::string string_tmp1 = originPolar_string;
+        this->numberOfFlapSettings = count(string_tmp1.begin(), string_tmp1.end(), '_');
+        ///Extract segment numbers
+        for (int j = 0; j < numberOfFlapSettings; ++j) {
+            string_tmp1 = string_tmp1.substr(0, (string_tmp1.find_last_of("_")));
+            std::string string_tmp_out = string_tmp1.substr(string_tmp1.find_last_of("g") + 1);
+            string_tmp1 = string_tmp1.substr(0, (string_tmp1.find_last_of("s")) - 1);
+            originPolar_returnValue[0].push_back(atof(string_tmp_out.c_str()));
+        }
+        reverse(originPolar_returnValue.at(0).begin(), originPolar_returnValue.at(0).end());
+        /// Extract deflection angles
+        std::string string_tmp2 = originPolar_string;
+        for (int j = 0; j < numberOfFlapSettings; ++j) {
+            std::string string_tmp_out = string_tmp2.substr(string_tmp2.find_last_of("_") + 1);
+            string_tmp2 = string_tmp2.substr(0, (string_tmp2.find_last_of("s")) - 1);
+            originPolar_returnValue[1].push_back(atof(string_tmp_out.c_str()));
+        }
+        reverse(originPolar_returnValue.at(1).begin(), originPolar_returnValue.at(1).end());
+    } else {
+        throw("Requested Mach number (" + num2Str(machNumber) + ") can neither be found in VC Polar nor has any direct neighbors.");
+    }
+    return originPolar_returnValue;
+}
+
+double aerodynamics::configuration::polar::getCD(const double& CL, const bool& useAlternateDragPolars, const bool& reqCheck) const {
+    const std::vector <double> *vCD_tmp;
+    if (!useAlternateDragPolars) { // Choice of CD vector (Default or turb.) according to switch position
+        vCD_tmp = &this->vCD;
+    } else {
+        vCD_tmp = &this->vCD_alternate;
+    }
+    /* Interpolation of drag polars (CD = f(CL)) */
+    if (this->vCL.size() <= 1) {
+        return vCD_tmp->at(0);
+    } else {
+        if (this->extrapolationMargin == 1 || ((CL > vCL.at(ID_lastValid)) && (CL / vCL.at(ID_lastValid) > this->extrapolationMargin))
+            || ((CL < vCL.at(ID_firstValid)) && (CL / vCL.at(ID_firstValid) < 2 - this->extrapolationMargin))) {  // No extrapolation allowed
+            /* lin. Interpolation */
+            if (CL > vCL.at(ID_lastValid)) {
+                if (CL > 1.5 * vCL.at(ID_lastValid)) {
+                    myRuntimeInfo->warn << "Stall! CLmax exceeded!" << std::endl;
+                    myRuntimeInfo->warn << "CL = "                   << CL << std::endl;
+                    myRuntimeInfo->warn << "CL_max = "               << vCL.at(ID_CLmax) << std::endl;
+                    myRuntimeInfo->warn << "CL (last valid ID) = "   << vCL.at(ID_lastValid) << std::endl;
+                    if (reqCheck) {
+                        throw std::string("Error in aerodynamics library.");
+                    } else {
+                        throw("Abort program!");
+                    }
+                }
+                return NAN;
+            } else if (CL < vCL.at(ID_firstValid)) {
+                return vCD_tmp->at(1) - ((vCD_tmp->at(1) - vCD_tmp->at(0)) / (vCL.at(1) - vCL.at(0)) * (vCL.at(1) - CL));
+            } else {
+                // Constantly increase CL vector
+                uint16_t i(ID_firstValid);
+                while (i < ID_lastValid) {
+                    if (vCL.at(i + 1) >= CL) {
+                        uint16_t foundPos(i);
+                        double x_rel = (CL - vCL.at(foundPos)) / (vCL.at(foundPos + 1) - vCL.at(foundPos));
+                        return (1. - x_rel) * vCD_tmp->at(foundPos) + x_rel * vCD_tmp->at(foundPos + 1);
+                    } else {
+                        i++;
+                    }
+                }
+            }
+        } else {
+            if (CL > vCL.at(ID_lastValid)) {
+                myRuntimeInfo->debug << "Extrapolating last valid CL = " << vCL.at(ID_lastValid) << " to requested CL = " << CL << std::endl;
+                double x_rel    = (CL - vCL.at(ID_lastValid - 1)) / (vCL.at(ID_lastValid) - vCL.at(ID_lastValid - 1));
+                return (1. - x_rel) * vCD_tmp->at(ID_lastValid - 1) +  x_rel * vCD_tmp->at(ID_lastValid);
+            } else if (CL < vCL.at(ID_firstValid)) {
+                myRuntimeInfo->debug << "Extrapolating first valid CL = " << vCL.at(ID_firstValid) << " to requested CL = " << CL << std::endl;
+                double x_rel    = (CL - vCL.at(ID_firstValid)) / (vCL.at(ID_firstValid + 1) - vCL.at(ID_firstValid));
+                if (x_rel < -10.) {
+                    return vCD_tmp->at(ID_firstValid);
+                } else {
+                    return (1. - x_rel) * vCD_tmp->at(ID_firstValid) +  x_rel * vCD_tmp->at(ID_firstValid + 1);
+                }
+            } else {
+                //Constantly increase CL vector
+                uint16_t i(ID_firstValid);
+                while (i < ID_lastValid) {
+                    if (vCL.at(i + 1) >= CL) {
+                        uint16_t foundPos(i);
+                        double x_rel = (CL - vCL.at(foundPos)) / (vCL.at(foundPos + 1) - vCL.at(foundPos));
+                        return (1. - x_rel) * vCD_tmp->at(foundPos) + x_rel * vCD_tmp->at(foundPos + 1);
+                    } else {
+                        i++;
+                    }
+                }
+            }
+        }
+    }
+    myRuntimeInfo->err << "No result in CD interpolation (CL=" << CL << "). BUG!" << std::endl;
+    if (reqCheck) {
+        throw std::string("Error in aerodynamics library.");
+    } else {
+        throw("Abort program!");
+    }
+    return NAN;
+}
+
+double aerodynamics::configuration::polar::getCL_firstValid() const { // cppcheck-suppress unusedFunction
+    if (this->ID_firstValid == UINT16_MAX || this->ID_firstValid >= this->vCL.size()) {
+        throw("Return CL (first valid) not possible: invalid ID " + num2Str(ID_firstValid) + ". Abort program!");
+    }
+    return vCL.at(this->ID_firstValid);
+}
+
+double aerodynamics::configuration::polar::getCL_lastValid() const {
+    if (this->ID_lastValid == UINT16_MAX || this->ID_lastValid >= this->vCL.size()) {
+        throw("Return CL (first valid) not possible: invalid ID " + num2Str(ID_lastValid) + ". Abort program!");
+    }
+    return vCL.at(this->ID_lastValid);
+}
+
+std::string aerodynamics::configuration::polar::getOriginPolar(const double& CL, const bool& useAlternateDragPolars, const bool& reqCheck) const {
+    /** Choice of CD vector (Default or turb.) according to switch position **/
+    const std::vector <std::string> *vOrigin_polar_tmp;
+    if (!useAlternateDragPolars) {
+        vOrigin_polar_tmp = &this->vOrigin_polar;
+    } else {
+        vOrigin_polar_tmp = &this->vOrigin_polar;
+    }
+    /* Interpolation of drag polars (CD = f(CL)) */
+    if (this->vCL.size() <= 1) {
+        return vOrigin_polar_tmp->at(0);
+    } else {
+        if (this->extrapolationMargin == 1 || ((CL > vCL.at(ID_lastValid)) && (CL / vCL.at(ID_lastValid) > this->extrapolationMargin))
+            || ((CL < vCL.at(ID_firstValid)) && (CL / vCL.at(ID_firstValid) < 2 - this->extrapolationMargin))) {  // No extrapolation allowed
+            /* lin. Interpolation */
+            if (CL > vCL.at(ID_lastValid)) {
+                if (CL > 1.5 * vCL.at(ID_lastValid)) {
+                    myRuntimeInfo->warn << "Stall! CLmax exceeded!" << std::endl;
+                    myRuntimeInfo->warn << "CL = "                   << CL << std::endl;
+                    myRuntimeInfo->warn << "CL_max = "               << vCL.at(ID_CLmax) << std::endl;
+                    myRuntimeInfo->warn << "CL (last valid ID) = "   << vCL.at(ID_lastValid) << std::endl;
+                    if (reqCheck) {
+                        throw std::string("Error in aerodynamics library.");
+                    } else {
+                        throw("Abort program!");
+                    }
+                }
+                return "invalid";
+            } else if (CL < vCL.at(ID_firstValid)) {
+                return vOrigin_polar_tmp->at(ID_firstValid);
+            } else {
+                //Constantly increase CL vector
+                uint16_t i(ID_firstValid);
+                while (i < ID_lastValid) {
+                    if (vCL.at(i + 1) >= CL) {
+                        uint16_t foundPos(i);
+                        double assignFlapSetting = (vCL.at(foundPos + 1) - CL) / (CL - vCL.at(foundPos));
+                        if (assignFlapSetting < 0) {
+                            throw("Error in the assignment of the flap setting");
+                        } else if (assignFlapSetting > 0 && assignFlapSetting < 1) {
+                            return vOrigin_polar_tmp->at(foundPos + 1);
+                        } else if (assignFlapSetting > 1) {
+                            return vOrigin_polar_tmp->at(foundPos);
+                        }
+                    } else {
+                        i++;
+                    }
+                }
+            }
+        } else {
+            if (CL > vCL.at(ID_lastValid)) {
+                return vOrigin_polar_tmp->at(ID_lastValid);
+            } else if (CL < vCL.at(ID_firstValid)) {
+                return vOrigin_polar_tmp->at(ID_firstValid);
+            } else {
+                //Constantly increase CL vector
+                uint16_t i(ID_firstValid);
+                while (i < ID_lastValid) {
+                    if (vCL.at(i + 1) >= CL) {
+                        uint16_t foundPos(i);
+                        double assignFlapSetting = (vCL.at(foundPos + 1) - CL) / (CL - vCL.at(foundPos));
+                        if (assignFlapSetting < 0) {
+                            throw("Error in the assignment of the flap setting");
+                        } else if (assignFlapSetting > 0 && assignFlapSetting < 1) {
+                            return vOrigin_polar_tmp->at(foundPos + 1);
+                        } else if (assignFlapSetting > 1) {
+                            return vOrigin_polar_tmp->at(foundPos);
+                        }
+                    } else {
+                        i++;
+                    }
+                }
+            }
+        }
+    }
+    myRuntimeInfo->err << "No result in the assignment of the flap setting (CL=" << CL << "). BUG!" << std::endl;
+    if (reqCheck) {
+        throw std::string("Error in aerodynamics library.");
+    } else {
+        throw("Abort program!");
+    }
+    return "invalid";
+}
+
+bool aerodynamics::configuration::polar::isValid(const double& CL) const {
+    if ((CL >= vCL.at(this->ID_firstValid) && CL <= vCL.at(this->ID_lastValid)) // CL within bounds
+        || (CL > vCL.at(this->ID_lastValid) && (CL / vCL.at(this->ID_lastValid) <= this->extrapolationMargin))
+        || (CL < vCL.at(this->ID_firstValid) && (CL / vCL.at(ID_firstValid) >= 2 - this->extrapolationMargin))) {
+        return true;
+    } else {
+        return false;
+    }
+}
+
+// cppcheck-suppress unusedFunction
+double aerodynamics::getAlphaAtFlightCondition(const double& machNumber, const std::string& config, const double& liftCoefficient) const {
+    double alpha(NAN);
+    if (machNumber <= 0.) {
+        return alpha;
+    } else {
+        std::vector<std::string>::const_iterator entry = find(this->configurationList.begin(), this->configurationList.end(), config);
+        if (entry == this->configurationList.end()) { //Entry not available
+            throw("Polar for configuration " + config + " not found!");
+        } else {
+            uint16_t pos(0);
+            pos = static_cast<int>(entry - this->configurationList.begin());
+            try {
+                alpha = this->configurations.at(pos).getAlphaAtCL(liftCoefficient, machNumber);
+            } catch (const std::string& text) {
+                myRuntimeInfo->err << text << std::endl;
+                myRuntimeInfo->err << "Stall! Extrapolation not allowed. No valid alpha for CL = " << liftCoefficient << " and Ma = " << machNumber << std::endl;
+            }
+            return alpha;
+        }
+    }
+}
+
+double aerodynamics::configuration::getCmAtCLmax(const double& machNumber) const { // cppcheck-suppress unusedFunction
+    double CmAtCLmax(0.0);
+    if (machNumber <= this->machnumbers.front()) {
+        CmAtCLmax = this->polars.front().vCm.back();
+    } else if (machNumber >= this->machnumbers.back()) {
+        CmAtCLmax = this->polars.back().vCm.back();
+    } else {
+        uint16_t i(1);
+        while (i < this->machnumbers.size()) {
+            if (machNumber > this->machnumbers.at(i)) {
+                i++;
+            } else {
+                CmAtCLmax = ((polars.at(i).vCm.back() - polars.at(i - 1).vCm.back()) /
+                             (machnumbers.at(i) - machnumbers.at(i - 1)) *
+                             (machNumber - machnumbers.at(i - 1)))
+                            + polars.at(i - 1).vCm.back();
+                return CmAtCLmax;
+            }
+        }
+    }
+    return CmAtCLmax;
+}
+
+double aerodynamics::configuration::getCLAtAlpha(const double& alpha, const double& machNumber) const { // cppcheck-suppress unusedFunction
+    double CLAtAlpha(0.0);
+    if (machNumber <= this->machnumbers.front()) {
+        CLAtAlpha = getPolarValue(alpha, this->polars.front().vAOA, this->polars.front().vCL, this->polars.front().extrapolationMargin);
+    } else if (machNumber >= this->machnumbers.back()) {
+        CLAtAlpha = getPolarValue(alpha, this->polars.back().vAOA, this->polars.back().vCL, this->polars.back().extrapolationMargin);
+    } else {
+        uint16_t i(1);
+        while (i < this->machnumbers.size()) {
+            if (machNumber > this->machnumbers.at(i)) {
+                i++;
+            } else {
+                CLAtAlpha = ((getPolarValue(alpha, this->polars.at(i).vAOA, this->polars.at(i).vCL, this->polars.at(i).extrapolationMargin) -
+                              getPolarValue(alpha, this->polars.at(i - 1).vAOA, this->polars.at(i - 1).vCL,  this->polars.at(i-1).extrapolationMargin)) /
+                             (this->machnumbers.at(i) - this->machnumbers.at(i - 1)) * (machNumber - this->machnumbers.at(i - 1)))
+                            + getPolarValue(alpha, this->polars.at(i - 1).vAOA, this->polars.at(i - 1).vCL,  this->polars.at(i-1).extrapolationMargin);
+                return CLAtAlpha;
+            }
+        }
+    }
+    return CLAtAlpha;
+}
+
+double aerodynamics::configuration::getAlphaAtCL(const double& CL, const double& machNumber) const {
+    double AlphaAtCL(0.0);
+    if (machNumber <= this->machnumbers.front()) {
+        AlphaAtCL = getPolarValue(CL, this->polars.front().vCL, this->polars.front().vAOA, this->polars.front().extrapolationMargin);
+    } else if (machNumber >= this->machnumbers.back()) {
+        AlphaAtCL = getPolarValue(CL, this->polars.back().vCL, this->polars.back().vAOA, this->polars.back().extrapolationMargin);
+    } else {
+        uint16_t i(1);
+        while (i < this->machnumbers.size()) {
+            if (machNumber > this->machnumbers.at(i)) {
+                i++;
+            } else {
+                AlphaAtCL = ((getPolarValue(CL, this->polars.at(i).vCL, this->polars.at(i).vAOA, this->polars.at(i).extrapolationMargin)
+                              - getPolarValue(CL, this->polars.at(i-1).vCL, this->polars.at(i-1).vAOA, this->polars.at(i-1).extrapolationMargin)) /
+                             (this->machnumbers.at(i) - this->machnumbers.at(i - 1)) * (machNumber - this->machnumbers.at(i - 1)))
+                            + getPolarValue(CL, this->polars.at(i-1).vCL, this->polars.at(i-1).vAOA, this->polars.at(i-1).extrapolationMargin);
+                return AlphaAtCL;
+            }
+        }
+    }
+    return AlphaAtCL;
+}
+
+double aerodynamics::configuration::getCmAtAlpha(const double& alpha, const double& machNumber) const { // cppcheck-suppress unusedFunction
+    double CmAtAtAlpha(0.0);
+    if (machNumber <= this->machnumbers.front()) {
+        CmAtAtAlpha = getPolarValue(alpha, this->polars.front().vAOA, this->polars.front().vCm, this->polars.front().extrapolationMargin);
+    } else if (machNumber >= this->machnumbers.back()) {
+        CmAtAtAlpha = getPolarValue(alpha, this->polars.back().vAOA, this->polars.back().vCm, this->polars.back().extrapolationMargin);
+    } else {
+        uint16_t i(1);
+        while (i < this->machnumbers.size()) {
+            if (machNumber > this->machnumbers.at(i)) {
+                i++;
+            } else {
+                CmAtAtAlpha = ((getPolarValue(alpha, this->polars.at(i).vAOA, this->polars.at(i).vCm, this->polars.at(i).extrapolationMargin) -
+                                getPolarValue(alpha, this->polars.at(i-1).vAOA, this->polars.at(i-1).vCm, this->polars.at(i-1).extrapolationMargin)) /
+                               (this->machnumbers.at(i) - this->machnumbers.at(i-1)) * (machNumber - this->machnumbers.at(i-1)))
+                              + getPolarValue(alpha, this->polars.at(i-1).vAOA, this->polars.at(i-1).vCm, this->polars.at(i-1).extrapolationMargin);
+                return CmAtAtAlpha;
+            }
+        }
+    }
+    return CmAtAtAlpha;
+}
+
+double aerodynamics::configuration::getCmAtCL(const double& CL, const double& machNumber) const { // cppcheck-suppress unusedFunction
+    double CmAtAtCL(0.0);
+    if (machNumber <= this->machnumbers.front()) {
+        CmAtAtCL = getPolarValue(CL, this->polars.front().vCL, this->polars.front().vCm, this->polars.front().extrapolationMargin);
+    } else if (machNumber >= this->machnumbers.back()) {
+        CmAtAtCL = getPolarValue(CL, this->polars.back().vCL, this->polars.back().vCm, this->polars.back().extrapolationMargin);
+    } else {
+        uint16_t i(1);
+        while (i < this->machnumbers.size()) {
+            if (machNumber > this->machnumbers.at(i)) {
+                i++;
+            } else {
+                CmAtAtCL = ((getPolarValue(CL, this->polars.at(i).vCL, this->polars.at(i).vCm, this->polars.at(i).extrapolationMargin)
+                             - getPolarValue(CL, this->polars.at(i-1).vCL, this->polars.at(i-1).vCm, this->polars.at(i-1).extrapolationMargin))
+                             / (this->machnumbers.at(i) - this->machnumbers.at(i-1)) * (machNumber - this->machnumbers.at(i-1)))
+                           + getPolarValue(CL, this->polars.at(i-1).vCL, this->polars.at(i-1).vCm, this->polars.at(i-1).extrapolationMargin);
+                return CmAtAtCL;
+            }
+        }
+    }
+    return CmAtAtCL;
+}
+
+double aerodynamics::configuration::getPolarValue(const double& xValue, const std::vector<double>& x_vec, const std::vector<double>& y_vec,
+                                                  const double& extrapolationMargin) const {
+    if (x_vec.size() <= 1) {
+        return y_vec.at(0);
+    } else {
+        /** lin. Interpolation **/
+        std::vector<double>::const_iterator itMin = std::min_element(x_vec.begin(), x_vec.end());
+        std::vector<double>::const_iterator itMax = std::max_element(x_vec.begin(), x_vec.end());
+        if (xValue > *(itMax)) {
+            if (xValue / *(itMax) <= extrapolationMargin) {
+                uint16_t positionOfMaxElement(static_cast<int>(itMax - x_vec.begin()));
+                return y_vec.at(positionOfMaxElement - 1) + ((y_vec.at(positionOfMaxElement) - y_vec.at(positionOfMaxElement - 1)) /
+                        (x_vec.at(positionOfMaxElement) - x_vec.at(positionOfMaxElement - 1)) * (xValue - x_vec.at(positionOfMaxElement)));
+            } else {
+                throw("Requested value = " + num2Str(xValue) + " is higher than maximum calculated value = " + num2Str(*(itMax)) + ".");
+            }
+        } else if (xValue < * (itMin + 1)) {
+            //Extrapolation
+            return y_vec.at(1) - ((y_vec.at(1) - y_vec.at(0)) / (x_vec.at(1) - x_vec.at(0)) * (x_vec.at(1) - xValue));
+        } else {
+            //Constantly increase x-value vector
+            uint16_t i(0);
+            while (i < x_vec.size() - 1) {
+                if (x_vec.at(i + 1) >= xValue) {
+                    uint16_t foundPos(i);
+                    return ((y_vec.at(foundPos + 1) - y_vec.at(foundPos)) / (x_vec.at(foundPos + 1) - x_vec.at(foundPos)) * (xValue - x_vec.at(foundPos))) + y_vec.at(foundPos);
+                } else {
+                    i++;
+                }
+            }
+        }
+    }
+    return 0.;
+}
+
+/** Constructor aerodynamics **/
+aerodynamics::aerodynamics(const node& acXML, const node& polarXML)
+    :
+    altPolarsInUse(false),
+    cruiseConfiguration(""),
+    CLmaxTakeoff(0.),
+    CLmaxLanding(0.),
+    CLoptimumCruise(0.),
+    CLgroundRoll(0.),
+    maxSpoilerFactor(0.),
+    acXML(acXML),
+    polarXML(polarXML),
+    MMO(0.),
+    wingReferenceArea(0.),
+    polarFileName(acXML.at("aircraft_exchange_file/analysis/aerodynamics/polar/polar_file/value")),
+    useCDalternatePolars(false),
+    reqCheck(false) {
+    const node& acAerodynamics(acXML.at("aircraft_exchange_file/analysis/aerodynamics"));
+    //Read reference values from AcftExchangeFile
+    MMO = EndnodeReadOnly<double>("requirements_and_specifications/requirements/top_level_aircraft_requirements/flight_envelope/maximum_operating_mach_number").read(acXML).value();
+    wingReferenceArea = EndnodeReadOnly<double>("reference_values/S_ref").read(acAerodynamics).value();
+    CLmaxTakeoff = EndnodeReadOnly<double>("lift_coefficients/C_LmaxT-O").read(acAerodynamics).value();
+    CLmaxLanding = EndnodeReadOnly<double>("lift_coefficients/C_LmaxLanding").read(acAerodynamics).value();
+    CLoptimumCruise = EndnodeReadOnly<double>("lift_coefficients/C_LoptimumCruise").read(acAerodynamics).value();
+    CLgroundRoll = EndnodeReadOnly<double>("lift_coefficients/C_LgroundRoll").read(acAerodynamics).value();
+    maxSpoilerFactor = EndnodeReadOnly<double>("max_spoiler_factor").read(acAerodynamics).value();
+    myRuntimeInfo->out << "Read aerodynamic data from file: " << std::string(polarXML.getName()) << std::endl;
+    /** Read Configuration List and put those into the configurations std::vector **/
+    for (uint16_t i(0); i < acAerodynamics.getVector("polar/configuration").size(); i++) {
+        configurationList.push_back(EndnodeReadOnly<std::string>("polar/configuration@" + num2Str(i) + "/name").read(acAerodynamics).value());
+        configurations.push_back(configuration(configurationList.at(i), this->MMO, polarXML));
+        // Get Cruise configuration
+        if (EndnodeReadOnly<std::string>("polar/configuration@" + num2Str(i) + "/type").read(acAerodynamics).value() == "cruise") {
+            cruiseConfiguration = EndnodeReadOnly<std::string>("polar/configuration@" + num2Str(i) + "/name").read(acAerodynamics).value();
+        }
+    }
+    if (cruiseConfiguration.empty()) {
+        throwError(__FILE__, __func__, __LINE__, "Within the aircraft XML's polars, there is no cruise configuration. Abort program!");
+    }
+    /** Close pointer on polar data **/
+    aixml::closeDocument(polarXML);
+}
+
+aerodynamics::~aerodynamics() {
+    //dtor
+}
+
+/** Constructor configuration **/
+aerodynamics::configuration::configuration(const std::string& aConfig, const double& myMMO, const node& polarXML)
+    :
+    configName(aConfig),
+    numberOfFlapSettings(1),
+    MMO(myMMO) {
+    node& configuration(polarXML.at("configurations/configuration@" + aConfig + "/polars"));
+    for (uint16_t machID(0); machID < configuration.getVector("polar").size(); machID++) {
+        node *tmpPolar(&configuration.at("polar@" + num2Str(machID + 1)));
+        machnumbers.push_back((*tmpPolar).at("machnumber"));
+        reynoldsNumbers.push_back((*tmpPolar).at("reynoldsnumber"));
+        altitudes.push_back((*tmpPolar).at("altitude"));
+        polars.push_back(polar(aConfig, machID, (*tmpPolar)));
+    }
+}
+aerodynamics::configuration::~configuration() {
+    //dtor
+}
+
+/** Constructor polar **/
+aerodynamics::configuration::polar::polar(const std::string& aConfig, const int& machID, const node& polar)
+    :
+    ID_firstValid(SHRT_MAX),
+    ID_lastValid(SHRT_MAX),
+    ID_CLmin(SHRT_MAX),
+    ID_CLmax(SHRT_MAX),
+    allowGridChange(polar.getBoolAttrib("AllowGridChange")),
+    extrapolationMargin(polar.getDoubleAttrib("ExtrapolationMargin")) {
+    /** Read coefficient matrix and save in vectors **/
+    std::vector<std::string> vAOA_str, vCL_str, vCD_str, vCD_alternate_str, vCm_str, vIStab_str;
+    vAOA_str = tokenize(std::string(polar.at("Alpha")), ";");
+    vCL_str = tokenize(std::string(polar.at("Cl")), ";");
+    vCD_str = tokenize(std::string(polar.at("Cd")), ";");
+    vCm_str = tokenize(std::string(polar.at("Cm")), ";");
+    this->vOrigin_polar = tokenize(std::string(polar.at("origin_polar")), ";");
+    vIStab_str = tokenize(std::string(polar.at("iStab_polar")), ";");
+    if (aConfig == "clean") {
+        vCD_alternate_str = tokenize(std::string(polar.at("Cd_turb")), ";");
+    } else {
+        vCD_alternate_str = tokenize(std::string(polar.at("Cd")), ";");
+    }
+    //Check if polars are correct
+    if (vAOA_str.size() != vCL_str.size()
+        || vAOA_str.size() != vCD_str.size()
+        || vAOA_str.size() != vCD_alternate_str.size()
+        || vAOA_str.size() != vCm_str.size()
+        || vAOA_str.size() != vIStab_str.size()
+        || vAOA_str.size() != this->vOrigin_polar.size()) {
+        throw("In polar XML file, configuration \"" + aConfig + "\", machID \"" + num2Str(machID) + "\": vector sizes in XML file do not have the same size!");
+    }
+    //TODO(peter#1#) next call already fishy. <value>seg0_15</value> is going to be zero
+    if (aConfig == "clean") {
+        if (vAOA_str.size() < 5) {
+            throw("Error in polar file: not enough entries for Clean-Configuration. Abort program!");
+        }
+    } else {
+        if (vAOA_str.size() < 4) {
+            throw("Error in polar file: not enough entries for " + aConfig + "-Configuration. Abort program!");
+        }
+    }
+    for (size_t aPoint(0); aPoint < vAOA_str.size(); aPoint++) {
+        this->vAOA.push_back(atof(vAOA_str.at(aPoint).c_str()));
+        this->vCL.push_back(atof(vCL_str.at(aPoint).c_str()));
+        transform(vCD_str.at(aPoint).begin(), vCD_str.at(aPoint).end(), vCD_str.at(aPoint).begin(), [](const unsigned char& aCharacter) {
+            return std::tolower(aCharacter);
+        });
+        if (vCD_str.at(aPoint) != "nan") {
+            this->vCD.push_back(atof(vCD_str.at(aPoint).c_str()));
+            this->vCD_alternate.push_back(atof(vCD_alternate_str.at(aPoint).c_str()));
+        } else {
+            this->vCD.push_back(NAN);
+            this->vCD_alternate.push_back(NAN);
+        }
+        this->vCm.push_back(atof(vCm_str.at(aPoint).c_str()));
+        this->vIStab.push_back(atof(vIStab_str.at(aPoint).c_str()));
+    }
+    /** Find and set first and last valid ID **/
+    // TODO(risse#1#): validIDs previously only used in getCD -> also use in other functions, Mantis ID 0000197
+    //CD
+    for (uint16_t i(0); i < vCD.size(); i++) {
+        if (!std::isnan(vCD.at(i))) {
+            ID_firstValid = i;
+            break;
+        }
+    }
+    for (int i(vCD.size() - 1); i >= 0; i--) {
+        if (!std::isnan(vCD.at(i))) {
+            ID_lastValid = i;
+            break;
+        }
+    }
+    for (uint16_t i(ID_firstValid); i <= ID_lastValid; i++) {
+        if (std::isnan(vCD.at(i)) || std::isinf(vCD.at(i))) {
+            myRuntimeInfo->err << "Error when creating the polars!" << std::endl;
+            myRuntimeInfo->err << "Configuration: " << aConfig << std::endl;
+            myRuntimeInfo->err << "Mach ID: " << machID << std::endl;
+            myRuntimeInfo->err << "CD = " << vCD.at(i) << std::endl;
+            throw("There must be no invalid entry between the first and last valid ID! Abort program!");
+        }
+    }
+    //CD_turb
+    if (aConfig == "clean") {
+        uint16_t ID_firstValid_turb(SHRT_MAX);
+        uint16_t ID_lastValid_turb(SHRT_MAX);
+        for (uint16_t i(0); i < vCD_alternate.size(); i++) {
+            if (!std::isnan(vCD_alternate.at(i))) {
+                ID_firstValid_turb = i;
+                break;
+            }
+        }
+        for (int i(vCD_alternate.size() - 1); i >= 0; i--) {
+            if (!std::isnan(vCD_alternate.at(i))) {
+                ID_lastValid_turb = i;
+                break;
+            }
+        }
+        for (uint16_t i(ID_firstValid_turb); i <= ID_lastValid_turb; i++) {
+            if (std::isnan(vCD_alternate.at(i)) || std::isinf(vCD_alternate.at(i))) {
+                myRuntimeInfo->err << "Error when creating the polars!" << std::endl;
+                myRuntimeInfo->err << "Configuration: " << aConfig << std::endl;
+                myRuntimeInfo->err << "Mach ID: " << machID << std::endl;
+                myRuntimeInfo->err << "CD (turb) = " << vCD_alternate.at(i) << std::endl;
+                throw("There must be no invalid entry between the first and last valid ID! Abort program!");
+            }
+        }
+        if (ID_firstValid_turb != this->ID_firstValid) {
+            throw("First valid IDs not equal for CD_turb " + num2Str(ID_firstValid_turb) + " and CD " + num2Str(ID_firstValid) + ". Abort program!");
+        }
+        if (ID_lastValid_turb != this->ID_lastValid) {
+// TODO(admin#1#): check and correct this, Mantis ID 0000186
+            myRuntimeInfo->warn << "Last valid IDs not equal for CD_turb " << ID_firstValid_turb << " and CD " << ID_firstValid << ". Abort program!" << std::endl;
+        }
+    }
+    /** Check and compare CL_min, CL_max **/
+    std::vector<double>::iterator itMin = std::min_element(vCL.begin() + ID_firstValid, vCL.begin() + ID_lastValid + 1);
+    std::vector<double>::iterator itMax = std::max_element(vCL.begin() + ID_firstValid, vCL.begin() + ID_lastValid + 1);
+    ID_CLmin = static_cast<int>(itMin - vCL.begin());
+    ID_CLmax = static_cast<int>(itMax - vCL.begin());
+// TODO(risse#3#): For the time being, it is assumed that CL is montonically increasing -> only take into account as soon as post-stable areas are mapped, Mantis ID  0000187
+    if (ID_CLmin != ID_firstValid) {
+        throw("IDs not equal for first valid " + num2Str(ID_firstValid) + " and smallest CL " + num2Str(ID_CLmin) + ". Abort program!");
+    }
+    if (ID_CLmax != ID_lastValid) {
+        throw("IDs not equal for last valid " + num2Str(ID_lastValid) + " and CL_max " + num2Str(ID_CLmax) + ". Abort program!");
+    }
+}
+
+aerodynamics::configuration::polar::~polar() {
+    //dtor
+}
diff --git a/aircraftGeometry2/CMakeLists.txt b/aircraftGeometry2/CMakeLists.txt
new file mode 100644
index 00000000..c0dae863
--- /dev/null
+++ b/aircraftGeometry2/CMakeLists.txt
@@ -0,0 +1,109 @@
+# Set the library name
+set( LIBRARY_NAME aircraftGeometry2 )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/builder/acxml.cpp
+    src/builder/builder.cpp
+    src/geometry/entity3d.cpp
+    src/geometry/section.cpp
+    src/geometry/surface.cpp
+    src/geometry/factory.cpp
+    src/processing/transform.cpp
+    src/processing/measure.cpp
+    src/io/dat.cpp
+    src/io/convert.cpp
+    resources.rc
+)
+
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_AIRCRAFTGEOMETRY_SHARED" PUBLIC "IMPORT_AIRCRAFTGEOMETRY_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Find required packages
+find_package(Eigen3 REQUIRED)
+find_package(CGAL 5.6 REQUIRED )
+
+# Link against dependent libraries
+target_link_libraries( ${LIBRARY_NAME} 
+    PUBLIC
+        Eigen3::Eigen
+        CGAL::CGAL
+        aixml
+)
+
+# === Add a demo executable ===
+add_executable( demo_${LIBRARY_NAME} ${LIBRARY_SOURCES} src/demo.cpp )
+target_link_libraries( demo_${LIBRARY_NAME} 
+    PRIVATE
+        aixml
+        Eigen3::Eigen
+        CGAL::CGAL
+)
+target_include_directories( demo_${LIBRARY_NAME} 
+    PRIVATE
+        ${CMAKE_CURRENT_LIST_DIR}/include
+)
+
+# Add testing if enabled
+if(BUILD_UNITTEST)
+    add_subdirectory(test)
+endif()
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
+
+# === Add python bindings ===
+pybind11_add_module( py11${LIBRARY_NAME}
+    src/builder/acxml.cpp
+    src/builder/builder.cpp
+    src/geometry/entity3d.cpp
+    src/geometry/section.cpp
+    src/geometry/factory.cpp
+    src/io/dat.cpp
+    src/io/convert.cpp
+    src/processing/transform.cpp
+    src/processing/measure.cpp
+    src/py_aircraft_geometry.cpp )
+target_include_directories( py11${LIBRARY_NAME} PUBLIC include)
+set_target_properties(aixml PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
+target_link_libraries(py11${LIBRARY_NAME} PRIVATE Eigen3::Eigen CGAL::CGAL aixml)
+
+# On Windows the Python Debug builds are not properly supported -> warn about this
+if(MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug")
+    message(WARNING "\n[${PROJECT_NAME}] -> Building Python binding of ${LIBRARY_NAME} in Debug Mode on Windows. This is not properly supported!")
+endif()
+
+# Set the output directory for the python binding -> Use generator expressions to force multi-generator output to the same location
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyaircraftgeometry2/pyaircraftgeometry2$<0:>) # .dll for Windows
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyaircraftgeometry2/pyaircraftgeometry2$<0:>) # .so for Unix
+
+# Add the package to the package list for exporting the target
+# and propagate the resulting list back to the parent scope
+list( APPEND PYTHON_TARGETS ${CMAKE_CURRENT_LIST_DIR}/pyaircraftgeometry2 )
+set( PYTHON_TARGETS ${PYTHON_TARGETS} PARENT_SCOPE )
+
+install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyaircraftgeometry2 DESTINATION lib)
\ No newline at end of file
diff --git a/aircraftGeometry2/include/aircraftGeometry2/airfoil_surface.h b/aircraftGeometry2/include/aircraftGeometry2/airfoil_surface.h
new file mode 100644
index 00000000..058de95a
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/airfoil_surface.h
@@ -0,0 +1,170 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_AIRFOIL_SURFACE_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_AIRFOIL_SURFACE_H_
+
+/* === Includes === */
+#include <string_view>
+#include "aircraftGeometry2/geometry/section.h"
+#include "aircraftGeometry2/geometry/surface.h"
+#include "aircraftGeometry2/geometry/factory.h"
+
+namespace geom2
+{
+
+    /* === Classes === */
+    /**
+     * @class AirfoilSurfaceFactory
+     * @brief Factory for airfoil surface geometry as defined in the aircraft xml file.
+     * @details This factory is mainly intended for auxiliary surfaces like empennages or pylons.
+     * It does **NOT** respect the following airfoil properties:
+     * - *scale_thickness*: Always defaults to `1.0`
+     * - *is_symmetric*: Always defaults to `false`
+     * 
+     * => Use geom2::WingFactory if these parameters are in use!
+     */
+    class AirfoilSurfaceFactory : public Factory<MultisectionSurface<AirfoilSection>>
+    {
+    public:
+        /**
+         * @brief Construct a new Factory object
+         * 
+         * @tparam InputType The input format of the factory.
+         * @param input The input data for the factory.
+         * @param data_dir The path to the geometry data directory.
+         */
+        template <typename InputType>
+        AirfoilSurfaceFactory(InputType input, const std::filesystem::path& data_dir) : Factory(input, data_dir) {}
+
+        /**
+         * @brief Call the builder of the factory to create a surface.
+         * @note The extrusion direction of this surface is in the **negative**  `Z` direction!
+         * @attention This function is mainly intended for auxiliary surfaces like empennages or pylons.
+         * It does **NOT** respect the following airfoil properties:
+         * - *scale_thickness*: Always defaults to `1.0`
+         * - *is_symmetric*: Always defaults to `false`
+         * 
+         * => Use geom2::WingFactory if these parameters are in use!
+         * 
+         * @param name The identifier of the surface.
+         * @return geom2::MultisectionSurface<geom2::AirfoilSection> The created surface.
+         */
+        auto create(std::string_view name) -> MultisectionSurface<AirfoilSection> final
+        {
+            return this->builder->build_airfoil_surface(name);
+        }
+    };
+
+    /**
+     * @class SparFactory
+     * @brief Factory for spar geometry as defined in the aircraft xml file.
+     */
+    class SparFactory : public Factory<MultisectionSurface<PolygonSection>>
+    {
+    public:
+        /**
+         * @brief Construct a new Factory object
+         * 
+         * @tparam InputType The input format of the factory.
+         * @param input The input data for the factory.
+         * @param data_dir The path to the geometry data directory.
+         */
+        template <typename InputType>
+        SparFactory(InputType input, const std::filesystem::path& data_dir) : Factory(input, data_dir) {}
+
+        /**
+         * @brief Call the builder of the factory to create a surface.
+         * @note The extrusion direction of this surface is in the **negative**  `Z` direction!
+         * 
+         * @param name The identifier of the surface.
+         * @return geom2::MultisectionSurface<geom2::PolygonSection> The created surface.
+         */
+        auto create(std::string_view name) -> MultisectionSurface<PolygonSection> final
+        {
+            return this->builder->build_spar(name);
+        }
+    };
+
+    /**
+     * @class ControlDeviceFactory
+     * @brief Factory for control device geometry as defined in the aircraft xml file.
+     */
+    class ControlDeviceFactory : public Factory<MultisectionSurface<PolygonSection>>
+    {
+    public:
+        /**
+         * @brief Construct a new Factory object
+         * @note The extrusion direction of this surface is in the **negative**  `Z` direction!
+         * 
+         * @tparam InputType The input format of the factory.
+         * @param input The input data for the factory.
+         * @param data_dir The path to the geometry data directory.
+         */
+        template <typename InputType>
+        ControlDeviceFactory(InputType input, const std::filesystem::path& data_dir) : Factory(input, data_dir) {}
+
+        /**
+         * @brief Call the builder of the factory to create a surface.
+         * 
+         * @param name The identifier of the surface.
+         * @return geom2::ControlDeviceContainer Container which contains all control devices of the entity.
+         */
+        auto create(std::string_view name) -> MultisectionSurface<PolygonSection> final
+        {
+            return this->builder->build_control_device(name);
+        }
+    };
+
+    /**
+     * @class WingFactory
+     * @brief Factory for wing geometry as defined in the aircraft xml file.
+     */
+    class WingFactory : public Factory<MultisectionSurface<AirfoilSection>>
+    {
+    public:
+        /**
+         * @brief Construct a new Factory object
+         * 
+         * @tparam InputType The input format of the factory.
+         * @param input The input data for the factory.
+         * @param data_dir The path to the geometry data directory.
+         */
+        template <typename InputType>
+        WingFactory(InputType input, const std::filesystem::path& data_dir) : Factory(input, data_dir) {}
+
+        /**
+         * @brief Call the builder of the factory to create a surface.
+         * @note The extrusion direction of this surface is in the **negative**  `Z` direction!
+         * 
+         * @param name The identifier of the surface.
+         * @return geom2::MultisectionSurface<geom2::AirfoilSection> The created surface.
+         */
+        auto create(std::string_view name) -> MultisectionSurface<AirfoilSection> final
+        {
+            return this->builder->build_wing(name);
+        }
+    };
+
+}; // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_AIRFOIL_SURFACE_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/fuselage.h b/aircraftGeometry2/include/aircraftGeometry2/fuselage.h
new file mode 100644
index 00000000..eaccbd47
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/fuselage.h
@@ -0,0 +1,66 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_FUSELAGE_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_FUSELAGE_H_
+
+/* === Includes === */
+#include <string_view>
+#include "aircraftGeometry2/geometry/section.h"
+#include "aircraftGeometry2/geometry/surface.h"
+#include "aircraftGeometry2/geometry/factory.h"
+
+namespace geom2
+{
+    /* === Classes === */
+    /**
+     * @class FuselageFactory
+     * @brief Factory for fuselage geometry as defined in the aircraft xml file.
+     */
+    class FuselageFactory : public Factory<MultisectionSurface<PolygonSection>>
+    {
+    public:
+        /**
+         * @brief Construct a new Factory object
+         * 
+         * @tparam InputType The input format of the factory.
+         * @param input The input data for the factory.
+         * @param data_dir The path to the geometry data directory.
+         */
+        template <typename InputType>
+        FuselageFactory(InputType input, const std::filesystem::path& data_dir)
+        : Factory(input, data_dir) {}
+
+        /**
+         * @brief Call the builder of the factory to create a surface.
+         * 
+         * @param name The identifier of the surface.
+         * @return geom2::MultisectionSurface<geom2::PolygonSection> The created surface.
+         */
+        auto create(std::string_view name) -> MultisectionSurface<PolygonSection> final
+        {
+            return this->builder->build_fuselage(name);
+        }
+    };
+}; // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_FUSELAGE_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/geometry/acxml.h b/aircraftGeometry2/include/aircraftGeometry2/geometry/acxml.h
new file mode 100644
index 00000000..e22b1183
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/geometry/acxml.h
@@ -0,0 +1,121 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_SRC_BUILDER_ACXML_H_
+#define AIRCRAFTGEOMETRY2_SRC_BUILDER_ACXML_H_
+
+/* === Includes === */
+#include <filesystem>
+#include <memory>
+#include <string_view>
+#include <aixml/node.h>
+#include "aircraftGeometry2/geometry/builder.h"
+
+/* === Classes === */
+namespace geom2
+{
+    /**
+     * @class AIXMLv2
+     * @brief Surface builder for the aircraft exchange format version 2.
+     */
+    class AIXMLv2 : public SurfaceBuilder
+    {
+    public:
+        /**
+         * @brief Construct a new AIXMLv2 object from an aircraft xml file.
+         * 
+         * @param AcXml Pointer to the aircraft xml file.
+         * @param data_dir The path to the geometry data directory.
+         */
+        AIXMLv2(std::shared_ptr<node> AcXml, const std::filesystem::path& data_dir);
+
+        /* Add default destructor */
+        ~AIXMLv2() override = default;
+
+        /* Methods to build the different surface types */
+        auto build_hull(std::string_view name) -> MultisectionSurface<PolygonSection> final;
+        auto build_fuselage(std::string_view name) -> MultisectionSurface<PolygonSection> final;
+        auto build_airfoil_surface(std::string_view name) -> MultisectionSurface<AirfoilSection> final;
+        auto build_spar(std::string_view name) -> MultisectionSurface<PolygonSection> final;
+        auto build_control_device(std::string_view name) -> MultisectionSurface<PolygonSection> final;
+        auto build_wing(std::string_view name) -> MultisectionSurface<AirfoilSection> final;
+    private:
+        /**
+         * @brief Extract a point from the aircraft xml file.
+         * 
+         * @param id The point identifier.
+         * @return geom2::Point_3 The point.
+         */
+        [[nodiscard]] auto get_point(std::string_view id) const -> geom2::Point_3;
+
+        /* Properties */
+        std::shared_ptr<node> aircraft;                                 /**< The pointer to the aircraft xml file. */
+        std::filesystem::path data_dir{};                               /**< The path to the geometry data directory. */
+    };
+
+    /**
+     * @class AIXMLv3
+     * @brief Surface builder for the aircraft exchange format version 3.
+     */
+    class AIXMLv3 : public SurfaceBuilder
+    {
+    public:
+        /**
+         * @brief Construct a new AIXMLv3 Builder from an aircraft xml file.
+         * 
+         * @param AcXml Pointer to the aircraft xml file.
+         * @param data_dir The path to the geometry data directory.
+         */
+        AIXMLv3(std::shared_ptr<node> AcXml, const std::filesystem::path& data_dir);
+
+        /* Add default destructor */
+        ~AIXMLv3() override = default;
+
+        /* Methods to build the different surface types */
+        auto build_hull(std::string_view name) -> MultisectionSurface<PolygonSection> final;
+        auto build_fuselage(std::string_view name) -> MultisectionSurface<PolygonSection> final;
+        auto build_airfoil_surface(std::string_view name) -> MultisectionSurface<AirfoilSection> final;
+        auto build_spar(std::string_view name) -> MultisectionSurface<PolygonSection> final;
+        auto build_control_device(std::string_view name) -> MultisectionSurface<PolygonSection> final;
+        auto build_wing(std::string_view name) -> MultisectionSurface<AirfoilSection> final;
+
+    private:
+        /**
+         * @brief Extract a point from the aircraft xml file.
+         * 
+         * @param id The point identifier.
+         * @return geom2::Point_3 The point.
+         */
+        [[nodiscard]] auto get_point(std::string_view id) const -> geom2::Point_3;
+
+        /**
+         * @brief Extract a direction from the aircraft xml file.
+         * 
+         * @param id The direction identifier.
+         * @return geom2::Direction_3 The direction.
+         */
+        [[nodiscard]] auto get_direction(std::string_view id) const -> geom2::Direction_3;
+        std::shared_ptr<node> aircraft;                                 /**< The pointer to the aircraft xml file. */
+        std::filesystem::path data_dir{};                               /**< The path to the geometry data directory. */
+    };
+}; // namespace geom2
+#endif // AIRCRAFTGEOMETRY2_SRC_BUILDER_ACXML_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/geometry/builder.h b/aircraftGeometry2/include/aircraftGeometry2/geometry/builder.h
new file mode 100644
index 00000000..c5a454c2
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/geometry/builder.h
@@ -0,0 +1,208 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_BUILDER_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_BUILDER_H_
+
+/* === Includes === */
+#include "aircraftGeometry2/geometry/section.h"
+#include "aircraftGeometry2/geometry/surface.h"
+#include <string_view>
+#include <utility>
+#include <vector>
+
+namespace geom2
+{
+    /* === Functions ===*/
+    namespace build
+    {
+        /**
+         * @brief Create a polygon section in the shape of an ellipse.
+         * @note The polygon points will be absolute coordinates as
+         * the height and width of the ellipse. The internal scaling
+         * is set to 1.0 when creating the ellipse.
+         * 
+         * -> The height and width are the diameters of the ellipse
+         * measured in the local x and y direction.
+         * 
+         * @details The ellipse will be represented by a polygon with the given
+         * number of points per quarter. The points will be equidistant
+         * in the normalized x direction.
+         * The total number of points will be 4 * (points_per_quarter - 1).
+         * 
+         * @param width The width of the ellipse in local `X` direction.
+         * @param height The height of the ellipse in local `Y` direction.
+         * @param points_per_quarter The number of points per quarter of the ellipse. Default is 20.
+         * @return PolygonSection The created polygon section.
+         */
+        [[nodiscard]] auto ellipse(const double width, const double height, const size_t points_per_quarter = 20) -> PolygonSection;
+    }; // namespace build
+
+    /**
+     * @brief The type of the container that holds the control devices.
+     * It is just an alias for a map which contains vectors with the
+     * control devices for each section.
+     * @note The map usually contains two entries "LE" and "TE"
+     */
+    // using ControlDeviceContainer = std::unordered_map<std::string, std::vector<MultisectionSurface<PolygonSection>>>;
+
+    /* === Classes === */
+    /**
+     * @class SectionBuilder
+     * @brief This builder class is used to create sections for a surface.
+     * It contains methods to quickly create the basic structure of
+     * multi-section surfaces.
+     *
+     * @tparam SectionType
+     */
+    template <Shape SectionType>
+    class SectionBuilder
+    {
+        /* Check whether the SectionType is derived from the Section class */
+        static_assert(std::is_base_of_v<Section, SectionType>, "SectionType must be derived from Section!");
+
+      public:
+        /* Constructor */
+        /**
+         * @brief Default constructor.
+         */
+        SectionBuilder() = default;
+
+        /**
+         * @brief Virtual destructor since this class is used as a base class.
+         */
+        virtual ~SectionBuilder() = default;
+
+        /**
+         * @brief Create the sections and return them as a vector.
+         * @attention The sections are moved from the factory!
+         * After creating them, you cannot change them with the factory anymore!
+         *
+         * @return std::vector<SectionType> The created sections.
+         */
+        [[nodiscard]] auto get_result() noexcept -> std::vector<SectionType>
+        {
+            return std::move(sections);
+        }
+
+        /**
+         * @brief Look at the current sections without moving them.
+         * @note Not available in the Python binding!
+         *
+         * @return const std::vector<SectionType>& The current sections.
+         */
+        [[nodiscard]] auto peek() const noexcept -> const std::vector<SectionType> &
+        {
+            return sections;
+        }
+
+        /**
+         * @brief Insert a new section at the back of the surface.
+         *
+         * @param section The section to be inserted.
+         * @param offset The offset of the section to the previous section.
+         */
+        void insert_back(const SectionType &section, Vector_3 offset)
+        {
+            /* Get previous origin */
+            Point_3 origin_previous{0, 0, 0};
+            if (!this->sections.empty())
+            {
+                origin_previous = this->sections.back().origin;
+            }
+
+            /* Add the section to the surface */
+            this->sections.emplace_back(section);
+
+            /* Apply offset */
+            this->sections.back().origin = origin_previous + offset;
+        }
+
+        /**
+         * @brief Insert a new section at the back of the surface.
+         *
+         * @param shape The shape of the section.
+         * @param offset The offset of the section to the previous section.
+         */
+        void insert_back(const Polygon_2 &shape, Vector_3 offset)
+        {
+            /* Get previous origin */
+            Point_3 origin_previous{0, 0, 0};
+            if (!this->sections.empty())
+            {
+                origin_previous = this->sections.back().origin;
+            }
+
+            /* Create the polygon section and apply offsets*/
+            SectionType section(shape);
+            section.origin = origin_previous + offset;
+
+            /* Add the section to the surface */
+            this->sections.emplace_back(section);
+        }
+
+        /**
+         * @brief Arrange count sections of the given shape with the given offset
+         * and insert them to the surface.
+         *
+         * @param shape The shape of the section.
+         * @param offset The offset of the section to the previous section.
+         * @param count The number of sections to insert.
+         */
+        void arrange(const Polygon_2 &shape, Vector_3 offset, std::size_t count)
+        {
+            /* Insert count sections */
+            for (int i = 0; i < count; i++)
+            {
+                this->sections.emplace_back(shape);
+                this->sections.back().origin = CGAL::ORIGIN + (offset * i);
+            }
+        }
+
+      private:
+        std::vector<SectionType> sections{}; /**< Internal container which holds the surface sections. */
+    };
+
+    /**
+     * @class SurfaceBuilder
+     * @brief The interface class which defines the methods to build
+     * the different types of surfaces.
+     */
+    class SurfaceBuilder
+    {
+      public:
+        /**
+         * @brief Virtual destructor since this class is used as a base class.
+         */
+        virtual ~SurfaceBuilder() = default;
+
+        /* Build Methods */
+        virtual auto build_hull(std::string_view name) -> MultisectionSurface<PolygonSection> = 0;
+        virtual auto build_fuselage(std::string_view name) -> MultisectionSurface<PolygonSection> = 0;
+        virtual auto build_airfoil_surface(std::string_view name) -> MultisectionSurface<AirfoilSection> = 0;
+        virtual auto build_spar(std::string_view name) -> MultisectionSurface<PolygonSection> = 0;
+        virtual auto build_control_device(std::string_view name) -> MultisectionSurface<PolygonSection> = 0;
+        virtual auto build_wing(std::string_view name) -> MultisectionSurface<AirfoilSection> = 0;
+    };
+
+};     // namespace geom2
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_BUILDER_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/geometry/entity3d.h b/aircraftGeometry2/include/aircraftGeometry2/geometry/entity3d.h
new file mode 100644
index 00000000..4d404daf
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/geometry/entity3d.h
@@ -0,0 +1,192 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_ENTITY3D_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_ENTITY3D_H_
+
+/* === Includes === */
+#include <string>
+#include <string_view>
+#include <CGAL/Simple_cartesian.h>
+#include <numbers>
+
+namespace geom2
+{
+    /* === Types ===*/
+    // using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel;
+    using Kernel = CGAL::Simple_cartesian<double>;
+    using Point_2 = Kernel::Point_2;
+    using Point_3 = Kernel::Point_3;
+    using Direction_3 = Kernel::Direction_3;
+    using Vector_3 = Kernel::Vector_3;
+    using Line_3 = Kernel::Line_3;
+    using Plane_3 = Kernel::Plane_3;
+    using Bbox_2 = CGAL::Bbox_2;
+
+    /* === Classes === */
+    /**
+     * @class Entity3D
+     * @brief Defines the base properties of a 3D entity.
+     */
+    struct Entity3D
+    {
+        /* Methods */
+        /**
+         * @brief Default constructs a new Entity 3D object
+         */
+        Entity3D() = default;
+
+        /**
+         * @brief Construct a new Entity 3D object
+         *
+         * @param origin The origin point of the entity.
+         */
+        explicit Entity3D(Point_3 origin) : origin(origin) {}
+
+        /**
+         * @brief Construct a new Entity 3D object
+         *
+         * @param name The name of the entity.
+         * @param origin The origin point of the entity.
+         * @param normal The reference direction of the entity.
+         */
+        Entity3D(std::string_view name, Point_3 origin, Direction_3 normal)
+            : name(name), origin(origin), normal(normal)
+        {
+        }
+
+        /**
+         * @brief Virtual default destructor for the entity since it is a base class.
+         */
+        virtual ~Entity3D() = default;
+
+        /* Members */
+        std::string name{"unknown"};  /**< Name of the entity */
+        Point_3 origin{CGAL::ORIGIN}; /**< Origin of the entity */
+        Direction_3 normal{0, 0, 1};  /**< Reference direction of the entity */
+        double rotation_z{0.0};       /**< Rotation around the local z-axis [rad]*/
+
+        public :
+            auto ac_to_global(const Point_3 ac_origin) {
+                /* Rotation of the aircraft coordinate system: x points in x,  y points in -z, z points in y,
+                origin is at the aircraft xml defined pos --> 90 deg rotation wrt x axis */
+                Kernel::Aff_transformation_3 direction_transform_x = Kernel::Aff_transformation_3(
+                    1, 0, 0,
+                    0, std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0),
+                    0, std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0));
+
+                Kernel::Aff_transformation_3 direction_transform_z = Kernel::Aff_transformation_3(
+                    std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0), 0,
+                    std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0), 0,
+                    0, 0, 1);
+
+                Kernel::Aff_transformation_3 direction_transform = direction_transform_x * direction_transform_z;
+
+                /* Translation of the aircraft coordinate system: ac coordinate system has the origin at the reference point*/
+                Vector_3 offset{ ac_origin, CGAL::ORIGIN };
+                Kernel::Aff_transformation_3 translation = Kernel::Aff_transformation_3(CGAL::TRANSLATION, offset);
+
+                /* Get the resulting transofmration matrix*/
+                Kernel::Aff_transformation_3 transform = direction_transform * translation;
+
+                /* Inverse of the global to aircraft coordinate system*/
+                transform = transform.inverse();
+                direction_transform = direction_transform.inverse();
+
+                /* The normal direction and position of entity is transformed into the global coordinate system */
+                origin = transform(origin);
+                normal = direction_transform(normal);
+            };
+
+            auto global_to_ac(const Point_3 ac_origin) {
+                /* Rotation of the aircraft coordinate system: x points in x,  y points in -z, z points in y,
+                origin is at the aircraft xml defined pos --> 90 deg rotation wrt x axis */
+                Kernel::Aff_transformation_3 direction_transform_x = Kernel::Aff_transformation_3(
+                    1, 0, 0,
+                    0, std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0),
+                    0, std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0));
+
+                Kernel::Aff_transformation_3 direction_transform_z = Kernel::Aff_transformation_3(
+                    std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0), 0,
+                    std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0), 0,
+                    0, 0, 1);
+
+                Kernel::Aff_transformation_3 direction_transform = direction_transform_x * direction_transform_z;
+
+                Vector_3 offset{ ac_origin, CGAL::ORIGIN };
+                Kernel::Aff_transformation_3 translation = Kernel::Aff_transformation_3(CGAL::TRANSLATION, offset);
+
+                /* Get the resulting transofmration matrix*/
+                Kernel::Aff_transformation_3 transform = direction_transform * translation;
+
+                /* The normal direction and position of entity is transformed into the aircraft coordinate system */
+                origin = transform(origin);
+                normal = direction_transform(normal);
+            };
+
+            auto get_origin_ac_coordinate(const Point_3 ac_origin) const {
+                /* Rotation of the aircraft coordinate system: x points in x,  y points in -z, z points in y,
+                origin is at the aircraft xml defined pos --> 90 deg rotation wrt x axis */
+                Kernel::Aff_transformation_3 direction_transform_x = Kernel::Aff_transformation_3(
+                    1, 0, 0,
+                    0, std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0),
+                    0, std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0));
+
+                Kernel::Aff_transformation_3 direction_transform_z = Kernel::Aff_transformation_3(
+                    std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0), 0,
+                    std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0), 0,
+                    0, 0, 1);
+
+                Kernel::Aff_transformation_3 direction_transform = direction_transform_x * direction_transform_z;
+
+                Vector_3 offset{ ac_origin, CGAL::ORIGIN };
+                Kernel::Aff_transformation_3 translation = Kernel::Aff_transformation_3(CGAL::TRANSLATION, offset);
+
+                /* Get the resulting transofmration matrix*/
+                Kernel::Aff_transformation_3 transform = direction_transform * translation;
+
+                /* The normal direction and position of entity is transformed into the aircraft coordinate system */
+                return transform(origin);
+            };
+
+            auto get_direction_ac_coordinate() const {
+                /* Rotation of the aircraft coordinate system: x points in x,  y points in -z, z points in y,
+                origin is at the aircraft xml defined pos --> 90 deg rotation wrt x axis */
+                Kernel::Aff_transformation_3 direction_transform_x = Kernel::Aff_transformation_3(
+                    1, 0, 0,
+                    0, std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0),
+                    0, std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0));
+
+                Kernel::Aff_transformation_3 direction_transform_z = Kernel::Aff_transformation_3(
+                    std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0), 0,
+                    std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0), 0,
+                    0, 0, 1);
+
+                Kernel::Aff_transformation_3 direction_transform = direction_transform_x * direction_transform_z;
+
+                /* The normal direction and position of entity is transformed into the aircraft coordinate system */
+                return direction_transform(normal);
+            };
+    };
+}; // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_ENTITY3D_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/geometry/factory.h b/aircraftGeometry2/include/aircraftGeometry2/geometry/factory.h
new file mode 100644
index 00000000..6f888c7c
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/geometry/factory.h
@@ -0,0 +1,81 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_FACTORY_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_FACTORY_H_
+
+/* === Includes === */
+#include <filesystem>
+#include <memory>
+#include <string_view>
+#include <aixml/node.h>
+#include "aircraftGeometry2/geometry/builder.h"
+
+namespace geom2
+{
+    /* === Classes === */
+    /**
+     * @class Factory
+     * @brief Factory base class which is used to create geometries.
+     * The factory is the interface of different input formats to
+     * the geometry classes. The factory has custom constructor
+     * overloads for each input format and defines its builder
+     * strategy accordingly.
+     * 
+     * @tparam Surface The surface type that is created by the factory.
+     */
+    template<typename Surface>
+    class Factory
+    {
+    public:
+        /* No default Constructor */
+        Factory() = delete;
+
+        /**
+         * @brief Virtual destructor as the class is used as a base class.
+         */
+        virtual ~Factory() = default;
+
+        /**
+         * @brief Construct a new Factory object which uses the 
+         * AIXML format to create the geometry.
+         * @note The AIXML format version is deduced automatically.
+         * 
+         * @param input The root node of the AIXML input file.
+         * @param data_dir The path to the data directory where to find external files.
+         */
+        explicit Factory(std::shared_ptr<node> input, const std::filesystem::path &data_dir);
+
+        /**
+         * @brief Create the surface geometry.
+         * 
+         * @param name The identifier of the surface.
+         * @return Surface The created surface.
+         */
+        virtual auto create(std::string_view name) -> Surface = 0;
+
+    protected:
+        std::unique_ptr<SurfaceBuilder> builder; /**< The pointer to the builder strategy */
+    };
+}; // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_FACTORY_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/geometry/section.h b/aircraftGeometry2/include/aircraftGeometry2/geometry/section.h
new file mode 100644
index 00000000..328c27c1
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/geometry/section.h
@@ -0,0 +1,291 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_SECTION_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_SECTION_H_
+
+/* === Includes === */
+#include <vector>
+#include <CGAL/Simple_cartesian.h>
+#include <CGAL/Polygon_2.h>
+#include "entity3d.h"
+
+namespace geom2
+{
+    /* === Functions === */
+    namespace detail
+    {
+        /**
+         * @brief Calculate the offset vector when inserting an airfoil section which
+         * has a dihedral and a sweep angle at span position. This function converts
+         * those parameters to an offset vector.
+         * @attention The span direction is automatically converted to a negative `Z`
+         * coordinate system as this is the convention used in this library.
+         * 
+         * @param span The offset span position. NOT the absolute span position!
+         * @param dihedral The dihedral angle of the airfoil section. [rad]
+         * @param sweep The sweep angle of the airfoil section. [rad]
+         * @return geom2::Vector_3 The resulting offset vector.
+         */
+        [[nodiscard]] auto get_offset(double span, double dihedral, double sweep) -> geom2::Vector_3;
+    }; // namespace detail
+
+    /* === Types === */
+    using Polygon_2 = CGAL::Polygon_2<Kernel>;
+
+    /* === Classes === */
+    /**
+     * @class Section
+     * @brief This class defines the base properties of a section.
+     * It is the base geometry class used for the surface sections.
+     */
+    class Section : public Entity3D
+    {
+    public:
+        /**
+         * @brief Default constructor for a section.
+         */
+        Section() = default;
+
+        /**
+         * @brief Construct a new Section object with a given contour.
+         * 
+         * @param contour The contour of the section.
+         */
+        explicit Section(const Polygon_2 &contour) : contour(contour) {}
+
+        /**
+         * @brief Default destructor for a section.
+         */
+        ~Section() override = default;
+
+        /**
+         * @brief Get the Contour polygon of the section.
+         * @param apply_transform If true, the contour polygon is transformed by the section's transformation.
+         *
+         * @return Polygon_2 The contour polygon of the section.
+         */
+        [[nodiscard]] auto get_contour(bool apply_transform = false) const noexcept -> Polygon_2;
+
+        /**
+         * @brief Set the contour of the polygon section.
+         * @attention You should make sure that the inserted polygon is normalized,
+         * otherwise the existing transformation produce wrong results!
+        */
+        void set_contour(const Polygon_2 &contour) noexcept;
+
+        /**
+         * @brief Get the number of vertices of the section.
+         *
+         * @return std::size_t The number of vertices of the section.
+         */
+        [[nodiscard]] auto size() const noexcept -> std::size_t { return contour.size(); }
+
+    protected:
+        Polygon_2 contour{};                                                               /**< The contour of the section without any transformation applied. */
+        Kernel::Aff_transformation_2 scale{Kernel::Aff_transformation_2(CGAL::IDENTITY)};  /**< The scaling of the section. */
+        Kernel::Aff_transformation_2 rotate{Kernel::Aff_transformation_2(CGAL::IDENTITY)}; /**< The rotation of the section. */
+    };
+
+    /* === Concepts === */
+
+    /**
+     * @brief Concept which defines a valid shape which has a contour and is derived from Section.
+     *
+     * @tparam T The type which represents the shape
+     */
+    template <typename T>
+    concept Shape = requires(T t) {
+        {
+            t.get_contour()
+        } -> std::same_as<Polygon_2>;
+        std::is_base_of_v<Section, T>;
+        // { t.origin } -> std::same_as<Point_3>;
+    };
+
+    /**
+     * @class PolygonSection
+     * @brief Class for section geometry using polygons.
+     */
+    class PolygonSection : public Section
+    {
+    public:
+        /* Constructor */
+        /**
+         * @brief Default constructor for a polygon section.
+         */
+        PolygonSection() = default;
+
+        /**
+         * @brief Construct a new Polygon Section object with a given contour.
+         * 
+         * @param contour The contour of the section.
+         */
+        explicit PolygonSection(const Polygon_2 &contour) : Section(contour) {}
+
+        /**
+         * @brief Default destructor for a polygon section.
+         */
+        ~PolygonSection() override = default;
+
+        /**
+         * @brief Set the width of the section.
+         * Sets the internal scaling transformation accordingly.
+         *
+         * @param width The width of the section.
+         */
+        void set_width(double width);
+
+        /**
+         * @brief Set the height of the section.
+         * Sets the internal scaling transformation accordingly.
+         *
+         * @param height The height of the section.
+         */
+        void set_height(double height);
+
+        /**
+         * @brief Set the rotation around the local `X` axis of the section.
+         * The rotation happens around the local origin of the 2d section.
+         *
+         * @param angle The rotation angle around the local `X` axis of the section. [rad]
+         */
+        void set_beta_angle(double angle);
+
+        /**
+         * @brief Set the uniform scaling of the section.
+         * @attention This overwrites the width and height scaling!
+         *
+         * @param scale The uniform scaling of the section.
+         */
+        void set_scale(double scale);
+    };
+
+    /**
+     * @class AirfoilSection
+     * @brief Class for section geometry using airfoils.
+     * 
+     */
+    class AirfoilSection : public Section
+    {
+    public:
+        /**
+         * @struct AirfoilProperties
+         * @brief Helper struct to group the airfoil properties.
+         */
+        struct AirfoilProperties
+        {
+            double chord{0.0};    /**< The chord length of the airfoil section. */
+            double dihedral{0.0}; /**< The dihedral angle of the airfoil section. [rad] */
+            double twist{0.0};    /**< The twist angle of the airfoil section. [rad] */
+        };
+
+        /* Constructor */
+        /**
+         * @brief Default constructor for an airfoil section.
+         */
+        AirfoilSection() = default;
+
+        /**
+         * @brief Construct a new Airfoil Section object with a given contour.
+         * 
+         * @param contour The contour of the section.
+         */
+        explicit AirfoilSection(const Polygon_2 &contour) : Section(contour) {}
+
+        /**
+         * @brief Construct a new Airfoil Section object with a given contour and properties.
+         * 
+         * @param contour The contour of the section.
+         * @param properties The properties of the airfoil section.
+         */
+        AirfoilSection(const Polygon_2 &contour, AirfoilProperties properties);
+
+        /**
+         * @brief Default destructor for an airfoil section.
+         */
+        ~AirfoilSection() override = default;
+
+        /**
+         * @brief Set the chord length of the airfoil section.
+         *
+         * @param length The chord length of the airfoil section.
+         */
+        void set_chord_length(double length);
+
+        /**
+         * @brief Set the dihedral angle of the airfoil section.
+         * The dihedral is defined as a rotation around the local
+         * `X` axis of the airfoil. The sign convention is defined
+         * accordingly.
+         *
+         * @param angle The dihedral angle of the airfoil section. [rad]
+         */
+        void set_dihedral_angle(double angle);
+
+        /**
+         * @brief Set the twist angle of the airfoil section.
+         * The twist is defined as a rotation around the local
+         * `Z` axis of the airfoil. The sign convention is defined
+         * accordingly.
+         * @attention The twist angle has to be in the range [-pi, pi]!
+         * @throws std::invalid_argument If the twist angle is out of range.
+         *
+         * @param angle The twist angle of the airfoil section. [rad]
+         */
+        void set_twist_angle(double angle);
+
+        /**
+         * @brief Scale the thickness of the airfoil section.
+         * @details The thickness of the airfoil is scaled by this factor,
+         * meaning a factor 2.0 doubles the thickness of the airfoil. It is
+         * effectively a scaling of the `Y` axis of the airfoil.
+         * @attention This changes the thickness to chord ratio of the airfoil!
+         * The chord length is not changed.
+         * 
+         * @param factor The scaling factor of the thickness.
+         */
+        void scale_thickness(double factor);
+
+        /**
+         * @brief Get the absolute chord length of the airfoil section.
+         *
+         * @return double The absolute chord length.
+         */
+        [[nodiscard]] auto get_chord_length() const -> double;
+
+        /**
+         * @brief Get the current thickness scaling factor of the airfoil section.
+         *
+         * @return double The thickness scaling factor.
+         */
+        [[nodiscard]] auto get_thickness_scale() const -> double;
+
+        /**
+         * @brief Get the current twist angle of the airfoil section.
+         *
+         * @return double The twist angle of the airfoil section. [rad]
+         */
+        [[nodiscard]] auto get_twist_angle() const -> double;
+    };
+}; // namespace geom2
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_SECTION_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/geometry/surface.h b/aircraftGeometry2/include/aircraftGeometry2/geometry/surface.h
new file mode 100644
index 00000000..6586a86c
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/geometry/surface.h
@@ -0,0 +1,55 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_SURFACE_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_SURFACE_H_
+
+/* === Includes === */
+#include <vector>
+
+#include "entity3d.h"
+#include "section.h"
+
+namespace geom2
+{
+    /* === Classes === */
+    /**
+     * @class MultisectionSurface
+     * @brief Defines multi-section surface geometry.
+     * It is basically a vector of sections, where the type of the sections is
+     * defined by the template parameter.
+     * @attention When using the `is_symmetric` flag, the first section must be
+     * located at the origin of the surface coordinate system! Also, this flag
+     * is currently intended for airfoil sections only!
+     * 
+     * @tparam SectionType The type of the sections.
+     */
+    template <typename SectionType>
+    struct MultisectionSurface : public Entity3D
+    {
+        /* Members */
+        std::vector<SectionType> sections{}; /**< The sections of the surface. */
+        bool is_symmetric{false};            /**< Whether the surface is symmetric to the local `XY` plane at the surface origin. */
+    };
+}; // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_GEOMETRY_SURFACE_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/hull_surface.h b/aircraftGeometry2/include/aircraftGeometry2/hull_surface.h
new file mode 100644
index 00000000..99a3bb58
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/hull_surface.h
@@ -0,0 +1,63 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_HULL_SURFACE_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_HULL_SURFACE_H_
+
+/* === Includes === */
+#include <filesystem>
+#include "aircraftGeometry2/geometry/factory.h"
+
+namespace geom2
+{
+    /* === Classes === */
+    /**
+     * @class HullFactory
+     * @brief Factory for hull geometry as defined in the aircraft xml file.
+     */
+    class HullFactory : public Factory<MultisectionSurface<PolygonSection>>
+    {
+    public:
+        /**
+         * @brief Construct a new Factory object
+         * 
+         * @tparam InputType The input format of the factory.
+         * @param input The input data for the factory.
+         * @param data_dir The path to the geometry data directory.
+         */
+        template <typename InputType>
+        HullFactory(InputType input, const std::filesystem::path& data_dir) : Factory(input, data_dir) {}
+
+        /**
+         * @brief Call the builder of the factory to create a surface.
+         * 
+         * @param name The identifier of the surface.
+         * @return geom2::MultisectionSurface<geom2::PolygonSection> The created surface.
+         */
+        auto create(std::string_view name) -> MultisectionSurface<PolygonSection> final
+        {
+            return this->builder->build_hull(name);
+        }
+    };
+}; // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_HULL_SURFACE_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/io/convert.h b/aircraftGeometry2/include/aircraftGeometry2/io/convert.h
new file mode 100644
index 00000000..96a4b1c7
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/io/convert.h
@@ -0,0 +1,342 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_IO_CONVERT_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_IO_CONVERT_H_
+
+/* === Includes === */
+#include <memory>
+#include <utility>
+#include <string>
+#include <string_view>
+#include <variant>
+#include <aixml/node.h>
+#include "aircraftGeometry2/geometry/surface.h"
+
+namespace geom2
+{
+    namespace io
+    {
+        /* === Helper classes ===
+         * The following classes define how the converters
+         * treat the surface. The visitor pattern of the converters
+         * uses these class types to deduce the operator to call which
+         * converts the surface according to the type.
+         */
+
+        /**
+         * @struct Hull
+         * @brief A converter will treat this type of surface as a hull.
+         */
+        struct Hull
+        {
+            Hull() = delete;
+            explicit Hull(const MultisectionSurface<PolygonSection> &surface) : surface(surface) {}
+            const geom2::MultisectionSurface<geom2::PolygonSection> &surface;
+        };
+
+        /**
+         * @struct Fuselage
+         * @brief A converter will treat this type of surface as a fuselage.
+         */
+        struct Fuselage
+        {
+            Fuselage() = delete;
+            explicit Fuselage(const MultisectionSurface<PolygonSection> &surface) : surface(surface) {}
+            const geom2::MultisectionSurface<geom2::PolygonSection> &surface;
+        };
+
+        /**
+         * @struct Spar
+         * @brief A converter will treat this type of surface as spar geometry
+         */
+        struct Spar
+        {
+            Spar() = delete;
+            explicit Spar(const MultisectionSurface<PolygonSection> &surface) : surface(surface) {}
+            const geom2::MultisectionSurface<geom2::PolygonSection> &surface;
+        };
+
+        /**
+         * @struct ControlDevice
+         * @brief A converter will treat this type of surface as a control device geometry
+         */
+        struct ControlDevice
+        {
+            ControlDevice() = delete;
+            explicit ControlDevice(const MultisectionSurface<PolygonSection> &surface) : surface(surface) {}
+            const geom2::MultisectionSurface<geom2::PolygonSection> &surface;
+        };
+
+        /**
+         * @struct AirfoilSurface
+         * @brief A converter will treat this type of surface as a airfoil surface.
+         */
+        struct AirfoilSurface
+        {
+            AirfoilSurface() = delete;
+            explicit AirfoilSurface(const MultisectionSurface<AirfoilSection> &surface) : surface(surface) {}
+            const geom2::MultisectionSurface<geom2::AirfoilSection> &surface;
+        };
+
+        /**
+         * @struct Wing
+         * @brief A converter will treat this type of surface as a wing.
+         */
+        struct Wing
+        {
+            Wing() = delete;
+            explicit Wing(const MultisectionSurface<AirfoilSection> &surface) : surface(surface) {}
+            const geom2::MultisectionSurface<geom2::AirfoilSection> &surface;
+        };
+
+        /**
+         * @brief Variant type for the visitor pattern which defines the
+         * types of surfaces which can be converted.
+         */
+        using SurfaceType = std::variant<Hull, Fuselage, Spar, ControlDevice, AirfoilSurface, Wing>;
+
+        /* === Converter ===*/
+        /**
+         * @class Converter
+         * @brief Converter base class which defines the interface for the
+         * different converters.
+         * The converters are intended to be used as visitors using `std::variant` as follows:
+         * @code
+         * // Treat the surface as a hull surface
+         * geom2::io::SurfaceType hull = geom2::io::Hull{surface};
+         *
+         * // Convert using the aixml format
+         * std::shared_ptr<node> result = std::visit(geom2::io::AixmlConverter{}, hull);
+         * @endcode 
+         * 
+         * @tparam ReturnType The return type which are specific to the selected target format of the converter.
+         */
+        template <typename ReturnType>
+        class Converter
+        {
+        public:
+            /**
+             * @brief Virtual default destructor as this is a base class.
+             */
+            virtual ~Converter() = default;
+
+            /**
+             * @brief Convert a surface as a hull to the target format.
+             * 
+             * @param hull The hull surface to convert.
+             * @return ReturnType The result of the conversion.
+             */
+            virtual auto operator()(const Hull &hull) -> ReturnType = 0;
+
+            /**
+             * @brief Convert a surface as a fuselage to the target format.
+             * 
+             * @param fuselage The fuselage surface to convert.
+             * @return ReturnType The result of the conversion.
+             */
+            virtual auto operator()(const Fuselage &fuselage) -> ReturnType = 0;
+
+            /**
+             * @brief Convert geometry as a spar to the target format.
+             * 
+             * @param spar The spar surface to convert.
+             * @return ReturnType The result of the conversion.
+             */
+            virtual auto operator()(const Spar &spar) -> ReturnType = 0;
+
+            /**
+             * @brief Convert geometry as a control device to the target format.
+             * 
+             * @param device The control device surface to convert.
+             * @return ReturnType The result of the conversion.
+             */
+            virtual auto operator()(const ControlDevice &device) -> ReturnType = 0;
+
+            /**
+             * @brief Convert a surface as an airfoil surface to the target format.
+             * 
+             * @param airfoil_surface The airfoil surface to convert.
+             * @return ReturnType The result of the conversion.
+             */
+            virtual auto operator()(const AirfoilSurface &airfoil_surface) -> ReturnType = 0;
+
+            /**
+             * @brief Convert a surface as a wing surface to the target format.
+             * 
+             * @param wing The wing surface to convert.
+             * @return ReturnType The result of the conversion.
+             */
+            virtual auto operator()(const Wing &wing) -> ReturnType = 0;
+        };
+
+        /**
+         * @brief Convert the surfaces to aixml nodes.
+         * The surface node will be appended to the given parent.
+         * You can give any node reference where the surface will be inserted to.
+         * Each of the visitor functions will return a reference to the created node.
+         * When the node is already existing, only the parameters relevant for the
+         * geometry will be overwritten, all other nodes will be left untouched.
+         * 
+         * @details About the internal pointers to the created objects:
+         * 
+         * -> Smart pointers do not work here, since `node` manages the destruction
+         * automatically. Smart pointers would call the deleter of the 
+         * children twice...
+         */
+        class AixmlConverter: public Converter<node&>
+        {
+        public:
+            /** 
+             * @struct NodeInfo
+             * @brief Struct which contains the name, id, and description of a new node
+             * when inserting the node into the tree.
+             */
+            struct NodeInfo
+            {
+                std::string name{}; /**< The name of the node. */
+                std::string id{}; /**< The id of the surface. */
+                std::string description{}; /**< The description of the node. */
+            };
+
+            /**
+             * @brief Explicit constructor to append the surface to a parent node.
+             * @attention The parent will be modified!
+             * 
+             * @param to_be_updated The pointer to the parent node to which the surface will be appended.
+             * @param info The name and id of the surface.
+             */
+            explicit AixmlConverter(node* to_be_updated, const NodeInfo& info);
+
+            /**
+             * @brief Explicit constructor to append the surface to a parent node.
+             * @attention The parent will be modified!
+             * 
+             * @param to_be_updated The reference to the parent node to which the surface will be appended.
+             * @param info The name and id of the surface.
+             */
+            explicit AixmlConverter(node& to_be_updated, const NodeInfo& info) //NOLINT (runtime/references)
+            : AixmlConverter(&to_be_updated, info) {}
+
+            /**
+             * @brief Explicit constructor to append the surface to a parent node.
+             * @attention The parent will be modified!
+             * 
+             * @param to_be_updated The smart pointer to the parent node to which the surface will be appended.
+             * @param info The name and id of the surface.
+             */
+            explicit AixmlConverter(std::shared_ptr<node> to_be_updated, const NodeInfo& info)
+            : AixmlConverter(to_be_updated.get(), info) {}
+
+            /**
+             * @brief Convert a hull surface to an aixml node.
+             * 
+             * @param hull The hull surface to convert.
+             * @return std::shared_ptr<node> Returns a shared pointer to the created node.
+             */
+            auto operator()(const Hull &hull) -> node& final;
+
+            /**
+             * @brief Convert a surface as a fuselage to the target format.
+             * 
+             * @param fuselage The fuselage surface to convert.
+             * @return ReturnType The result of the conversion.
+             */
+            auto operator()(const Fuselage &fuselage) -> node& final;
+
+            /**
+             * @brief Convert spar geometry to an aixml node.
+             * 
+             * @param spar The spar geometry to convert.
+             * @return std::shared_ptr<node> Returns a shared pointer to the created node.
+             */
+            auto operator()(const Spar &spar) -> node& final;
+
+            /**
+             * @brief Convert geometry as a control device to the target format.
+             * 
+             * @param device The control device surface to convert.
+             * @return ReturnType The result of the conversion.
+             */
+            auto operator()(const ControlDevice &device) -> node& final;
+
+            /**
+             * @brief Convert an airfoil surface to an aixml node.
+             * 
+             * @param airfoil_surface The airfoil surface to convert.
+             * @return std::shared_ptr<node> Returns a shared pointer to the created node.
+             */
+            auto operator()(const AirfoilSurface &airfoil_surface) -> node& final;
+
+            /**
+             * @brief Convert a wing surface to an aixml node.
+             * 
+             * @param wing The wing surface to convert.
+             * @return std::shared_ptr<node> Returns a shared pointer to the created node.
+             */
+            auto operator()(const Wing &wing) -> node& final;
+
+        private:
+            /**
+             * @brief Insert a string into the specified node.
+             * @attention The target node will be modified!
+             * 
+             * @param target The pointer to the target node where the origin will be inserted.
+             * @param content The string to insert.
+             * @param info The name and description of the node which is inserted.
+             */
+            static void insert_string(node* target, std::string content, NodeInfo info);
+
+            /**
+             * @brief Insert some reference point of the surface into the specified node.
+             * You can specify the name and description of the node which is inserted.
+             * The description of the x,y, and z nodes will be set to a default description.
+             * @attention The target node will be modified!
+             * 
+             * @param target The pointer to the target node where the point will be inserted.
+             * @param point The point to insert.
+             * @param info The name and description of the node to insert.
+             */
+            static void insert_point(node* target, geom2::Point_3 point, NodeInfo info);
+
+            /**
+             * @brief Insert some reference direction of the surface into the specified node.
+             * You can specify the name and description of the node which is inserted.
+             * The description of the x,y, and z nodes will be set to a default description.
+             * @attention The target node will be modified!
+             * 
+             * @param target The pointer to the target node where the point will be inserted.
+             * @param direction The direction to insert.
+             * @param info The name and description of the node to insert.
+             */
+            static void insert_direction(node* target, geom2::Direction_3 direction, NodeInfo info);
+
+            /* === Properties ===*/
+            const NodeInfo surface_info; /**< The name and id of the surface. */
+            node* new_node{nullptr}; /**< The node which is created. */
+            node* parent;  /**< The parent node to which the surface will be appended to. */
+        };
+    }; // namespace io
+}; // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_IO_CONVERT_H_
+
diff --git a/aircraftGeometry2/include/aircraftGeometry2/io/dat.h b/aircraftGeometry2/include/aircraftGeometry2/io/dat.h
new file mode 100644
index 00000000..d4d6d5c2
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/io/dat.h
@@ -0,0 +1,67 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_IO_DAT_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_IO_DAT_H_
+
+/* === Includes === */
+#include <filesystem>
+#include "aircraftGeometry2/geometry/entity3d.h"
+#include "aircraftGeometry2/geometry/section.h"
+
+namespace geom2
+{
+    namespace io
+    {
+        /**
+         * @brief Reads a dat-file and returns the content as a 2D polygon.
+         * @throws std::runtime_error When the file cannot be opened.
+         * @attention The following delimiter are supported:
+         *  - whitespace (space, tab, ...)
+         *  - comma `,`
+         *  - semicolon `;`
+         * 
+         * @param path The path to the dat-file.
+         * @return geom2::Polygon_2 The content of the dat-file converted to a 2D polygon.
+         */
+        [[nodiscard]] auto read_dat_file(std::filesystem::path path) -> geom2::Polygon_2;
+
+        /**
+         * @brief Reads a dat-file containing airfoil coordinates and
+         * sorts the points in counter-clockwise order.
+         * @note When the file cannot be opened, a polygon with a single
+         * point at its origin is returned.
+         * @attention See `geom2::io::read_dat_file` for supported delimiters.
+         *
+         * @param path The path to the dat-file.
+         * @return geom2::Polygon_2 The content of the dat-file converted to a 2D polygon.
+         * @throws std::domain_error When:
+         * - the leading edge of the airfoils is not at the origin
+         * - the `X` coordinates are not positive
+         * - the `X` coordinates are not normalized
+         */
+        [[nodiscard]] auto read_airfoil(std::filesystem::path path) -> geom2::Polygon_2;
+
+    }; // namespace io
+}; // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_IO_DAT_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/processing/measure.h b/aircraftGeometry2/include/aircraftGeometry2/processing/measure.h
new file mode 100644
index 00000000..337f13ce
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/processing/measure.h
@@ -0,0 +1,472 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_PROCESSING_MEASURE_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_PROCESSING_MEASURE_H_
+
+/* === Includes === */
+#include <array>
+#include <optional>
+#include <vector>
+#include <CGAL/Eigen_matrix.h>
+#include "aircraftGeometry2/geometry/entity3d.h"
+#include "aircraftGeometry2/geometry/section.h"
+#include "aircraftGeometry2/geometry/surface.h"
+
+namespace geom2
+{
+    namespace detail
+    {
+        /**
+         * @brief Returns the index of the last section which is located before the given position.
+         *
+         * @tparam T The shape type of the sections.
+         * @param sections Vector containing the sections.
+         * @param position The position in local Z direction where the section index should be determined.
+         * @return std::optional<size_t> The index of the section.
+         * If the position is not located between the first and last section `std::nullopt` is returned.
+         */
+        template <Shape T>
+        auto get_section_index(const std::vector<T> &sections, double position) -> std::optional<size_t>;
+    }; // namespace detail
+
+    namespace measure
+    {
+        /**
+         * @brief Calculates the wetted surface area of a polygon section surface.
+         * @note If the sections are not closed, this function will close them
+         * by connecting the last and first point of each section. Therefore,
+         * the resulting surface will be water-tight regardless of the input!
+         * However, this is not the case when all of the sections have two vertices each.
+         * In this case, we assume a planar surface and calculate the area accordingly.
+         * @attention This calculation is costly!
+         *
+         * @param surface The surface to calculate the area of.
+         * @return double The wetted surface area of the surface.
+         */
+        [[nodiscard]] auto area(const MultisectionSurface<PolygonSection> &surface) -> double;
+
+        /**
+         * @brief Calculates the wetted surface area of a airfoil section surface.
+         * @note If the sections are not closed, this function will close them
+         * by connecting the last and first point of each section. Therefore,
+         * the resulting surface will be water-tight regardless of the input!
+         * @attention This calculation is costly!
+         *
+         * @param surface The surface to calculate the area of.
+         * @return double The wetted surface area of the surface.
+         */
+        [[nodiscard]] auto area(const MultisectionSurface<AirfoilSection> &surface) -> double;
+
+        /**
+         * @brief Measure the aspect ratio of the surface defined by the multi-section surface.
+         * @attention This functions respects the `is_symmetric` flag of the multi-section surface
+         * and calculates the aspect ratio accordingly!
+         * 
+         * @param surface The multi-section surface to measure the aspect ratio of.
+         * @return double The aspect ratio of the surface.
+         */
+        [[nodiscard]] auto aspect_ratio(const MultisectionSurface<AirfoilSection> &surface) -> double;
+
+        /**
+         * @brief Measure the bottom point of a multi-section surface at a given position.
+         * The bottom point is the point with the minimum local `Y` coordinate at the given
+         * position.
+         * 
+         * @param surface The surface to measure the bottom point of.
+         * @param position The position along the reference direction (local `Z` axis)
+         * to measure the bottom point at.
+         * @return Point_3 The bottom point of the surface at the given position in the local
+         * coordinates of the surface.
+         */
+        [[nodiscard]] auto bottom(const MultisectionSurface<PolygonSection> &surface, double position) -> Point_3;
+
+        /**
+         * @brief Measure the bounding box center of a multi-section surface
+         * at a given position.
+         * @note The result is the center of the bounding box of the surface
+         * and not necessarily the center of the surface itself! The bounding
+         * box is a rectangular box that completely encloses the cross section of
+         * surface at the given position. So if the cross section of the surface
+         * is not symmetric to origin, the center of the bounding box is not
+         * the center of the surface!
+         * 
+         * @param surface The surface to measure the bounding box center of.
+         * @param position The position along the reference direction (local `Z` axis)
+         * to measure the center at.
+         * @return Point_3 The center of the bounding box of the surface at the given position
+         * in the local coordinates of the surface.
+         */
+        [[nodiscard]] auto center(const MultisectionSurface<PolygonSection> &surface, double position) -> Point_3;
+
+        /**
+         * @anchor measure_barycenter_polygon
+         * @brief Measure the geometric center of mass of a multi-section surface with 
+         * geom2::PolygonSection sections.
+         * First the centroids of each segment are calculated with @ref measure_centroids_polygon .
+         * Then the barycenter of the centroids is calculated.
+         * 
+         * @param surface The surface to measure the center of mass of.
+         * @return Point_3 The center of mass of the surface.
+         */
+        [[nodiscard]] auto centroid(const MultisectionSurface<PolygonSection> &surface) -> Point_3;
+
+        /**
+         * @brief Measure the geometric center of mass of a multi-section surface with 
+         * geom2::AirfoilSection sections.
+         * @attention The local `Z` coordinate of the center of mass is set to 0.0 when the
+         * surface is symmetric!
+         * 
+         * @see @ref measure_barycenter_polygon "measure::centroid(const MultisectionSurface<PolygonSection> &surface)"
+         * 
+         * @param surface The surface to measure the center of mass of.
+         * @return Point_3 The center of mass of the surface.
+         */
+        [[nodiscard]] auto centroid(const MultisectionSurface<AirfoilSection> &surface) -> Point_3;
+
+        /**
+         * @anchor measure_centroids_polygon
+         * @brief Measure the geometric center of mass of a multi-section surface with 
+         * geom2::PolygonSection sections. The center of mass is calculated by including
+         * all coordinate points of each section. The result contains one point for each
+         * segment of the surface. The size of the result is therefore `surface.sections.size() - 1`.
+         * 
+         * @param surface The surface to measure the centers of mass of.
+         * @return std::vector<Point_3> Returns a vector of points, where each point is
+         * the center of mass of one segment of the surface.
+         */
+        [[nodiscard]] auto centroids(const MultisectionSurface<PolygonSection> &surface) -> std::vector<Point_3>;
+
+        /**
+         * @brief Measure the geometric center of mass of a multi-section surface with 
+         * geom2::AirfoilSection sections. In contrast when measuring the centroids of
+         * PolygonSection, this function computes the geometric center of the planar
+         * trapezoidal segment the leading and trailing edge of the airfoil section
+         * define. The result contains one point for each segment of the surface. The
+         * size of the result is therefore `surface.sections.size() - 1`.
+         * 
+         * @see @ref measure_centroids_polygon "measure::centroids(const MultisectionSurface<PolygonSection> &surface)"
+         * 
+         * @param surface The surface to measure the centers of mass of.
+         * @return std::vector<Point_3> Returns a vector of points, where each point is
+         * the center of mass of one segment of the surface.
+         */
+        [[nodiscard]] auto centroids(const MultisectionSurface<AirfoilSection> &surface) -> std::vector<Point_3>;
+
+        /**
+         * @brief Measure the chord length of an airfoil surface at a given span position.
+         * @note The span refers to the local Z direction of the surface. The symmetric flag
+         * of the surface is respected when calculating the chord length.
+         *
+         * @param surface The surface to measure the chord length of.
+         * @param position The position along the span direction (local Z axis) to measure the chord length at.
+         * @return double The chord length of the surface at the given position.
+         */
+        [[nodiscard]] auto chord(const MultisectionSurface<AirfoilSection> &surface, double position) -> double;
+
+        /**
+         * @brief Measure the dihedral angle of an airfoil surface at a given span position.
+         * @note The dihedral is currently measured at the leading edge of the wing. The
+         * symmetric flag of the surface is respected when calculating the dihedral angle.
+         *
+         * @param surface The airfoil surface to measure the dihedral angle of.
+         * @param position The span position along the span direction (local `Z` axis) to measure the dihedral angle at.
+         * @return double The dihedral angle of the airfoil surface at the given position. [rad]
+         */
+        [[nodiscard]] auto dihedral(const MultisectionSurface<AirfoilSection> &surface, double position) -> double;
+
+        /**
+         * @brief Measure the height of a multi-section surface at a given position.
+         * @note The height refers to the local Y direction of the surface.
+         *
+         * @param surface The surface to measure the height of.
+         * @param position The position along the reference direction (local Z axis) to measure the height at.
+         * @return double The height of the surface at the given position.
+         */
+        [[nodiscard]] auto height(const MultisectionSurface<PolygonSection> &surface, double position) -> double;
+
+        /**
+         * @brief Measure the maximum height of a multi-section surface.
+         * 
+         * @param surface The surface to measure the maximum height of.
+         * @return double The maximum height of the surface in local `Y` direction.
+         */
+        [[nodiscard]] auto height_max(const MultisectionSurface<PolygonSection> &surface) -> double;
+
+        /**
+         * @anchor measure_inertia
+         * @brief Measure the inertia tensor of a multi-section surface in respect to the
+         * center of gravity of the surface.
+         * @attention This calculation is costly and a numerical approximation! The result
+         * is more accurate the lower the refined_edge_length is! It is also exponentially
+         * slower the lower the refined_edge_length is!
+         * @note The numerical approximation of the inertia makes the following assumptions:
+         * - The surface is a thin-walled structure and not(!) a solid body.
+         * - The surface has uniform thickness and density.
+         * - The wall thickness is small compared to the outline dimensions of the surface.
+         * 
+         * This function converts the surface into a triangulated surface mesh. Each of the triangles
+         * of the surface mesh is assumed to be a point mass. The inertia of the surface is then
+         * the sum of the squared distances of each point mass to the given axis times its assumed mass.
+         * The mass is calculated by assuming a unity density and a uniform thickness of the surface.
+         * The moment of deviation are calculated with the same approach.
+         * 
+         * This function optionally refines the surface mesh before calculating the inertia. But watch out:
+         * The shorter the edge length of the triangles, the more accurate the result will be, but the
+         * longer the calculation will take!
+         * 
+         * &rArr; The result therefore needs to be scaled by the wall thickness and the density of the surface!
+         * Since we assume a thin-walled structure, this linear scaling is valid.
+         * 
+         * &rArr; The final result is therefore:
+         * `I = wall_thickness * density * geom2::measure::inertia(surface)`
+         * 
+         * @param surface The surface to measure the inertia of.
+         * @param refined_edge_length The target edge size when refining the mesh.
+         * Defaults to `0.4`. `-1` disables the refinement.
+         * @throws std::runtime_error If the meshing of the surface fails.
+         * @return CGAL::Eigen_matrix<double, 3, 3> [m^4] The inertia tensor
+         * of the surface in respect to the center of gravity of the surface.
+         */
+        [[nodiscard]] auto inertia(const MultisectionSurface<PolygonSection> &surface,
+            double refined_edge_length = 0.4) -> CGAL::Eigen_matrix<double, 3, 3>;
+        
+        /**
+         * @brief Measure the inertia tensor of a multi-section surface in respect to the 
+         * center of gravity of the surface.
+         * @attention This does **not** respect the is_symmetric flag of the surface! It always
+         * assumes this flag is false!
+         * 
+         * @see @ref measure_inertia
+         * "measure::inertia(const MultisectionSurface<PolygonSection> &surface, double refined_edge_length = 0.4)"
+         * 
+         * @param surface The surface to measure the inertia of.
+         * @param refined_edge_length The target edge size when refining the mesh.
+         * Defaults to `0.4`. `-1` disables the refinement.
+         * @return CGAL::Eigen_matrix<double, 3, 3> [m^4] The inertia tensor
+         * of the surface in respect to the center of gravity of the surface.
+         */
+        [[nodiscard]] auto inertia(const MultisectionSurface<AirfoilSection> &surface,
+            double refined_edge_length = 0.4) -> CGAL::Eigen_matrix<double, 3, 3>;
+
+        /**
+         * @brief Measure the left point of a multi-section surface at a given position.
+         * The left point is the point with the minimum local `X` coordinate at the given
+         * position.
+         * 
+         * @param surface The surface to measure the left point of.
+         * @param position The position along the reference direction (local `Z` axis)
+         * to measure the left point at.
+         * @return Point_3 The left point of the surface at the given position in the local
+         * coordinates of the surface.
+         */
+        [[nodiscard]] auto left(const MultisectionSurface<PolygonSection> &surface, double position) -> Point_3;
+
+        /**
+         * @brief Measure the total length of a multi-section surface.
+         * @note The length refers to the local Z direction of the surface.
+         *
+         * @param surface The surface to measure the length of.
+         * @return double The length of the surface.
+         */
+        [[nodiscard]] auto length(const MultisectionSurface<PolygonSection> &surface) -> double;
+
+        /**
+         * @brief Measure the mean aerodynamic chord of an airfoil surface.
+         *
+         * @param surface The airfoil surface to measure the mean aerodynamic chord of.
+         * @return double The mean aerodynamic chord of the surface.
+         */
+        [[nodiscard]] auto mean_aerodynamic_chord(const MultisectionSurface<AirfoilSection> &surface) -> double;
+
+        /**
+         * @brief Measure the mean aerodynamic chord spanwise position of an airfoil surface.
+         * The position is measured along the local 'Z' axis of the surface.
+         * @attention This function assumes, that the given surface is only half of the wing
+         * and that the first section is located at the origin of the surface. Otherwise,
+         * the result of this measurement is not valid!
+         *
+         * @param surface The airfoil surface to measure the mean aerodynamic chord position of.
+         * @return double The mean aerodynamic chord position of the surface in spanwise direction.
+         */
+        [[nodiscard]] auto mean_aerodynamic_chord_position(const MultisectionSurface<AirfoilSection> &surface) -> double;
+
+        /**
+         * @brief Get the offset of the leading edge of an airfoil section
+         * at the given span position.
+         * @note This function assumes, that the leading edge is located
+         * at the origin of the airfoil section. The symmetric flag of the
+         * surface is respected when calculating the leading edge offset.
+         *
+         * @param surface The airfoil surface to measure the offset of the leading edge.
+         * @param position The span position along the span direction (local Z axis) to measure the offset at.
+         * @return geom2::Point_3 The position of the leading edge in the local coordinates of the airfoil section.
+         */
+        [[nodiscard]] auto offset_LE(const MultisectionSurface<AirfoilSection> &surface, double position) -> Point_3;
+
+        /**
+         * @brief Calculate the reference area of the wing surface.
+         * The reference area is the area of the wing surface projected onto the local
+         * `XZ` plane.
+         *
+         * @param surface The surface to calculate the reference area of.
+         * @return double The reference area of the surface.
+         */
+        [[nodiscard]] auto reference_area(const MultisectionSurface<AirfoilSection> &surface) -> double;
+
+        /**
+         * @brief Measure the right point of a multi-section surface at a given position.
+         * The right point is the point with the maximum local `X` coordinate at the given
+         * position.
+         * 
+         * @param surface The surface to measure the right point of.
+         * @param position The position along the reference direction (local `Z` axis)
+         * to measure the right point at.
+         * @return Point_3 The right point of the surface at the given position in the local
+         * coordinates of the surface.
+         */
+        [[nodiscard]] auto right(const MultisectionSurface<PolygonSection> &surface, double position) -> Point_3;
+
+        /**
+         * @brief Measure the span of an airfoil surface.
+         * @note The span refers to the local Z direction of the surface.
+         * @attention If the surface only contains half a wing, the result of this
+         * measurement is only half the span of the wing.
+         *
+         * @param surface The surface to measure the span of.
+         * @return double The span of the surface.
+         */
+        [[nodiscard]] auto span(const MultisectionSurface<AirfoilSection> &surface) -> double;
+
+        /**
+         * @brief Measure the sweep angle of an airfoil surface at a given span position.
+         * The chord offset can be used to set where the sweep angle is measured in chord direction.
+         * A chord offset of 0.0 means that the sweep angle is measured at the leading edge.
+         * A chord offset of 0.25 means that the sweep angle is measured at 25% of the chord length.
+         * A chord offset of 1.0 means that the sweep angle of the trailing edge is measured.
+         * @note The symmetric flag of the surface is respected when calculating the sweep angle.
+         *
+         * @param surface The airfoil surface to measure the sweep angle of.
+         * @param position The span position along the span direction (local `Z` axis) to measure the sweep angle at.
+         * @param chord_offset The chord offset in the local `X` direction to measure the sweep angle at.
+         * @return double The sweep angle of the airfoil surface at the given position. [rad]
+         */
+        [[nodiscard]] auto sweep(const MultisectionSurface<AirfoilSection> &surface, double position, double chord_offset) -> double;
+
+        /**
+         * @brief Measure the taper ratio of an airfoil surface.
+         * 
+         * @param surface The airfoil surface to measure the taper ratio of.
+         * @return double Returns the taper ratio of the airfoil surface.
+         */
+        [[nodiscard]] auto taper_ratio(const MultisectionSurface<AirfoilSection> &surface) -> double;
+
+        /**
+         * @brief Measure the absolute thickness of an airfoil at a local
+         * x position. The thickness is calculated from the de-rotated airfoil
+         * if the airfoil has a twist applied.
+         *
+         * @param section The airfoil section to measure the thickness of.
+         * @param x_position The local x position to measure the thickness at.
+         * @return double The absolute thickness of the airfoil at the given position.
+         */
+        [[nodiscard]] auto thickness(const AirfoilSection &section, double x_position) -> double;
+
+        /**
+         * @brief Measure the maximum thickness of an airfoil section.
+         * The thickness is calculated from the de-rotated airfoil
+         * if the airfoil has a twist applied.
+         * 
+         * @param section The airfoil section to measure the maximum thickness of.
+         * @return double The maximum thickness of the airfoil section as an absolute value.
+         */
+        [[nodiscard]] auto thickness_max(const AirfoilSection &section) -> double;
+
+        /**
+         * @brief Measure the top point of a multi-section surface at a given position.
+         * The top point is the point with the maximum local `Y` coordinate at the given
+         * position.
+         * 
+         * @param surface The surface to measure the top point of.
+         * @param position The position along the reference direction (local `Z` axis)
+         * to measure the top point at.
+         * @return Point_3 The top point of the surface at the given position in the local
+         * coordinates of the surface.
+         */
+        [[nodiscard]] auto top(const MultisectionSurface<PolygonSection> &surface, double position) -> Point_3;
+
+        /**
+         * @brief Get the top and bottom point of a polygon at a given x position.
+         * This function assumes that the polygon is convex and that the x position
+         * is within the polygon's x span.
+         * @note This function is an internal helper function, but might be useful
+         * for other purposes as well.
+         *
+         * @param shape The polygon to get the top and bottom point of.
+         * @param x_position The local x position to get the top and bottom point at.
+         * @return std::array<Point_2, 2> Returns [top, bottom] of the polygon as geom2::Point_2 at the given x position.
+         */
+        [[nodiscard]] auto top_and_bottom(const Polygon_2 &shape, double x_position) -> std::array<Point_2, 2>;
+
+        /**
+         * @brief Measure the twist angle of an airfoil surface at a given span position.
+         * @note The symmetric flag of the surface is respected when calculating the twist angle.
+         *
+         * @param surface The airfoil surface to measure the twist angle of.
+         * @param position The span position along the span direction (local `Z` axis) to measure the twist angle at.
+         * @return double The twist angle of the airfoil surface at the given position. [rad]
+         */
+        [[nodiscard]] auto twist(const MultisectionSurface<AirfoilSection> &surface, double position) -> double;
+
+        /**
+         * @brief Measure the enclosed volume of a multi-section surface.
+         * The open ends at the beginning and end of the surface are closed
+         * using a plane face.
+         * @attention This calculation is costly!
+         *
+         * @param surface The surface to measure the volume of.
+         * @return double The volume of the surface.
+         */
+        [[nodiscard]] auto volume(const MultisectionSurface<PolygonSection> &surface) -> double;
+        [[nodiscard]] auto volume(const MultisectionSurface<AirfoilSection> &surface) -> double;
+
+        /**
+         * @brief Measure the width of a multi-section surface at a given position.
+         * @note The width refers to the local X direction of the surface.
+         *
+         * @param surface The surface to measure the width of.
+         * @param position The position along the reference direction (local Z axis) to measure the width at.
+         * @return double The width of the surface at the given position.
+         */
+        [[nodiscard]] auto width(const MultisectionSurface<PolygonSection> &surface, double position) -> double;
+
+        /**
+         * @brief Measure the maximum width of a multi-section surface.
+         * 
+         * @param surface The surface to measure the maximum width of.
+         * @return double The maximum width of the surface in local `X` direction.
+         */
+        [[nodiscard]] auto width_max(const MultisectionSurface<PolygonSection> &surface) -> double;
+    }; // namespace measure
+};     // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_PROCESSING_MEASURE_H_
diff --git a/aircraftGeometry2/include/aircraftGeometry2/processing/transform.h b/aircraftGeometry2/include/aircraftGeometry2/processing/transform.h
new file mode 100644
index 00000000..eccbb518
--- /dev/null
+++ b/aircraftGeometry2/include/aircraftGeometry2/processing/transform.h
@@ -0,0 +1,396 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_PROCESSING_TRANSFORM_H_
+#define AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_PROCESSING_TRANSFORM_H_
+
+/* === Includes === */
+#include <algorithm>
+#include <cmath>
+#include <cstdlib>
+#include <array>
+#include <numbers>
+#include <iterator>
+#include <utility>
+#include <vector>
+
+#include <CGAL/Surface_mesh.h>
+
+#include "aircraftGeometry2/geometry/entity3d.h"
+#include "aircraftGeometry2/geometry/section.h"
+#include "aircraftGeometry2/geometry/surface.h"
+
+namespace geom2
+{
+    /* === Typedefs === */
+    using Mesh = CGAL::Surface_mesh<Point_3>;
+
+    namespace detail
+    {
+        /* === Constants === */
+        /** @brief Convert from degrees to radians */
+        constexpr double to_radians = std::numbers::pi / 180.0;
+
+        /** @brief Convert from radians to degrees */
+        constexpr double to_degrees = 180.0 / std::numbers::pi;
+
+        /* === Functions === */
+        /**
+         * @brief Adds all points of a polygon section to a mesh.
+         * The points get transformed from the 2D coordinate system
+         * of the polygon to the parent 3D coordinate system of the
+         * surface mesh.
+         *
+         * @param mesh The mesh to add the points to.
+         * @param section The polygon section to add the points from.
+         */
+        void add_points_to_mesh(geom2::Mesh &mesh, const Section &section); //NOLINT (runtime/references)
+
+        /**
+         * @brief Add triangulated faces to the surface mesh which are defined
+         * by already inserted points of two sections.
+         *
+         * @param mesh The mesh to add the faces to.
+         * @param start_vertex The iterator to the first vertex of the first section.
+         * @param size_of_segments Array containing the number of points of the two sections.
+         * @param close_sections Whether the sections should be closed by adding faces.
+         */
+        void triangulate_inbetween_sections(
+            geom2::Mesh &mesh, //NOLINT (runtime/references)
+            geom2::Mesh::Vertex_iterator start_vertex,
+            std::array<std::size_t, 2> size_of_segments,
+            bool close_sections = false);
+
+        /**
+         * @brief Get the transformation matrix which converts the 2D point
+         * to the 3D coordinate system of the parent entity.
+         *
+         * @param entity The entity which defines the parent coordinate system.
+         * @param point The 2D point in the child coordinate system.
+         * @return CGAL::Aff_transformation_3<Kernel> The transformation matrix.
+         */
+        [[nodiscard]] auto get_transform(const Entity3D &entity, const Point_2 &point) -> CGAL::Aff_transformation_3<Kernel>;
+
+        /**
+         * @brief Get the transformation matrix which converts the 3D point
+         * to the 3D coordinate system of the parent entity. You can apply
+         * an optional rotation around the local z-axis.
+         *
+         * @param entity The entity which defines the parent coordinate system.
+         * @param point The 3D point in the child coordinate system.
+         * @return CGAL::Aff_transformation_3<Kernel> The transformation matrix.
+         */
+        [[nodiscard]] auto get_transform(const Entity3D &entity, const Point_3 &point) -> CGAL::Aff_transformation_3<Kernel>;
+    }; // namespace detail
+
+    namespace transform
+    {
+        /* === Functions === */
+        /**
+         * @brief Transforms a 2D point to the 3D coordinate system of the parent entity.
+         * @note This function is not part of the Python binding.
+         *
+         * @param entity The entity which defines the parent coordinate system.
+         * @param point The 2D point in the child coordinate system.
+         * @return geom2::Point_3 Returns the 2D point converted to the parent coordinate system.
+         */
+        [[nodiscard]] auto to_parent(const Entity3D &entity, const Point_2 &point) -> Point_3;
+
+        /**
+         * @brief Transforms a 3D point to the 3D coordinate system of the parent entity.
+         * @note This function is not part of the Python binding.
+         *
+         * @param entity The entity which defines the parent coordinate system.
+         * @param point The 2D point in the child coordinate system.
+         * @return geom2::Point_3 Returns the 3D point in the parent coordinate system.
+         */
+        [[nodiscard]] auto to_parent(const Entity3D &entity, const Point_3 &point) -> Point_3;
+
+        /**
+         * @brief Transforms a global 3D point to the local coordinate system of the entity.
+         * @note This function is not part of the Python binding.
+         * 
+         * @param entity The entity which defines the local coordinate system.
+         * @param point The global 3D point to transform.
+         * @return Point_3 The 3D point in the local coordinate system.
+         */
+        [[nodiscard]] auto to_local(const Entity3D &entity, const Point_3 &point) -> Point_3;
+
+        /**
+         * @brief Get the top reflection point of a section when creating the outline in a specific
+         * projection direction.
+         * @note This function is not part of the Python binding and is only used internally.
+         *
+         * @param section The section to get the top point from.
+         * @param parent The parent entity of the section which defines the orientation in the global space.
+         * @param direction The projection direction.
+         * @return geom2::Point_3 The top point of the section which is part of the projected outline.
+         */
+        [[nodiscard]] auto get_reflection_point_top(
+            const Section &section,
+            const Entity3D &parent,
+            const Direction_3 &direction) -> Point_3;
+
+        /**
+         * @brief Get the bottom reflection point of a section when creating the outline in a specific
+         * projection direction.
+         * @note This function is not part of the Python binding and is only used internally.
+         *
+         * @param section The section to get the bottom point from.
+         * @param parent The parent entity of the section which defines the orientation in the global space.
+         * @param direction The projection direction.
+         * @return geom2::Point_3 The bottom point of the section which is part of the projected outline.
+         */
+        [[nodiscard]] auto get_reflection_point_bottom(
+            const Section &section,
+            const Entity3D &parent,
+            const Direction_3 &direction) -> Point_3;
+
+        /**
+         * @brief Get the outline of a surface when viewed from the given direction.
+         * @note The outline points are inserted in series, where the first half of the points
+         * are the top points and the second half are the bottom points. The bottom points
+         * are inserted in reverse order so that the order of points can directly be used
+         * for plotting an SVG path.
+         *
+         * @param surface The surface to get the outline from.
+         * @param direction The direction to view the surface from.
+         * @return std::vector<geom2::Point_3> The outline of the surface.
+         */
+        template <Shape SectionType>
+        [[nodiscard]] auto outline_3d(
+            const MultisectionSurface<SectionType> &surface,
+            const Direction_3 &direction) -> std::vector<Point_3>
+        {
+            /* Create a vector which can contain all the outline points */
+            std::vector<Point_3> outline;
+            outline.reserve(surface.sections.size() * 2);
+
+            /* Get all the top reflection points */
+            std::transform(
+                surface.sections.begin(), surface.sections.end(),
+                std::back_inserter(outline),
+                [&surface, &direction](const auto &section)
+                {
+                    return get_reflection_point_top(section, surface, direction);
+                });
+
+            /* Get all the bottom reflection points in reverse order */
+            std::transform(
+                surface.sections.rbegin(), surface.sections.rend(),
+                std::back_inserter(outline),
+                [&surface, &direction](const auto &section)
+                {
+                    return get_reflection_point_bottom(section, surface, direction);
+                });
+
+            /* Return the outline */
+            return outline;
+        }
+
+        /**
+         * @brief Get the outline of a surface when viewed from the given direction and
+         * project the outline points to the 2D plane defined by the projection direction.
+         * @note The outline points are inserted in series, where the first half of the points
+         * are the top points and the second half are the bottom points. The bottom points
+         * are inserted in reverse order so that the order of points can directly be used
+         * for plotting an SVG path.
+         *
+         * @param surface The surface to get the outline from.
+         * @param direction The direction to view the surface from.
+         * @return std::vector<geom2::Point_2> The outline of the surface.
+         */
+        template <Shape SectionType>
+        [[nodiscard]] auto outline_2d(
+            const MultisectionSurface<SectionType> &surface,
+            const Direction_3 &direction) -> std::vector<Point_2>
+        {
+            /* Get the 3d outline of the surface */
+            const auto outline = outline_3d(surface, direction);
+
+            /* Create container for the 2D outline with the same size as the outline */
+            std::vector<Point_2> outline_2d;
+            outline_2d.reserve(outline.size());
+
+            /* Get the plane defined by the view direction */
+            const Plane_3 plane_xy{CGAL::ORIGIN, direction};
+            const Plane_3 plane_yz{CGAL::ORIGIN, plane_xy.base1()};
+            const Plane_3 plane_xz{CGAL::ORIGIN, plane_xy.base2()};
+
+            /* Get the distance of the outline points to the view plane base vectors */
+            std::transform(
+                outline.begin(), outline.end(),
+                std::back_inserter(outline_2d),
+                [&plane_yz, &plane_xz](const auto &point)
+                {
+                    /* Get the distance of the point to the yz plane which gives the x coordinate */
+                    double sign_x = 1;
+                    if (plane_yz.a() * point.x() + plane_yz.b() * point.y() + plane_yz.c() * point.z() + plane_yz.d() < 0) { sign_x = -1; };
+                    const double distance_x = sign_x * std::sqrt(CGAL::squared_distance(plane_yz, point));
+
+                    /* Get the distance of the point to the xz plane which gives the y coordinate */
+                    double sign_y = 1;
+                    if (plane_xz.a() * point.x() + plane_xz.b() * point.y() + plane_xz.c() * point.z() + plane_xz.d() < 0) { sign_y = -1; };
+                    const double distance_y = sign_y * std::sqrt(CGAL::squared_distance(plane_xz, point));
+
+                    /* Return the 2D point */
+                    return Point_2(distance_x, distance_y);
+                });
+
+            /* Return the outline */
+            return outline_2d;
+        }
+
+        /**
+         * @brief Transform the surface which is defined with normalized
+         * coordinates to absolute coordinates using the reference surface
+         * to derive the absolute dimensions.
+         * @note This is mainly intended to convert the surface of control
+         * devices, which are usually defined with normalized coordinates, to absolute
+         * coordinates so their outline can be plotted.
+         * 
+         * @param surface The surface specified with normalized coordinates.
+         * @param reference The reference surface to derive the absolute dimensions from.
+         * @return MultisectionSurface<PolygonSection> Return a new surface with absolute coordinates.
+         */
+        auto to_absolute(
+            const MultisectionSurface<PolygonSection> &surface,
+            const MultisectionSurface<AirfoilSection> &reference) -> MultisectionSurface<PolygonSection>;
+
+        /**
+         * @brief Resample a polygon to a given number of points.
+         * 
+         * @param polygon The polygon to resample.
+         * @param size The number of vertices the resampled polygon should have.
+         * @return geom2::Polygon_2 The resampled polygon.
+         * @throws std::invalid_argument If the requested size is smaller than the polygon size.
+         */
+        auto resample(const Polygon_2& polygon, std::size_t size) -> Polygon_2;
+
+        /**
+         * @brief Creates a triangulated surface mesh from a vector of surface sections.
+         * @note This function is not part of the Python binding.
+         *
+         * @tparam SectionType The type of the surface sections.
+         * @param sections The vector containing the surface sections.
+         * @return geom2::Mesh Returns the triangulated surface mesh.
+         */
+        template <Shape SectionType>
+        [[nodiscard]] auto to_mesh(const std::vector<SectionType> &sections) -> Mesh
+        {
+            /* Check whether the SectionType is derived from the Section class */
+            static_assert(std::is_base_of_v<Section, SectionType>, "SectionType must be derived from Section!");
+
+            /* Create a new mesh */
+            Mesh mesh;
+
+            /** @todo Add orientation check of the polygon sections here! */
+
+            /* Add all points of the polygons to the 3D mesh */
+            std::for_each(
+                sections.begin(), sections.end(),
+                [&mesh](const auto &section)
+                {
+                    detail::add_points_to_mesh(mesh, section);
+                });
+
+            /* Connect all faces for each section */
+            geom2::Mesh::Vertex_iterator first_vertex = mesh.vertices_begin();
+            for (std::size_t iSegment = 0; iSegment < sections.size() - 1; ++iSegment)
+            {
+                /* Get the number of points of the two sections */
+                const std::array<std::size_t, 2> size_of_segments = {
+                    sections[iSegment].size(),
+                    sections[iSegment + 1].size()};
+
+                /* Check whether both polygons are simple */
+                const bool close_sections = 
+                    sections[iSegment].get_contour().is_simple() &&
+                    sections[iSegment + 1].get_contour().is_simple();
+
+                /* Triangulate the faces between the two sections */
+                detail::triangulate_inbetween_sections(mesh, first_vertex, size_of_segments, close_sections);
+
+                /* Move the iterator to the first vertex of the next section */
+                first_vertex = std::next(first_vertex, size_of_segments[0]);
+            }
+
+            /* Return the mesh */
+            return mesh;
+        }
+
+        /**
+         * @brief Creates a triangulated surface mesh from a multi-section surface.
+         * When the section to not have a uniform size, the sections are resampled
+         * to fit the number of vertices of the largest section.
+         * @note This function is not part of the Python binding.
+         *
+         * @tparam SectionType The type of the surface sections.
+         * @param surface The multi-section surface to triangulate.
+         * @return geom2::Mesh Returns the triangulated surface mesh.
+         */
+        template <class SectionType>
+        [[nodiscard]] auto to_mesh(const MultisectionSurface<SectionType> &surface) -> Mesh
+        {
+            /* Check whether the SectionType is derived from the Section class */
+            static_assert(std::is_base_of_v<Section, SectionType>, "SectionType must be derived from Section!");
+
+            /* Copy the sections, since they might get resampled */
+            std::vector<SectionType> sections = surface.sections;
+
+            /* Get the min and max size of the sections */
+            const auto [min_size, max_size] = std::minmax_element(
+                surface.sections.begin(), surface.sections.end(),
+                [](const auto &lhs, const auto &rhs)
+                {
+                    return lhs.size() < rhs.size();
+                });
+
+            /* If the sizes are different, resample the polygons to fit the max size */
+            if (min_size->size() != max_size->size())
+            {
+                /* Resample all sections to the max size */
+                std::for_each(
+                    sections.begin(), sections.end(),
+                    [&max_size](auto &section)
+                    {
+                        section.set_contour(resample(section.get_contour(false), max_size->size()));
+                    });
+            }
+
+            /* The mesh in the local coordinate system */
+            auto mesh = to_mesh(sections);
+
+            /* Transform to the parent coordinate system */
+            const auto transform = detail::get_transform(surface, Point_3(0, 0, 0));
+            for (auto vertex : mesh.vertices())
+            {
+                mesh.point(vertex) = transform(mesh.point(vertex));
+            }
+
+            /*  Return the mesh */
+            return mesh;
+        }
+    }; // namespace transform
+};     // namespace geom2
+
+#endif // AIRCRAFTGEOMETRY2_INCLUDE_AIRCRAFTGEOMETRY2_PROCESSING_TRANSFORM_H_
diff --git a/aircraftGeometry2/pyaircraftgeometry2/pyaircraftgeometry2/__init__.py b/aircraftGeometry2/pyaircraftgeometry2/pyaircraftgeometry2/__init__.py
new file mode 100644
index 00000000..563abab1
--- /dev/null
+++ b/aircraftGeometry2/pyaircraftgeometry2/pyaircraftgeometry2/__init__.py
@@ -0,0 +1,30 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+"""Python package of the aircraftGeometry2 C++ library.
+
+    Imports the pre-build binary and exposes its interface.
+"""
+# Package information
+__version__ = "0.5.0"
+__author__ = "Sebastian Oberschwendtner, sebastian.oberschwendtner@tum.de"
+
+# Import the binary and expose all members
+from .py11aircraftGeometry2 import *
diff --git a/aircraftGeometry2/pyaircraftgeometry2/pyproject.toml b/aircraftGeometry2/pyaircraftgeometry2/pyproject.toml
new file mode 100644
index 00000000..2b096377
--- /dev/null
+++ b/aircraftGeometry2/pyaircraftgeometry2/pyproject.toml
@@ -0,0 +1,18 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[tool.setuptools.package-data]
+pyaircraftgeometry2 = ["*.so", "*.dll", "*.pyd"]
+
+[project]
+name = "pyaircraftgeometry2"
+version = "3.0.0"
+description = "Python binding of the aircraftGeometry2 C++ library of UNICADO"
+requires-python = ">=3.10"
+authors = [
+    {name = "Sebastian Oberschwendtner", email = "sebastian.oberschwendtner@tum.de"},
+]
+classifiers = [
+"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
+]
diff --git a/aircraftGeometry2/resources.rc b/aircraftGeometry2/resources.rc
new file mode 100644
index 00000000..34cd503c
--- /dev/null
+++ b/aircraftGeometry2/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "aircraftGeometry2\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "aircraftGeometry2.dll\0"
+            VALUE "ProductName",        "aircraftGeometry2\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/aircraftGeometry2/src/builder/acxml.cpp b/aircraftGeometry2/src/builder/acxml.cpp
new file mode 100644
index 00000000..dd9939e6
--- /dev/null
+++ b/aircraftGeometry2/src/builder/acxml.cpp
@@ -0,0 +1,646 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <aircraftGeometry2/geometry/acxml.h>
+#include <aircraftGeometry2/geometry/factory.h>
+#include <aircraftGeometry2/io/dat.h>
+#include <aircraftGeometry2/processing/measure.h>
+#include <aircraftGeometry2/processing/transform.h>
+#include <algorithm>
+#include <string>
+#include <string_view>
+
+/* === Using Directives ===*/
+using std::literals::string_literals::operator""s;
+
+/* === Constant Node Paths ===*/
+constexpr std::string_view path_geometry_v2 = "AcftExchangeFile/Geometry/";
+constexpr std::string_view path_geometry_v3 = "aircraft_exchange_file/component_design/";
+
+namespace geom2
+{
+    // === AIXML Version 2.0 ===
+    AIXMLv2::AIXMLv2(std::shared_ptr<node> AcXml, const std::filesystem::path &data_dir)
+        : aircraft(AcXml), data_dir(data_dir)
+    {
+        /* Try inferring the geometry data from the AcXml file if data_dir is not valid */
+        if (!std::filesystem::exists(data_dir))
+        {
+            std::filesystem::path XmlPath = this->aircraft->name;
+            XmlPath = XmlPath.parent_path().make_preferred();
+            if (std::filesystem::exists(XmlPath))
+                this->data_dir = std::filesystem::absolute(XmlPath);
+            else
+                this->data_dir = std::filesystem::current_path();
+        }
+    }
+
+    auto AIXMLv2::build_hull(const std::string_view name) -> MultisectionSurface<PolygonSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<PolygonSection> hull;
+        SectionBuilder<PolygonSection> section_builder;
+
+        /* Create the base path where to find the geometry */
+        std::string node_path{path_geometry_v2};
+        node_path += name;
+
+        /* Set the origin */
+        double x_ref = this->aircraft->at(node_path + "/NacelleRefPoint/r_Nacelle");
+        double y_ref = this->aircraft->at(node_path + "/NacelleRefPoint/y_Nacelle");
+        double z_ref = this->aircraft->at(node_path + "/NacelleRefPoint/h_Nacelle");
+        hull.origin = {x_ref, y_ref, z_ref};
+
+        /* === Sections ===*/
+        auto segments = this->aircraft->at(node_path).getVector("NacelleParameters/NacelleSegment");
+
+        /* Inlet Section */
+        auto& inlet = this->aircraft->at(node_path + "/NacelleParameters/InletSegment");
+        std::filesystem::path shape_file = this->data_dir / std::string(inlet.at("SegmentPointData"));
+        PolygonSection shape{io::read_dat_file(shape_file)};
+        shape.set_width(inlet.at("w_Inlet"));
+        shape.set_height(inlet.at("h_Inlet"));
+        shape.name = shape_file.stem().string();
+        section_builder.insert_back(shape, {0, 0, 0});
+        double z_offset_to_next = inlet.at("l_Inlet");
+
+        /* Other Sections */
+        for (auto &segment : segments)
+        {
+            shape_file = this->data_dir / std::string(segment->at("InnerSegmentPointData"));
+            shape = PolygonSection{io::read_dat_file(shape_file)};
+            shape.set_width(segment->at("w_o_Segment"));
+            shape.set_height(segment->at("h_o_Segment"));
+            shape.name = shape_file.stem().string();
+            section_builder.insert_back(shape, {0, 0, z_offset_to_next});
+            z_offset_to_next = segment->at("l_Segment");
+        }
+
+        /* Outlet Section */
+        auto& outlet = this->aircraft->at(node_path + "/NacelleParameters/ExitSegment");
+        shape_file = this->data_dir / std::string(outlet.at("SegmentPointData"));
+        shape = PolygonSection{io::read_dat_file(shape_file)};
+        shape.set_width(outlet.at("w_Exit"));
+        shape.set_height(outlet.at("h_Exit"));
+        shape.name = shape_file.stem().string();
+        section_builder.insert_back(shape, {0, 0, z_offset_to_next});
+
+        /* Get the sections from the builder and return the resulting surface */
+        hull.sections = section_builder.get_result();
+        return hull;
+    }
+
+    auto AIXMLv2::build_fuselage(const std::string_view name) -> MultisectionSurface<PolygonSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<PolygonSection> fuselage;
+        SectionBuilder<PolygonSection> section_builder;
+
+        /* Create the base path where to find the geometry */
+        std::string node_path{path_geometry_v2};
+        node_path += name;
+
+        /* Set the origin */
+        double x_ref = this->aircraft->at(node_path + "/FuselageRefPoint/r_Fuselage");
+        double y_ref = this->aircraft->at(node_path + "/FuselageRefPoint/y_Fuselage");
+        double z_ref = this->aircraft->at(node_path + "/FuselageRefPoint/h_Fuselage");
+        fuselage.origin = {x_ref, y_ref, z_ref};
+
+        /* === Sections ===*/
+        Polygon_2 shape{};
+        Vector_3 offset{0, 0, 0};
+        node_path += "/FuselageParameters";
+
+        /* Lambda which inserts the sections */
+        auto insert_section = [this, &section_builder](node const *const segment)
+        {
+            std::filesystem::path shape_file = this->data_dir / std::string(segment->at("SegmentPointData"));
+            PolygonSection section{io::read_dat_file(shape_file)};
+            section.set_width(segment->at("w_Segment"));
+            section.set_height(segment->at("h_Segment"));
+            section.name = shape_file.stem().string();
+            const double length = segment->at("l_Segment");
+            const double y_offset = segment->at("deltah_Segment") - section_builder.peek().back().origin.y();
+            section_builder.insert_back(section, {0, y_offset, length});
+        };
+
+        /* Tip Section */
+        double y_tip = this->aircraft->at(node_path + "/NoseDescription/TipSegment/h_Tip");
+        shape.push_back({0, 0});
+        section_builder.insert_back(shape, {0, y_tip, 0});
+
+        /* Nose Sections */
+        auto segments = this->aircraft->at(node_path).getVector("NoseDescription/NoseSegment");
+        std::for_each(segments.begin(), segments.end(), insert_section);
+
+        /* Mid Sections */
+        segments = this->aircraft->at(node_path).getVector("MidSectionDescription/MidSectionSegment");
+        std::for_each(segments.begin(), segments.end(), insert_section);
+
+        /* Tail Sections */
+        segments = this->aircraft->at(node_path).getVector("TailDescription/TailSegment");
+        std::for_each(segments.begin(), segments.end(), insert_section);
+
+        /* Get the sections from the builder and return the resulting surface */
+        fuselage.sections = section_builder.get_result();
+        fuselage.sections.front().name = "ellipse"; // Set the name of the tip section
+        return fuselage;
+    }
+
+    auto AIXMLv2::build_airfoil_surface(const std::string_view name) -> MultisectionSurface<AirfoilSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<AirfoilSection> wing;
+        SectionBuilder<AirfoilSection> section_builder;
+
+        /* Create the base path where to find the geometry */
+        std::string node_path{path_geometry_v2};
+        node_path += name;
+
+        /* Set the base properties */
+        wing.origin = this->get_point(node_path + "/SurfaceRefPoint");
+
+        /* === Sections ===*/
+        auto segments = this->aircraft->at(node_path)
+                            .getVector("SurfaceParameters/SurfaceSegment");
+
+        /* First Section */
+        Vector_3 offset{0, 0, 0};
+        std::filesystem::path airfoil_file = this->data_dir / std::string(segments[0]->at("InnerProfile_Segment"));
+        AirfoilSection airfoil{io::read_airfoil(airfoil_file)};
+        airfoil.name = airfoil_file.stem().string();
+        airfoil.set_chord_length(segments[0]->at("l_i_Segment"));
+        airfoil.set_twist_angle(segments[0]->at("epsilon_Segment") * detail::to_radians);
+        section_builder.insert_back(airfoil, offset);
+
+        /* Other Sections */
+        for (auto &segment : segments)
+        {
+            airfoil_file = this->data_dir / std::string(segment->at("InnerProfile_Segment"));
+            airfoil = AirfoilSection{io::read_airfoil(airfoil_file)};
+            airfoil.name = airfoil_file.stem().string();
+            airfoil.set_chord_length(segment->at("l_o_Segment"));
+            airfoil.set_twist_angle(segment->at("epsilon_Segment") * detail::to_radians);
+            offset = detail::get_offset(
+                segment->at("s_Segment"),
+                segment->at("nu_Segment") * detail::to_radians,
+                segment->at("phi_Segment") * detail::to_radians);
+            section_builder.insert_back(airfoil, offset);
+        }
+
+        /* Get the sections from the builder and return the resulting surface */
+        wing.sections = section_builder.get_result();
+        return wing;
+    }
+
+    auto AIXMLv2::build_spar(const std::string_view name) -> MultisectionSurface<PolygonSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<PolygonSection> spar;
+        SectionBuilder<PolygonSection> section_builder;
+
+        /* Create the base path where to find the geometry */
+        std::string node_path{path_geometry_v2};
+        node_path += name;
+        // node_path += "/SurfaceParameters/HalfSurfaceDescription";
+
+        /* Set the origin */
+        spar.origin = this->get_point(node_path + "/SurfaceRefPoint");
+
+        /* === Sections ===*/
+        node_path += "/SurfaceParameters/HalfSurfaceDescription";
+        auto segments = this->aircraft->at(node_path).getVector("HalfSurfaceSegment");
+        /* First section */
+        double x_front = segments[0]->at("l_rel_i_FrontSpar");
+        double x_rear = segments[0]->at("l_rel_i_RearSpar");
+        Polygon_2 shape{};
+        shape.push_back({x_front, 0});
+        shape.push_back({x_rear, 0});
+        section_builder.insert_back(shape, {0, 0, 0});
+        /* Other sections */
+        for (auto &segment : segments)
+        {
+            x_front = segment->at("l_rel_o_FrontSpar");
+            x_rear = segment->at("l_rel_o_RearSpar");
+            shape = Polygon_2{};
+            shape.push_back({x_front, 0});
+            shape.push_back({x_rear, 0});
+            section_builder.insert_back(shape, {0, 0, static_cast<double>(segment->at("s_Segment"))});
+        }
+
+        /* Get the sections from the builder and return the resulting surface */
+        spar.sections = section_builder.get_result();
+        return spar;
+    }
+
+    auto AIXMLv2::build_control_device(const std::string_view name) -> MultisectionSurface<PolygonSection>
+    {
+        /* Create the surfaces */
+        MultisectionSurface<PolygonSection> flap;
+
+        /* Create the base path where to find the geometry */
+        std::string node_path{path_geometry_v2};
+        node_path += name;
+
+        /* Check the type of this flap based on its available parameters */
+        auto device = this->aircraft->at(node_path);
+        const bool is_TE_device = device.find("l_rel_TE_i") != nullptr;
+
+        /* Set the geometry parameters */
+        double x_inner_front{0.0};
+        double x_inner_rear{0.0};
+        double x_outer_front{0.0};
+        double x_outer_rear{0.0};
+        double span_inner{0.0};
+        double span_outer{0.0};
+        if (is_TE_device)
+        {
+            x_inner_front = device.at("l_rel_i");
+            x_inner_rear = 1.0 - device.at("l_rel_TE_i");
+            x_outer_front = device.at("l_rel_o");
+            x_outer_rear = 1.0 - device.at("l_rel_TE_o");
+            span_inner = device.at("s_rel_i");
+            span_outer = device.at("s_rel_o");
+        }
+        else
+        {
+            x_inner_rear = device.at("l_rel_i");
+            x_outer_rear = device.at("l_rel_o");
+            span_inner = device.at("s_rel_i");
+            span_outer = device.at("s_rel_o");
+        }
+
+        /* Create the polygon */
+        Polygon_2 shape_inner{};
+        shape_inner.push_back({x_inner_front, 0});
+        shape_inner.push_back({x_inner_rear, 0});
+        Polygon_2 shape_outer{};
+        shape_outer.push_back({x_outer_front, 0});
+        shape_outer.push_back({x_outer_rear, 0});
+
+        /* Create the flap surface */
+        flap.sections.emplace_back(shape_inner);
+        flap.sections.emplace_back(shape_outer);
+
+        /* Set the section origins */
+        flap.sections[0].origin = {0, 0, -span_inner};
+        flap.sections[1].origin = {0, 0, -span_outer};
+
+        /* Return the flap */
+        return flap;
+    }
+
+    auto AIXMLv2::build_wing(const std::string_view name) -> MultisectionSurface<AirfoilSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<AirfoilSection> wing;
+        SectionBuilder<AirfoilSection> section_builder;
+
+        /* Create the base path where to find the geometry */
+        std::string node_path{path_geometry_v2};
+        node_path += name;
+
+        /* Set the base properties */
+        wing.origin = this->get_point(node_path + "/SurfaceRefPoint");
+        wing.is_symmetric = this->aircraft->at(node_path + "/SurfaceParameters/Symmetric");
+
+        /* === Sections ===*/
+        auto segments = this->aircraft->at(node_path)
+                            .getVector("SurfaceParameters/HalfSurfaceDescription/HalfSurfaceSegment");
+
+        /* First Section */
+        Vector_3 offset{0, 0, 0};
+        std::filesystem::path airfoil_file = this->data_dir / std::string(segments[0]->at("InnerProfile_Segment"));
+        AirfoilSection airfoil{io::read_airfoil(airfoil_file)};
+        airfoil.name = airfoil_file.stem().string();
+        airfoil.set_chord_length(segments[0]->at("l_i_Segment"));
+        airfoil.set_twist_angle(segments[0]->at("epsilon_Segment") * detail::to_radians);
+        section_builder.insert_back(airfoil, offset);
+
+        /* Other Sections */
+        for (auto &segment : segments)
+        {
+            airfoil_file = this->data_dir / std::string(segment->at("InnerProfile_Segment"));
+            airfoil = AirfoilSection{io::read_airfoil(airfoil_file)};
+            airfoil.name = airfoil_file.stem().string();
+            airfoil.set_chord_length(segment->at("l_o_Segment"));
+            airfoil.set_twist_angle(segment->at("epsilon_Segment") * detail::to_radians);
+            offset = detail::get_offset(
+                segment->at("s_Segment"),
+                segment->at("nu_Segment") * detail::to_radians,
+                segment->at("phi_Segment") * detail::to_radians);
+            section_builder.insert_back(airfoil, offset);
+        }
+
+        /* Get the sections from the builder and return the resulting surface */
+        wing.sections = section_builder.get_result();
+        return wing;
+    }
+
+    auto AIXMLv2::get_point(std::string_view id) const -> Point_3
+    {
+        /* Get the liftingSurface node with the id */
+        const node &entity = this->aircraft->at(std::string{id});
+
+        /* Get the reference point coordinates */
+        double x_ref = entity.at("r_Surface");
+        double y_ref = entity.at("y_Surface");
+        double z_ref = entity.at("h_Surface");
+        return Point_3{x_ref, y_ref, z_ref};
+    }
+
+    // === AIXML Version 3.0 ===
+    AIXMLv3::AIXMLv3(std::shared_ptr<node> AcXml, const std::filesystem::path &data_dir)
+        : aircraft(AcXml), data_dir(data_dir)
+    {
+    }
+
+    auto AIXMLv3::build_hull(const std::string_view name) -> MultisectionSurface<PolygonSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<PolygonSection> nacelle;
+        SectionBuilder<PolygonSection> section_builder;
+
+        /* Create the base path where to find the geometry */
+        std::string nacelle_path{path_geometry_v3};
+        nacelle_path += name;
+
+        /* Set the origin */
+        nacelle.origin = this->get_point(nacelle_path);
+        nacelle.normal = this->get_direction(nacelle_path + "/normal");
+
+        ///* Change the coordinate systems */
+        //nacelle.ac_to_global(Point_3{ 0.0, 0.0, 0.0 });
+
+        /* === Sections ===*/
+        auto sections = this->aircraft->at(nacelle_path).getVector("sections/section");
+        for (const auto &section : sections)
+        {
+            /* Get the geometry of the section */
+            std::filesystem::path geometry_file = this->data_dir / (std::string(section->at("profile/value")) + ".dat");
+            PolygonSection shape{io::read_dat_file(geometry_file)};
+            shape.name = geometry_file.stem().string();
+
+            /* Set the origin of the section */
+            shape.origin = {
+                double{section->at("origin/x/value")},
+                double{section->at("origin/y/value")},
+                double{section->at("origin/z/value")}};
+
+            /* Set the section properties */
+            shape.set_width(section->at("width/value"));
+            shape.set_height(section->at("height/value"));
+
+            /* Add the section to the surface */
+            nacelle.sections.emplace_back(shape);
+        }
+
+        /* Get the sections from the builder and return the resulting nacelle */
+        return nacelle;
+    }
+
+    auto AIXMLv3::build_fuselage(const std::string_view name) -> MultisectionSurface<PolygonSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<PolygonSection> fuselage;
+        SectionBuilder<PolygonSection> section_builder;
+
+        /* Create the base path where to find the geometry */
+        std::string fuselage_path{path_geometry_v3};
+        fuselage_path += name;
+
+        /* Set the entity properties of the surface */
+        fuselage.name = std::string(this->aircraft->at(fuselage_path + "/name/value"));
+        fuselage.origin = this->get_point(fuselage_path);
+        fuselage.normal = this->get_direction(fuselage_path + "/direction");
+        
+        /* === Sections ===*/
+        auto sections = this->aircraft->at(fuselage_path).getVector("sections/section");
+        std::filesystem::path geometry_file{};
+        PolygonSection shape{};
+        Vector_3 offset{0, 0, 0};
+        for (const auto &section : sections)
+        {
+            /* Get the sections dimensions */
+            const double height_upper = section->at("upper_height/value");
+            const double height_lower = section->at("lower_height/value");
+            const double width = section->at("width/value");
+
+            /* Check whether the width is near 0 */
+            const bool is_tip = (std::abs(width) < 1e-6);
+
+            /* Get the section shape */
+            Polygon_2 poly;
+            if (not is_tip)
+            {
+                geometry_file = this->data_dir / (std::string(section->at("section_shape/value")) + ".dat");
+                if (geometry_file.filename().string().starts_with("ellipse"))
+                {
+                    /* Assume an ellipse was given as the section shape */
+                    auto ellipse_upper = build::ellipse(width, 2 * height_upper).get_contour(true);
+                    auto ellipse_lower = build::ellipse(width, 2 * height_lower).get_contour(true);
+                    poly.insert(poly.vertices_end(), ellipse_upper.vertices_begin(), ellipse_upper.right_vertex() - 1);
+                    poly.insert(poly.vertices_end(), ellipse_lower.right_vertex(), ellipse_lower.vertices_end() - 1);
+                } else {
+                    /* Assume a dat file was given as the section shape */
+                    poly = io::read_dat_file(geometry_file);
+                }
+            } else {
+                /* Insert one tip point */
+                poly.push_back({0, 0});
+            }
+            shape = PolygonSection{poly};
+            shape.name = geometry_file.stem().string();
+
+            /* Set the origin of the section */
+            shape.origin = {
+                double{section->at("origin/x/value")},
+                double{section->at("origin/y/value")},
+                double{section->at("origin/z/value")}};
+
+            /* Set the section properties */
+            shape.set_height(height_upper + height_lower);
+            shape.set_width(width);
+
+            /* Add the section to the surface */
+            fuselage.sections.emplace_back(shape);
+        }
+
+        /* Return the resulting nacelle */
+        return fuselage;
+    }
+
+    auto AIXMLv3::build_airfoil_surface(const std::string_view name) -> MultisectionSurface<AirfoilSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<AirfoilSection> surface;
+
+        /* Get the base path where to find the geometry */
+        std::string node_path{path_geometry_v3};
+        node_path += name;
+
+        /* Set the entity properties of the surface */
+        surface.origin = this->get_point(node_path + "/position");
+        surface.normal = this->get_direction(node_path + "/normal");
+
+        ///* Change the coordinate systems */
+        //surface.ac_to_global(Point_3{ 0.0, 0.0, 0.0 });
+
+        surface.is_symmetric = false;
+
+        /* === Sections ===*/
+        auto sections = this->aircraft->at(node_path).getVector("sections/section");
+        std::filesystem::path airfoil_file{};
+        AirfoilSection airfoil{};
+        Vector_3 offset{0, 0, 0};
+        for (const auto &section : sections)
+        {
+            /* Read the profile dat file*/
+            airfoil_file = this->data_dir / (std::string(section->at("profile/value")) + ".dat");
+            airfoil = AirfoilSection{io::read_airfoil(airfoil_file)};
+            airfoil.name = airfoil_file.stem().string();
+
+            /* Set the origin of the section */
+            airfoil.origin = {
+                double{section->at("origin/x/value")},
+                double{section->at("origin/y/value")},
+                double{section->at("origin/z/value")}};
+
+            /* Set the section properties */
+            airfoil.set_chord_length(section->at("chord_length/value"));
+            airfoil.set_twist_angle(section->at("geometric_twist/value"));
+
+            /* Add the section to the surface */
+            surface.sections.emplace_back(airfoil);
+        }
+
+        /* Return the resulting surface */
+        return surface;
+    }
+
+    auto AIXMLv3::build_spar(const std::string_view name) -> MultisectionSurface<PolygonSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<PolygonSection> spar;
+
+        /* Get the base path where to find the geometry */
+        std::string node_path{path_geometry_v3};
+        node_path += name;
+
+        /* Lambda which inserts the section */
+        auto insert_section = [&spar](const node &position)
+        {
+            Polygon_2 shape;
+            shape.push_back({double{position.at("chord/from/value")}, 0.0});
+            shape.push_back({double{position.at("chord/to/value")}, 0.0});
+            spar.sections.emplace_back(shape);
+            spar.sections.back().origin = {0.0, 0.0, double{position.at("spanwise/value")}}; // Assume the XML has to correct extrusion direction
+        };
+
+        /* Insert the sections */
+        insert_section(this->aircraft->at(node_path + "/position/inner_position"));
+        insert_section(this->aircraft->at(node_path + "/position/outer_position"));
+
+        /* Return the resulting nacelle */
+        return spar;
+    }
+
+    auto AIXMLv3::build_control_device(const std::string_view name) -> MultisectionSurface<PolygonSection>
+    {
+        /* Defer this call to build_spar */
+        return this->build_spar(name);
+    }
+
+    auto AIXMLv3::build_wing(const std::string_view name) -> MultisectionSurface<AirfoilSection>
+    {
+        /* Create the surface to build */
+        MultisectionSurface<AirfoilSection> wing;
+
+        /* Get the base path where to find the geometry */
+        std::string node_path{path_geometry_v3};
+        node_path += name;
+
+        /* Set the entity properties of the surface */
+        wing.name = std::string(this->aircraft->at(node_path + "/name/value"));
+        wing.origin = this->get_point(node_path + "/position");
+        wing.normal = this->get_direction(node_path + "/parameters/direction");
+
+        ///* Change the coordinate systems */
+        //wing.ac_to_global(Point_3{ 0.0, 0.0, 0.0 });
+
+        wing.is_symmetric = isTrue(this->aircraft->at(node_path + "/parameters/symmetric/value"));
+
+        /* === Sections ===*/
+        auto sections = this->aircraft->at(node_path).getVector("parameters/sections/section");
+        std::filesystem::path airfoil_file{};
+        AirfoilSection airfoil{};
+        Vector_3 offset{0, 0, 0};
+        for (const auto &section : sections)
+        {
+            /* Read the profile dat file*/
+            airfoil_file = this->data_dir / (std::string(section->at("profile/value")) + ".dat");
+            airfoil = AirfoilSection{io::read_airfoil(airfoil_file)};
+            airfoil.name = airfoil_file.stem().string();
+
+            /* Set the origin of the section */
+            airfoil.origin = {
+                double{section->at("chord_origin/x/value")},
+                double{section->at("chord_origin/y/value")},
+                double{section->at("chord_origin/z/value")}};
+
+            /* Set the section properties */
+            airfoil.set_chord_length(section->at("chord_length/value"));
+            airfoil.set_twist_angle(section->at("geometric_twist/value"));
+            airfoil.scale_thickness(section->at("scale_thickness/value"));
+
+            /* Add the section to the surface */
+            wing.sections.emplace_back(airfoil);
+        }
+
+        /* Return the resulting surface */
+        return wing;
+    }
+
+    auto AIXMLv3::get_point(std::string_view id) const -> Point_3
+    {
+        /* Get the liftingSurface node with the id */
+        const node &entity = this->aircraft->at(std::string{id});
+
+        /* Get the reference point of the fuselage */
+        double x_ref = entity.at("x/value");
+        double y_ref = entity.at("y/value");
+        double z_ref = entity.at("z/value");
+        return Point_3{x_ref, y_ref, z_ref};
+    }
+
+    auto AIXMLv3::get_direction(std::string_view id) const -> Direction_3
+    {
+        /* Get the liftingSurface node with the id */
+        const node &entity = this->aircraft->at(std::string{id});
+
+        /* Get the reference point of the fuselage */
+        double x_ref = entity.at("x/value");
+        double y_ref = entity.at("y/value");
+        double z_ref = entity.at("z/value");
+        return Direction_3{x_ref, y_ref, z_ref};
+    }
+}; // namespace geom2
diff --git a/aircraftGeometry2/src/builder/builder.cpp b/aircraftGeometry2/src/builder/builder.cpp
new file mode 100644
index 00000000..098c7820
--- /dev/null
+++ b/aircraftGeometry2/src/builder/builder.cpp
@@ -0,0 +1,72 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/geometry/builder.h"
+#include <algorithm>
+#include <cmath>
+#include <numeric>
+
+/* === Functions === */
+namespace geom2
+{
+    namespace build
+    {
+        auto ellipse(const double width, const double height, const size_t points_per_quarter) -> PolygonSection
+        {
+            /* Initial values */
+            Polygon_2 shape;
+            shape.resize(4 * (points_per_quarter - 1));
+            const double ratio = height / width;
+
+            /* Create the equidistant normalized x coordinates of the ellipse */
+            std::vector<double> x(2 * points_per_quarter - 1);
+            for (size_t i = 0; i < (2 * points_per_quarter - 1); ++i)
+            {
+                x.at(i) = -1.0 + (i / static_cast<double>(( points_per_quarter - 1)));
+            }
+
+            /* Compute the absolute normalized y coordinates of the ellipse */
+            std::vector<double> y_abs(x);
+            std::transform(x.begin(), x.end(), y_abs.begin(),
+                           [&ratio](const double x) -> double
+                           { return ratio * std::sqrt(1.0 - std::pow(x, 2.0)); });
+
+            /* Insert the upper half of the ellipse in the polygon */
+            std::transform(x.begin(), x.end() - 1, y_abs.begin(), shape.vertices_begin(),
+                           [](const double x, const double y) -> Point_2 { return Point_2(x, y); });
+
+            /* Insert the lower half of the ellipse in the polygon */
+            std::transform(x.rbegin(), x.rend() - 1, y_abs.rbegin(), shape.vertices_begin() + ( 2*(points_per_quarter-1)),
+                           [](const double x, const double y) -> Point_2 { return Point_2(x, -y); });
+
+            /* Transform the normalized coordinates to absolute values */
+            const Kernel::Aff_transformation_2 scale{
+                Kernel::Aff_transformation_2(CGAL::SCALING, width/2)};
+
+            /* Create the polygon section */
+            PolygonSection section{CGAL::transform(scale, shape)};
+
+            /* Return the scaled section */
+            return section;
+        };
+    }; // namespace build
+};     // namespace geom2
diff --git a/aircraftGeometry2/src/demo.cpp b/aircraftGeometry2/src/demo.cpp
new file mode 100644
index 00000000..5bde2e17
--- /dev/null
+++ b/aircraftGeometry2/src/demo.cpp
@@ -0,0 +1,142 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/airfoil_surface.h"
+#include "aircraftGeometry2/fuselage.h"
+#include "aircraftGeometry2/hull_surface.h"
+#include "aircraftGeometry2/io/convert.h"
+#include "aircraftGeometry2/processing/transform.h"
+#include <CGAL/Surface_mesh/IO/PLY.h>
+#include <aixml/node.h>
+
+/* === Main === */
+int main(int argc, char **argv)
+{
+    using namespace geom2;
+    /* Check whether the path to the XML is given in the arguments */
+    if (argc < 3)
+    {
+        std::cout << "Usage: " << argv[0] << "<mode> <path to XML file>" << std::endl;
+        return EXIT_FAILURE;
+    }
+
+    /* Read the XML file */
+    std::filesystem::path xml_file{argv[2]};
+    auto AcXml = aixml::openDocument(xml_file);
+
+    /* Print XML name */
+    std::cout << "XML file: " << AcXml->name << std::endl;
+
+    /* Print the mode */
+    std::cout << "Mode: " << argv[1] << std::endl;
+
+    try
+    {
+        /* Setup the factories */
+        geom2::AirfoilSurfaceFactory surface_factory(AcXml, xml_file.parent_path());
+        geom2::WingFactory wing(AcXml, xml_file.parent_path());
+        geom2::HullFactory hull_factory(AcXml, xml_file.parent_path());
+        geom2::FuselageFactory fuselage(AcXml, xml_file.parent_path());
+
+        /* Check the execution mode */
+        std::string mode{argv[1]};
+        if (mode == "convert")
+        {
+            /* Create a wing */
+            auto wing_surface = wing.create("LiftingSurface@MainWing");
+            wing_surface.normal = Direction_3(0, -1, 0);
+
+            /* Create a fin */
+            auto fin_surface = surface_factory.create("VerticalSurface@Fin");
+            fin_surface.normal = Direction_3(0, 0, -1);
+
+            /* Create Fuselage */
+            auto fuselage_surface = fuselage.create("Fuselage@Fuselage");
+            fuselage_surface.normal = Direction_3(1, 0, 0);
+
+            /* Create Pylon */
+            auto pylon_surface = surface_factory.create("Pylon@InnerRightWingPylon");
+            pylon_surface.normal = Direction_3(0, 0, -1);
+
+            /* Create Nacelle */
+            auto nacelle_surface = hull_factory.create("Nacelle@InnerRightWingNacelle");
+            nacelle_surface.normal = Direction_3(1, 0, 0);
+
+            /* Create a spar */
+            // geom2::SparFactory spar(AcXml, xml_file.parent_path());
+            // auto spar_surface = spar.create("LiftingSurface@MainWing");
+            // spar_surface.normal = Direction_3(0, -1, 0);
+            // mesh = geom2::transform::to_mesh(spar_surface);
+            // CGAL::IO::write_PLY("./spar.ply", mesh);
+
+            /* Export the geometry to the new XMl format */
+            auto xml_export = std::make_shared<node>("./export.xml");
+            auto insert_into = xml_export->appendChild("aircraft_exchange_file", true);
+            io::AixmlConverter(xml_export->at("aircraft_exchange_file"),
+                               {"component_design/wing/specific/geometry/aerodynamic_surface", "0", ""})(io::Wing(wing_surface));
+            io::AixmlConverter(xml_export->at("aircraft_exchange_file"),
+                               {"component_design/fuselage/specific/geometry/fuselage", "0", ""})(io::Fuselage(fuselage_surface));
+            io::AixmlConverter(xml_export->at("aircraft_exchange_file"),
+                               {"component_design/empennage/specific/geometry/aerodynamic_surface", "0", ""})(io::Wing(fin_surface));
+            io::AixmlConverter(xml_export->at("aircraft_exchange_file"),
+                               {"component_design/propulsion/specific/propulsion@0/nacelle", "0", ""})(io::Hull(nacelle_surface));
+            io::AixmlConverter(xml_export->at("aircraft_exchange_file"),
+                               {"component_design/propulsion/specific/propulsion@0/pylon", "0", ""})(io::AirfoilSurface(pylon_surface));
+            aixml::saveDocument(*xml_export, 3);
+        }
+        else if (mode == "mesh")
+        {
+            /* Create a wing */
+            auto wing_surface = wing.create("wing/specific/geometry/aerodynamic_surface@0");
+            auto mesh = geom2::transform::to_mesh(wing_surface);
+            CGAL::IO::write_PLY("./wing.ply", mesh);
+
+            /* Create a fin */
+            auto fin_surface = wing.create("empennage/specific/geometry/aerodynamic_surface@0");
+            mesh = geom2::transform::to_mesh(fin_surface);
+            CGAL::IO::write_PLY("./fin.ply", mesh);
+
+            /* Create Fuselage */
+            auto fuselage_surface = fuselage.create("fuselage/specific/geometry/fuselage@0");
+            mesh = geom2::transform::to_mesh(fuselage_surface);
+            CGAL::IO::write_PLY("./fuselage.ply", mesh);
+
+            /* Create Nacelle */
+            auto nacelle_surface = hull_factory.create("propulsion/specific/propulsion@0/nacelle@0");
+            mesh = geom2::transform::to_mesh(nacelle_surface);
+            CGAL::IO::write_PLY("./nacelle.ply", mesh);
+
+            /* Create Pylon */
+            auto pylon_surface = surface_factory.create("propulsion/specific/propulsion@0/pylon@0");
+            mesh = geom2::transform::to_mesh(pylon_surface);
+            CGAL::IO::write_PLY("./pylon.ply", mesh);
+        }
+        else
+        {
+            throw std::string("Unknown mode: " + mode);
+        }
+    }
+    catch (std::string &exception)
+    {
+        std::cout << exception << std::endl;
+    }
+}
\ No newline at end of file
diff --git a/aircraftGeometry2/src/geometry/entity3d.cpp b/aircraftGeometry2/src/geometry/entity3d.cpp
new file mode 100644
index 00000000..50d7f175
--- /dev/null
+++ b/aircraftGeometry2/src/geometry/entity3d.cpp
@@ -0,0 +1,25 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/geometry/entity3d.h"
+#include "aircraftGeometry2/geometry/builder.h"
+#include <numbers>
diff --git a/aircraftGeometry2/src/geometry/factory.cpp b/aircraftGeometry2/src/geometry/factory.cpp
new file mode 100644
index 00000000..4e956831
--- /dev/null
+++ b/aircraftGeometry2/src/geometry/factory.cpp
@@ -0,0 +1,53 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/geometry/factory.h"
+#include <memory>
+#include "aircraftGeometry2/geometry/acxml.h"
+
+/* === Functions === */
+namespace geom2
+{
+    /* === Factory === */
+    template<typename Surface>
+    Factory<Surface>::Factory(std::shared_ptr<node> input, const std::filesystem::path& data_dir)
+    {
+        /*
+         * Check whether the old version 2.0 node exists and
+         * and select the surface builder accordingly.
+         */
+        node* root = input->find("AcftExchangeFile");
+        if (root != nullptr)
+        {
+            /* -> ACXML Version 2.0 */
+            this->builder = std::make_unique<AIXMLv2>(input, data_dir);
+        } else {
+            /* -> ACXML Version 3.0 */
+            this->builder = std::make_unique<AIXMLv3>(input, data_dir);
+        }
+    }
+
+    /* Valid Factory specializations */
+    template class Factory<MultisectionSurface<PolygonSection>>;
+    template class Factory<MultisectionSurface<AirfoilSection>>;
+    // template class Factory<ControlDeviceContainer>;
+}; // namespace geom2
diff --git a/aircraftGeometry2/src/geometry/section.cpp b/aircraftGeometry2/src/geometry/section.cpp
new file mode 100644
index 00000000..979d05a3
--- /dev/null
+++ b/aircraftGeometry2/src/geometry/section.cpp
@@ -0,0 +1,196 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/geometry/section.h"
+#include "aircraftGeometry2/processing/transform.h"
+#include <CGAL/number_utils.h>
+#include <cmath>
+
+namespace geom2
+{
+    namespace detail
+    {
+        /* === Functions === */
+        auto get_offset(const double span, const double dihedral, const double sweep) -> geom2::Vector_3
+        {
+            /* Add the sweep offset */
+            const double dx = span * std::tan(sweep);
+
+            /* Add the dihedral offset */
+            const double dy = span * std::sin(dihedral);
+
+            /* Add the height offset */
+            const double dz = span * std::cos(dihedral);
+
+            /* Assemble the offset vector */
+            return geom2::Vector_3{dx, dy, -dz};
+        }
+    }; // namespace detail
+
+    auto Section::get_contour(const bool apply_transform) const noexcept -> Polygon_2
+    {
+        if (apply_transform)
+        {
+            auto transform = this->scale * this->rotate;
+            return CGAL::transform(transform, this->contour);
+        }
+        return this->contour;
+    }
+
+    void Section::set_contour(const Polygon_2 &contour) noexcept
+    {
+        this->contour = contour;
+    }
+
+    void PolygonSection::set_width(const double width)
+    {
+        /* Get the unscaled width */
+        const double width_unscaled = this->contour.bbox().x_span();
+
+        /* Exit if width is nan or 0 */
+        if (std::isnan(width_unscaled) or CGAL::is_zero(width_unscaled))
+        {
+            return;
+        }
+
+        /* Get the scaling factor for x */
+        const double x_factor = width / width_unscaled;
+
+        /* Create the transformation with the x-scale changed only*/
+        const double y_factor = this->scale.m(1, 1);
+        this->scale = Kernel::Aff_transformation_2(x_factor, 0, 0, y_factor, 1);
+    }
+
+    void PolygonSection::set_height(const double height)
+    {
+        /* Get the unscaled height */
+        const double height_unscaled = this->contour.bbox().y_span();
+
+        /* Exit if width is nan or 0 */
+        if (std::isnan(height_unscaled) or CGAL::is_zero(height_unscaled))
+        {
+            return;
+        }
+
+        /* Get the scaling factor for x */
+        const double y_factor = height / height_unscaled;
+
+        /* Create the transformation with the y-scale changed only*/
+        const double x_factor = this->scale.m(0, 0);
+        this->scale = Kernel::Aff_transformation_2(x_factor, 0, 0, y_factor, 1);
+    }
+
+    void PolygonSection::set_beta_angle(const double angle)
+    {
+        /* Calculate the normal direction, where the angle == beta (Euler angle)*/
+        this->normal = {
+            0,
+            -std::sin(angle),
+            std::cos(angle)};
+    }
+
+    void PolygonSection::set_scale(const double scale)
+    {
+        /* Add the scaling transformation */
+        this->scale = Kernel::Aff_transformation_2(CGAL::SCALING, scale);
+    }
+
+    AirfoilSection::AirfoilSection(const Polygon_2 &contour, const AirfoilProperties properties)
+        : AirfoilSection(contour)
+    {
+        /* Set the properties */
+        this->set_chord_length(properties.chord);
+        this->set_dihedral_angle(properties.dihedral);
+        this->set_twist_angle(properties.twist);
+    }
+
+    void AirfoilSection::set_chord_length(const double length)
+    {
+        /* Get the curren chord scale */
+        double chord_scale = this->scale.m(0, 0);
+
+        /* Catch when the scale is 0 */
+        if (CGAL::is_zero(chord_scale))
+        {
+            return;
+        }        
+
+        /* Derive the current thickness scale */
+        const double thickness_scale = this->scale.m(1, 1) / chord_scale;
+
+        /* Set the new scale */
+        chord_scale = length; // -> Assuming the airfoil coordinates are normalized!
+        this->scale = Kernel::Aff_transformation_2(chord_scale, 0, 0, chord_scale*thickness_scale, 1);
+    }
+
+    void AirfoilSection::set_dihedral_angle(const double angle)
+    {
+        /* Calculate the normal direction, where the angle == beta (Euler angle)*/
+        this->normal = {
+            0,
+            -std::sin(angle),
+            std::cos(angle)};
+    }
+
+    void AirfoilSection::set_twist_angle(const double angle)
+    {
+        /* Limit the twist to +- 90 degrees */
+        if (std::abs(angle) > std::numbers::pi)
+        {
+            throw std::invalid_argument("Twist angle must be in the range of -pi to pi.");
+        }
+
+        /* Create the rotation transformation */
+        const double sin = std::sin(angle);
+        const double cos = std::cos(angle);
+        this->rotate = Kernel::Aff_transformation_2(CGAL::ROTATION, sin, cos);
+    }
+
+    void AirfoilSection::scale_thickness(const double factor)
+    {
+        /* Get the current chord scale */
+        const double chord_scale = this->scale.m(0, 0);
+
+        /* Set the new transformation */
+        this->scale = Kernel::Aff_transformation_2(chord_scale, 0, 0, chord_scale*factor, 1);
+    }
+
+    auto AirfoilSection::get_chord_length() const -> double
+    {
+        /* Get the chord length from the scale transformation */
+        return this->scale.m(0, 0);
+    }
+
+    auto AirfoilSection::get_thickness_scale() const -> double
+    {
+        /* Get the thickness scale from the scale transformation */
+        return this->scale.m(1, 1) / this->scale.m(0, 0);
+    }
+
+    auto AirfoilSection::get_twist_angle() const -> double
+    {
+        /* Get the twist angle from the rotation transformation
+         * => The actual angle is the negative of the atan2 value
+         */
+        return -std::atan2(this->rotate.m(0, 1), this->rotate.m(0, 0));
+    }
+}; // namespace geom2
diff --git a/aircraftGeometry2/src/geometry/surface.cpp b/aircraftGeometry2/src/geometry/surface.cpp
new file mode 100644
index 00000000..d79fad85
--- /dev/null
+++ b/aircraftGeometry2/src/geometry/surface.cpp
@@ -0,0 +1,23 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/geometry/surface.h"
diff --git a/aircraftGeometry2/src/io/convert.cpp b/aircraftGeometry2/src/io/convert.cpp
new file mode 100644
index 00000000..1ca5494e
--- /dev/null
+++ b/aircraftGeometry2/src/io/convert.cpp
@@ -0,0 +1,480 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/io/convert.h"
+#include <unordered_map>
+#include <numbers>
+#include <aixml/endnode.h>
+#include "aircraftGeometry2/processing/measure.h"
+
+/* === Types ===*/
+using std::literals::string_literals::operator""s;
+
+/* === Functions === */
+namespace geom2
+{
+    namespace detail
+    {
+        /**
+         * @brief Create a endnode object and set its properties.
+         *
+         * @tparam T The value type of the endnode.
+         * @param value The value of the endnode.
+         * @param unit The unit of the endnode.
+         * @param node_path The location in the parent node of the endnode.
+         * @param description The description of the endnode.
+         * @return Endnode<T> Return the created endnode.
+         */
+        template<typename T>
+        auto create_endnode(const T value, const std::string& unit, const std::string& node_path, const std::string& description) -> Endnode<T>
+        {
+            /* Create the node an set its properties */
+            Endnode<T> new_node{node_path, description};
+            new_node.set_value(value);
+            new_node.set_unit(unit);
+
+            /* Return the new node */
+            return new_node;
+        }
+
+    }; // namespace detail
+
+    namespace io
+    {
+        AixmlConverter::AixmlConverter(node* to_be_updated, const NodeInfo& info)
+        : parent(to_be_updated)
+        , surface_info(info)
+        {
+            /* Check for nullptr of parent */
+            if (this->parent == nullptr)
+            {
+                throw std::runtime_error("AixmlConverter::AixmlConverter: parent node is nullptr");
+            }
+
+            /* Create the new node and update its description */
+            this->new_node = &this->parent->operator[](this->surface_info.name + "@" + this->surface_info.id);
+            this->new_node->setAttrib("description", this->surface_info.description);
+        }
+
+        auto AixmlConverter::operator()(const Hull &hull) -> node&
+        {
+            /* NodeInfo which is used throughout the function */
+            NodeInfo info{};
+
+            /* Add the origin position */
+            /* -> The constructor makes sure that `this->new_node` has a valid value! */
+
+            ///* Change the coordinate systems */
+            //hull.surface.global_to_ac(Point_3 {0.0, 0.0, 0.0});
+
+            info.name = "position";
+            info.description = "Origin of the nacelle in the global aircraft coordinate system";
+            this->insert_point(this->new_node, hull.surface.origin, info);
+
+            /* Add the normal direction */
+            info.name = "normal";
+            info.description = "Normal direction of the nacelle in the global aircraft coordinate system";
+            this->insert_direction(this->new_node, hull.surface.normal, info);
+
+            /* Add the sections -> always override existing sections */
+            node& sections = this->new_node->operator[](std::string{"sections"});
+            sections.setAttrib("description", "Geometrical description nacelle sections");
+            sections.deleteChildren();
+            for (std::size_t i_section = 0; i_section < hull.surface.sections.size(); i_section++)
+            {
+                /* Reference the current section */
+                const auto& section = hull.surface.sections[i_section];
+
+                /* Create and reference the section node */
+                node* section_node = &sections.appendChild("section", true);
+                section_node->setAttrib("ID", std::to_string(i_section));
+
+                /* Insert the origin point of the section */
+                info.name = "origin";
+                info.description = "Origin of the section (local)";
+                this->insert_point(section_node, section.origin, info);
+
+                /* Update the width of the section */
+                auto width = detail::create_endnode(
+                    section.get_contour(true).bbox().x_span(),
+                    "m",
+                    "width",
+                    "width of the section");
+                width.update(*section_node);
+
+                /* Update the height of the section */
+                auto height = detail::create_endnode(
+                    section.get_contour(true).bbox().y_span(),
+                    "m",
+                    "height",
+                    "Height of the section");
+                height.update(*section_node);
+
+                /* Update the profile name of the section */
+                info.name = "profile";
+                info.description = "The profile name of the section";
+                this->insert_string(section_node, section.name, info);
+            }
+
+            /* Return the reference to the created surface node */
+            return *this->new_node;
+        }
+
+
+        auto AixmlConverter::operator()(const Fuselage &fuselage) -> node&
+        {
+            /* NodeInfo which is used throughout the function */
+            NodeInfo info{};
+
+            /* Add the name data */
+            /* -> The constructor makes sure that `this->new_node` has a valid value! */
+            info.name = "name";
+            info.description = "Name of the fuselage";
+            this->insert_string(this->new_node, fuselage.surface.name, info);
+
+            ///* Change the coordinate systems */
+            //fuselage.surface.global_to_ac(Point_3{ 0.0, 0.0, 0.0 });
+
+            /* Add the origin position */
+            info.name = "position";
+            info.description = "Position of one entire fuselage with regard to the global reference point.";
+            this->insert_point(this->new_node, fuselage.surface.get_origin_ac_coordinate(Point_3{ 0.0, 0.0, 0.0 }), info);
+
+            /* Add the normal direction */
+            info.name = "direction";
+            info.description = "unit vector according to global coordinate system for direction applied at position";
+            this->insert_direction(this->new_node, fuselage.surface.get_direction_ac_coordinate(), info);
+
+            /* Add the sections -> always override existing sections */
+            node& sections = this->new_node->operator[](std::string{"sections"});
+            sections.setAttrib("description", "Geometrical description of the fuselage sections of one entire fuselage");
+            sections.deleteChildren();
+            for (std::size_t i_section = 0; i_section < fuselage.surface.sections.size(); i_section++)
+            {
+                /* Reference the current section */
+                const auto& section = fuselage.surface.sections[i_section];
+                // const double span = section.origin.z();
+
+                /* Create and reference the section node */
+                node* section_node = &sections.appendChild("section", true);
+                section_node->setAttrib("ID", std::to_string(i_section));
+
+                /* Insert the name of the section */
+                info.name = "name";
+                info.description = "Name of the fuselage section";
+                this->insert_string(section_node, std::string("section_") + std::to_string(i_section), info);
+
+                /* Insert the name of the section shape */
+                info.name = "section_shape";
+                info.description = "Contains a string with name of *.dat file or the keyword ellipse";
+                this->insert_string(section_node, section.name, info);
+
+                /* Insert the origin point of the section */
+                info.name = "origin";
+                info.description = "Origin of fuselage section (local).";
+                this->insert_point(section_node, section.origin, info);
+
+                /* Update the upper height of the section */
+                auto height_upper = detail::create_endnode(
+                    section.get_contour(true).bbox().ymax(),
+                    "m",
+                    "upper_height",
+                    "Height of the upper half of the fuselage section.");
+                /** @todo Should `aircraftGeometry2` deal with the boundaries or is this the users responsibility? */
+                // height_upper.set_lower_boundary(0.0);
+                height_upper.update(*section_node);
+
+                /* Update the lower height of the section */
+                auto height_lower = detail::create_endnode(
+                    std::abs(section.get_contour(true).bbox().ymin()),
+                    "m",
+                    "lower_height",
+                    "Height of the lower half of the fuselage section.");
+                // height_lower.set_upper_boundary(0.0);
+                height_lower.update(*section_node);
+
+                /* Update the width of the segment */
+                auto width = detail::create_endnode(
+                    section.get_contour(true).bbox().x_span(),
+                    "m",
+                    "width",
+                    "Width of the fuselage section.");
+                width.update(*section_node);
+            }
+
+            /* Return the reference to the created surface node */
+            return *this->new_node;
+        }
+
+        auto AixmlConverter::operator()(const Spar& spar) -> node&
+        {
+            /* NodeInfo which is used throughout the function */
+            NodeInfo info{};
+
+            /* Insert the position nodes */
+            /* -> The constructor makes sure that `this->new_node` has a valid value! */
+            (*this->new_node)["position"s].setAttrib("description", "relative chord position");
+            (*this->new_node)["position/inner_position"s].setAttrib("description", "relative inner position");
+            (*this->new_node)["position/inner_position/chord"s].setAttrib("description", "chord position");
+            (*this->new_node)["position/outer_position"s].setAttrib("description", "relative outer position");
+            (*this->new_node)["position/outer_position/chord"s].setAttrib("description", "chord position");
+
+            /* Set the position values */
+            auto span_inner = detail::create_endnode(
+                -1.0 * spar.surface.sections[0].origin.z(), // Airfoil surface are expected to be extruded in negative z direction
+                "1",
+                "spanwise",
+                "relative spanwise position");
+            span_inner.update(this->new_node->at("position/inner_position"));
+            auto chord_inner_from = detail::create_endnode(
+                spar.surface.sections[0].get_contour(true).bbox().xmin(),
+                "1",
+                "from",
+                "relative chord position");
+            chord_inner_from.update(this->new_node->at("position/inner_position/chord"));
+            auto chord_inner_to = detail::create_endnode(
+                spar.surface.sections[0].get_contour(true).bbox().xmax(),
+                "1",
+                "to",
+                "relative chord position");
+            chord_inner_to.update(this->new_node->at("position/inner_position/chord"));
+            auto span_outer = detail::create_endnode(
+                -1.0 * spar.surface.sections[1].origin.z(), // Airfoil surface are expected to be extruded in negative z direction
+                "1",
+                "spanwise",
+                "relative spanwise position");
+            span_outer.update(this->new_node->at("position/outer_position"));
+            auto chord_outer_from = detail::create_endnode(
+                spar.surface.sections[1].get_contour(true).bbox().xmin(),
+                "1",
+                "from",
+                "relative chord position");
+            chord_outer_from.update(this->new_node->at("position/outer_position/chord"));
+            auto chord_outer_to = detail::create_endnode(
+                spar.surface.sections[1].get_contour(true).bbox().xmax(),
+                "1",
+                "to",
+                "relative chord position");
+            chord_outer_to.update(this->new_node->at("position/outer_position/chord"));
+
+            /* Return the reference to the created surface node */
+            return *this->new_node;
+        }
+
+        auto AixmlConverter::operator()(const ControlDevice &device) -> node&
+        {
+            /* The control device can be treated  as the spar surface */
+            Spar facade{device.surface};
+
+            /* Return the converted result */
+            return (*this)(facade);
+        }
+
+        auto AixmlConverter::operator()(const AirfoilSurface &airfoil_surface) -> node&
+        {
+            /* NodeInfo which is used throughout the function */
+            NodeInfo info{};
+
+            ///* Change the coordinate systems */
+            //airfoil_surface.surface.global_to_ac(Point_3{ 0.0, 0.0, 0.0 });
+
+            /* Add the origin position */
+            /* -> The constructor makes sure that `this->new_node` has a valid value! */
+            info.name = "position";
+            info.description = "reference position in aircraft coordinates";
+            this->insert_point(this->new_node, airfoil_surface.surface.origin, info);
+
+            /* Start the parameters description */
+            info.name = "normal";
+            info.description = "unit vector according to aircraft coordinate system for direction applied at position";
+            this->insert_direction(this->new_node, airfoil_surface.surface.normal, info);
+
+            /* Add the sections -> always override existing sections */
+            node& sections = (*this->new_node)[std::string{"sections"}];
+            sections.setAttrib("description", "sections");
+            sections.deleteChildren();
+            for (std::size_t i_section = 0; i_section < airfoil_surface.surface.sections.size(); i_section++)
+            {
+                /* Reference the current section */
+                const auto& section = airfoil_surface.surface.sections[i_section];
+
+                /* Create and reference the section node */
+                node* section_node = &sections.appendChild("section", true);
+                section_node->setAttrib("ID", std::to_string(i_section));
+
+                /* Insert the origin point of the section */
+                info.name = "origin";
+                info.description = "origin of chord (local)";
+                this->insert_point(section_node, section.origin, info);
+
+                /* Update the chord length of the section */
+                auto chord_length = detail::create_endnode(
+                    section.get_chord_length(),
+                    "m",
+                    "chord_length",
+                    "chord length of the section");
+                chord_length.update(*section_node);
+
+                /* Update the geometric twist of the section */
+                /* @fixed Add the actual twist readout! */
+                auto geometric_twist = detail::create_endnode(
+                    section.get_twist_angle(),
+                    "rad",
+                    "geometric_twist",
+                    "geometric twist of the section around leading edge");
+                geometric_twist.update(*section_node);
+
+                /* Insert the profile name */
+                info.name = "profile";
+                info.description = "profile (data normalized to chord length)";
+                this->insert_string(section_node, section.name, info);
+            }
+
+            /* Return the reference to the created surface node */
+            return *this->new_node;
+        }
+
+        auto AixmlConverter::operator()(const Wing &wing) -> node&
+        {
+            /* NodeInfo which is used throughout the function */
+            NodeInfo info{};
+
+            /* Add the name data */
+            /* -> The constructor makes sure that `this->new_node` has a valid value! */
+            info.name = "name";
+            info.description = "name of surface";
+            this->insert_string(this->new_node, wing.surface.name, info);
+
+            ///* Change the coordinate systems */
+            //wing.surface.global_to_ac(Point_3{ 0.0, 0.0, 0.0 });
+
+            /* Add the origin position */
+            info.name = "position";
+            info.description = "reference position in aircraft coordinates";
+            this->insert_point(this->new_node, wing.surface.origin, info);
+
+            /* Start the parameters description */
+            (*this->new_node)["parameters"s].setAttrib("description", "aerodynamic surface parameters");
+            info.name = "direction";
+            info.description = "unit vector according to aircraft coordinate system for direction applied at position";
+            this->insert_direction(&this->new_node->at("parameters"), wing.surface.normal, info);
+
+            /* Add the symmetric information */
+            const std::string symmetric = wing.surface.is_symmetric ? "true" : "false";
+            info.name = "symmetric";
+            info.description = "symmetric to local x-z plane";
+            this->insert_string(&this->new_node->at("parameters"), symmetric, info);
+
+            /* Add the sections -> always override existing sections */
+            node& sections = this->new_node->at("parameters")[std::string{"sections"}];
+            sections.setAttrib("description", "sections");
+            sections.deleteChildren();
+            for (std::size_t i_section = 0; i_section < wing.surface.sections.size(); i_section++)
+            {
+                /* Reference the current section */
+                const auto& section = wing.surface.sections[i_section];
+
+                /* Create and reference the section node */
+                node* section_node = &sections.appendChild("section", true);
+                section_node->setAttrib("ID", std::to_string(i_section));
+
+                /* Insert the origin point of the section */
+                info.name = "chord_origin";
+                info.description = "origin of chord (local)";
+                this->insert_point(section_node, section.origin, info);
+
+                /* Update the chord length of the section */
+                auto chord_length = detail::create_endnode(
+                    section.get_chord_length(),
+                    "m",
+                    "chord_length",
+                    "chord length of the section");
+                chord_length.update(*section_node);
+
+                /* Update the geometric twist of the section */
+                /* @fixed Add the actual twist readout! */
+                auto geometric_twist = detail::create_endnode(
+                    section.get_twist_angle(),
+                    "rad",
+                    "geometric_twist",
+                    "geometric twist of the section around leading edge");
+                geometric_twist.update(*section_node);
+
+                /* Update the scale_thickness of the section */
+                auto scale_thickness = detail::create_endnode(
+                    section.get_thickness_scale(),
+                    "1",
+                    "scale_thickness",
+                    "scale the thickness defined by the profile with this factor");
+                scale_thickness.update(*section_node);
+
+                /* Insert the profile name */
+                info.name = "profile";
+                info.description = "profile (data normalized to chord length)";
+                this->insert_string(section_node, section.name, info);
+            }
+
+            /* Return the reference to the created surface node */
+            return *this->new_node;
+        }
+
+        void AixmlConverter::insert_string(node* target, const std::string content, const NodeInfo info)
+        {
+            /* Create the name node */
+            Endnode<std::string> string_node{info.name, info.description};
+            string_node = content;
+
+            /* Insert this node into target */
+            string_node.update(*target);
+        }
+
+        void AixmlConverter::insert_point(node* target, const geom2::Point_3 point, const NodeInfo info)
+        {
+            /* Create the position node and use its reference to further access it*/
+            node& point_node = (*target)[info.name];
+            point_node.setAttrib("description", info.description);
+
+            /* Create and add the value end nodes */
+            auto x_value = detail::create_endnode(point.x(), "m", "x", "x coordinate of point");
+            auto y_value = detail::create_endnode(point.y(), "m", "y", "y coordinate of point");
+            auto z_value = detail::create_endnode(point.z(), "m", "z", "z coordinate of point");
+            x_value.update(point_node);
+            y_value.update(point_node);
+            z_value.update(point_node);
+        }
+
+        void AixmlConverter::insert_direction(node* target, const geom2::Direction_3 direction, const NodeInfo info)
+        {
+            /* Create the direction node and use its reference to further access it*/
+            node& direction_node = (*target)[info.name];
+            direction_node.setAttrib("description", info.description);
+
+            /* Create and add the value end nodes */
+            auto x_value = detail::create_endnode(direction.dx(), "1", "x", "x direction of unit vector");
+            auto y_value = detail::create_endnode(direction.dy(), "1", "y", "y direction of unit vector");
+            auto z_value = detail::create_endnode(direction.dz(), "1", "z", "z direction of unit vector");
+            x_value.update(direction_node);
+            y_value.update(direction_node);
+            z_value.update(direction_node);
+        }
+    }; // namespace io
+}; // namespace geom2
diff --git a/aircraftGeometry2/src/io/dat.cpp b/aircraftGeometry2/src/io/dat.cpp
new file mode 100644
index 00000000..dbe906b9
--- /dev/null
+++ b/aircraftGeometry2/src/io/dat.cpp
@@ -0,0 +1,141 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/io/dat.h"
+#include <array>
+#include <algorithm>
+#include <fstream>
+
+/* === Functions === */
+namespace geom2
+{
+    namespace detail
+    {
+        /**
+         * @brief Replaces all separators in a line with whitespace.
+         * 
+         * @param line The line to be processed.
+         */
+        void separators_to_whitespace(std::string *line)
+        {
+            /* Define the valid separators */
+            constexpr std::array<char, 2> separators = {',', ';'};
+
+            /* Replace all separators with whitespace */
+            std::replace_if(
+                line->begin(),
+                line->end(),
+                [&separators](const char &c) { return std::find(separators.begin(), separators.end(), c) != separators.end(); },
+                ' ');
+        };
+
+    }; // namespace detail
+
+    namespace io
+    {
+        auto read_dat_file(std::filesystem::path path) -> geom2::Polygon_2
+        {
+            /* Open the file and initialize the container for the points */
+            std::ifstream file(path.make_preferred());
+            std::vector<geom2::Point_2> points;
+
+            /* Check whether the file exists */
+            if (file.is_open())
+            {
+                /* Loop through each line of the file using the file stream */
+                std::string line;
+                while (std::getline(file, line))
+                {
+                    /* Make the line separated with whitespace */
+                    detail::separators_to_whitespace(&line);
+
+                    /*
+                     * Use the stream operator of the string stream to extract
+                     * the x and y coordinates from the line.
+                     * The separator has to be whitespace at this point!
+                     */
+                    std::istringstream iss(line);
+                    double x, y;
+                    if ((iss >> x >> y))
+                    {
+                        points.emplace_back(x, y);
+                    }
+                }
+            } else {
+                /* Throw an exception if the file could not be opened */
+                throw std::runtime_error("Could not open file: " + path.string());
+            }
+
+            /* Return the polygon with the loaded coordinates */
+            return geom2::Polygon_2(points.begin(), points.end());
+        }
+
+        auto read_airfoil(std::filesystem::path path) -> geom2::Polygon_2
+        {
+            /* Temporary polygon for sorting the vertices */
+            geom2::Polygon_2 poly_complex = read_dat_file(path);
+            geom2::Polygon_2 poly_simple;
+
+            /* Check the preconditions for a valid airfoil */
+            /* Left point should be the leading edge is located at [0, y]*/
+            if (std::abs(poly_complex.left_vertex()->x()) > 1e-4) {
+                throw std::domain_error("The coordinates of the airfoil do not satisfy the preconditions!");
+            }
+            /* Right point should be located at [1,y] */
+            if (std::abs(poly_complex.right_vertex()->x() - 1.0) > 1e-4) {
+                throw std::domain_error("The coordinates of the airfoil do not satisfy the preconditions!");
+            }
+
+            /* Check whether the imported polygon has to be sorted */
+            if (poly_complex[0].x() > 0.5) {
+                /* Trailing edge first convention is used => sort that leading edge is first point */
+                poly_complex.reverse_orientation();
+
+                /* Insert the reversed top part */
+                poly_simple.insert(poly_simple.vertices_end(), poly_complex.left_vertex(), poly_complex.vertices_end());
+
+                /* Insert the reversed bottom part */
+                poly_simple.insert(poly_simple.vertices_end(), poly_complex.vertices_begin() + 1, poly_complex.left_vertex());
+
+                /* If polygon is not simple, the TE point is in there twice so remove it */
+                if (!poly_simple.is_simple()) {
+                    poly_simple.erase(poly_simple.vertices_end() - 1);
+                }
+            } else if (!poly_complex.is_simple() && poly_complex[0].x() < 0.5) {
+                /* Leading edge first convention is used => Upper part is fine, but bottom part has to be reversed */
+                /* Split the complex polygon into top and bottom */
+                geom2::Polygon_2 poly_bottom;
+                poly_simple.insert(poly_simple.vertices_end(), poly_complex.vertices_begin(), poly_complex.right_vertex());
+                poly_bottom.insert(poly_bottom.vertices_end(), poly_complex.right_vertex(), poly_complex.vertices_end());
+
+                /* Add the reversed bottom to the simple polygon */
+                /* Also skip duplicate points so that the resulting polygon is simple */
+                poly_bottom.reverse_orientation();
+                poly_simple.insert(poly_simple.vertices_end(), poly_bottom.vertices_begin() + 1, poly_bottom.vertices_end() - 1);
+            } else {
+                poly_simple = poly_complex;
+            }
+
+            return poly_simple;
+        }
+    }; // namespace io
+}; // namespace geom2
diff --git a/aircraftGeometry2/src/processing/measure.cpp b/aircraftGeometry2/src/processing/measure.cpp
new file mode 100644
index 00000000..497b8ff6
--- /dev/null
+++ b/aircraftGeometry2/src/processing/measure.cpp
@@ -0,0 +1,1104 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/processing/measure.h"
+#include "aircraftGeometry2/processing/transform.h"
+
+#include <cmath>
+#include <CGAL/Arr_segment_traits_2.h>
+#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
+#include <CGAL/Polygon_mesh_processing/measure.h>
+#include <CGAL/Polygon_mesh_processing/triangulate_hole.h>
+#include <CGAL/Polygon_mesh_processing/remesh.h>
+#include <CGAL/Surface_mesh/IO/PLY.h>
+#include <CGAL/Surface_sweep_2_algorithms.h>
+#include <CGAL/boost/graph/iterator.h>
+#include <CGAL/squared_distance_3.h>
+#include <CGAL/centroid.h>
+
+/* === Functions === */
+namespace geom2
+{
+    namespace detail
+    {
+        template <Shape T>
+        auto get_section_index(const std::vector<T> &sections, double position) -> std::optional<size_t>
+        {
+            /* Check whether the surface is extruded in negative direction */
+            const bool is_extruded_negative = sections.front().origin.z() > sections.back().origin.z();
+
+            /* Check whether the first and last section contain the position */
+            if (is_extruded_negative)
+            {
+                /* When the surface is extruded in negative Z direction */
+                if (sections.front().origin.z() < position || sections.back().origin.z() > position)
+                    return std::nullopt;
+            } else {
+                /* When the surface is extruded in positive Z direction */
+                if (sections.front().origin.z() > position || sections.back().origin.z() < position)
+                    return std::nullopt;
+            }
+
+            /* Check whether position is the first or last section */
+            if (sections.front().origin.z() == position)
+            {
+                return 0;
+            }
+            if (sections.back().origin.z() == position)
+            {
+                return sections.size() - 2;
+            }
+
+            /* Find the first section which comes after the position */
+            auto section = std::find_if(
+                sections.begin(),
+                sections.end(), [&](const T &section)
+                { return is_extruded_negative ? section.origin.z() < position : section.origin.z() > position; });
+
+            /* Return the index of the section before the position */
+            return std::distance(sections.begin(), section) - 1;
+        }
+        template auto get_section_index<PolygonSection>(const std::vector<PolygonSection> &sections, double position) -> std::optional<size_t>;
+        template auto get_section_index<AirfoilSection>(const std::vector<AirfoilSection> &sections, double position) -> std::optional<size_t>;
+        /**
+         * @brief Project the given position to the other side of the symmetric surface
+         * if the current position is in the opposite direction of the surface extrusion.
+         * This way the given position always results in a valid range, so that
+         * `get_section_index` can be used to get the correct section index.
+         * 
+         * @param surface The surface to check the extrusion direction.
+         * @param position The raw position to adjust.
+         * @return double The position projected to the symmetric position if possible.
+         */
+        [[nodiscard]] inline auto project_symmetric_position(const MultisectionSurface<AirfoilSection> &surface, const double position) -> double
+        {
+            /* Check whether the surface extrusion and the position are in the same direction */
+            const bool is_opposite_direction = std::signbit(surface.sections.back().origin.z()) xor std::signbit(position);
+
+            /* Adjust the position to the symmetric position if the surface is symmetric */
+            return is_opposite_direction and surface.is_symmetric ? -position : position;
+        }
+
+        /**
+         * @brief Interpolate between two points in 3D space.
+         * The interpolation refers is linear and refers to the z position.
+         * The x and y coordinates are interpolated linearly between the two points.
+         * 
+         * @param first The first point.
+         * @param second The second point.
+         * @param z_position The local z position to interpolate.
+         * @return Point_3 The interpolated point at the given z position.
+         */
+        [[nodiscard]] auto interpolate_xy(const Point_3 first, const Point_3 second, const double z_position) -> Point_3
+        {
+            /* Calculate the distance vector between the two points */
+            const Vector_3 distance = second - first;
+            const double distance_factor = (z_position - first.z()) / distance.z();
+
+            /* Return the interpolated point */
+            return first + distance_factor * distance;
+        }
+
+        /**
+         * @brief Get the moment of deviation of the provided triangle mesh.
+         * @attention This assumes that the mesh is a triangle mesh!
+         * 
+         * @param mesh The triangle mesh.
+         * @param axis The axis of rotation for the moment of deviation.
+         * @return double [m^4] The moment of deviation in respect to the provided axis.
+         */
+        auto moment_of_deviation(Mesh &mesh, const Line_3 axis) -> double
+        {
+            /* Accumulate the moment of deviation of each mesh face */
+            return std::accumulate(
+                mesh.faces_begin(),
+                mesh.faces_end(),
+                0.0,
+                [&axis, &mesh](const double deviation, const Mesh::Face_index &face)
+                {
+                    /* Get the face area */
+                    const double area = CGAL::Polygon_mesh_processing::face_area(face, mesh);
+
+                    /* Calculate the centroid of the face */
+                    const auto vertices = CGAL::vertices_around_face(mesh.halfedge(face), mesh);
+                    std::array<Point_3, 3> points{}; // Each face has 3 vertices since the mesh is a triangle mesh 
+                    std::transform(
+                        vertices.begin(),
+                        vertices.end(),
+                        points.begin(),
+                        [&mesh](const Mesh::Vertex_index &vertex)
+                        { return mesh.point(vertex); });
+                    const Point_3 centroid = CGAL::centroid(points.begin(), points.end(), CGAL::Dimension_tag<0>{});
+
+                    /* Get the distance vector of the face centroid to the axis */
+                    const Point_3 centroid_projected = axis.projection(centroid);
+                    const Vector_3 distance_vector{centroid, centroid_projected};
+
+                    /*
+                     * Get the product of all coordinates.
+                     * Since the distance vector if orthogonal to the axis,
+                     * one of the coordinates is always zero, so copy
+                     * the non-zero coordinates.
+                     */
+                    std::array<double, 2> coordinates{};
+                    std::copy_if(
+                        distance_vector.cartesian_begin(),
+                        distance_vector.cartesian_end(),
+                        coordinates.begin(),
+                        [](const double coordinate)
+                        { return std::abs(coordinate) > 1e-4; });
+
+                    /*
+                    * Return the accumulated moment of deviation
+                    * => The thickness and density of the face are assumed to be 1.0!
+                    */
+                    const double d_mass = area * 1.0 * 1.0;
+                    return deviation + coordinates.at(0) * coordinates.at(1) * d_mass;
+                });
+        }
+
+        /**
+         * @brief Get the moment of inertia of the provided triangle mesh.
+         * @attention This assumes that the mesh is a triangle mesh!
+         * 
+         * @param mesh The triangle mesh.
+         * @param axis The axis of rotation for the moment of inertia.
+         * @return double [m^4] The moment of inertia in respect to the provided axis.
+         */
+        auto moment_of_inertia(Mesh &mesh, const Line_3 axis) -> double
+        {
+            /* Accumulate the inertia of each mesh face */
+            return std::accumulate(
+                mesh.faces_begin(),
+                mesh.faces_end(),
+                0.0,
+                [&axis, &mesh](const double inertia, const Mesh::Face_index &face)
+                {
+                    /* Get the face area */
+                    const double area = CGAL::Polygon_mesh_processing::face_area(face, mesh);
+
+                    /* Calculate the centroid of the face */
+                    const auto vertices = CGAL::vertices_around_face(mesh.halfedge(face), mesh);
+                    std::array<Point_3, 3> points{}; // Each face has 3 vertices since the mesh is a triangle mesh 
+                    std::transform(
+                        vertices.begin(),
+                        vertices.end(),
+                        points.begin(),
+                        [&mesh](const Mesh::Vertex_index &vertex)
+                        { return mesh.point(vertex); });
+                    const Point_3 centroid = CGAL::centroid(points.begin(), points.end(), CGAL::Dimension_tag<0>{});
+
+                    /* Calculate the squared distance between the centroid and the axis */
+                    const double squared_distance = CGAL::squared_distance(centroid, axis);
+
+                    /*
+                    * Return the accumulated inertia
+                    * => The thickness and density of the face are assumed to be 1.0!
+                    */
+                    const double d_mass = area * 1.0 * 1.0;
+                    return inertia + squared_distance * d_mass;
+                });
+        }
+
+        /**
+         * @brief Get the inertia tensor of the provided triangle mesh.
+         * The mesh can be refined before the inertia is calculated,
+         * which is recommended for a more accurate result.
+         * 
+         * @param mesh The triangle mesh.
+         * @param target_edge_length The target edge length of the mesh when refined.
+         * @return CGAL::Eigen_matrix<double, 3, 3> The inertia tensor.
+         */
+        auto calculate_inertia_tensor(Mesh &mesh,  const double target_edge_length) -> CGAL::Eigen_matrix<double, 3, 3>
+        {
+            /* Get the center of gravity of the mesh */
+            std::vector<Point_3> points(mesh.number_of_vertices());
+            std::transform(
+                mesh.vertices_begin(),
+                mesh.vertices_end(),
+                points.begin(),
+                [&mesh](const Mesh::Vertex_index &vertex)
+                { return mesh.point(vertex); });
+            const Point_3 center_of_gravity = CGAL::centroid(points.begin(), points.end(), CGAL::Dimension_tag<0>{});
+
+            /* Refine the mesh if desired */
+            if ( target_edge_length > 0)
+            {
+                CGAL::Polygon_mesh_processing::isotropic_remeshing(
+                    faces(mesh), target_edge_length, mesh);
+            }
+
+            /* The following algorithm assumes a triangle mesh */
+            if (not CGAL::is_triangle_mesh(mesh))
+            {
+                throw std::runtime_error("The surface could not be meshed as a triangle mesh!");
+            }
+
+            /* Get the inertia tensor of the mesh */
+            CGAL::Eigen_matrix<double, 3, 3> tensor{};
+            tensor.set(0, 0, moment_of_inertia(mesh, {center_of_gravity, Vector_3{1, 0, 0}}));
+            tensor.set(1, 1, moment_of_inertia(mesh, {center_of_gravity, Vector_3{0, 1, 0}}));
+            tensor.set(2, 2, moment_of_inertia(mesh, {center_of_gravity, Vector_3{0, 0, 1}}));
+            tensor.set(0, 1, moment_of_deviation(mesh, {center_of_gravity, Vector_3{0, 0, 1}}));
+            tensor.set(0, 2, moment_of_deviation(mesh, {center_of_gravity, Vector_3{0, 1, 0}}));
+            tensor.set(1, 2, moment_of_deviation(mesh, {center_of_gravity, Vector_3{1, 0, 0}}));
+            tensor.set(1, 0, tensor(0, 1));
+            tensor.set(2, 0, tensor(0, 2));
+            tensor.set(2, 1, tensor(1, 2));
+
+            /* Return the result */
+            return tensor;
+        }
+    }; // namespace detail
+
+    auto measure::area(const MultisectionSurface<PolygonSection> &surface) -> double
+    {
+        /* Initialize area */
+        double area{0.0};
+
+        /* Calculate area if enough segments are available */
+        if (surface.sections.size() > 1)
+        {
+            Mesh mesh = transform::to_mesh(surface.sections);
+            area = CGAL::Polygon_mesh_processing::area(mesh);
+        }
+
+        /*
+         * For the special case when the sections only have
+         * 2 vertices each -> The surface is a planar surface.
+         * The mesh result would measure the top and bottom are
+         * of this surface and result in twice the area of the
+         * planar surface.
+         * So catch this and adjust according to our expectations.
+         */
+        const bool is_planar = std::all_of(
+                surface.sections.begin(),
+                surface.sections.end(),
+                [&](const PolygonSection &section)
+                { return section.get_contour().size() == 2; });
+
+        /* Return total area */
+        return is_planar? area / 2 : area;
+    }
+
+    auto measure::area(const MultisectionSurface<AirfoilSection> &surface) -> double
+    {
+        /* Initialize area */
+        double area{0.0};
+
+        /* Calculate area if enough segments are available */
+        if (surface.sections.size() > 1)
+        {
+            Mesh mesh = transform::to_mesh(surface.sections);
+            area = CGAL::Polygon_mesh_processing::area(mesh);
+        }
+
+        /* Return total area */
+        return surface.is_symmetric ? 2.0 * area : area;
+    }
+
+    auto measure::aspect_ratio(const MultisectionSurface<AirfoilSection> &surface) -> double
+    {
+        /* Initialize aspect ratio */
+        double aspect_ratio{0.0};
+
+        /* Calculate aspect ratio */
+        const double span = measure::span(surface);
+        const double area = measure::reference_area(surface);
+        if (area > 0.0)
+        {
+            aspect_ratio = span * span / area;
+        }
+
+        /* Return the aspect ratio */
+        return aspect_ratio;
+    }
+
+    auto measure::bottom(const MultisectionSurface<PolygonSection> &surface, const double position) -> Point_3
+    {
+        /* Initialize bottom */
+        Point_3 bottom{0.0, 0.0, 0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(surface.sections, position);
+        if (!index.has_value())
+        {
+            return bottom;
+        }
+
+        /* Lambda to get the bottom point of a section in local coordinates */
+        auto bottom_point = [](const PolygonSection &section) -> Point_3
+        {
+            const auto point = *section.get_contour(true).bottom_vertex();
+            return geom2::transform::to_parent(section, point);
+        };
+
+        /* Get the bottom points of the sections */
+        const auto bottom_first = bottom_point(surface.sections.at(index.value()));
+        const auto bottom_second = bottom_point(surface.sections.at(index.value() + 1));
+
+        /* Return linear interpolation of the bottom points */
+        return detail::interpolate_xy(bottom_first, bottom_second, position);
+    }
+
+    auto measure::center(const MultisectionSurface<PolygonSection> &surface, const double position) -> Point_3
+    {
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(surface.sections, position);
+        if (!index.has_value())
+        {
+            return {0.0, 0.0, 0.0};
+        }
+
+        /*
+         * Lambda to extract the center of the bounding box of the polygon section
+         * and transform it to the parent coordinate system.
+         */
+        auto bbox_center = [](const PolygonSection &section) -> Point_3
+        {
+            const auto bbox = section.get_contour(true).bbox();
+            return geom2::transform::to_parent(section,
+                Point_2{
+                (bbox.xmin() + bbox.xmax()) / 2.0,
+                (bbox.ymin() + bbox.ymax()) / 2.0});
+        };
+
+        /* The first and second center and get their relative distance vector */
+        const auto first_center = bbox_center(surface.sections.at(index.value()));
+        const auto second_center = bbox_center(surface.sections.at(index.value() + 1));
+
+        /* Return the center by linear interpolation */
+        return detail::interpolate_xy(first_center, second_center, position);
+    }
+
+    auto measure::centroid(const MultisectionSurface<PolygonSection> &surface) -> Point_3
+    {
+        /* Get the centroids of each segment */
+        auto centroids = measure::centroids(surface);
+
+        /* Calculate the barycenter of the centroids */
+        return CGAL::centroid(centroids.begin(), centroids.end(), CGAL::Dimension_tag<0>{});
+    }
+
+    auto measure::centroid(const MultisectionSurface<AirfoilSection> &surface) -> Point_3
+    {
+        /* Get the centroids of each segment */
+        auto centroids = measure::centroids(surface);
+
+        /* Calculate the barycenter of the centroids */
+        Point_3 center = CGAL::centroid(centroids.begin(), centroids.end(), CGAL::Dimension_tag<0>{});
+        if (surface.is_symmetric)
+        {
+            center = Point_3{center.x(), center.y(), 0.0};
+        }
+
+        /* Return the barycenter */
+        return center;
+    }
+
+    auto measure::centroids(const MultisectionSurface<PolygonSection> &surface) -> std::vector<Point_3>
+    {
+        /* Initialize the vector containing the centroid points */
+        std::vector<Point_3> centroids;
+        centroids.reserve(surface.sections.size() - 1);
+
+        /* Lambda to extract the centroid of the polygon segments */
+        auto _get_centroid = [](const PolygonSection &first, const PolygonSection &second) -> Point_3
+        {
+            /* Create the points vector */
+            std::vector<Point_3> points;
+
+            /* Extract the points of the first section */
+            auto shape = first.get_contour(true);
+            std::for_each(
+                shape.vertices_begin(),
+                shape.vertices_end(),
+                [&points, &first](const Point_2 &point)
+                { points.emplace_back(transform::to_parent(first, point)); });
+
+            /* Extract the points of the second section */
+            shape = second.get_contour(true);
+            std::for_each(
+                shape.vertices_begin(),
+                shape.vertices_end(),
+                [&points, &second](const Point_2 &point)
+                { points.emplace_back(transform::to_parent(second, point)); });
+
+            /* Calculate the centroid of the points */
+            return CGAL::centroid(points.begin(), points.end(), CGAL::Dimension_tag<0>{});
+        };
+
+        /* Extract the centroid of each segment */
+        for (size_t i = 0; i < surface.sections.size() - 1; ++i)
+        {
+            /* Get the centroid of the current segment */
+            const Point_3 centroid = _get_centroid(surface.sections.at(i), surface.sections.at(i + 1));
+
+            /* Add the centroid to the vector */
+            centroids.push_back(centroid);
+        }
+
+        /* Return the vector containing the centroid points */
+        return centroids;
+    }
+
+    auto measure::centroids(const MultisectionSurface<AirfoilSection> &surface) -> std::vector<Point_3>
+    {
+        /* Initialize the vector containing the centroid points */
+        std::vector<Point_3> centroids;
+        centroids.reserve(surface.sections.size() - 1);
+
+        /* Lambda to extract the centroid of the airfoil segments */
+        auto _get_centroid = [](const AirfoilSection &first, const AirfoilSection &second) -> Point_3
+        {
+            /* Create the points vector */
+            std::vector<Point_3> points;
+
+            /* Extract the points of the sections */
+            points.push_back(transform::to_parent(first, *first.get_contour(true).right_vertex()));
+            points.push_back(transform::to_parent(first, *first.get_contour(true).left_vertex()));
+            points.push_back(transform::to_parent(second, *second.get_contour(true).right_vertex()));
+            points.push_back(transform::to_parent(second, *second.get_contour(true).left_vertex()));
+
+            /* Calculate the centroid of the points */
+            return CGAL::centroid(points.begin(), points.end(), CGAL::Dimension_tag<0>{});
+        };
+
+        /* Extract the centroid of each segment */
+        for (size_t i = 0; i < surface.sections.size() - 1; ++i)
+        {
+            /* Get the centroid of the current segment */
+            const Point_3 centroid = _get_centroid(surface.sections.at(i), surface.sections.at(i + 1));
+
+            /* Add the centroid to the vector */
+            centroids.push_back(centroid);
+        }
+
+        /* Return the vector containing the centroid points */
+        return centroids;
+    }
+
+    auto measure::chord(const MultisectionSurface<AirfoilSection> &surface, const double position) -> double
+    {
+        /* Project the position to the symmetric position if the surface is symmetric */
+        const double span_position = detail::project_symmetric_position(surface, position);
+
+        /* Initialize chord */
+        double chord{0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(surface.sections, span_position);
+        if (!index.has_value())
+        {
+            return chord;
+        }
+
+        /* Calculate the local chord by linear interpolation between the two sections */
+        const double first_chord = surface.sections.at(index.value()).get_chord_length();
+        const double second_chord = surface.sections.at(index.value() + 1).get_chord_length();
+        const double first_position = surface.sections.at(index.value()).origin.z();
+        const double second_position = surface.sections.at(index.value() + 1).origin.z();
+        chord = first_chord + (second_chord - first_chord) * (span_position - first_position) / (second_position - first_position);
+
+        /* Return total chord */
+        return chord;
+    }
+
+    auto measure::dihedral(const MultisectionSurface<AirfoilSection> &surface, const double position) -> double
+    {
+        /* Initialize dihedral */
+        double dihedral{0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(
+            surface.sections, detail::project_symmetric_position(surface, position));
+        if (!index.has_value())
+        {
+            return dihedral;
+        }
+
+        /* Get the leading edge points of the two closed sections */
+        const Point_3 first_point = surface.sections.at(index.value()).origin;
+        const Point_3 second_point = surface.sections.at(index.value() + 1).origin;
+
+        /* Calculate the projected angle of the two points with the local y axis */
+        const double dy = second_point.y() - first_point.y();
+        const double dz = second_point.z() - first_point.z();
+        dihedral = std::atan2(dy, std::abs(dz)); // The y offset defines the sign of the angle
+
+        /* Return total dihedral */
+        return dihedral;
+    }
+
+    auto measure::height(const MultisectionSurface<PolygonSection> &surface, const double position) -> double
+    {
+        /* Initialize height */
+        double height{0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(surface.sections, position);
+        if (!index.has_value())
+        {
+            return height;
+        }
+
+        /* Calculate the local height by linear interpolation between the two sections */
+        const double first_height = surface.sections.at(index.value()).get_contour(true).bbox().y_span();
+        const double second_height = surface.sections.at(index.value() + 1).get_contour(true).bbox().y_span();
+        const double first_position = surface.sections.at(index.value()).origin.z();
+        const double second_position = surface.sections.at(index.value() + 1).origin.z();
+        height = first_height + (second_height - first_height) * (position - first_position) / (second_position - first_position);
+
+        /* Return total height */
+        return height;
+    }
+
+    auto measure::height_max(const MultisectionSurface<PolygonSection> &surface) -> double
+    {
+        /* Find the max element in the surface */
+        auto max_height = std::max_element(
+            surface.sections.begin(),
+            surface.sections.end(),
+            [](const PolygonSection &first, const PolygonSection &second)
+            { return first.get_contour(true).bbox().y_span() < second.get_contour(true).bbox().y_span(); });
+
+        /* Return the max height if it was found */
+        return max_height != surface.sections.end() ? max_height->get_contour(true).bbox().y_span() : 0.0;
+    }
+
+    auto measure::inertia(
+        const MultisectionSurface<PolygonSection> &surface,
+        const double refined_edge_length) -> CGAL::Eigen_matrix<double, 3, 3>
+    {
+        /* Mesh the surface */
+        Mesh mesh = transform::to_mesh(surface);
+
+        /* Measure the inertia of the surface mesh */
+        return detail::calculate_inertia_tensor(mesh, refined_edge_length);
+    }
+
+    auto measure::inertia(
+        const MultisectionSurface<AirfoilSection> &surface,
+        const double refined_edge_length) -> CGAL::Eigen_matrix<double, 3, 3>
+    {
+        /* Mesh the surface */
+        Mesh mesh = transform::to_mesh(surface);
+
+        /* Measure the inertia of the surface mesh */
+        return detail::calculate_inertia_tensor(mesh, refined_edge_length);
+    }
+
+    auto measure::left(const MultisectionSurface<PolygonSection> &surface, const double position) -> Point_3
+    {
+        /* Initialize left */
+        Point_3 left{0.0, 0.0, 0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(surface.sections, position);
+        if (!index.has_value())
+        {
+            return left;
+        }
+
+        /* Lambda to get the left point of a section in local coordinates */
+        auto left_point = [](const PolygonSection &section) -> Point_3
+        {
+            const auto point = *section.get_contour(true).left_vertex();
+            return geom2::transform::to_parent(section, point);
+        };
+
+        /* Get the left points of the sections */
+        const auto left_first = left_point(surface.sections.at(index.value()));
+        const auto left_second = left_point(surface.sections.at(index.value() + 1));
+
+        /* Return linear interpolation of the left points */
+        return detail::interpolate_xy(left_first, left_second, position);
+    }
+
+    auto measure::length(const MultisectionSurface<PolygonSection> &surface) -> double
+    {
+        /* Initialize length */
+        double length{0.0};
+
+        /* Calculate length if enough segments are available */
+        if (surface.sections.size() > 1)
+            length = surface.sections.back().origin.z() - surface.sections.front().origin.z();
+
+        /* Return total length */
+        return std::abs(length);
+    }
+
+    auto measure::mean_aerodynamic_chord(const MultisectionSurface<AirfoilSection> &surface) -> double
+    {
+        /* Initialize mean aerodynamic chord */
+        double MAC{0.0};
+
+        /* Get the reference area of one wing half if the surface is symmetric */
+        const double area = surface.is_symmetric ? measure::reference_area(surface) / 2.0 : measure::reference_area(surface);
+
+        /* Lambda to calculate the MAC of one segment weighted by the reference area */
+        auto _get_MAC = [&area](const double taper, const double root_chord, const double area_segment) -> double
+        {
+            /* Calculate the MAC segment itself */
+            const double MAC_segment = (2.0 / 3.0) * root_chord * (1.0 + taper + (taper * taper)) / (1.0 + taper);
+
+            /* Return the weighted MAC segment */
+            return MAC_segment * area_segment / area;
+        };
+
+        /* Accumulate the MAC of each segment by weighing it with its reference area */
+        for (size_t i = 0; i < surface.sections.size() - 1; ++i)
+        {
+            /* Get the taper ratio and root chord of the current segment */
+            const double taper = surface.sections.at(i + 1).get_chord_length() / surface.sections.at(i).get_chord_length();
+            const double root_chord = surface.sections.at(i).get_chord_length();
+            const double area_segment =
+                (surface.sections.at(i).get_chord_length() + surface.sections.at(i + 1).get_chord_length()) *
+                std::abs(surface.sections.at(i + 1).origin.z() - surface.sections.at(i).origin.z()) / 2.0;
+
+            /* Calculate the MAC of the current segment */
+            MAC += _get_MAC(taper, root_chord, area_segment);
+        }
+
+        /* Return the mean aerodynamic chord */
+        return MAC;
+    }
+
+    auto measure::mean_aerodynamic_chord_position(const MultisectionSurface<AirfoilSection> &surface) -> double
+    {
+        /* Get the area of one wing half */
+        const double area_winghalf = surface.is_symmetric ? measure::reference_area(surface) / 2.0 : measure::reference_area(surface);
+
+        /* Lambda to calculate the MAC position of one segment */
+        auto _get_MAC_position = [](const double taper, const double halfspan) -> double
+        {
+            return (halfspan / 3) * (1 + 2 * taper) / (1 + taper);
+        };
+
+        /* Accumulate the span position of each segment MAC by weighing it with its reference area */
+        double span_MAC{0.0};
+        for (size_t i = 0; i < surface.sections.size() - 1; ++i)
+        {
+            /* Get the taper ratio and root chord of the current segment */
+            const double taper = surface.sections.at(i + 1).get_chord_length() / surface.sections.at(i).get_chord_length();
+            const double span_segment = (surface.sections.at(i + 1).origin.z() - surface.sections.at(i).origin.z());
+            const double area_segment =
+                (surface.sections.at(i).get_chord_length() + surface.sections.at(i + 1).get_chord_length()) *
+                std::abs(surface.sections.at(i + 1).origin.z() - surface.sections.at(i).origin.z()) / 2.0;
+
+            /* Calculate the span position of the current segment */
+            span_MAC +=
+                (surface.sections.at(i).origin.z() + _get_MAC_position(taper, span_segment)) * area_segment / area_winghalf;
+        }
+
+        /* Return the mean aerodynamic chord position */
+        return span_MAC;
+    }
+
+    auto measure::offset_LE(const MultisectionSurface<AirfoilSection> &surface, const double position) -> Point_3
+    {
+        /* Initialize offset */
+        Point_3 offset{0.0, 0.0, 0.0};
+
+        /* Get the index of the section which is before the position */
+        const double span_position = detail::project_symmetric_position(surface, position);
+        auto index = detail::get_section_index(surface.sections, span_position);
+        if (!index.has_value())
+        {
+            return offset;
+        }
+
+        /* Calculate the local offset by linear interpolation between the two sections */
+        const Point_3 first_offset = surface.sections.at(index.value()).origin;
+        const Point_3 second_offset = surface.sections.at(index.value() + 1).origin;
+        const double first_position = surface.sections.at(index.value()).origin.z();
+        const double second_position = surface.sections.at(index.value() + 1).origin.z();
+        offset = first_offset + (second_offset - first_offset) * (span_position - first_position) / (second_position - first_position);
+
+        /* Return total offset */
+        return {offset.x(), offset.y(), position};
+    }
+
+    auto measure::reference_area(const MultisectionSurface<AirfoilSection> &surface) -> double
+    {
+        /* Initialize area */
+        double area{0.0};
+
+        /* Calculate area if enough segments are available */
+        if (surface.sections.size() > 1)
+        {
+            /* Initialize the polygon which will represent the reference area */
+            Polygon_2 reference_area;
+
+            /* Extract the leading edge points and insert them into the polygon */
+            std::for_each(
+                surface.sections.begin(),
+                surface.sections.end(),
+                [&](const AirfoilSection &section)
+                { reference_area.push_back(Point_2{section.origin.x(), section.origin.z()}); });
+
+            /* Extract the trailing edge point in reverse order */
+            std::for_each(
+                surface.sections.rbegin(),
+                surface.sections.rend(),
+                [&](const AirfoilSection &section)
+                {
+                    /* Get the 3D point of the trailing edge */
+                    const Point_3 TE = transform::to_parent(section, *section.get_contour(true).right_vertex());
+
+                    /* Insert the 2D point into the polygon */
+                    reference_area.push_back(Point_2{TE.x(), TE.z()}); });
+
+            /*
+             * Check if the resulting polygon is simple, i.e. the airfoil sections
+             * are ordered in increasing local Z direction.
+             */
+            if (reference_area.is_simple())
+            {
+                /* Calculate the absolute area of the reference area */
+                area = std::abs(reference_area.area());
+            }
+        }
+
+        /* Return total area */
+        return surface.is_symmetric ? 2.0 * area : area;
+    }
+
+    auto measure::right(const MultisectionSurface<PolygonSection> &surface, const double position) -> Point_3
+    {
+        /* Initialize right */
+        Point_3 right{0.0, 0.0, 0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(surface.sections, position);
+        if (!index.has_value())
+        {
+            return right;
+        }
+
+        /* Lambda to get the right point of a section in local coordinates */
+        auto right_point = [](const PolygonSection &section) -> Point_3
+        {
+            const auto point = *section.get_contour(true).right_vertex();
+            return geom2::transform::to_parent(section, point);
+        };
+
+        /* Get the right points of the sections */
+        const auto right_first = right_point(surface.sections.at(index.value()));
+        const auto right_second = right_point(surface.sections.at(index.value() + 1));
+
+        /* Return linear interpolation of the right points */
+        return detail::interpolate_xy(right_first, right_second, position);
+    }
+
+    auto measure::span(const MultisectionSurface<AirfoilSection> &surface) -> double
+    {
+        /* Initialize span */
+        double span{0.0};
+
+        /* Calculate span if enough segments are available */
+        if (surface.sections.size() > 1)
+            span = surface.sections.back().origin.z() - surface.sections.front().origin.z();
+
+        /* Return total span */
+        span = std::abs(span);
+        return surface.is_symmetric ? 2 * span : span;
+    }
+
+    auto measure::sweep(const MultisectionSurface<AirfoilSection> &surface, const double position, const double chord_offset) -> double
+    {
+        /* Initialize sweep */
+        double sweep{0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(
+            surface.sections, detail::project_symmetric_position(surface, position));
+        if (!index.has_value())
+        {
+            return sweep;
+        }
+
+        /* Get the points at chord_offset of the sections */
+        const AirfoilSection first_section = surface.sections.at(index.value());
+        const Point_3 first_point{chord_offset * first_section.get_chord_length() + first_section.origin.x(), 0.0, first_section.origin.z()};
+        const AirfoilSection second_section = surface.sections.at(index.value() + 1);
+        const Point_3 second_point{chord_offset * second_section.get_chord_length() + second_section.origin.x(), 0.0, second_section.origin.z()};
+
+        /* Calculate the projected angle of the two points with the local z axis */
+        const double dx = second_point.x() - first_point.x();
+        const double dz = second_point.z() - first_point.z();
+        // sweep = std::atan(dx / dz);
+        sweep = std::atan2(dx, std::abs(dz)); // The z offset defines the sign of the angle
+
+        /*
+         * This function measures the angle in y-direction
+         * and not in z-direction as assumed by the std::atan function.
+         * Therefore, the sign of the angle has to be corrected.
+         */
+        sweep *= -1.0; 
+
+        /* Return total sweep */
+        return sweep;
+    }
+
+    auto measure::taper_ratio(const MultisectionSurface<AirfoilSection> &surface) -> double
+    {
+        /* Initialize taper ratio */
+        double taper_ratio{0.0};
+
+        /* Calculate taper ratio */
+        const double root_chord = measure::chord(surface, 0.0);
+        const double tip_chord = surface.sections.back().get_chord_length();
+        if (root_chord > 0.0)
+        {
+            taper_ratio = tip_chord / root_chord;
+        }
+
+        /* Return the taper ratio */
+        return taper_ratio;
+    }
+
+    auto measure::thickness(const AirfoilSection &section, const double x_position) -> double
+    {
+        /* Access the polygon of the airfoil */
+        const Polygon_2 polygon = section.get_contour(false);
+
+        /* Get the y distance of top and bottom */
+        const auto [top, bottom] = top_and_bottom(polygon, x_position);
+        const double y_span = top.y() - bottom.y();
+
+        /* Calculate the distance between the intersection points */
+        return y_span * section.get_chord_length() * section.get_thickness_scale();
+    }
+
+    auto measure::thickness_max(const AirfoilSection &section) -> double
+    {
+        /* Loop through the upper half of the polygon points and find the maximum thickness position */
+        Polygon_2 polygon = section.get_contour(false);
+        auto vertex_max = std::max_element(
+            polygon.vertices_begin(),
+            polygon.right_vertex(),
+            [&section](const Point_2 &lhs, const Point_2 &rhs)
+            { return measure::thickness(section, lhs.x()) < measure::thickness(section, rhs.x()); });
+
+        /* Return the maximum thickness at the found position */
+        return measure::thickness(section, vertex_max->x());
+    }
+
+    auto measure::top(const MultisectionSurface<PolygonSection> &surface, const double position) -> Point_3
+    {
+        /* Initialize top */
+        Point_3 top{0.0, 0.0, 0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(surface.sections, position);
+        if (!index.has_value())
+        {
+            return top;
+        }
+
+        /* Lambda to get the top point of a section in local coordinates */
+        auto top_point = [](const PolygonSection &section) -> Point_3
+        {
+            const auto point = *section.get_contour(true).top_vertex();
+            return geom2::transform::to_parent(section, point);
+        };
+
+        /* Get the top points of the sections */
+        const auto top_first = top_point(surface.sections.at(index.value()));
+        const auto top_second = top_point(surface.sections.at(index.value() + 1));
+
+        /* Return linear interpolation of the top points */
+        return detail::interpolate_xy(top_first, top_second, position);
+    }
+
+    auto measure::top_and_bottom(const Polygon_2 &shape, const double x_position) -> std::array<Point_2, 2>
+    {
+        /* Types for computing the intersection
+         *
+         * => The compute_intersection_points function requires the
+         * Exact_predicates_exact_constructions_kernel for the computation.
+         * This kernel is used here locally to not increase the complexity
+         * of the other library objects.
+         */
+        using K = CGAL::Exact_predicates_exact_constructions_kernel;
+        using Traits_2 = CGAL::Arr_segment_traits_2<K>;
+        using Segment_2 = Traits_2::Curve_2;
+
+        /* Initialize the result */
+        double top{0.0};
+        double bottom{0.0};
+
+        /* Create segment line which should intersect the airfoil */
+        Segment_2 x_line{
+            K::Point_2{x_position, 1.1 * shape.bbox().ymax() + 0.1},
+            K::Point_2{x_position, 1.1 * shape.bbox().ymin() - 0.1}};
+
+        /* Get the number of polygon edges for preallocating the segments vector */
+        const auto n_edges = std::distance(shape.edges_begin(), shape.edges_end());
+
+        /* Create and fill the container with the line elements */
+        std::vector<Segment_2> segments(n_edges + 1); // + 1 for the intersecting line
+        std::transform(
+            shape.edges_begin(),
+            shape.edges_end(),
+            segments.begin(),
+            [](const auto &edge) {
+                const auto source = edge.source();
+                const auto target = edge.target();
+                return Segment_2{
+                    K::Point_2{source.x(), source.y()},
+                    K::Point_2{target.x(), target.y()}};
+            });
+
+        /* Add the intersecting line at the end */
+        segments.back() = x_line;
+
+        /* Get the intersection points */
+        std::vector<K::Point_2> points;
+        CGAL::compute_intersection_points(segments.begin(), segments.end(), std::back_inserter(points));
+
+        /* Check whether the intersection points are valid
+         * and get the y coordinates of the top and bottom.
+         * The result of the previous computation are
+         * reported in an increasing xy-lexicographical order.
+         */
+        if (points.size() == 2)
+        {
+            top = CGAL::to_double(points[1].y());
+            bottom = CGAL::to_double(points[0].y());
+        }
+
+        /* Return the result */
+        return {Point_2{x_position, top}, Point_2{x_position, bottom}};
+    }
+
+    auto measure::twist(const MultisectionSurface<AirfoilSection> &surface, const double position) -> double
+    {
+        /* Project the position to the symmetric position if the surface is symmetric */
+        const double span_position = detail::project_symmetric_position(surface, position);
+
+        /* Initialize twist */
+        double twist{0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(surface.sections, span_position);
+        if (!index.has_value())
+        {
+            return twist;
+        }
+
+        /* Calculate the local twist by linear interpolation between the two sections */
+        const double first_twist = surface.sections.at(index.value()).get_twist_angle();
+        const double second_twist = surface.sections.at(index.value() + 1).get_twist_angle();
+        const double first_position = surface.sections.at(index.value()).origin.z();
+        const double second_position = surface.sections.at(index.value() + 1).origin.z();
+        twist = first_twist + (second_twist - first_twist) * (span_position - first_position) / (second_position - first_position);
+
+        /* Return the interpolated twist */
+        return twist;
+    }
+
+    auto measure::volume(const MultisectionSurface<PolygonSection> &surface) -> double
+    {
+        /* Initialize volume */
+        double volume{0.0};
+
+        /* Calculate volume if enough segments are available */
+        if (surface.sections.size() > 1)
+        {
+            Mesh mesh = transform::to_mesh(surface.sections);
+
+            /* Close the holes of the first and last section */
+            auto border_edge_first = mesh.halfedge(*mesh.vertices_begin());
+            auto border_edge_last = mesh.halfedge(*(mesh.vertices_end() - 1));
+            CGAL::Polygon_mesh_processing::triangulate_hole(mesh, border_edge_first);
+            CGAL::Polygon_mesh_processing::triangulate_hole(mesh, border_edge_last);
+
+            /* Compute the bounding volume */
+            volume = CGAL::Polygon_mesh_processing::volume(mesh);
+        }
+
+        /* Return total volume */
+        return volume;
+    }
+
+    auto measure::volume(const MultisectionSurface<AirfoilSection> &surface) -> double
+    {
+        /* Initialize volume */
+        double volume{0.0};
+
+        /* Calculate volume if enough segments are available */
+        if (surface.sections.size() > 1)
+        {
+            Mesh mesh = transform::to_mesh(surface.sections);
+
+            /* Close the holes of the first and last section */
+            auto border_edge_first = mesh.halfedge(*mesh.vertices_begin());
+            auto border_edge_last = mesh.halfedge(*(mesh.vertices_end() - 1));
+            CGAL::Polygon_mesh_processing::triangulate_hole(mesh, border_edge_first);
+            CGAL::Polygon_mesh_processing::triangulate_hole(mesh, border_edge_last);
+
+            /* Compute the bounding volume */
+            volume = CGAL::Polygon_mesh_processing::volume(mesh);
+        }
+
+        /* Return total volume */
+        return surface.is_symmetric ? 2.0 * volume : volume;
+    }
+
+    auto measure::width(const MultisectionSurface<PolygonSection> &surface, const double position) -> double
+    {
+        /* Initialize width */
+        double width{0.0};
+
+        /* Get the index of the section which is before the position */
+        auto index = detail::get_section_index(surface.sections, position);
+        if (!index.has_value())
+        {
+            return width;
+        }
+
+        /* Calculate the local width by linear interpolation between the two sections */
+        const double first_width = surface.sections.at(index.value()).get_contour(true).bbox().x_span();
+        const double second_width = surface.sections.at(index.value() + 1).get_contour(true).bbox().x_span();
+        const double first_position = surface.sections.at(index.value()).origin.z();
+        const double second_position = surface.sections.at(index.value() + 1).origin.z();
+        width = first_width + (second_width - first_width) * (position - first_position) / (second_position - first_position);
+
+        /* Return total width */
+        return width;
+    }
+
+    auto measure::width_max(const MultisectionSurface<PolygonSection> &surface) -> double
+    {
+        /* Find the max element in the surface */
+        auto max_width = std::max_element(
+            surface.sections.begin(),
+            surface.sections.end(),
+            [](const PolygonSection &first, const PolygonSection &second)
+            { return first.get_contour(true).bbox().x_span() < second.get_contour(true).bbox().x_span(); });
+
+        /* Return the max width if it was found */
+        return max_width != surface.sections.end() ? max_width->get_contour(true).bbox().x_span() : 0.0;
+    }
+}; // namespace geom2
diff --git a/aircraftGeometry2/src/processing/transform.cpp b/aircraftGeometry2/src/processing/transform.cpp
new file mode 100644
index 00000000..fc6cf737
--- /dev/null
+++ b/aircraftGeometry2/src/processing/transform.cpp
@@ -0,0 +1,533 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aircraftGeometry2/processing/transform.h"
+#include "aircraftGeometry2/processing/measure.h"
+#include <cmath>
+#include <exception>
+#include <CGAL/centroid.h>
+
+namespace geom2
+{
+    namespace detail
+    {
+        /* === Functions === */
+        void add_points_to_mesh(geom2::Mesh &mesh, const Section &section) //NOLINT (runtime/reference)
+        {
+            /* Get the contour with applied transformation */
+            const Polygon_2 poly = section.get_contour(true);
+
+            /* Add all points of the polygons to the 3D mesh */
+            for (const auto &vertex : poly.vertices())
+            {
+                /* Convert to parent coordinate space */
+                // 2D to 3D (section to parent coordinate system)
+                Point_3 point = geom2::transform::to_parent(section, vertex);
+                // 3D to 2D (to global coordinate system)
+                // point = geom2::transform::toParent(section, point);
+
+                /* Add the point to the mesh */
+                mesh.add_vertex(point);
+            }
+        }
+
+        void triangulate_inbetween_sections(
+            geom2::Mesh &mesh, //NOLINT (runtime/reference)
+            const geom2::Mesh::Vertex_iterator start_vertex,
+            const std::array<std::size_t, 2> size_of_segments,
+            const bool close_sections)
+        {
+            /** @todo Check whether the mesh actually contains valid vertices */
+            /** @todo How to deal with sections which only have 1 or 2 vertices? */
+            /* Get the minimum number of points of the two sections */
+            const std::size_t number_of_points = std::min(size_of_segments[0], size_of_segments[1]);
+
+            /* Iterators to the points of the first and second section */
+            geom2::Mesh::vertex_iterator points_first = start_vertex;
+            geom2::Mesh::vertex_iterator points_second = points_first + size_of_segments[0];
+
+            /* Vertex handlers */
+            CGAL::SM_Vertex_index u, v, w, x;
+
+            /* Add faces */
+            for (std::size_t n = 0; n < number_of_points - 1; ++n)
+            {
+                u = *(points_first + n);
+                v = *(points_first + n + 1);
+                w = *(points_second + n);
+                x = *(points_second + n + 1);
+                mesh.add_face(u, v, w);
+                mesh.add_face(w, v, x);
+            }
+
+            /* Append extra faces when the two sections have different number of vertices*/
+            if (size_of_segments[0] > size_of_segments[1])
+            {
+                /* Add faces for the remaining points of the first section */
+                for (std::size_t n = number_of_points - 1; n < size_of_segments[0] - 1; ++n)
+                {
+                    u = *(points_first + n);
+                    v = *(points_first + n + 1);
+                    w = *(points_second + number_of_points - 1);
+                    mesh.add_face(u, v, w);
+                }
+            } else if (size_of_segments[0] < size_of_segments[1]) {
+                /* Add faces for the remaining points of the second section */
+                for (std::size_t n = number_of_points - 1; n < size_of_segments[1] - 1; ++n)
+                {
+                    u = *(points_first + number_of_points - 1);
+                    v = *(points_second + n + 1);
+                    w = *(points_second + n);
+                    mesh.add_face(u, v, w);
+                }
+            }
+
+            /* Append the last set of faces which wrap around to the beginning */
+            if (close_sections)
+            {
+                u = *(points_first + size_of_segments[0] - 1);
+                v = *(points_first);
+                w = *(points_second + size_of_segments[1] - 1);
+                x = *(points_second);
+                mesh.add_face(u, v, w);
+                mesh.add_face(w, v, x);
+            }
+        }
+
+        /**
+         * @brief Create transformation to rotate around x with angle alpha.
+         * @param alpha The angle to rotate around x. [rad]
+         * @return Kernel::Aff_transformation_3 The transformation matrix.
+         */
+        auto create_rotation_x(const double alpha) -> Kernel::Aff_transformation_3
+        {
+            /*
+            The Rotation matrix looks like:
+            | 1   0   0 |
+            | 0 cos -sin|
+            | 0 sin  cos|
+            */
+
+            /* Get the sin and cos components */
+            const double cos_alpha = std::cos(alpha);
+            const double sin_alpha = std::sin(alpha);
+
+            /* Return the transformation matrix */
+            return Kernel::Aff_transformation_3(
+                1, 0, 0,
+                0, cos_alpha, -sin_alpha,
+                0, sin_alpha, cos_alpha);
+        }
+
+        /**
+         * @brief Create transformation to rotate around y with angle alpha.
+         * @param alpha The angle to rotate around y. [rad]
+         * @return Kernel::Aff_transformation_3 The transformation matrix.
+         */
+        auto create_rotation_y(const double alpha) -> Kernel::Aff_transformation_3
+        {
+            /*
+            The Rotation matrix looks like:
+            | cos  0 sin|
+            |   0  1   0|
+            |-sin  0 cos|
+            */
+
+            /* Get the sin and cos components */
+            const double cos_alpha = std::cos(alpha);
+            const double sin_alpha = std::sin(alpha);
+
+            /* Return the transformation matrix */
+            return Kernel::Aff_transformation_3(
+                cos_alpha, 0, sin_alpha,
+                0, 1, 0,
+                -sin_alpha, 0, cos_alpha);
+        }
+
+        /**
+         * @brief Create transformation to rotate around z with angle alpha.
+         * @param alpha The angle to rotate around z. [rad]
+         * @return Kernel::Aff_transformation_3 The transformation matrix.
+         */
+        auto create_rotation_z(const double alpha) -> Kernel::Aff_transformation_3
+        {
+            /*
+            The Rotation matrix looks like:
+            | cos -sin  0|
+            | sin  cos  0|
+            |   0   0   1|
+            */
+
+            /* Get the sin and cos components */
+            const double cos_alpha = std::cos(alpha);
+            const double sin_alpha = std::sin(alpha);
+
+            /* Return the transformation matrix */
+            return Kernel::Aff_transformation_3(
+                cos_alpha, -sin_alpha, 0,
+                sin_alpha, cos_alpha, 0,
+                0, 0, 1);
+        }
+        auto get_transform(const Entity3D &entity, const Point_2 &point) -> CGAL::Aff_transformation_3<Kernel>
+        {
+            /* Get the distance of the origin of the entity */
+            Vector_3 offset{CGAL::ORIGIN, entity.origin};
+
+            /* Project the normal into the YZ plane */
+            Vector_3 normal_projected{0.0, entity.normal.dy(), entity.normal.dz()};
+
+            /* Get the Euler angle beta between entity normal and global Z */
+            Vector_3 z_axis{0, 0, 1};
+            double beta = CGAL::approximate_angle(normal_projected, z_axis) * to_radians;
+
+            /* Get the sign of the angle */
+            if (entity.normal.dy() < 0)
+            {
+                beta *= -1.0;
+            }
+
+            /* Create the transform to rotate around x */
+            Kernel::Aff_transformation_3 rotation = detail::create_rotation_x(-beta);
+
+            /* Get the translation from the origin to the parent origin */
+            Kernel::Aff_transformation_3 translation = Kernel::Aff_transformation_3(CGAL::TRANSLATION, offset);
+
+            /* return the transformation matrix */
+            return translation * rotation;
+        }
+
+        auto get_transform(const Entity3D &entity, const Point_3 &point) -> CGAL::Aff_transformation_3<Kernel>
+        {
+            /* Get the distance of the origin of the entity */
+            Vector_3 offset{CGAL::ORIGIN, entity.origin};
+
+            /* Project the normal into the XY and YZ plane */
+            Vector_3 normal_xy{entity.normal.dx(), entity.normal.dy(), 0.0};
+            // Vector_3 normal_yz{0.0, entity.normal.dy(), CGAL::abs(entity.normal.dz())};
+
+            /* Get the Euler angle beta between entity normal and global Z */
+            Vector_3 z_axis{0, 0, 1};
+            Vector_3 y_axis{0, 1, 0};
+            double alpha = CGAL::approximate_angle(normal_xy, y_axis) * to_radians;
+            double beta = CGAL::approximate_angle(entity.normal.vector(), z_axis) * to_radians;
+
+            /* Get the sign of the angles */
+            if (entity.normal.dy() > 0)
+            {
+                beta *= -1.0;
+            }
+            if (entity.normal.dy() < 0)
+            {
+                alpha -= std::numbers::pi;
+            }
+            if (entity.normal.dx() < 0)
+            {
+                beta *= -1.0;
+            }
+
+            /* Create the transform to rotate back around x */
+            Kernel::Aff_transformation_3 rotation_beta = detail::create_rotation_x(beta);
+
+            /* Create the transform to rotate back around y */
+            Kernel::Aff_transformation_3 rotation_alpha = detail::create_rotation_z(alpha);
+
+            /* Create the transform to rotate around z */
+            Kernel::Aff_transformation_3 rotation_gamma = detail::create_rotation_z(entity.rotation_z);
+
+            /* Get the translation from the origin to the parent origin */
+            Kernel::Aff_transformation_3 translation = Kernel::Aff_transformation_3(CGAL::TRANSLATION, offset);
+
+            /* Return the transformation matrix */
+            return translation * rotation_alpha * rotation_beta * rotation_gamma;
+        }
+
+        /**
+         * @brief Create a vector of equidistant points along a segment.
+         * 
+         * @param segment The segment to create the points along.
+         * @param count The number of points to create in between the endpoints of the segment.
+         * @return std::vector<geom2::Point_2> Vector with the equidistant points along the segment.
+         */
+        auto midpoint_n(const Kernel::Segment_2 &segment, std::size_t count) -> std::vector<Point_2>
+        {
+            /* Create vector with count size */
+            std::vector<Point_2> points;
+            points.reserve(count);
+
+            /* Create n equidistant points along segment */
+            for (std::size_t i = 0; i < count; ++i)
+            {
+                /* Interpolate X and Y coordinate */
+                const double x = segment.source().x() + (segment.target().x() - segment.source().x()) * (i + 1) / (count + 1);
+                const double y = segment.source().y() + (segment.target().y() - segment.source().y()) * (i + 1) / (count + 1);
+                points.emplace_back(Point_2{x, y});
+            }
+
+            /* Return the vector with the points */
+            return points;
+        }
+    } // namespace detail
+
+    auto transform::to_parent(const Entity3D &entity, const Point_2 &point) -> Point_3
+    {
+        /* Get the transformation matrix */
+        auto transform = detail::get_transform(entity, point);
+
+        /* Apply the transformations to the point */
+        Point_3 point_transformed(point.x(), point.y(), 0);
+
+        /* Transform the point to the parent coordinate system */
+        return transform(point_transformed);
+    }
+
+    auto transform::to_parent(const Entity3D &entity, const Point_3 &point) -> Point_3
+    {
+        /* Get the transformation matrix */
+        auto transform = detail::get_transform(entity, point);
+
+        /* Transform the point to the parent coordinate system */
+        return transform(point);
+    }
+
+    auto transform::to_local(const Entity3D &entity, const Point_3 &point) -> Point_3
+    {
+        /* Get the transformation matrix */
+        auto transform = detail::get_transform(entity, point);
+
+        /* Invert the transformation matrix */
+        transform = transform.inverse();
+
+        /* Transform the point to the local coordinate system */
+        return transform(point);
+    }
+
+    auto transform::get_reflection_point_top(
+        const Section &section,
+        const Entity3D &parent,
+        const Direction_3 &direction) -> Point_3
+    {
+        /* Get the outline of the section */
+        const Polygon_2 outline = section.get_contour(true);
+
+        /* Create a vector of 3D Points with the size of the polygon */
+        std::vector<Point_3> points{};
+        points.reserve(outline.size());
+
+        /* Convert all polygon points to 3D and insert into the vector */
+        for (const auto &point : outline.vertices())
+        {
+            points.emplace_back(to_parent(parent, to_parent(section, point)));
+        }
+
+        /* Get the centroid of the 3D points */
+        const Point_3 center = CGAL::centroid(points.begin(), points.end(), CGAL::Dimension_tag<0>());
+
+        /* Get the plane which is defined by the parent normal and the view direction */
+        using Plane_3 = Kernel::Plane_3;
+        const Vector_3 plane_normal = CGAL::cross_product(direction.vector(), parent.normal.vector());
+        const Plane_3 plane{center, -plane_normal}; // The cross product returns the opposite direction!
+        /**
+         * @todo Is the negative plane normal due to a wrong expectation
+         * how the view direction should be defined?
+         */
+
+        /* Get the point which has the maximum positive distance from this plane */
+        const Point_3 top_point = *std::max_element(
+            points.begin(), points.end(),
+            [&plane](const Point_3 &a, const Point_3 &b)
+            {
+                double coeff_a = 1;
+                double coeff_b = 1;
+                if (plane.a() * a.x() + plane.b() * a.y() + plane.c() * a.z() + plane.d() < 0) { coeff_a = -1; };
+                if (plane.a() * b.x() + plane.b() * b.y() + plane.c() * b.z() + plane.d() < 0) { coeff_b = -1; };
+                /* Check whether a has a smaller distance to the plane than b */
+                bool a_is_less_than_b = coeff_a * CGAL::squared_distance(a, plane) < coeff_b * CGAL::squared_distance(b, plane);
+
+                return a_is_less_than_b;
+            });
+
+        /* Return the top point */
+        return top_point;
+    }
+
+    auto transform::get_reflection_point_bottom(
+        const Section &section,
+        const Entity3D &parent,
+        const Direction_3 &direction) -> Point_3
+    {
+        /* Get the outline of the section */
+        const Polygon_2 outline = section.get_contour(true);
+
+        /* Create a vector of 3D Points with the size of the polygon */
+        std::vector<Point_3> points{};
+        points.reserve(outline.size());
+
+        /* Convert all polygon points to 3D and insert into the vector */
+        for (const auto &point : outline.vertices())
+        {
+            points.emplace_back(to_parent(parent, to_parent(section, point)));
+        }
+
+        /* Get the centroid of the 3D points */
+        const Point_3 center = CGAL::centroid(points.begin(), points.end(), CGAL::Dimension_tag<0>());
+
+        /* Get the plane which is defined by the parent normal and the view direction */
+        using Plane_3 = Kernel::Plane_3;
+        const Vector_3 plane_normal = CGAL::cross_product(direction.vector(), parent.normal.vector());
+        const Plane_3 plane{center, -plane_normal};
+        /**
+         * @todo Is the negative plane normal due to a wrong expectation
+         * how the view direction should be defined?
+         */
+
+        /* Get the point which has the maximum negative distance from this plane */
+        const Point_3 bottom_point = *std::max_element(
+            points.begin(), points.end(),
+            [&plane](const Point_3 &a, const Point_3 &b)
+            {
+                double coeff_a = 1;
+                double coeff_b = 1;
+                if (plane.a() * a.x() + plane.b() * a.y() + plane.c() * a.z() + plane.d() < 0) { coeff_a = -1; };
+                if (plane.a() * b.x() + plane.b() * b.y() + plane.c() * b.z() + plane.d() < 0) { coeff_b = -1; };
+                /* Check whether a has a greater distance to the plane than b */
+                bool a_is_less_than_b = coeff_a * CGAL::squared_distance(a, plane) > coeff_b * CGAL::squared_distance(b, plane);
+
+                return a_is_less_than_b;
+            });
+
+        /* Return the top point */
+        return bottom_point;
+    }
+
+    auto transform::to_absolute(
+        const MultisectionSurface<PolygonSection> &surface,
+        const MultisectionSurface<AirfoilSection> &reference) -> MultisectionSurface<PolygonSection>
+    {
+        /* Get the span reference dimension of only one wing half */
+        const double span_reference = reference.is_symmetric ?
+            measure::span(reference) / 2 : measure::span(reference);
+
+        /* Create a new surface with same base properties as the normalized surface */
+        /** 
+         * @todo How to deal with the normal and origin here? Should we assume the factory
+         * sets this correctly after the aircraft XML is refactored and includes
+         * both information? Or should this function always copy the normal and origin
+         * from the reference surface?
+         */
+        MultisectionSurface<PolygonSection> surface_absolute{};
+        surface_absolute.origin = surface.origin;
+        surface_absolute.normal = surface.normal;
+
+        /* Iterate over all sections */
+        /**
+         * @todo Since this function is mainly intended to transform control devices,
+         * does it make sense to include a check here whether the resulting surface
+         * is actually extruded along a kink of the reference surface? As a result,
+         * this function would need to insert additional sections in the resulting
+         * surface to accommodate for the kink(s).
+         */
+        for (const auto &section : surface.sections)
+        {
+            /* Get the absolute span wise position of the section */
+            const double z_absolute = section.origin.z() * span_reference;
+
+            /* Get the chord length at the current position of the section */
+            const double chord_local = measure::chord(reference, z_absolute);
+
+            /* Get the leading edge offset at the local Z position */
+            const auto offset_LE = measure::offset_LE(reference, z_absolute);
+
+            /* Create a polygon with the absolute coordinates in chord direction */
+            Polygon_2 polygon_absolute{};
+            polygon_absolute.push_back(
+                Point_2{
+                    section.get_contour(true).bbox().xmin() * chord_local + offset_LE.x(),
+                    0.0});
+            polygon_absolute.push_back(
+                Point_2{
+                    section.get_contour(true).bbox().xmax() * chord_local + offset_LE.x(),
+                    0.0});
+            surface_absolute.sections.emplace_back(polygon_absolute);
+
+            /* Set the absolute origin in Z direction */
+            surface_absolute.sections.back().origin = Point_3{0.0, 0.0, z_absolute};
+        }
+
+        /* Return the absolute surface */
+        return surface_absolute;
+    }
+
+    auto transform::resample(const Polygon_2& polygon, const std::size_t size) -> Polygon_2
+    {
+        /* Throw when the size would down-sample the polygon */
+        if (size < polygon.size())
+        {
+            throw std::invalid_argument("geom2::transform::resample(): The polygon cannot be down sampled!");
+        }
+
+        /* Return the initial polygon when it has just one vertex */
+        if (polygon.size() < 2)
+        {
+            return polygon;
+        }
+
+        /* Get the number of points to insert */
+        const auto n_points = static_cast<double>(size - polygon.size());
+
+        /* Compute the normalized interval where points should be inserted */
+        const double point_rate = (polygon.size() - 1) / n_points;
+
+        /* Initialize the output polygon with the requested size */
+        Polygon_2 polygon_resampled{};
+        polygon_resampled.resize(size);
+
+        /* Loop through the number of points and interpolate if necessary */
+        std::size_t index_offset{0};
+        double next_sample = (1.0 * point_rate);
+        for (std::size_t index = 0; index < polygon.size(); ++index)
+        {
+            /* Insert the existing points */
+            polygon_resampled[index + index_offset] = polygon[index];
+
+            /* 
+             * When the point rate at which the vertices are resampled
+             * allows for additional points, insert them.
+             */
+            if (next_sample <= (index + 1) && index_offset < n_points && index < polygon.size() - 1)
+            {
+                /* Compute the points to be inserted */
+                Kernel::Segment_2 segment{polygon[index], polygon[index + 1]};
+                auto points = detail::midpoint_n(segment, std::floor((index + 1) / point_rate) - index_offset);
+
+                /* Insert all the points and update the next sample position */
+                for (const auto &point : points)
+                {
+                    polygon_resampled[index + (++index_offset)] = point;
+                    next_sample += point_rate;
+                }
+            }
+        }
+
+        /* Return the resampled polygon */
+        return polygon_resampled;
+    }
+}; // namespace geom2
diff --git a/aircraftGeometry2/src/py_aircraft_geometry.cpp b/aircraftGeometry2/src/py_aircraft_geometry.cpp
new file mode 100644
index 00000000..fc6ee798
--- /dev/null
+++ b/aircraftGeometry2/src/py_aircraft_geometry.cpp
@@ -0,0 +1,599 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <pybind11/pybind11.h>
+#include <pybind11/operators.h>
+#include <pybind11/stl.h>
+#include <pybind11/stl/filesystem.h>
+#include <CGAL/Surface_mesh/IO/PLY.h>
+#include "aircraftGeometry2/geometry/entity3d.h"
+#include "aircraftGeometry2/geometry/section.h"
+#include "aircraftGeometry2/geometry/surface.h"
+#include "aircraftGeometry2/geometry/factory.h"
+#include "aircraftGeometry2/io/dat.h"
+#include "aircraftGeometry2/io/convert.h"
+#include "aircraftGeometry2/processing/transform.h"
+#include "aircraftGeometry2/processing/measure.h"
+#include "aircraftGeometry2/fuselage.h"
+#include "aircraftGeometry2/hull_surface.h"
+#include "aircraftGeometry2/airfoil_surface.h"
+
+namespace py = pybind11;
+
+/* === Python bindings === */
+PYBIND11_MODULE(py11aircraftGeometry2, m)
+{
+    /* Module docstring */
+    m.doc() = "Python bindings for aircraftGeometry2.";
+
+    /* Bind class geom2::Point_2 to Python.  */
+    py::class_<geom2::Point_2>(m, "Point_2")
+        .def(py::init<>())
+        .def(py::init<geom2::Point_2 const &>(), py::arg("other"))
+        .def(py::init<int, int>(), py::arg("x"), py::arg("y"))
+        .def(py::init<double, double>(), py::arg("x"), py::arg("y"))
+        .def(py::self == py::self)
+        .def(py::self != py::self)
+        .def("x", &geom2::Point_2::x, "The x-coordinate of the point.")
+        .def("y", &geom2::Point_2::y, "The y-coordinate of the point.");
+
+    /* Bind class geom2::Point_3 to Python. */
+    py::class_<geom2::Point_3>(m, "Point_3")
+        .def(py::init<>())
+        .def(py::init<geom2::Point_3 const &>(), py::arg("other"))
+        .def(py::init<int, int, int>(), py::arg("x"), py::arg("y"), py::arg("z"))
+        .def(py::init<double, double, double>(), py::arg("x"), py::arg("y"), py::arg("z"))
+        .def(py::self < py::self) //cppcheck-suppress duplicateExpression
+        .def(py::self > py::self) //cppcheck-suppress duplicateExpression
+        .def(py::self <= py::self) //cppcheck-suppress duplicateExpression
+        .def(py::self >= py::self) //cppcheck-suppress duplicateExpression
+        .def(py::self == py::self)
+        .def(py::self != py::self)
+        .def(py::self - py::self)
+        .def(py::self + geom2::Vector_3())
+        .def(py::self - geom2::Vector_3())
+        .def("x", &geom2::Point_3::x, "The x-coordinate of the point.")
+        .def("y", &geom2::Point_3::y, "The y-coordinate of the point.")
+        .def("z", &geom2::Point_3::z, "The z-coordinate of the point.");
+
+    /* Bind class geom2::Direction_3 to Python. */
+    py::class_<geom2::Direction_3>(m, "Direction_3")
+        .def(py::init<>())
+        .def(py::init<geom2::Direction_3 const &>(), py::arg("other"))
+        .def(py::init<int, int, int>(), py::arg("x"), py::arg("y"), py::arg("z"))
+        .def(py::init<double, double, double>(), py::arg("x"), py::arg("y"), py::arg("z"))
+        .def(py::self == py::self)
+        .def(py::self != py::self)
+        .def("dx", &geom2::Direction_3::dx, "The x-component of the direction.")
+        .def("dy", &geom2::Direction_3::dy, "The y-component of the direction.")
+        .def("dz", &geom2::Direction_3::dz, "The z-component of the direction.");
+
+    /* Bind class geom2::Vector_3 to Python. */
+    py::class_<geom2::Vector_3>(m, "Vector_3")
+        .def(py::init<>())
+        .def(py::init<geom2::Vector_3 const &>(), py::arg("other"))
+        .def(py::init<int, int, int>(), py::arg("x"), py::arg("y"), py::arg("z"))
+        .def(py::init<double, double, double>(), py::arg("x"), py::arg("y"), py::arg("z"))
+        .def(py::self == py::self)
+        .def(py::self != py::self)
+        .def("x", &geom2::Vector_3::x, "The x-component of the vector.")
+        .def("y", &geom2::Vector_3::y, "The y-component of the vector.")
+        .def("z", &geom2::Vector_3::z, "The z-component of the vector.");
+
+    /* Bind class geom2::Polygon_2 to Python. */
+    py::class_<geom2::Polygon_2>(m, "Polygon_2")
+        .def(py::init<>())
+        .def(
+            "size",
+            &geom2::Polygon_2::size,
+            "Get the number of vertices of the polygon."
+        )
+        .def(
+            "push_back",
+            &geom2::Polygon_2::push_back,
+            py::arg("point"),
+            "Add a 2D point as vertex to the polygon")
+        .def(
+            "vertex",
+            py::overload_cast<std::size_t>(&geom2::Polygon_2::vertex, py::const_),
+            py::arg("index"),
+            "Get the vertex at the given index.");
+
+    /* Bind class geom2::Entity3D to Python. */
+    py::class_<geom2::Entity3D>(m, "Entity3D")
+        .def(py::init<>())
+        .def_readwrite("name", &geom2::Entity3D::name, "The name of the entity.")
+        .def_readwrite("origin", &geom2::Entity3D::origin, "The origin point of the entity.")
+        .def_readwrite("normal", &geom2::Entity3D::normal, "The normal vector of the entity.")
+        .def_readwrite("rotation_z", &geom2::Entity3D::rotation_z, "The rotation around the local z-axis [rad].");
+
+    /* Bind class geom2::Section to Python. */
+    py::class_<geom2::Section, geom2::Entity3D>(m, "Section")
+        .def(py::init<>())
+        .def(py::init<geom2::Polygon_2 const &>(), py::arg("contour"))
+        .def(
+            "get_contour",
+            &geom2::Section::get_contour,
+            py::arg("apply_transform"),
+            "Get the contour polygon of the section. If apply_transform is false, the normalized shape is returned.")
+        .def(
+            "set_contour",
+            &geom2::Section::set_contour,
+            py::arg("contour"),
+            "Set the contour of the polygon section.")
+        .def("size", &geom2::Section::size, "Get the number of vertices of the section.");
+
+    /* Bind class geom2::PolygonSection to Python. */
+    py::class_<geom2::PolygonSection, geom2::Section>(m, "PolygonSection")
+        .def(py::init<>())
+        .def(py::init<geom2::Polygon_2 const &>(), py::arg("contour"))
+        .def("set_width", &geom2::PolygonSection::set_width, py::arg("width"), "Set the width of the section.")
+        .def("set_height", &geom2::PolygonSection::set_height, py::arg("height"), "Set the height of the section.")
+        .def("set_beta_angle", &geom2::PolygonSection::set_beta_angle, py::arg("angle"), "Set the beta angle of the section.")
+        .def("set_scale", &geom2::PolygonSection::set_scale, py::arg("scale"), "Set the scale of the section.");
+
+    /* Bind class geom2::AirfoilSection to Python. */
+    py::class_<geom2::AirfoilSection, geom2::Section>(m, "AirfoilSection")
+        .def(py::init<>())
+        .def(py::init<geom2::Polygon_2 const &>(), py::arg("contour"))
+        .def("set_chord_length", &geom2::AirfoilSection::set_chord_length, py::arg("length"), "Set the chord length of the airfoil.")
+        .def("set_dihedral_angle", &geom2::AirfoilSection::set_dihedral_angle, py::arg("angle"), "Set the dihedral angle of the airfoil.")
+        .def("set_twist_angle", &geom2::AirfoilSection::set_twist_angle, py::arg("angle"), "Set the twist angle of the airfoil.")
+        .def("scale_thickness", &geom2::AirfoilSection::scale_thickness, py::arg("factor"), "Scale the thickness of the airfoil.")
+        .def("get_chord_length", &geom2::AirfoilSection::get_chord_length, "Get the absolute chord length of the airfoil.")
+        .def("get_thickness_scale", &geom2::AirfoilSection::get_thickness_scale, "Get the current thickness scaling factor of the airfoil.")
+        .def("get_twist_angle", &geom2::AirfoilSection::get_twist_angle, "Get the twist angle of the airfoil.");
+
+    /* Bind template class geom2::MultisectionSurface<PolygonSection> to Python. */
+    py::class_<geom2::MultisectionSurface<geom2::PolygonSection>, geom2::Entity3D>(m, "PolygonSurface")
+        .def(py::init<>())
+        .def_readwrite("is_symmetric", &geom2::MultisectionSurface<geom2::PolygonSection>::is_symmetric, "Whether the surface is symmetric to the local `XY` plane at the surface origin.")
+        .def_readwrite("sections", &geom2::MultisectionSurface<geom2::PolygonSection>::sections, "The sections of the surface.");
+
+    /* Bind template class geom2::MultisectionSurface<AirfoilSection> to Python. */
+    py::class_<geom2::MultisectionSurface<geom2::AirfoilSection>, geom2::Entity3D>(m, "AirfoilSurface")
+        .def(py::init<>())
+        .def_readwrite("is_symmetric", &geom2::MultisectionSurface<geom2::AirfoilSection>::is_symmetric, "Whether the surface is symmetric to the local `XY` plane at the surface origin.")
+        .def_readwrite("sections", &geom2::MultisectionSurface<geom2::AirfoilSection>::sections, "The sections of the surface.");
+
+    /* Bind the template class geom2::SectionBuilder<PolygonSection> to python. */
+    py::class_<geom2::SectionBuilder<geom2::PolygonSection>>(m, "PolygonBuilder")
+        .def(py::init<>())
+        .def("get_result", &geom2::SectionBuilder<geom2::PolygonSection>::get_result, py::return_value_policy::move, "Get the result of the section builder.")
+        .def(
+            "insert_back",
+            py::overload_cast<const geom2::PolygonSection &, geom2::Vector_3>(&geom2::SectionBuilder<geom2::PolygonSection>::insert_back),
+            py::arg("shape"), py::arg("offset"),
+            "Insert a new section at the back of the surface.")
+        .def(
+            "insert_back",
+            py::overload_cast<const geom2::Polygon_2 &, geom2::Vector_3>(&geom2::SectionBuilder<geom2::PolygonSection>::insert_back),
+            py::arg("shape"), py::arg("offset"),
+            "Insert a new section at the back of the surface.")
+        .def(
+            "arrange",
+            py::overload_cast<const geom2::Polygon_2 &, geom2::Vector_3, std::size_t>(&geom2::SectionBuilder<geom2::PolygonSection>::arrange),
+            py::arg("shape"), py::arg("offset"), py::arg("count"),
+            "Arrange count sections of the given shape with the given offset and insert them to the surface.");
+
+    /* Bind the template class geom2::SectionBuilder<AirfoilSection> to python. */
+    py::class_<geom2::SectionBuilder<geom2::AirfoilSection>>(m, "AirfoilBuilder")
+        .def(py::init<>())
+        .def("get_result", &geom2::SectionBuilder<geom2::AirfoilSection>::get_result, py::return_value_policy::move, "Get the result of the section builder.")
+        .def(
+            "insert_back",
+            py::overload_cast<const geom2::AirfoilSection &, geom2::Vector_3>(&geom2::SectionBuilder<geom2::AirfoilSection>::insert_back),
+            py::arg("shape"), py::arg("offset"),
+            "Insert a new section at the back of the surface.")
+        .def(
+            "insert_back",
+            py::overload_cast<const geom2::Polygon_2 &, geom2::Vector_3>(&geom2::SectionBuilder<geom2::AirfoilSection>::insert_back),
+            py::arg("shape"), py::arg("offset"),
+            "Insert a new section at the back of the surface.")
+        .def(
+            "arrange",
+            py::overload_cast<const geom2::Polygon_2 &, geom2::Vector_3, std::size_t>(&geom2::SectionBuilder<geom2::AirfoilSection>::arrange),
+            py::arg("shape"), py::arg("offset"), py::arg("count"),
+            "Arrange count sections of the given shape with the given offset and insert them to the surface.");
+
+    /* Add build submodule */
+    auto m_build = m.def_submodule("build", "Builder functions for the geometry module.");
+    m_build.def(
+        "ellipse",
+        geom2::build::ellipse,
+        py::arg("width"), py::arg("height"), py::arg("points_per_quarter"),
+        "Build a polygon section with the shape of an ellipse.");
+
+    /* Add the io submodule */
+    auto m_io = m.def_submodule("io", "Input and output interface functions for geometry.");
+    m_io.def("read_dat_file", geom2::io::read_dat_file, py::arg("file"), "Read a dat-file and return the content as a 2D polygon.");
+    m_io.def("read_airfoil", geom2::io::read_airfoil, py::arg("file"), "Read a dat-file containing airfoil coordinates and sort the points in counter-clockwise order.");
+
+    /* Bind Lambda function to export a Multisection surface to Python. */
+    m_io.def(
+        "export_ply",
+        [](const geom2::MultisectionSurface<geom2::PolygonSection> surface, std::filesystem::path path)
+        {
+            auto mesh = geom2::transform::to_mesh(surface);
+            CGAL::IO::write_PLY(path.string(), mesh);
+        },
+        py::arg("surface"), py::arg("path"),
+        "Export a Multisection surface to a PLY file.")
+    .def(
+        "export_ply",
+        [](const geom2::MultisectionSurface<geom2::AirfoilSection> surface, std::filesystem::path path)
+        {
+            auto mesh = geom2::transform::to_mesh(surface);
+            CGAL::IO::write_PLY(path.string(), mesh);
+        },
+        py::arg("surface"), py::arg("path"),
+        "Export a Multisection surface to a PLY file.")
+    .def(
+        "export_ply",
+        [](const std::vector<geom2::Point_3> &points, std::filesystem::path path)
+        {
+            CGAL::Surface_mesh<geom2::Point_3> mesh;
+            for (auto &point : points)
+            {
+                mesh.add_vertex(point);
+            }
+            CGAL::IO::write_PLY(path.string(), mesh);
+        },
+        py::arg("points"), py::arg("path"),
+        "Export a list of points to a PLY file.");
+
+    /* Add the measure submodule */
+    auto m_measure = m.def_submodule("measure", "Measurement functions for the geometry module.");
+    m_measure
+        .def(
+            "area",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &>(&geom2::measure::area),
+            py::arg("surface"),
+            "Calculate the surface area of a multi-section surface.")
+        .def(
+            "area",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::AirfoilSection> &>(&geom2::measure::area),
+            py::arg("surface"),
+            "Calculate the surface area of a multi-section surface.")
+        .def(
+            "aspect_ratio",
+            geom2::measure::aspect_ratio,
+            py::arg("surface"),
+            "Calculate the aspect ratio of a multi-section surface.")
+        .def(
+            "bottom",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &, double>(&geom2::measure::bottom),
+            py::arg("surface"),
+            py::arg("position"),
+            "Return the bottom point of a polygon at a local z position.")
+        .def(
+            "center",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &, double>(&geom2::measure::center),
+            py::arg("surface"),
+            py::arg("position"),
+            "Calculate the bounding box center of a multi-section surface at the given position.")
+        .def(
+            "centroid",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &>(&geom2::measure::centroid),
+            py::arg("surface"),
+            "Calculate the centroid of a multi-section surface.")
+        .def(
+            "centroid",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::AirfoilSection> &>(&geom2::measure::centroid),
+            py::arg("surface"),
+            "Calculate the centroid of a multi-section surface.")
+        .def(
+            "centroids",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &>(&geom2::measure::centroids),
+            py::arg("surface"),
+            "Calculate the centroids of a multi-section surface.")
+        .def(
+            "centroids",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::AirfoilSection> &>(&geom2::measure::centroids),
+            py::arg("surface"),
+            "Calculate the centroids of a multi-section surface.")
+        .def(
+            "chord",
+            geom2::measure::chord,
+            py::arg("surface"),
+            py::arg("position"),
+            "Measure the chord length of an airfoil surface at a given position in local Z direction.")
+        .def(
+            "dihedral",
+            geom2::measure::dihedral,
+            py::arg("surface"),
+            py::arg("position"),
+            "Measure the dihedral angle of an airfoil surface at a given position in local Z direction.")
+        .def(
+            "height",
+            geom2::measure::height,
+            py::arg("surface"),
+            py::arg("position"),
+            "Measure the height of a multi-section surface at a given position in local Z direction.")
+        .def(
+            "left",
+            geom2::measure::left,
+            py::arg("surface"),
+            py::arg("position"),
+            "Measure the left point of a multi-section surface at a given position in local Z direction.")
+        .def(
+            "length",
+            geom2::measure::length,
+            py::arg("surface"),
+            "Measure the length of a multi-section surface in local Z direction.")
+        .def(
+            "mean_aerodynamic_chord",
+            geom2::measure::mean_aerodynamic_chord,
+            py::arg("surface"),
+            "Measure the mean aerodynamic chord of a multi-section surface.")
+        .def(
+            "mean_aerodynamic_chord_position",
+            geom2::measure::mean_aerodynamic_chord_position,
+            py::arg("surface"),
+            "Measure the position of the mean aerodynamic chord of a multi-section surface in spanwise direction.")
+        .def(
+            "inertia",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &, double>(&geom2::measure::inertia),
+            py::arg("surface"),
+            py::arg("refined_edge_length"),
+            "Calculate the moment of inertia of a multi-section surface.")
+        .def(
+            "inertia",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::AirfoilSection> &, double>(&geom2::measure::inertia),
+            py::arg("surface"),
+            py::arg("refined_edge_length"),
+            "Calculate the moment of inertia of a multi-section surface.")
+        .def(
+            "offset_LE",
+            geom2::measure::offset_LE,
+            py::arg("surface"),
+            py::arg("position"),
+            "Measure the offset of the leading edge of a multi-section surface at a given position in local Z direction.")
+        .def(
+            "reference_area",
+            geom2::measure::reference_area,
+            py::arg("surface"),
+            "Calculate the reference area of a wing surface.")
+        .def(
+            "right",
+            geom2::measure::right,
+            py::arg("surface"),
+            py::arg("position"),
+            "Measure the right point of a multi-section surface at a given position in local Z direction.")
+        .def(
+            "span",
+            geom2::measure::span,
+            py::arg("surface"),
+            "Measure the span of an airfoil surface in local Z direction.")
+        .def(
+            "sweep",
+            geom2::measure::sweep,
+            py::arg("surface"),
+            py::arg("position"),
+            py::arg("chord_offset"),
+            "Measure the sweep angle of a multi-section surface at a given position in local Z direction. The chord offset can be used to set where the sweep angle is measured in chord direction.")
+        .def(
+            "taper",
+            geom2::measure::taper_ratio,
+            py::arg("surface"),
+            "Measure the taper ratio of an airfoil surface.")
+        .def(
+            "thickness",
+            geom2::measure::thickness,
+            py::arg("section"),
+            py::arg("position"),
+            "Measure the absolute thickness of an airfoil at a local x position.")
+        .def(
+            "thickness_max",
+            geom2::measure::thickness_max,
+            py::arg("section"),
+            "Measure the maximum thickness of an airfoil.")
+        .def(
+            "top",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &, double>(&geom2::measure::top),
+            py::arg("surface"),
+            py::arg("position"),
+            "Return the top point of a polygon at a local z position.")
+        .def(
+            "top_and_bottom",
+            geom2::measure::top_and_bottom,
+            py::arg("shape"),
+            py::arg("position"),
+            "Return the top and bottom point of a polygon at a local x position.")
+        .def(
+            "twist",
+            geom2::measure::twist,
+            py::arg("surface"),
+            py::arg("position"),
+            "Measure the twist angle of an airfoil surface at a given position in local Z direction.")
+        .def(
+            "volume",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &>(&geom2::measure::volume),
+            py::arg("surface"),
+            "Measure the enclosed volume of a multi-section surface.")
+        .def(
+            "volume",
+            py::overload_cast<const geom2::MultisectionSurface<geom2::AirfoilSection> &>(&geom2::measure::volume),
+            py::arg("surface"),
+            "Measure the enclosed volume of a multi-section surface.")
+        .def(
+            "width",
+            geom2::measure::width,
+            py::arg("surface"),
+            py::arg("position"),
+            "Measure the width of a multi-section surface at a given position in local Z direction.");
+
+    /* Add the transform submodule */
+    auto m_transform = m.def_submodule("transform", "Transformation functions for the geometry module.");
+    m_transform.def(
+        "outline_3d",
+        py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &, const geom2::Direction_3 &>(&geom2::transform::outline_3d<geom2::PolygonSection>),
+        py::arg("surface"), py::arg("direction"),
+        "Get the outline of a multi-section surface when viewed from the given direction."
+    )
+    .def(
+        "outline_3d",
+        py::overload_cast<const geom2::MultisectionSurface<geom2::AirfoilSection> &, const geom2::Direction_3 &>(&geom2::transform::outline_3d<geom2::AirfoilSection>),
+        py::arg("surface"), py::arg("direction"),
+        "Get the outline of a multi-section surface when viewed from the given direction."
+    )
+    .def(
+        "outline_2d",
+        py::overload_cast<const geom2::MultisectionSurface<geom2::PolygonSection> &, const geom2::Direction_3 &>(&geom2::transform::outline_2d<geom2::PolygonSection>),
+        py::arg("surface"), py::arg("direction"),
+        "Get the outline of a multi-section surface when viewed from the given direction and project it in 2d on the view plane."
+    )
+    .def(
+        "outline_2d",
+        py::overload_cast<const geom2::MultisectionSurface<geom2::AirfoilSection> &, const geom2::Direction_3 &>(&geom2::transform::outline_2d<geom2::AirfoilSection>),
+        py::arg("surface"), py::arg("direction"),
+        "Get the outline of a multi-section surface when viewed from the given direction and project it in 2d on the view plane.")
+    .def(
+        "to_absolute",
+        geom2::transform::to_absolute,
+        py::arg("surface"), py::arg("reference"),
+        "Transform the surface which is defined with normalized coordinates to absolute coordinates using the reference surface to derive the absolute dimensions.")
+    .def(
+        "resample",
+        geom2::transform::resample,
+        py::arg("polygon"), py::arg("count"),
+        "Resample a polygon to the given number of vertices.");
+
+    /* Add the factory submodule */
+    auto m_factory = m.def_submodule("factory", "Factory functions for the geometry module.");
+    py::class_<geom2::FuselageFactory>(m_factory, "FuselageFactory")
+        .def(py::init<std::shared_ptr<node>, std::filesystem::path>(), py::arg("AcXml"), py::arg("data_dir"))
+        .def("create", &geom2::FuselageFactory::create, py::arg("id"), "Create a fuselage surface with the given id.");
+    py::class_<geom2::HullFactory>(m_factory, "HullFactory")
+        .def(py::init<std::shared_ptr<node>, std::filesystem::path>(), py::arg("AcXml"), py::arg("data_dir"))
+        .def("create", &geom2::HullFactory::create, py::arg("id"), "Create a hull surface with the given id.");
+    py::class_<geom2::SparFactory>(m_factory, "SparFactory")
+        .def(py::init<std::shared_ptr<node>, std::filesystem::path>(), py::arg("AcXml"), py::arg("data_dir"))
+        .def("create", &geom2::SparFactory::create, py::arg("id"), "Create a spar surface with the given id.");
+    py::class_<geom2::ControlDeviceFactory>(m_factory, "ControlDeviceFactory")
+        .def(py::init<std::shared_ptr<node>, std::filesystem::path>(), py::arg("AcXml"), py::arg("data_dir"))
+        .def("create", &geom2::ControlDeviceFactory::create, py::arg("id"), "Create all control device surfaces with the given id.");
+    py::class_<geom2::AirfoilSurfaceFactory>(m_factory, "AirfoilSurfaceFactory")
+        .def(py::init<std::shared_ptr<node>, std::filesystem::path>(), py::arg("AcXml"), py::arg("data_dir"))
+        .def("create", &geom2::AirfoilSurfaceFactory::create, py::arg("id"), "Create an airfoil surface with the given id.");
+    py::class_<geom2::WingFactory>(m_factory, "WingFactory")
+        .def(py::init<std::shared_ptr<node>, std::filesystem::path>(), py::arg("AcXml"), py::arg("data_dir"))
+        .def("create", &geom2::WingFactory::create, py::arg("id"), "Create a wing surface with the given id.");
+
+    /* Add the convert submodule */
+    auto m_convert = m.def_submodule("convert", "Convert the geometry to different formats.");
+    /* AIXML */
+    auto m_convert_aixml = m_convert.def_submodule("aixml", "Convert the geometry to the aircraft exchange XL format.");
+    m_convert_aixml
+        .def(
+            "to_hull_surface",
+            [](node& to_be_updated, const py::tuple info, const geom2::MultisectionSurface<geom2::PolygonSection> &surface)
+            {
+                /* Treat the surface as a airfoil surface */
+                geom2::io::SurfaceType hull = geom2::io::Hull{surface};
+
+                /* Convert using the aixml format */
+                std::string name = info[0].cast<std::string>();
+                std::string id = info[1].cast<std::string>();
+                std::string description = info[2].cast<std::string>();
+                return std::visit(geom2::io::AixmlConverter{to_be_updated, {name, id, description}}, hull);
+            },
+            py::return_value_policy::reference,
+            py::arg("to_be_updated"),
+            py::arg("surface_info"),
+            py::arg("surface"),
+            "Convert a multi-section surface to a hull node in the aircraft xml."
+        )
+        .def(
+            "to_fuselage_surface",
+            [](node& to_be_updated, const py::tuple info, const geom2::MultisectionSurface<geom2::PolygonSection> &surface)
+            {
+                /* Treat the surface as a airfoil surface */
+                geom2::io::SurfaceType fuselage = geom2::io::Fuselage{surface};
+
+                /* Convert using the aixml format */
+                std::string name = info[0].cast<std::string>();
+                std::string id = info[1].cast<std::string>();
+                std::string description = info[2].cast<std::string>();
+                return std::visit(geom2::io::AixmlConverter{to_be_updated, {name, id, description}}, fuselage);
+            },
+            py::return_value_policy::reference,
+            py::arg("to_be_updated"),
+            py::arg("surface_info"),
+            py::arg("surface"),
+            "Convert a multi-section surface to a fuselage node in the aircraft xml."
+        )
+        .def(
+            "to_spar_surface",
+            [](node& to_be_updated, const py::tuple info, const geom2::MultisectionSurface<geom2::PolygonSection> &surface)
+            {
+                /* Treat the surface as a airfoil surface */
+                geom2::io::SurfaceType spar = geom2::io::Spar{surface};
+
+                /* Convert using the aixml format */
+                std::string name = info[0].cast<std::string>();
+                std::string id = info[1].cast<std::string>();
+                std::string description = info[2].cast<std::string>();
+                return std::visit(geom2::io::AixmlConverter{to_be_updated, {name, id, description}}, spar);
+            },
+            py::return_value_policy::reference,
+            py::arg("to_be_updated"),
+            py::arg("surface_info"),
+            py::arg("surface"),
+            "Convert a multi-section surface to a spar node in the aircraft xml.")
+        .def(
+            "to_control_device",
+            [](node& to_be_updated, const py::tuple info, const geom2::MultisectionSurface<geom2::PolygonSection> &surface)
+            {
+                /* Treat the surface as a airfoil surface */
+                geom2::io::SurfaceType flap = geom2::io::ControlDevice{surface};
+
+                /* Convert using the aixml format */
+                std::string name = info[0].cast<std::string>();
+                std::string id = info[1].cast<std::string>();
+                std::string description = info[2].cast<std::string>();
+                return std::visit(geom2::io::AixmlConverter{to_be_updated, {name, id, description}}, flap);
+            },
+            py::return_value_policy::reference,
+            py::arg("to_be_updated"),
+            py::arg("surface_info"),
+            py::arg("surface"),
+            "Convert a multi-section surface to a control device node in the aircraft xml.")
+        .def(
+            "to_aerodynamic_surface",
+            [](node& to_be_updated, const py::tuple info, const geom2::MultisectionSurface<geom2::AirfoilSection> &surface)
+            {
+                /* Treat the surface as a airfoil surface */
+                geom2::io::SurfaceType wing = geom2::io::AirfoilSurface{surface};
+
+                /* Convert using the aixml format */
+                std::string name = info[0].cast<std::string>();
+                std::string id = info[1].cast<std::string>();
+                std::string description = info[2].cast<std::string>();
+                return std::visit(geom2::io::AixmlConverter{to_be_updated, {name, id, description}}, wing);
+            },
+            py::return_value_policy::reference,
+            py::arg("to_be_updated"),
+            py::arg("surface_info"),
+            py::arg("surface"),
+            "Convert a multi-section surface to an aerodynamic surface node in the aircraft xml.");
+}
diff --git a/aircraftGeometry2/test/CMakeLists.txt b/aircraftGeometry2/test/CMakeLists.txt
new file mode 100644
index 00000000..143c99ce
--- /dev/null
+++ b/aircraftGeometry2/test/CMakeLists.txt
@@ -0,0 +1,66 @@
+# Convert the module sources to a path found by CMake
+list(TRANSFORM LIBRARY_SOURCES PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/../ OUTPUT_VARIABLE TEST_SOURCES)
+
+# ==============================================
+# Add the test executable
+#
+# *** IMPORTANT ***
+# -> Change *.cpp files according to the tests
+# ==============================================
+add_executable(test_${LIBRARY_NAME}
+    geometry/test_entity3d.cpp
+    geometry/test_section.cpp
+    geometry/test_surface.cpp
+    geometry/test_builder.cpp
+    processing/test_transform.cpp
+    processing/test_measure.cpp
+    io/test_dat.cpp
+    io/test_convert.cpp
+    test_airfoil_surface.cpp
+    test_nacelle.cpp
+    test_fuselage.cpp
+    test_pylon.cpp
+    ${TEST_SOURCES}
+)
+
+# Link the test executable against UNICADO libs and gtest
+target_link_libraries( test_${LIBRARY_NAME}
+    PRIVATE
+        Eigen3::Eigen
+        CGAL::CGAL
+        UnicadoLibs::aixml
+        GTest::gtest_main
+)
+
+# Set compile definitions for the test executable
+target_compile_options( test_${LIBRARY_NAME} PRIVATE "-w") # Skip warnings
+
+# Set a define where the tests can find the test stubs
+target_compile_definitions( test_${LIBRARY_NAME} PRIVATE CMAKE_TEST_STUBS_DIR="${CMAKE_CURRENT_LIST_DIR}/stubs/")
+
+# The the original source folder as includes, to that the test can access the
+# original source files
+target_include_directories( test_${LIBRARY_NAME}
+    PRIVATE
+        ${CMAKE_CURRENT_LIST_DIR}/../src/
+		${CMAKE_CURRENT_LIST_DIR}/../include/
+)
+
+# Build the test runner into the current directory
+set_target_properties( test_${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+
+# Add a custom target to run the tests with cmake
+add_custom_target(runtest_${LIBRARY_NAME}
+        # COMMAND CTEST_OUTPUT_ON_FAILURE=1 GTEST_COLOR=1
+        COMMAND test_${LIBRARY_NAME} --gtest_color=yes
+        DEPENDS test_${LIBRARY_NAME})
+
+# *optional* Add the test executable to ctest
+# gtest_discover_tests(test_${LIBRARY_NAME})
+
+# Set compile options according to operating system
+if( WIN32 )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS;BUILD_AIXML_DLL")
+elseif( UNIX )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "BUILD_AIXML_SO")
+endif()
diff --git a/aircraftGeometry2/test/geometry/test_builder.cpp b/aircraftGeometry2/test/geometry/test_builder.cpp
new file mode 100644
index 00000000..5e60163a
--- /dev/null
+++ b/aircraftGeometry2/test/geometry/test_builder.cpp
@@ -0,0 +1,264 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+
+/* Unit Under Test */
+#include <aircraftGeometry2/geometry/builder.h>
+#include <aircraftGeometry2/geometry/acxml.h>
+#include "../../../coordinateSystemConversion/include/coordinateSystemConversion/coordinateSystemConversionConf.h"
+#include "../../../coordinateSystemConversion/include/coordinateSystemConversion/coordinateBase.h"
+
+/* === Types ===*/
+using Entity3D = geom2::Entity3D;
+using Point_2 = geom2::Point_2;
+using Point_3 = geom2::Point_3;
+using Direction_3 = geom2::Direction_3;
+using Polygon_2 = geom2::Polygon_2;
+using PolygonSection = geom2::PolygonSection;
+
+/* === Fixtures ===*/
+
+/* === Tests === */
+/**
+ * @brief Test creating a ellipse polygon section.
+ */
+
+TEST(CoordinateSystemConversion, SimpleConversionTest)
+{
+    namespace sc = SimpleConversion;
+    
+    sc::Element3D element3D(
+        1.0, 0.0, 0.0,
+        0.0, 2.0, 0.0,
+        0.0, 0.0, 3.0);
+
+    EXPECT_NEAR(element3D.xx(), 1.0, 1e-3);
+    EXPECT_NEAR(element3D.yy(), 2.0, 1e-3);
+    EXPECT_NEAR(element3D.zz(), 3.0, 1e-3);
+}
+
+TEST(CoordinateSystemConversion, SimpleConversionTest2)
+{
+    namespace sc = SimpleConversion;
+    
+    sc::Element3D element3D(1.0, 2.0, 3.0);
+
+    element3D.CGAL2AC();
+
+    EXPECT_NEAR(element3D.x(), -2.0, 1e-3);
+    EXPECT_NEAR(element3D.y(), -3.0, 1e-3);
+    EXPECT_NEAR(element3D.z(), 1.0, 1e-3);
+
+}
+
+
+TEST(GeometryBuilder, CreatePolygonEllipse)
+{
+    /* Create the ellipse */
+    auto shape = geom2::build::ellipse(2.0, 1.0, 10);
+
+    /* Check the resulting shape */
+    ASSERT_EQ(shape.get_contour().size(), 36);
+    ASSERT_TRUE(shape.get_contour().is_simple());
+    EXPECT_EQ(shape.get_contour(true).bbox().x_span(), 2.0);
+    EXPECT_EQ(shape.get_contour(true).bbox().y_span(), 1.0);
+    EXPECT_EQ(shape.get_contour(false).bbox().x_span(), 2.0);
+    EXPECT_EQ(shape.get_contour(false).bbox().y_span(), 1.0);
+}
+
+/**
+ * @brief Test conversion from A/C coordinate system to global coordinate system.
+ */
+TEST(GeometryBuilder, Ac_to_global1)
+{
+    /* Create the properties */
+    Point_3 location(1, -3, 2);
+    const Point_3 ac_origin(0,0,0);
+    Direction_3 normal(1, 0, 0);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{ name, location, normal };
+
+    /* Conversion from A/C coordinate system to global coordinate system*/
+    entity.ac_to_global(ac_origin);
+
+    /* todo write the checker*/
+        /* Check default values */
+    EXPECT_EQ(entity.name, name);
+    EXPECT_NEAR(entity.origin.x(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.origin.y(), 2.000, 1e-3);
+    EXPECT_NEAR(entity.origin.z(), 3.000, 1e-3);
+    EXPECT_EQ(entity.normal, normal);
+}
+
+TEST(GeometryBuilder, Ac_to_global2)
+{
+    /* Create the properties */
+    Point_3 location(1, -3, 2);
+    const Point_3 ac_origin(0, 0, 0);
+    Direction_3 normal(1, -3, 2);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{ name, location, normal };
+
+    /* Conversion from A/C coordinate system to global coordinate system*/
+    entity.ac_to_global(ac_origin);
+
+    /* todo write the checker*/
+        /* Check default values */
+    EXPECT_EQ(entity.name, name);
+    EXPECT_NEAR(entity.origin.x(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.origin.y(), 2.000, 1e-3);
+    EXPECT_NEAR(entity.origin.z(), 3.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dx(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dy(), 2.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dz(), 3.000, 1e-3);
+}
+
+TEST(GeometryBuilder, Ac_to_global3)
+{
+    /* Create the properties */
+    Point_3 location(0, 0, 0);
+    const Point_3 ac_origin(1, 2, 3);
+    Direction_3 normal(1, -3, 2);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{ name, location, normal };
+
+    /* Conversion from A/C coordinate system to global coordinate system*/
+    entity.ac_to_global(ac_origin);
+
+    /* todo write the checker*/
+        /* Check default values */
+    EXPECT_EQ(entity.name, name);
+    EXPECT_NEAR(entity.origin.x(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.origin.y(), 2.000, 1e-3);
+    EXPECT_NEAR(entity.origin.z(), 3.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dx(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dy(), 2.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dz(), 3.000, 1e-3);
+}
+
+TEST(GeometryBuilder, Ac_to_global4)
+{
+    /* Create the properties */
+    Point_3 location(1, 2, 3);
+    const Point_3 ac_origin(1, 2, 3);
+    Direction_3 normal(1, -3, 2);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{ name, location, normal };
+
+    /* Conversion from A/C coordinate system to global coordinate system*/
+    entity.ac_to_global(ac_origin);
+
+    /* todo write the checker*/
+        /* Check default values */
+    EXPECT_EQ(entity.name, name);
+    EXPECT_NEAR(entity.origin.x(), 2.000, 1e-3);
+    EXPECT_NEAR(entity.origin.y(), 5.000, 1e-3);
+    EXPECT_NEAR(entity.origin.z(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dx(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dy(), 2.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dz(), 3.000, 1e-3);
+}
+
+/**
+ * @brief Test conversion from global coordinate system to A/C coordinate system.
+ */
+TEST(GeometryBuilder, Global_to_ac1)
+{
+    /* Create the properties */
+    Point_3 location(1, 2, 3);
+    const Point_3 ac_origin(0, 0, 0);
+    Direction_3 normal(1, 0, 0);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{ name, location, normal };
+
+    /* Conversion from A/C coordinate system to global coordinate system*/
+    entity.global_to_ac(ac_origin);
+
+    /* todo write the checker*/
+        /* Check default values */
+    EXPECT_EQ(entity.name, name);
+    EXPECT_NEAR(entity.origin.x(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.origin.y(), -3.000, 1e-3);
+    EXPECT_NEAR(entity.origin.z(), 2.000, 1e-3);
+    EXPECT_EQ(entity.normal, normal);
+}
+
+TEST(GeometryBuilder, Global_to_ac2)
+{
+    /* Create the properties */
+    Point_3 location(1, 2, 3);
+    const Point_3 ac_origin(0, 0, 0);
+    Direction_3 normal(1, 2, 3);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{ name, location, normal };
+
+    /* Conversion from A/C coordinate system to global coordinate system*/
+    entity.global_to_ac(ac_origin);
+
+    /* todo write the checker*/
+        /* Check default values */
+    EXPECT_EQ(entity.name, name);
+    EXPECT_NEAR(entity.origin.x(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.origin.y(), -3.000, 1e-3);
+    EXPECT_NEAR(entity.origin.z(), 2.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dx(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dy(), -3.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dz(), 2.000, 1e-3);
+}
+
+TEST(GeometryBuilder, Global_to_ac3)
+{
+    /* Create the properties */
+    Point_3 location(0,0,0);
+    const Point_3 ac_origin(1, 2, 3);
+    Direction_3 normal(1, 2, 3);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{ name, location, normal };
+
+    /* Conversion from A/C coordinate system to global coordinate system*/
+    entity.global_to_ac(ac_origin);
+
+    /* todo write the checker*/
+        /* Check default values */
+    EXPECT_EQ(entity.name, name);
+    EXPECT_NEAR(entity.origin.x(), -1.000, 1e-3);
+    EXPECT_NEAR(entity.origin.y(), 3.000, 1e-3);
+    EXPECT_NEAR(entity.origin.z(), -2.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dx(), 1.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dy(), -3.000, 1e-3);
+    EXPECT_NEAR(entity.normal.dz(), 2.000, 1e-3);
+}
\ No newline at end of file
diff --git a/aircraftGeometry2/test/geometry/test_entity3d.cpp b/aircraftGeometry2/test/geometry/test_entity3d.cpp
new file mode 100644
index 00000000..986809d7
--- /dev/null
+++ b/aircraftGeometry2/test/geometry/test_entity3d.cpp
@@ -0,0 +1,88 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+#include <CGAL/Origin.h>
+
+/* Unit Under Test */
+#include "aircraftGeometry2/geometry/entity3d.h"
+
+/* === Types ===*/
+using Entity3D = geom2::Entity3D;
+using Point_3 = geom2::Point_3;
+using Direction_3 = geom2::Direction_3;
+
+/* === Tests ===*/
+/**
+ *  @brief Test the default constructor.
+ */
+TEST(Entity3D, DefaultConstructor)
+{
+    /* Create default entity */
+    Entity3D entity;
+
+    /* Check default values */
+    EXPECT_EQ(entity.name, "unknown");
+    EXPECT_EQ(entity.origin, CGAL::ORIGIN);
+    EXPECT_EQ(entity.normal, Direction_3(0, 0, 1));
+    EXPECT_EQ(entity.rotation_z, 0.0);
+}
+
+/**
+ *  @brief Test the constructor at a location.
+ */
+TEST(Entity3D, ConstructAtLocation)
+{
+    /* Create the location */
+    Point_3 location(1, 2, 3);
+
+    /* Create default entity */
+    Entity3D entity(location);
+
+    /* Check default values */
+    EXPECT_EQ(entity.name, "unknown");
+    EXPECT_EQ(entity.origin, location);
+    EXPECT_EQ(entity.normal, Direction_3(0, 0, 1));
+}
+
+/**
+ * @brief Test the constructor with custom values.
+ */
+TEST(Entity3D, ConstructCustom)
+{
+    /* Create the properties */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(1, 0, 0);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+
+    /* Check default values */
+    EXPECT_EQ(entity.name, name);
+    EXPECT_EQ(entity.origin, location);
+    EXPECT_EQ(entity.normal, normal);
+
+    /* Changing the input string should not affect the name*/
+    name = "test2";
+    EXPECT_EQ(entity.name, "test");
+}
diff --git a/aircraftGeometry2/test/geometry/test_section.cpp b/aircraftGeometry2/test/geometry/test_section.cpp
new file mode 100644
index 00000000..142a8677
--- /dev/null
+++ b/aircraftGeometry2/test/geometry/test_section.cpp
@@ -0,0 +1,515 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+#include <aircraftGeometry2/geometry/builder.h>
+#include <numbers>
+
+/* Unit Under Test */
+#include "aircraftGeometry2/geometry/section.h"
+
+/* === Types === */
+using Point_2 = geom2::Point_2;
+using Point_3 = geom2::Point_3;
+using Vector_3 = geom2::Vector_3;
+using Direction_3 = geom2::Direction_3;
+using Polygon_2 = geom2::Polygon_2;
+using PolygonSection = geom2::PolygonSection;
+using AirfoilSection = geom2::AirfoilSection;
+using PolygonBuilder = geom2::SectionBuilder<PolygonSection>;
+using AirfoilBuilder = geom2::SectionBuilder<AirfoilSection>;
+
+/* === Fixtures === */
+class ShapeRhombus : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        shape.push_back(Point_2(-1, 0));
+        shape.push_back(Point_2(-0.5, 0.5));
+        shape.push_back(Point_2(0, 1));
+        shape.push_back(Point_2(0.5, 0.5));
+        shape.push_back(Point_2(1, 0));
+        shape.push_back(Point_2(0.5, -0.5));
+        shape.push_back(Point_2(0, -1));
+        shape.push_back(Point_2(-0.5, -0.5));
+    }
+
+    Polygon_2 shape{};
+};
+
+class SimpleAirfoil : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        shape.push_back(Point_2(0, 0));
+        shape.push_back(Point_2(0.3, 0.1));
+        shape.push_back(Point_2(1, 0));
+        shape.push_back(Point_2(0.3, -0.1));
+        shape.push_back(Point_2(0, 0));
+    }
+
+    Polygon_2 shape{};
+};
+
+/* === Test === */
+TEST(PolygonSection, DefaultConstructor)
+{
+    /* Create empty section */
+    PolygonSection section;
+
+    /* Check default values */
+    EXPECT_EQ(section.name, "unknown");
+    EXPECT_EQ(section.origin, CGAL::ORIGIN);
+    EXPECT_EQ(section.normal, Direction_3(0, 0, 1));
+
+    /* Default polygon is empty */
+    EXPECT_TRUE(section.get_contour().is_empty());
+}
+
+TEST(PolygonSection, ConstructWithShape)
+{
+    /* Create the shape */
+    Polygon_2 shape;
+    shape.push_back(Point_2(0, 0));
+    shape.push_back(Point_2(1, 0));
+    shape.push_back(Point_2(1, 1));
+    shape.push_back(Point_2(0, 1));
+
+    /* Create the section */
+    PolygonSection section(shape);
+
+    /* Check default values */
+    EXPECT_EQ(section.name, "unknown");
+    EXPECT_EQ(section.origin, CGAL::ORIGIN);
+    EXPECT_EQ(section.normal, Direction_3(0, 0, 1));
+
+    /* Check polygon */
+    EXPECT_EQ(section.get_contour(), shape);
+    EXPECT_EQ(section.get_contour().size(), 4);
+}
+
+TEST_F(ShapeRhombus, BoundingBox)
+{
+    /* Create the section */
+    PolygonSection section(shape);
+
+    /* Check bounding box */
+    EXPECT_EQ(section.get_contour().bbox().xmin(), -1);
+    EXPECT_EQ(section.get_contour().bbox().xmax(), 1);
+    EXPECT_EQ(section.get_contour().bbox().ymin(), -1);
+    EXPECT_EQ(section.get_contour().bbox().ymax(), 1);
+}
+
+TEST(PolygonSection, GetNumberOfVertices)
+{
+    /* Create the shape */
+    Polygon_2 shape;
+    shape.push_back(Point_2(0, 0));
+    shape.push_back(Point_2(1, 0));
+    shape.push_back(Point_2(1, 1));
+    shape.push_back(Point_2(0, 1));
+
+    /* Create the section */
+    PolygonSection section(shape);
+
+    /* Check number of vertices */
+    EXPECT_EQ(section.size(), 4);
+}
+
+/**
+ * @brief Test inserting valid sections.
+ */
+TEST_F(ShapeRhombus, FactoryArrangeSections)
+{
+    /* Setup the builder */
+    PolygonBuilder builder;
+    Vector_3 offset(0, 0, 0.5);
+    Vector_3 offset_y(0, 0.5, 0.5);
+    builder.arrange(shape, offset, 2);
+    builder.insert_back(shape, offset_y);
+
+    /* Create the surface */
+    auto sections = builder.get_result();
+    ASSERT_EQ(sections.size(), 3);
+
+    /* Check the first inserted section */
+    EXPECT_EQ(sections[0].get_contour(), shape);
+    EXPECT_EQ(sections[0].origin, CGAL::ORIGIN);
+    EXPECT_EQ(sections[0].normal, Direction_3(0, 0, 1));
+
+    /* Check the second inserted section */
+    EXPECT_EQ(sections[1].get_contour(), shape);
+    EXPECT_EQ(sections[1].origin, CGAL::ORIGIN + offset);
+    EXPECT_EQ(sections[1].normal, Direction_3(0, 0, 1));
+
+    /* Check the third inserted section */
+    EXPECT_EQ(sections[2].get_contour(), shape);
+    EXPECT_EQ(sections[2].origin, CGAL::ORIGIN + offset + offset_y);
+    EXPECT_EQ(sections[2].normal, Direction_3(0, 0, 1));
+}
+
+/**
+ * @brief Test setting the width of a section.
+ */
+TEST(PolygonSection, SetWidth)
+{
+    /* Create the shape */
+    Polygon_2 shape;
+    shape.push_back(Point_2(0, 0));
+    shape.push_back(Point_2(1, 0));
+    shape.push_back(Point_2(1, 1));
+    shape.push_back(Point_2(0, 1));
+
+    /* Create the section */
+    PolygonSection section(shape);
+
+    /* Set the width */
+    section.set_width(2);
+
+    /* Check the width */
+    EXPECT_EQ(section.get_contour(true)[0], Point_2(0, 0));
+    EXPECT_EQ(section.get_contour(true)[1], Point_2(2, 0));
+    EXPECT_EQ(section.get_contour(true)[2], Point_2(2, 1));
+    EXPECT_EQ(section.get_contour(true)[3], Point_2(0, 1));
+
+    /* Test sections with only one point */
+    shape = Polygon_2();
+    shape.push_back(Point_2(0, 0));
+    section = PolygonSection(shape);
+    section.set_width(2);
+    EXPECT_EQ(section.get_contour(true)[0], Point_2(0, 0));
+}
+
+/**
+ * @brief Test setting the height of a section.
+ */
+TEST(PolygonSection, SetHeight)
+{
+    /* Create the shape */
+    Polygon_2 shape;
+    shape.push_back(Point_2(0, 0));
+    shape.push_back(Point_2(1, 0));
+    shape.push_back(Point_2(1, 1));
+    shape.push_back(Point_2(0, 1));
+
+    /* Create the section */
+    PolygonSection section(shape);
+
+    /* Set the width */
+    section.set_height(3);
+
+    /* Check the width */
+    EXPECT_EQ(section.get_contour(true)[0], Point_2(0, 0));
+    EXPECT_EQ(section.get_contour(true)[1], Point_2(1, 0));
+    EXPECT_EQ(section.get_contour(true)[2], Point_2(1, 3));
+    EXPECT_EQ(section.get_contour(true)[3], Point_2(0, 3));
+
+    /* Test sections with only one point */
+    shape = Polygon_2();
+    shape.push_back(Point_2(0, 0));
+    section = PolygonSection(shape);
+    section.set_height(2);
+    EXPECT_EQ(section.get_contour(true)[0], Point_2(0, 0));
+}
+
+/**
+ * @brief Test setting the Euler angle beta of a polygon section.
+ */
+TEST(PolygonSection, SetBetaAngle)
+{
+    /* Create the shape */
+    Polygon_2 shape;
+    shape.push_back(Point_2(0, 0));
+    shape.push_back(Point_2(1, 0));
+    shape.push_back(Point_2(1, 1));
+    shape.push_back(Point_2(0, 1));
+
+    /* Create the section */
+    PolygonSection section(shape);
+
+    /* Set the beta angle */
+    section.set_beta_angle(0.7854); // 45 degrees
+
+    /* Check the result */
+    EXPECT_EQ(section.normal.dx(), 0.0);
+    EXPECT_NEAR(section.normal.dy(), -0.707, 1e-3);
+    EXPECT_NEAR(section.normal.dz(), 0.707, 1e-3);
+}
+
+/**
+ * @brief Test applying an uniform scaling to a section.
+ */
+TEST(PolygonSection, ApplyUniformScaling)
+{
+    /* Create the shape */
+    Polygon_2 shape;
+    shape.push_back(Point_2(0, 0));
+    shape.push_back(Point_2(1, 0));
+    shape.push_back(Point_2(1, 1));
+    shape.push_back(Point_2(0, 1));
+
+    /* Create the section */
+    PolygonSection section(shape);
+
+    /* Set the scale */
+    section.set_scale(5);
+
+    /* Check the width */
+    EXPECT_EQ(section.get_contour(true)[0], Point_2(0, 0));
+    EXPECT_EQ(section.get_contour(true)[1], Point_2(5, 0));
+    EXPECT_EQ(section.get_contour(true)[2], Point_2(5, 5));
+    EXPECT_EQ(section.get_contour(true)[3], Point_2(0, 5));
+}
+
+/**
+ * @brief Test inserting a section defining its bounding box using the builder.
+ */
+// TEST_F(ShapeRhombus, FactoryInsertWithBoundingBox) {
+//     /* Setup the builder */
+//     geom2::PolygonBuilder builder;
+//     Vector_3 offset(0, 0, 0.5);
+//     CGAL::Bbox_2 bounds{-3, -2, 3, 2};
+//     builder.insert_scaled(shape, offset, bounds);
+
+//     /* Create the surface */
+//     auto sections = builder.getResult();
+//     ASSERT_EQ(sections.size(), 1);
+
+//     /* Check the first inserted section */
+//     EXPECT_EQ(sections[0].get_contour(true).bbox().x_span(), 6.0);
+//     EXPECT_EQ(sections[0].get_contour(true).bbox().y_span(), 4.0);
+// }
+
+/**
+ * @brief Test inserting a creates section with the builder.
+ */
+TEST_F(ShapeRhombus, FactoryInsertSection)
+{
+    /* Setup the builder */
+    PolygonBuilder builder;
+
+    /* Create the section to insert */
+    PolygonSection section(shape);
+
+    /* Insert the sections */
+    builder.insert_back(section, Vector_3(0, 0, 0));
+    builder.insert_back(section, Vector_3(0, 0, 1));
+
+    /* Test the inserted sections */
+    auto sections = builder.get_result();
+    ASSERT_EQ(sections.size(), 2);
+    EXPECT_EQ(sections[0].get_contour(false), shape);
+    EXPECT_EQ(sections[1].get_contour(false), shape);
+    EXPECT_EQ(sections[0].origin, Point_3(0, 0, 0));
+    EXPECT_EQ(sections[1].origin, Point_3(0, 0, 1));
+}
+
+/**
+ * @brief Test the default construction of an airfoil section.
+ */
+TEST(AirfoilSection, DefaultConstructor)
+{
+    /* Create empty section */
+    AirfoilSection section;
+
+    /* Check default values */
+    EXPECT_EQ(section.name, "unknown");
+    EXPECT_EQ(section.origin, CGAL::ORIGIN);
+    EXPECT_EQ(section.normal, Direction_3(0, 0, 1));
+
+    /* Default polygon is empty */
+    EXPECT_TRUE(section.get_contour().is_empty());
+}
+
+/**
+ * @brief Test setting the chord length of a simple airfoil.
+ */
+TEST_F(SimpleAirfoil, SetChordLength)
+{
+    /* Create the section */
+    AirfoilSection section(shape);
+
+    /* Set the chord length */
+    section.set_chord_length(2);
+
+    /* Check the result */
+    auto length = section.get_chord_length();
+    EXPECT_FLOAT_EQ(length, 2.0);
+    EXPECT_EQ(section.get_contour(true)[0], Point_2(0, 0));
+    EXPECT_EQ(section.get_contour(true)[1], Point_2(0.6, 0.2));
+    EXPECT_EQ(section.get_contour(true)[2], Point_2(2, 0));
+    EXPECT_EQ(section.get_contour(true)[3], Point_2(0.6, -0.2));
+    EXPECT_EQ(section.get_contour(true)[4], Point_2(0, 0));
+
+    /* Set the chord length again */
+    section.set_chord_length(3.5);
+    length = section.get_chord_length();
+    EXPECT_FLOAT_EQ(length, 3.5);
+    EXPECT_EQ(section.get_contour(true)[0], Point_2(0, 0));
+    EXPECT_NEAR(section.get_contour(true)[1].hx(), 1.05, 1e-3);
+    EXPECT_NEAR(section.get_contour(true)[1].hy(), 0.35, 1e-3);
+    EXPECT_EQ(section.get_contour(true)[2], Point_2(3.5, 0));
+    EXPECT_NEAR(section.get_contour(true)[3].hx(), 1.05, 1e-3);
+    EXPECT_NEAR(section.get_contour(true)[3].hy(), -0.35, 1e-3);
+    EXPECT_EQ(section.get_contour(true)[4], Point_2(0.0, 0.0));
+}
+
+/**
+ * @brief Test scaling the thickness of a simple airfoil.
+ */
+TEST_F(SimpleAirfoil, ScaleThickness)
+{
+    /* Create the section */
+    AirfoilSection section(shape);
+
+    /* Set the chord length */
+    section.scale_thickness(2.0);
+
+    /* Check the result */
+    ASSERT_EQ(section.get_chord_length(), 1.0);
+    EXPECT_EQ(section.get_contour(true)[0], Point_2(0, 0));
+    EXPECT_EQ(section.get_contour(true)[1], Point_2(0.3, 0.2));
+    EXPECT_EQ(section.get_contour(true)[2], Point_2(1, 0));
+    EXPECT_EQ(section.get_contour(true)[3], Point_2(0.3, -0.2));
+    EXPECT_EQ(section.get_contour(true)[4], Point_2(0, 0));
+}
+
+/**
+ * @brief Read the thickness scale factor from the airfoil.
+ */
+TEST_F(SimpleAirfoil, GetThicknessScale)
+{
+    /* Create the section */
+    AirfoilSection section(shape);
+
+    /* Set the chord length */
+    section.scale_thickness(2.0);
+
+    /* Check the result */
+    EXPECT_EQ(section.get_thickness_scale(), 2.0);
+}
+
+/**
+ * @brief Tes scaling the thickness and then setting the chord length of a simple airfoil.
+ */
+TEST_F(SimpleAirfoil, ScaleThicknessAndSetChordLength)
+{
+    /* Create the section */
+    AirfoilSection section(shape);
+
+    /* Set the chord length */
+    section.scale_thickness(2.0);
+    section.set_chord_length(2.0);
+
+    /* Check the result */
+    ASSERT_EQ(section.get_chord_length(), 2.0);
+    EXPECT_EQ(section.get_contour(true)[0], Point_2(0, 0));
+    EXPECT_EQ(section.get_contour(true)[1], Point_2(0.6, 0.4));
+    EXPECT_EQ(section.get_contour(true)[2], Point_2(2, 0));
+    EXPECT_EQ(section.get_contour(true)[3], Point_2(0.6, -0.4));
+    EXPECT_EQ(section.get_contour(true)[4], Point_2(0, 0));
+}
+
+/**
+ * @brief Test inserting an airfoil with the airfoil builder.
+ */
+TEST_F(SimpleAirfoil, FactoryInsertBack)
+{
+    /* Create the builder */
+    AirfoilBuilder builder;
+
+    /* Insert the airfoil */
+    Vector_3 offset(0, 0, 0.5);
+    builder.insert_back(shape, offset);
+
+    /* Create the surface */
+    auto sections = builder.get_result();
+    ASSERT_EQ(sections.size(), 1);
+
+    /* Check the first inserted section */
+    EXPECT_EQ(sections[0].get_contour(), shape);
+}
+
+/**
+ * @brief Test setting the dihedral angle of a simple airfoil.
+ */
+TEST_F(SimpleAirfoil, SetDihedralAngle)
+{
+    /* Create the section */
+    AirfoilSection section(shape);
+
+    /* Set the dihedral angle */
+    section.set_dihedral_angle(0.7854); // 45 degrees
+
+    /* Check the result */
+    EXPECT_EQ(section.normal.dx(), 0.0);
+    EXPECT_NEAR(section.normal.dy(), -0.707, 1e-3);
+    EXPECT_NEAR(section.normal.dz(), 0.707, 1e-3);
+}
+
+/**
+ * @brief Test setting the twist angle of a simple airfoil.
+ */
+TEST_F(SimpleAirfoil, SetTwistAngle)
+{
+    /* Create the section */
+    AirfoilSection section(shape);
+
+    /* Set the twist angle */
+    section.set_twist_angle(-0.7854); // -45 degrees
+
+    /* Check the result */
+    auto point_TE = section.get_contour(true)[2];
+    EXPECT_NEAR(point_TE.hx(), 0.707, 1e-3);
+    EXPECT_NEAR(point_TE.hy(), -0.707, 1e-3);
+
+    /* Try setting a twist beyond +-90 degrees*/
+    EXPECT_THROW(section.set_twist_angle(std::numbers::pi + 1e-3), std::invalid_argument);
+    EXPECT_THROW(section.set_twist_angle(-std::numbers::pi - 1e-3), std::invalid_argument);
+}
+
+/**
+ * @brief Test reading the twist angle of a simple airfoil.
+ */
+TEST_F(SimpleAirfoil, GetTwistAngle)
+{
+    /* Create the section */
+    AirfoilSection section(shape);
+
+    /* Set the twist angle */
+    section.set_twist_angle(-0.7854); // -45 degrees
+    EXPECT_NEAR(section.get_twist_angle(), -0.7854, 1e-3);
+
+    /* Set the twist angle */
+    section.set_twist_angle(+0.7854); // +45 degrees
+    EXPECT_NEAR(section.get_twist_angle(), +0.7854, 1e-3);
+
+    /* Test more extreme values */
+    section.set_twist_angle(std::numbers::pi);
+    EXPECT_NEAR(section.get_twist_angle(), std::numbers::pi, 1e-3);
+    section.set_twist_angle(-std::numbers::pi);
+    EXPECT_NEAR(section.get_twist_angle(), -std::numbers::pi, 1e-3);
+}
diff --git a/aircraftGeometry2/test/geometry/test_surface.cpp b/aircraftGeometry2/test/geometry/test_surface.cpp
new file mode 100644
index 00000000..e138ad47
--- /dev/null
+++ b/aircraftGeometry2/test/geometry/test_surface.cpp
@@ -0,0 +1,67 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+#include <algorithm>
+#include <iterator>
+
+/* Unit Under Test */
+#include "aircraftGeometry2/geometry/surface.h"
+
+/* === Types ===*/
+using Point_2 = geom2::Point_2;
+using Direction_3 = geom2::Direction_3;
+using Polygon_2 = geom2::Polygon_2;
+
+/* === Fixtures ===*/
+class PolygonSquareSection : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        shape.push_back(Point_2(-1, -1));
+        shape.push_back(Point_2(1, -1));
+        shape.push_back(Point_2(1, 1));
+        shape.push_back(Point_2(-1, 1));
+    }
+
+    Polygon_2 shape{};
+};
+
+/* === Test === */
+/**
+ * @brief Test the default constructor.
+ */
+TEST(PolygonSectionSurface, DefaultConstructor)
+{
+    /* Create empty surface */
+    geom2::MultisectionSurface<geom2::PolygonSection> surface;
+
+    /* Check default values */
+    EXPECT_EQ(surface.name, "unknown");
+    EXPECT_EQ(surface.origin, CGAL::ORIGIN);
+    EXPECT_EQ(surface.normal, Direction_3(0, 0, 1));
+
+    /* Default sections are empty */
+    EXPECT_TRUE(surface.sections.empty());
+}
diff --git a/aircraftGeometry2/test/io/test_convert.cpp b/aircraftGeometry2/test/io/test_convert.cpp
new file mode 100644
index 00000000..74846063
--- /dev/null
+++ b/aircraftGeometry2/test/io/test_convert.cpp
@@ -0,0 +1,445 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+
+/* Unit Under Test */
+#include "aircraftGeometry2/io/convert.h"
+
+/* === Fixtures === */
+class ConvertHullSurface : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Setup the base properties */
+        surface.name = "some_name";
+        surface.origin = {1, 2, 3};
+        surface.normal = {0, 0, 1};
+
+        /* Setup the shape for the sections */
+        geom2::Polygon_2 shape;
+        shape.push_back({0, -1});
+        shape.push_back({1, 0});
+        shape.push_back({0, 2});
+        shape.push_back({-1, 0});
+        geom2::PolygonSection section{shape};
+
+        /* Setup the surface */
+        surface.sections.emplace_back(section);
+        surface.sections.emplace_back(section);
+        surface.sections[0].origin = {0, 0, 0};
+        surface.sections[0].set_width(2);
+        surface.sections[1].origin = {0, 0, 1};
+        surface.sections[1].set_height(6);
+    }
+
+    geom2::MultisectionSurface<geom2::PolygonSection> surface;
+};
+
+class ConvertAirfoilSurface : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Setup the base properties */
+        surface.name = "main_wing";
+        surface.origin = {1, 2, 3};
+        surface.normal = {0, 0, 1};
+
+        /* Setup the shape for the sections */
+        geom2::Polygon_2 shape;
+        shape.push_back({0, 0});
+        shape.push_back({0.4, 0.2});
+        shape.push_back({1, 0});
+        shape.push_back({0, 0});
+        geom2::AirfoilSection section{shape};
+
+        /* Setup the surface */
+        surface.sections.emplace_back(section);
+        surface.sections.emplace_back(section);
+        surface.sections[0].origin = {0, 0, 0};
+        surface.sections[0].set_chord_length(3.0);
+        surface.sections[0].scale_thickness(3.0);
+        surface.sections[1].origin = {0, 0, 1};
+        surface.sections[1].set_chord_length(2);
+        surface.sections[1].set_twist_angle(0.1);
+    }
+
+    geom2::MultisectionSurface<geom2::AirfoilSection> surface;
+};
+
+/* === Tests === */
+
+/**
+ * @brief Test converting a poylgon surface as a nacelle node.
+ */
+TEST_F(ConvertHullSurface, ToAixmlNode)
+{
+    /* Treat the surface as a hull surface */
+    geom2::io::SurfaceType nacelle = geom2::io::Hull{surface};
+
+    /* Convert using the aixml format */
+    node root{};
+    node& result = std::visit(geom2::io::AixmlConverter{root, {"nacelle", "0", "fits my engine"}}, nacelle);
+
+    /* Test the root properties */
+    EXPECT_EQ(result.getName(), "nacelle");
+    EXPECT_EQ(result.getStringAttrib("ID"), "0");
+    EXPECT_EQ(result.getStringAttrib("description"), "fits my engine");
+
+    /* Test the position node */
+    EXPECT_EQ(double{result.at("position/x/value")}, surface.origin.x());
+    EXPECT_EQ(double{result.at("position/y/value")}, surface.origin.y());
+    EXPECT_EQ(double{result.at("position/z/value")}, surface.origin.z());
+
+    /* Test the direction node */
+    EXPECT_EQ(double{result.at("normal/x/value")}, surface.normal.dx());
+    EXPECT_EQ(double{result.at("normal/y/value")}, surface.normal.dy());
+    EXPECT_EQ(double{result.at("normal/z/value")}, surface.normal.dz());
+
+    /* Test the section geometry */
+    auto sections = result.getVector("sections/section");
+    ASSERT_EQ(sections.size(), 2);
+    EXPECT_EQ(sections[0]->getStringAttrib("ID"), "0");
+    EXPECT_EQ(double{sections[0]->at("origin/x/value")}, surface.sections[0].origin.x());
+    EXPECT_EQ(double{sections[0]->at("origin/y/value")}, surface.sections[0].origin.y());
+    EXPECT_EQ(double{sections[0]->at("origin/z/value")}, surface.sections[0].origin.z());
+    EXPECT_EQ(double{sections[0]->at("width/value")}, surface.sections[0].get_contour(true).bbox().x_span());
+    EXPECT_EQ(double{sections[0]->at("height/value")}, surface.sections[0].get_contour(true).bbox().y_span());
+    EXPECT_EQ(std::string(sections[0]->at("profile/value")), surface.sections[0].name);
+}
+
+/**
+ * @brief Test converting a simple fuselage surface to an aixml node.
+ */
+using ConvertFuselageSurface = ConvertHullSurface; // Reuse the same test fixture of the hull surface
+TEST_F(ConvertFuselageSurface, ToAixmlNode)
+{
+    /* Treat the surface as a hull surface */
+    geom2::io::SurfaceType fuselage = geom2::io::Fuselage{surface};
+
+    /* Convert using the aixml format */
+    node root{};
+    node& result = std::visit(geom2::io::AixmlConverter{root, {"fuselage", "0", "fits many people"}}, fuselage);
+
+    /* Test the root properties */
+    EXPECT_EQ(result.getName(), "fuselage");
+    EXPECT_EQ(result.getStringAttrib("ID"), "0");
+    EXPECT_EQ(result.getStringAttrib("description"), "fits many people");
+
+    /* Test the name node */
+    EXPECT_EQ(std::string(result.at("name/value")), surface.name);
+    EXPECT_EQ(result.at("name").getStringAttrib("description"), "Name of the fuselage");
+
+    /* Test the position node */
+    EXPECT_EQ(double{result.at("position/x/value")}, surface.origin.x());
+    EXPECT_EQ(double{result.at("position/y/value")}, surface.origin.y());
+    EXPECT_EQ(double{result.at("position/z/value")}, surface.origin.z());
+
+    /* Test the direction node */
+    EXPECT_EQ(double{result.at("direction/x/value")}, surface.normal.dx());
+    EXPECT_EQ(double{result.at("direction/y/value")}, surface.normal.dy());
+    EXPECT_EQ(double{result.at("direction/z/value")}, surface.normal.dz());
+
+    /* Test the section geometry */
+    auto sections = result.getVector("sections/section");
+    ASSERT_EQ(sections.size(), 2);
+    EXPECT_EQ(sections[0]->getStringAttrib("ID"), "0");
+    EXPECT_EQ(std::string(sections[0]->at("name/value")), "section_0");
+    EXPECT_EQ(double{sections[0]->at("origin/x/value")}, surface.sections[0].origin.x());
+    EXPECT_EQ(double{sections[0]->at("origin/y/value")}, surface.sections[0].origin.y());
+    EXPECT_EQ(double{sections[0]->at("origin/z/value")}, surface.sections[0].origin.z());
+    EXPECT_EQ(double{sections[0]->at("upper_height/value")}, surface.sections[0].get_contour(true).bbox().ymax());
+    EXPECT_EQ(double{sections[0]->at("lower_height/value")}, std::abs(surface.sections[0].get_contour(true).bbox().ymin()));
+    EXPECT_EQ(double{sections[0]->at("width/value")}, surface.sections[0].get_contour(true).bbox().x_span());
+    EXPECT_EQ(std::string(sections[0]->at("section_shape/value")), surface.sections[0].name);
+    EXPECT_EQ(sections[1]->getStringAttrib("ID"), "1");
+    EXPECT_EQ(std::string(sections[1]->at("name/value")), "section_1");
+    EXPECT_EQ(double{sections[1]->at("origin/x/value")}, surface.sections[1].origin.x());
+    EXPECT_EQ(double{sections[1]->at("origin/y/value")}, surface.sections[1].origin.y());
+    EXPECT_EQ(double{sections[1]->at("origin/z/value")}, surface.sections[1].origin.z());
+    EXPECT_EQ(double{sections[1]->at("upper_height/value")}, surface.sections[1].get_contour(true).bbox().ymax());
+    EXPECT_EQ(double{sections[1]->at("lower_height/value")}, std::abs(surface.sections[1].get_contour(true).bbox().ymin()));
+    EXPECT_EQ(double{sections[1]->at("width/value")}, surface.sections[1].get_contour(true).bbox().x_span());
+    EXPECT_EQ(std::string(sections[1]->at("section_shape/value")), surface.sections[1].name);
+}
+
+/**
+ * @brief Test converting a airfoil surface to an aixml node.
+ */
+TEST_F(ConvertAirfoilSurface, ToAixmlNode)
+{
+    /* Treat the surface as an airfoil surface */
+    geom2::io::SurfaceType pylon = geom2::io::AirfoilSurface{surface};
+
+    /* Convert using the aixml format */
+    node root{};
+    node& result = std::visit(geom2::io::AixmlConverter{root, {"pylon", "0", "pylon surface"}}, pylon);
+
+    /* Test the root properties */
+    EXPECT_EQ(result.getName(), "pylon");
+    EXPECT_EQ(result.getStringAttrib("ID"), "0");
+    EXPECT_EQ(result.getStringAttrib("description"), "pylon surface");
+
+    /* Test the position node */
+    EXPECT_EQ(result.at("position").getStringAttrib("description"), "reference position in global coordinates");
+    EXPECT_EQ(double{result.at("position/x/value")}, surface.origin.x());
+    EXPECT_EQ(double{result.at("position/y/value")}, surface.origin.y());
+    EXPECT_EQ(double{result.at("position/z/value")}, surface.origin.z());
+    EXPECT_EQ(result.at("position/x").getStringAttrib("description"), "x coordinate of point");
+    EXPECT_EQ(result.at("position/y").getStringAttrib("description"), "y coordinate of point");
+    EXPECT_EQ(result.at("position/z").getStringAttrib("description"), "z coordinate of point");
+
+
+    /* Test the normal node */
+    EXPECT_EQ(result.at("normal").getStringAttrib("description"), "unit vector according to global coordinate system for direction applied at position");
+    EXPECT_EQ(double{result.at("normal/x/value")}, surface.normal.dx());
+    EXPECT_EQ(double{result.at("normal/y/value")}, surface.normal.dy());
+    EXPECT_EQ(double{result.at("normal/z/value")}, surface.normal.dz());
+    EXPECT_EQ(result.at("normal/x").getStringAttrib("description"), "x direction of unit vector");
+    EXPECT_EQ(result.at("normal/y").getStringAttrib("description"), "y direction of unit vector");
+    EXPECT_EQ(result.at("normal/z").getStringAttrib("description"), "z direction of unit vector");
+
+    /* Test the sections */
+    EXPECT_EQ(result.at("sections").getStringAttrib("description"), "sections");
+    auto sections = result.at("sections").getVector("section");
+    ASSERT_EQ(sections.size(), 2);
+    EXPECT_EQ(sections[0]->getStringAttrib("ID"), "0");
+    EXPECT_EQ(sections[0]->at("origin").getStringAttrib("description"), "origin of chord (local)");
+    EXPECT_EQ(double{sections[0]->at("origin/x/value")}, surface.sections[0].origin.x());
+    EXPECT_EQ(double{sections[0]->at("origin/y/value")}, surface.sections[0].origin.y());
+    EXPECT_EQ(double{sections[0]->at("origin/z/value")}, surface.sections[0].origin.z());
+    EXPECT_EQ(double{sections[0]->at("chord_length/value")}, surface.sections[0].get_chord_length());
+    EXPECT_EQ(double{sections[0]->at("geometric_twist/value")}, 0.0);
+    EXPECT_EQ(std::string(sections[0]->at("profile/value")), surface.sections[0].name);
+    EXPECT_EQ(sections[1]->getStringAttrib("ID"), "1");
+    EXPECT_EQ(sections[1]->at("origin").getStringAttrib("description"), "origin of chord (local)");
+    EXPECT_EQ(double{sections[1]->at("origin/x/value")}, surface.sections[1].origin.x());
+    EXPECT_EQ(double{sections[1]->at("origin/y/value")}, surface.sections[1].origin.y());
+    EXPECT_EQ(double{sections[1]->at("origin/z/value")}, surface.sections[1].origin.z());
+    EXPECT_EQ(double{sections[1]->at("chord_length/value")}, surface.sections[1].get_chord_length());
+    EXPECT_NEAR(double{sections[1]->at("geometric_twist/value")}, 0.1, 1e-3);
+    EXPECT_EQ(std::string(sections[1]->at("profile/value")), surface.sections[1].name);
+}
+
+/**
+ * @brief Test converting a wing surface to an aixml node.
+ */
+using ConvertWingSurface = ConvertAirfoilSurface; // Reuse the same test fixture of the airfoil surface
+TEST_F(ConvertWingSurface, ToAixmlNode)
+{
+    /* Treat the surface as an airfoil surface */
+    geom2::io::SurfaceType wing = geom2::io::Wing{surface};
+
+    /* Convert using the aixml format */
+    node root{};
+    node& result = std::visit(geom2::io::AixmlConverter{root, {"aerodynamic_surface", "0", "aerodynamic surface"}}, wing);
+
+    /* Test the root properties */
+    EXPECT_EQ(result.getName(), "aerodynamic_surface");
+    EXPECT_EQ(result.getStringAttrib("ID"), "0");
+    EXPECT_EQ(result.getStringAttrib("description"), "aerodynamic surface");
+    EXPECT_FALSE(isTrue(result.at("parameters/symmetric/value")));
+
+    /* Test the name node */
+    EXPECT_EQ(std::string(result.at("name/value")), surface.name);
+    EXPECT_EQ(result.at("name").getStringAttrib("description"), "name of surface");
+
+    /* Test the position node */
+    EXPECT_EQ(result.at("position").getStringAttrib("description"), "reference position in global coordinates");
+    EXPECT_EQ(double{result.at("position/x/value")}, surface.origin.x());
+    EXPECT_EQ(double{result.at("position/y/value")}, surface.origin.y());
+    EXPECT_EQ(double{result.at("position/z/value")}, surface.origin.z());
+    EXPECT_EQ(result.at("position/x").getStringAttrib("description"), "x coordinate of point");
+    EXPECT_EQ(result.at("position/y").getStringAttrib("description"), "y coordinate of point");
+    EXPECT_EQ(result.at("position/z").getStringAttrib("description"), "z coordinate of point");
+
+    /* Test the parameters node */
+    EXPECT_EQ(result.at("parameters").getStringAttrib("description"), "aerodynamic surface parameters");
+
+    /* Test the direction node */
+    EXPECT_EQ(result.at("parameters/direction").getStringAttrib("description"), "unit vector according to global coordinate system for direction applied at position");
+    EXPECT_EQ(double{result.at("parameters/direction/x/value")}, surface.normal.dx());
+    EXPECT_EQ(double{result.at("parameters/direction/y/value")}, surface.normal.dy());
+    EXPECT_EQ(double{result.at("parameters/direction/z/value")}, surface.normal.dz());
+    EXPECT_EQ(result.at("parameters/direction/x").getStringAttrib("description"), "x direction of unit vector");
+    EXPECT_EQ(result.at("parameters/direction/y").getStringAttrib("description"), "y direction of unit vector");
+    EXPECT_EQ(result.at("parameters/direction/z").getStringAttrib("description"), "z direction of unit vector");
+
+    /* Test the sections */
+    EXPECT_EQ(result.at("parameters/sections").getStringAttrib("description"), "sections");
+    auto sections = result.at("parameters/sections").getVector("section");
+    ASSERT_EQ(sections.size(), 2);
+    EXPECT_EQ(sections[0]->getStringAttrib("ID"), "0");
+    EXPECT_EQ(sections[0]->at("chord_origin").getStringAttrib("description"), "origin of chord (local)");
+    EXPECT_EQ(double{sections[0]->at("chord_origin/x/value")}, surface.sections[0].origin.x());
+    EXPECT_EQ(double{sections[0]->at("chord_origin/y/value")}, surface.sections[0].origin.y());
+    EXPECT_EQ(double{sections[0]->at("chord_origin/z/value")}, surface.sections[0].origin.z());
+    EXPECT_EQ(double{sections[0]->at("chord_length/value")}, surface.sections[0].get_chord_length());
+    EXPECT_EQ(double{sections[0]->at("geometric_twist/value")}, 0.0);
+    EXPECT_EQ(double{sections[0]->at("scale_thickness/value")},surface.sections[0].get_thickness_scale());
+    EXPECT_EQ(std::string(sections[0]->at("profile/value")), surface.sections[0].name);
+    EXPECT_EQ(sections[1]->getStringAttrib("ID"), "1");
+    EXPECT_EQ(sections[1]->at("chord_origin").getStringAttrib("description"), "origin of chord (local)");
+    EXPECT_EQ(double{sections[1]->at("chord_origin/x/value")}, surface.sections[1].origin.x());
+    EXPECT_EQ(double{sections[1]->at("chord_origin/y/value")}, surface.sections[1].origin.y());
+    EXPECT_EQ(double{sections[1]->at("chord_origin/z/value")}, surface.sections[1].origin.z());
+    EXPECT_EQ(double{sections[1]->at("chord_length/value")}, surface.sections[1].get_chord_length());
+    EXPECT_NEAR(double{sections[1]->at("geometric_twist/value")}, 0.1, 1e-3);
+    EXPECT_EQ(double{sections[1]->at("scale_thickness/value")},surface.sections[1].get_thickness_scale());
+    EXPECT_EQ(std::string(sections[1]->at("profile/value")), surface.sections[1].name);
+}
+
+/**
+ * @brief Test converting an wing surface to an aixml node and
+ * insert it into an existing node tree.
+ */
+TEST_F(ConvertWingSurface, UpdateAixmlNode)
+{
+    /* Treat the surface as an airfoil surface */
+    geom2::io::SurfaceType wing = geom2::io::Wing{surface};
+
+    /* Create the xml tree to insert into */
+    auto acxml = std::make_shared<node>("aircraft_exchange_file");
+    node& insert_here = acxml->appendChild("component_design").appendChild("wing").appendChild("specific").appendChild("geometry");
+
+    /* Convert using the aixml format */
+    std::visit(geom2::io::AixmlConverter{insert_here, {"aerodynamic_surface", "0", ""}}, wing);
+
+    /* Test result */
+    ASSERT_TRUE(acxml->find("component_design/wing/specific/geometry/aerodynamic_surface"));
+
+    /* Test inserting another surface at the same position */
+    auto result2 = std::visit(geom2::io::AixmlConverter{insert_here, {"aerodynamic_surface", "1"}}, wing);
+    auto surfaces = acxml->getVector("component_design/wing/specific/geometry/aerodynamic_surface");
+    ASSERT_EQ(surfaces.size(), 2);
+}
+
+/**
+ * @brief Test updating an existing aixml wing node without overwriting
+ * other existing entries
+ */
+TEST_F(ConvertWingSurface, UpdateExistingAixmlNode)
+{
+    /* Use the string literal operator for convenience */
+    using std::literals::string_literals::operator""s;
+
+    /* Treat the surface as an airfoil surface */
+    geom2::io::SurfaceType wing = geom2::io::Wing{surface};
+
+    /* Create the existing node tree  */
+    auto acxml = std::make_shared<node>("aircraft_exchange_file");
+    node& insert_here = acxml->appendChild("component_design")
+        .appendChild("wing")
+        .appendChild("specific")
+        .appendChild("geometry");
+    insert_here.appendChild("aerodynamic_surface").setAttrib("ID", "0");
+    insert_here["aerodynamic_surface/name/value"s] = "old_wing";
+    insert_here["aerodynamic_surface/parameters/direction"s] = 4.0;
+    insert_here["aerodynamic_surface/parameters/sections/section@0"s] = 3.0;
+    insert_here["aerodynamic_surface/parameters/sections/section@1"s] = 3.1;
+    insert_here["aerodynamic_surface/parameters/sections/section@2"s] = 3.2;
+    insert_here.at("aerodynamic_surface").appendChild("mass_properties").setAttrib("description", "mass");
+    insert_here.at("aerodynamic_surface/mass_properties") = 42.0;
+
+    /* Update the node tree */
+    std::visit(geom2::io::AixmlConverter{insert_here, {"aerodynamic_surface", "0", ""}}, wing);
+
+    /* Test whether the existing nodes are still there */
+    ASSERT_NO_THROW(acxml->at("component_design/wing/specific/geometry/aerodynamic_surface/mass_properties"));
+    EXPECT_EQ(double{acxml->at("component_design/wing/specific/geometry/aerodynamic_surface/mass_properties")}, 42.0);
+
+    /* Test whether the existing surface is updated */
+    ASSERT_EQ(acxml->getVector("component_design/wing/specific/geometry/aerodynamic_surface").size(), 1);
+    EXPECT_EQ(std::string(acxml->at("component_design/wing/specific/geometry/aerodynamic_surface/name/value")), surface.name);
+    EXPECT_EQ(acxml->getVector("component_design/wing/specific/geometry/aerodynamic_surface/parameters/direction").size(), 1);
+    EXPECT_EQ(acxml->getVector("component_design/wing/specific/geometry/aerodynamic_surface/parameters/sections/section").size(), 2);
+}
+
+/**
+ * @brief Test converting a spar surface to an aixml node.
+ */
+TEST(ConvertSparSurface, ToAixmlNode)
+{
+    /* Create a simple spar surface */
+    geom2::Polygon_2 shape;
+    geom2::MultisectionSurface<geom2::PolygonSection> surface;
+    shape.push_back({0.2, 0.0});
+    shape.push_back({0.7, 0.0});
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections[0].origin = {0, 0, 0};
+    surface.sections[1].origin = {0, 0, -1.0};
+
+    /* Treat surface as spar geometry */
+    geom2::io::SurfaceType spar = geom2::io::Spar{surface};
+
+    /* Convert the geometry to the node */
+    node root{};
+    auto& result = std::visit(geom2::io::AixmlConverter{root, {"spar", "0", "spar geometry"}}, spar);
+
+    /* Test the result */
+    EXPECT_EQ(result.getName(), "spar");
+    EXPECT_EQ(result.getStringAttrib("ID"), "0");
+    EXPECT_EQ(result.getStringAttrib("description"), "spar geometry");
+    EXPECT_EQ(double{result.at("position/inner_position/spanwise/value")}, 0.0);
+    EXPECT_EQ(double{result.at("position/inner_position/chord/from/value")}, 0.2);
+    EXPECT_EQ(double{result.at("position/inner_position/chord/to/value")}, 0.7);
+    EXPECT_EQ(double{result.at("position/outer_position/spanwise/value")}, 1.0);
+    EXPECT_EQ(double{result.at("position/outer_position/chord/from/value")}, 0.2);
+    EXPECT_EQ(double{result.at("position/outer_position/chord/to/value")}, 0.7);
+}
+
+/**
+ * @brief Test converting a control device surface to an aixml node.
+ */
+TEST(ConvertControlDevice, ToAixmlNode)
+{
+    /* Create a simple spar surface */
+    geom2::Polygon_2 shape;
+    geom2::MultisectionSurface<geom2::PolygonSection> surface;
+    shape.push_back({0.2, 0.0});
+    shape.push_back({0.7, 0.0});
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections[0].origin = {0, 0, 0};
+    surface.sections[1].origin = {0, 0, -1.0};
+
+    /* Treat surface as spar geometry */
+    geom2::io::SurfaceType device = geom2::io::ControlDevice{surface};
+
+    /* Convert the geometry to the node */
+    node root{};
+    auto& result = std::visit(geom2::io::AixmlConverter{root, {"control_device", "0", "wow many lift"}}, device);
+
+    /* Test the result */
+    EXPECT_EQ(result.getName(), "control_device");
+    EXPECT_EQ(result.getStringAttrib("ID"), "0");
+    EXPECT_EQ(result.getStringAttrib("description"), "wow many lift");
+    EXPECT_EQ(double{result.at("position/inner_position/spanwise/value")}, 0.0);
+    EXPECT_EQ(double{result.at("position/inner_position/chord/from/value")}, 0.2);
+    EXPECT_EQ(double{result.at("position/inner_position/chord/to/value")}, 0.7);
+    EXPECT_EQ(double{result.at("position/outer_position/spanwise/value")}, 1.0);
+    EXPECT_EQ(double{result.at("position/outer_position/chord/from/value")}, 0.2);
+    EXPECT_EQ(double{result.at("position/outer_position/chord/to/value")}, 0.7);
+}
diff --git a/aircraftGeometry2/test/io/test_dat.cpp b/aircraftGeometry2/test/io/test_dat.cpp
new file mode 100644
index 00000000..74fb56f9
--- /dev/null
+++ b/aircraftGeometry2/test/io/test_dat.cpp
@@ -0,0 +1,186 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+#include <string>
+#include <iostream>
+
+/* Unit Under Test */
+#include "aircraftGeometry2/io/dat.h"
+
+/* === Types === */
+using Point_2 = geom2::Point_2;
+using Polygon_2 = geom2::Polygon_2;
+
+/* === Fixtures === */
+
+/* === Tests === */
+/**
+ * @brief Test reading a tab-separated file.
+ */
+TEST(ReadDat, LineTabSeparated)
+{
+    /* Get the file path */
+    std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+    file /= "dat-files/circle-tab.dat";
+
+    /* Read the content */
+    Polygon_2 result = geom2::io::read_dat_file(file);
+
+    /* Check the total size */
+    EXPECT_EQ(result.size(), 41);
+
+    /* Check the first point */
+    Point_2 firstPoint = result[0];
+    EXPECT_EQ(firstPoint.x(), 0.5);
+    EXPECT_EQ(firstPoint.y(), 0.0);
+
+    /* Check second point */
+    Point_2 secondPoint = result[1];
+    EXPECT_EQ(secondPoint.x(), 0.49384);
+    EXPECT_EQ(secondPoint.y(), 0.07822);
+}
+
+/**
+ * @brief Test reading a comma-separated file.
+ */
+TEST(ReadDat, CommaSeparated)
+{
+    /* Get the file path */
+    std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+    file /= "dat-files/circle-comma.dat";
+
+    /* Read the content */
+    Polygon_2 result = geom2::io::read_dat_file(file);
+
+    /* Check the total size */
+    EXPECT_EQ(result.size(), 41);
+
+    /* Check the first point */
+    Point_2 firstPoint = result[0];
+    EXPECT_EQ(firstPoint.x(), 0.5);
+    EXPECT_EQ(firstPoint.y(), 0.0);
+
+    /* Check second point */
+    Point_2 secondPoint = result[1];
+    EXPECT_EQ(secondPoint.x(), 0.49384);
+    EXPECT_EQ(secondPoint.y(), 0.07822);
+}
+
+/**
+ * @brief Test reading a semicolon-separated file.
+ */
+TEST(ReadDat, SemicolonSeparated)
+{
+    /* Get the file path */
+    std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+    file /= "dat-files/circle-semicolon.dat";
+
+    /* Read the content */
+    Polygon_2 result = geom2::io::read_dat_file(file);
+
+    /* Check the total size */
+    EXPECT_EQ(result.size(), 41);
+
+    /* Check the first point */
+    Point_2 firstPoint = result[0];
+    EXPECT_EQ(firstPoint.x(), 0.5);
+    EXPECT_EQ(firstPoint.y(), 0.0);
+
+    /* Check second point */
+    Point_2 secondPoint = result[1];
+    EXPECT_EQ(secondPoint.x(), 0.49384);
+    EXPECT_EQ(secondPoint.y(), 0.07822);
+}
+
+/**
+ * @brief Test reading a non-existing file.
+ */
+TEST(ReadDat, FileNotFound)
+{
+    /* Get the file path */
+    std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+    file /= "dat-files/does-not-exist.dat";
+
+    /* Read the content */
+    EXPECT_THROW(geom2::io::read_dat_file(file), std::runtime_error);
+}
+
+/**
+ * @brief Test reading an airfoil dat file which should be sorted after reading.
+ */
+TEST(ReadAirfoil, LeadingEdgeFirst)
+{
+    /* Get the file path */
+    std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+    file /= "dat-files/n0012-tab.dat";
+
+    /* Read the content */
+    Polygon_2 result = geom2::io::read_airfoil(file);
+
+    /* Check the total size */
+    EXPECT_EQ(result.size(), 200);
+    EXPECT_TRUE(result.is_simple());
+
+    /* Check the first point */
+    Point_2 firstPoint = result[0];
+    EXPECT_EQ(firstPoint.x(), 0.0);
+    EXPECT_EQ(firstPoint.y(), 0.0);
+}
+
+/**
+ * @brief Test reading an airfoil dat file which defined the trailing edge first.
+ */
+TEST(ReadAirfoil, TrailingEdgeFirst)
+{
+    /* Get the file path */
+    std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+    file /= "dat-files/F15_12.dat";
+
+    /* Read the content */
+    Polygon_2 result = geom2::io::read_airfoil(file);
+
+    /* Check the total size */
+    EXPECT_EQ(result.size(), 158);
+    EXPECT_TRUE(result.is_simple());
+
+    /* Check the first point */
+    Point_2 firstPoint = result[0];
+    EXPECT_EQ(firstPoint.x(), 0.0);
+    EXPECT_EQ(firstPoint.y(), 0.0);
+}
+
+/**
+ * @brief Test reading invalid airfoil dat file.
+ */
+TEST(ReadAirfoil, InvalidAirfoil)
+{
+    /* When the leading edge is not at [0,0] should throw std::domain_error */
+    std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+    file /= "dat-files/n0012-wrong-origin.dat";
+    EXPECT_THROW(geom2::io::read_airfoil(file), std::domain_error);
+
+    /* Coordinates which are in the wrong direction in x should throw std::domain_error */
+    file = std::filesystem::path{CMAKE_TEST_STUBS_DIR};
+    file /= "dat-files/n0012-wrong-direction.dat";
+    EXPECT_THROW(geom2::io::read_airfoil(file), std::domain_error);
+}
diff --git a/aircraftGeometry2/test/processing/test_measure.cpp b/aircraftGeometry2/test/processing/test_measure.cpp
new file mode 100644
index 00000000..39637a4c
--- /dev/null
+++ b/aircraftGeometry2/test/processing/test_measure.cpp
@@ -0,0 +1,1107 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+#include <aircraftGeometry2/geometry/builder.h>
+#include "aircraftGeometry2/processing/transform.h"
+
+/* Unit Under Test */
+#include "aircraftGeometry2/processing/measure.h"
+
+/* === Types ===*/
+using Point_2 = geom2::Point_2;
+using Polygon_2 = geom2::Polygon_2;
+using Vector_3 = geom2::Vector_3;
+using PolygonSection = geom2::PolygonSection;
+using AirfoilSection = geom2::AirfoilSection;
+using PolygonBuilder = geom2::SectionBuilder<PolygonSection>;
+using AirfoilBuilder = geom2::SectionBuilder<AirfoilSection>;
+
+/* === Fixtures ===*/
+class MeasurePolygon : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        shape.push_back(Point_2(-1, -1));
+        shape.push_back(Point_2(1, -1));
+        shape.push_back(Point_2(1, 1));
+        shape.push_back(Point_2(-1, 1));
+    }
+
+    Polygon_2 shape{};
+};
+
+class MeasureCone : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        auto shape = geom2::build::ellipse(2.0, 1.0);
+        
+        /* Create the cone */
+        cone.sections.emplace_back(shape);
+        cone.sections.emplace_back(shape);
+        cone.sections.back().origin = {0, 0.25, 3};
+        cone.sections.back().set_width(1.0);
+        cone.sections.back().set_height(0.5);
+    }
+
+    geom2::MultisectionSurface<PolygonSection> cone{};
+};
+
+class MeasurePyramid : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        Polygon_2 tip;
+        Polygon_2 shape;
+        tip.push_back(Point_2(0, 0));
+        shape.push_back(Point_2(-1, -1));
+        shape.push_back(Point_2(1, -1));
+        shape.push_back(Point_2(1, 1));
+        shape.push_back(Point_2(-1, 1));
+        
+        /* Create the pyramid */
+        pyramid.sections.emplace_back(tip);
+        pyramid.sections.emplace_back(shape);
+        pyramid.sections.back().origin = {0, 0, 2};
+    }
+
+    geom2::MultisectionSurface<PolygonSection> pyramid{};
+};
+
+class MeasureAirfoil : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        shape.push_back(Point_2(0, 0));
+        shape.push_back(Point_2(0.5, 0.2));
+        shape.push_back(Point_2(1.0, 0.0));
+        shape.push_back(Point_2(0.5, 0.0));
+    }
+
+    Polygon_2 shape{};
+};
+
+class MeasurePlanarWing : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        Polygon_2 shape{};
+        shape.push_back(Point_2(0, 0));
+        shape.push_back(Point_2(0.5, 0.2));
+        shape.push_back(Point_2(1.0, 0.0));
+        shape.push_back(Point_2(0.5, 0.0));
+
+        /* Create the airfoil */
+        AirfoilSection airfoil{shape};
+
+        /* Create a simple wing surface with 3 sections */
+        wing.sections.emplace_back(airfoil);
+        wing.sections.emplace_back(airfoil);
+        wing.sections.emplace_back(airfoil);
+        wing.sections[0].origin = geom2::Point_3(0, 0, 0);
+        wing.sections[0].set_chord_length(3.0);
+        wing.sections[1].origin = geom2::Point_3(0, 0, -2);
+        wing.sections[1].set_chord_length(1.0);
+        wing.sections[2].origin = geom2::Point_3(0, 0, -4);
+        wing.sections[2].set_chord_length(1.0);
+    }
+
+    geom2::MultisectionSurface<AirfoilSection> wing{};
+};
+
+class MeasureTwistedWing : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        Polygon_2 shape{};
+        shape.push_back(Point_2(0, 0));
+        shape.push_back(Point_2(0.5, 0.2));
+        shape.push_back(Point_2(1.0, 0.0));
+        shape.push_back(Point_2(0.5, 0.0));
+
+        /* Create the airfoil */
+        AirfoilSection airfoil{shape};
+
+        /* Create a simple wing surface with 2 sections */
+        wing.sections.emplace_back(airfoil);
+        wing.sections.emplace_back(airfoil);
+        wing.sections.emplace_back(airfoil);
+        wing.sections[0].origin = geom2::Point_3(0, 0, 0);
+        wing.sections[0].set_chord_length(3.0);
+        wing.sections[0].set_twist_angle(0.0);
+        wing.sections[1].origin = geom2::Point_3(0, 0, -2);
+        wing.sections[1].set_chord_length(1.0);
+        wing.sections[1].set_twist_angle(10.0 * geom2::detail::to_radians);
+        wing.sections[2].origin = geom2::Point_3(0, 0, -4);
+        wing.sections[2].set_chord_length(1.0);
+        wing.sections[2].set_twist_angle(0.0);
+    }
+
+    geom2::MultisectionSurface<AirfoilSection> wing{};
+};
+
+class MeasureWingWithDihedral : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create the shape */
+        Polygon_2 shape{};
+        shape.push_back(Point_2(0, 0));
+        shape.push_back(Point_2(0.5, 0.2));
+        shape.push_back(Point_2(1.0, 0.0));
+        shape.push_back(Point_2(0.5, 0.0));
+
+        /* Create the airfoil */
+        AirfoilSection airfoil{shape};
+
+        /* Create a simple wing surface with 2 sections */
+        wing.sections.emplace_back(airfoil);
+        wing.sections.emplace_back(airfoil);
+        wing.sections.emplace_back(airfoil);
+        wing.sections[0].origin = geom2::Point_3(0, 0, 0);
+        wing.sections[0].set_chord_length(3.0);
+        wing.sections[1].origin = geom2::Point_3(0, 0, -2);
+        wing.sections[1].set_chord_length(1.0);
+        wing.sections[2].origin = geom2::Point_3(0, 2, -4);
+        wing.sections[2].set_chord_length(1.0);
+    }
+
+    geom2::MultisectionSurface<AirfoilSection> wing{};
+};
+
+/* === Tests === */
+/**
+ * @brief Test calculating an empty surface area.
+ */
+TEST_F(MeasurePolygon, CalculateEmptyArea)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+
+    /* Insert sections */
+    Vector_3 offset(1, 0, 1);
+    surface.sections.emplace_back(shape);
+
+    /* Check the surface area */
+    EXPECT_EQ(geom2::measure::area(surface), 0.0);
+}
+
+/**
+ * @brief Test calculating a surface area.
+ */
+TEST_F(MeasurePolygon, CalculateArea)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    PolygonBuilder builder;
+    Vector_3 offset(0, 0, 1);
+    builder.arrange(shape, offset, 3);
+    surface.sections = builder.get_result();
+
+    /* Check the surface area */
+    EXPECT_EQ(geom2::measure::area(surface), 16.0);
+}
+
+/**
+ * @brief Measure the area of a planar surface.
+ */
+TEST(MeasurePlanarSurface, CalculateArea)
+{
+    /* Create the surface */
+    geom2::Polygon_2 shape;
+    shape.push_back(geom2::Point_2(-1, 0));
+    shape.push_back(geom2::Point_2(1, 0));
+    geom2::MultisectionSurface<PolygonSection> surface;
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections.back().set_width(1.0);
+    surface.sections.back().origin = {0.2, 0, 3};
+
+    /* Check the surface area */
+    EXPECT_EQ(geom2::measure::area(surface), 4.5);
+}
+
+/**
+ * @brief Measure the local width of a surface.
+ */
+TEST_F(MeasurePolygon, CalculateLocalWidth)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    PolygonBuilder builder;
+    Vector_3 offset(0, 0, 1);
+    builder.arrange(shape, offset, 3);
+    surface.sections = builder.get_result();
+    surface.sections[0].set_width(3.0);
+    surface.sections[2].set_width(1.0);
+
+    /* Check the local width */
+    EXPECT_EQ(geom2::measure::width(surface, 0.0), 3.0);
+    EXPECT_EQ(geom2::measure::width(surface, 0.5), 2.5);
+    EXPECT_EQ(geom2::measure::width(surface, 2.0), 1.0);
+}
+
+/**
+ * @brief Measure the local width of a pyramid.
+ */
+TEST_F(MeasurePyramid, CalculateLocalWidth)
+{
+    /* Check the local width */
+    EXPECT_EQ(geom2::measure::width(pyramid, 0.0), 0.0);
+    EXPECT_EQ(geom2::measure::width(pyramid, 1.0), 1.0);
+    EXPECT_EQ(geom2::measure::width(pyramid, 2.0), 2.0);
+}
+
+/**
+ * @brief Test Measuring the max width of a polygon surface.
+ */
+TEST_F(MeasurePolygon, WidthMax)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections[0].set_width(0.2);
+    surface.sections[1].set_width(0.5);
+    surface.sections[2].set_width(0.3);
+
+    /* Check the max width */
+    EXPECT_EQ(geom2::measure::width_max(surface), 0.5);
+}
+
+/**
+ * @brief Test measuring the max width of a pyramid surface.
+ */
+TEST_F(MeasurePyramid, WidthMax)
+{
+    /* Check the max width */
+    EXPECT_EQ(geom2::measure::width_max(pyramid), 2.0);
+}
+
+/**
+ * @brief Measure the local height of a surface.
+ */
+TEST_F(MeasurePolygon, CalculateLocalHeight)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    PolygonBuilder builder;
+    Vector_3 offset(0, 0, 1);
+    builder.arrange(shape, offset, 3);
+    surface.sections = builder.get_result();
+
+    /* Check the local height */
+    EXPECT_EQ(geom2::measure::height(surface, 0.5), 2.0);
+}
+
+/**
+ * @brief Test measuring the max height of a polygon surface.
+ */
+TEST_F(MeasurePolygon, HeightMax)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections[0].set_height(0.2);
+    surface.sections[1].set_height(0.5);
+    surface.sections[1].origin = {0, 0, 1};
+    surface.sections[2].set_height(0.3);
+    surface.sections[2].origin = {0, 0, 2};
+
+    /* Check the max height */
+    EXPECT_EQ(geom2::measure::height_max(surface), 0.5);
+}
+
+/**
+ * @brief Test measuring the length of a polygon surface.
+ */
+TEST_F(MeasurePolygon, CalculateLength)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    PolygonBuilder builder;
+    Vector_3 offset(0, 0, 2);
+    builder.arrange(shape, offset, 3);
+    surface.sections = builder.get_result();
+
+    /* Check the length */
+    EXPECT_EQ(geom2::measure::length(surface), 4.0);
+}
+
+/**
+ * @brief Test measuring the thickness at x position
+ */
+TEST_F(MeasureAirfoil, ThicknessAtXPosition)
+{
+    /* Create the airfoil */
+    AirfoilSection airfoil{shape};
+    airfoil.set_chord_length(3.0);
+
+    /* Measure the thickness at X = 0.4 */
+    EXPECT_FLOAT_EQ(geom2::measure::thickness(airfoil, 0.4), 0.48);
+
+    /* Scale thickness and measure again */
+    airfoil.scale_thickness(2.0);
+    EXPECT_FLOAT_EQ(geom2::measure::thickness(airfoil, 0.4), 0.96);
+}
+
+/**
+ * @brief Test measuring the maximum thickness of an airfoil
+ */
+TEST_F(MeasureAirfoil, MaximumThickness)
+{
+    /* Create the airfoil */
+    AirfoilSection airfoil{shape};
+    airfoil.set_chord_length(3.0);
+
+    /* Measure the maximum thickness */
+    EXPECT_FLOAT_EQ(geom2::measure::thickness_max(airfoil), 0.60);
+
+    /* Scale thickness and measure again */
+    airfoil.scale_thickness(2.0);
+    EXPECT_FLOAT_EQ(geom2::measure::thickness_max(airfoil), 1.20);
+}
+
+/**
+ * @brief Test measuring the top and bottom point at x position
+ */
+TEST_F(MeasureAirfoil, TopAndBottomAtXPosition)
+{
+    /* Create the airfoil */
+    AirfoilSection airfoil{shape};
+    airfoil.set_chord_length(3.0);
+
+    /* Measure the thickness at X = 0.4 */
+    auto [top, bottom] = geom2::measure::top_and_bottom(airfoil.get_contour(false), 0.4);
+    EXPECT_NEAR(top.x(), 0.4, 1e-3);
+    EXPECT_NEAR(top.y(), 0.16, 1e-3);
+    EXPECT_NEAR(bottom.x(), 0.4, 1e-3);
+    EXPECT_NEAR(bottom.y(), 0.0, 1e-3);
+}
+
+/**
+ * @brief Test measuring the wetted area of a planar wing.
+ */
+TEST_F(MeasurePlanarWing, WettedArea)
+{
+    /* Measure the wetted area */
+    EXPECT_NEAR(geom2::measure::area(wing), 12.606, 1e-3);
+
+    /* Measure the wetted area as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::area(wing), 2*12.606, 1e-3);
+}
+
+/**
+ * @brief Test measuring the chord length at span position of a planar wing
+ */
+TEST_F(MeasurePlanarWing, ChordLength)
+{
+    /* Measure the chord length at different positions */
+    EXPECT_FLOAT_EQ(geom2::measure::chord(wing, 0.0), 3.0);
+    EXPECT_FLOAT_EQ(geom2::measure::chord(wing, -1.0), 2.0);
+    EXPECT_FLOAT_EQ(geom2::measure::chord(wing, -2.0), 1.0);
+
+    /* A symmetric wing can also be measured in the opposite direction */
+    wing.is_symmetric = true;
+    EXPECT_FLOAT_EQ(geom2::measure::chord(wing, 1.0), 2.0);
+}
+
+/**
+ * @brief Test measuring the chord length at span position of a twisted wing
+ */
+TEST_F(MeasureTwistedWing, ChordLength)
+{
+    /* Measure the chord length at span position 0.5 */
+    EXPECT_FLOAT_EQ(geom2::measure::chord(wing, 0.0), 3.0);
+    EXPECT_FLOAT_EQ(geom2::measure::chord(wing, -1.0), 2.0);
+    EXPECT_FLOAT_EQ(geom2::measure::chord(wing, -2.0), 1.0);
+}
+
+/**
+ * @brief Test measuring the span of a planar wing
+ */
+TEST_F(MeasurePlanarWing, Span)
+{
+    /* Measure the span */
+    EXPECT_FLOAT_EQ(geom2::measure::span(wing), 4.0);
+
+    /* Measure the span as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_FLOAT_EQ(geom2::measure::span(wing), 8.0);
+}
+
+/**
+ * @brief Test measuring the span of a twisted wing
+ */
+TEST_F(MeasureTwistedWing, Span)
+{
+    /* Measure the span */
+    EXPECT_FLOAT_EQ(geom2::measure::span(wing), 4.0);
+}
+
+/**
+ * @brief Test measuring the span of a wing with dihedral
+ */
+TEST_F(MeasureWingWithDihedral, Span)
+{
+    /* Measure the span */
+    EXPECT_FLOAT_EQ(geom2::measure::span(wing), 4.0);
+}
+
+/**
+ * @brief Test measuring the leading edge offset of a planar wing
+ */
+TEST_F(MeasurePlanarWing, OffsetLE)
+{
+    /* Measure the leading edge offset */
+    EXPECT_EQ(geom2::measure::offset_LE(wing, -1.0), geom2::Point_3(0, 0, -1));
+
+    /* Move the outer wing section in x direction and check the resulting offset */
+    wing.sections[1].origin = geom2::Point_3(1, 0, -2);
+    EXPECT_EQ(geom2::measure::offset_LE(wing, -1.0), geom2::Point_3(0.5, 0, -1));
+    
+    /* A symmetric wing can also be measured on the other side */
+    wing.is_symmetric = true;
+    EXPECT_EQ(geom2::measure::offset_LE(wing, 1.0), geom2::Point_3(0.5, 0, 1));
+}
+
+/**
+ * @brief Test measuring the leading edge offset of a wing with dihedral
+ */
+TEST_F(MeasureWingWithDihedral, OffsetLE)
+{
+    /* Check the resulting offset */
+    EXPECT_EQ(geom2::measure::offset_LE(wing, -3.0), geom2::Point_3(0, 1, -3));
+}
+
+/**
+ * @brief Measure the sweep angle of a planar wing at an arbitrary chord offset.
+ */
+TEST_F(MeasurePlanarWing, Sweep)
+{
+    /* Measure the sweep angle */
+    EXPECT_NEAR(geom2::measure::sweep(wing, -0.5, 0.00), 0.0 * geom2::detail::to_radians, 1e-3);
+    EXPECT_NEAR(geom2::measure::sweep(wing, -0.5, 1.00), 45.0 * geom2::detail::to_radians, 1e-3);
+    EXPECT_NEAR(geom2::measure::sweep(wing, -0.5, 0.25), 14.0 * geom2::detail::to_radians, 1e-1);
+
+    /* Move the middle section back and measure again */
+    wing.sections[1].origin = geom2::Point_3(2.0, 0, -2);
+    EXPECT_NEAR(geom2::measure::sweep(wing, -0.5, 0.00), -45.0 * geom2::detail::to_radians, 1e-3);
+    EXPECT_NEAR(geom2::measure::sweep(wing, -0.5, 1.00), 0.0 * geom2::detail::to_radians, 1e-3);
+
+    /* A symmetric wing can also be measured on the other side */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::sweep(wing, 0.5, 0.00), -45.0 * geom2::detail::to_radians, 1e-3);
+}
+
+/**
+ * @brief Measure the sweep angle of a twisted wing at an arbitrary chord offset.
+ */
+TEST_F(MeasureTwistedWing, Sweep)
+{
+    GTEST_SKIP() << "How is the sweep angle of a twisted wing defined? Should it be the projected angle or the 3D angle?";
+}
+
+/**
+ * @brief Measure the projected reference area of a planar wing
+ */
+TEST_F(MeasurePlanarWing, ReferenceArea)
+{
+    /* Measure the reference area */
+    EXPECT_FLOAT_EQ(geom2::measure::reference_area(wing), 6.0);
+
+    /* Measure the reference area as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_FLOAT_EQ(geom2::measure::reference_area(wing), 12.0);
+
+    /* Measure the area when the extrusion is in positive Z direction */
+    wing.is_symmetric = false;
+    wing.sections[1].origin = geom2::Point_3(0, 0, 2);
+    wing.sections[2].origin = geom2::Point_3(0, 0, 4);
+    EXPECT_FLOAT_EQ(geom2::measure::reference_area(wing), 6.0);
+
+    /* Measure the area as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_FLOAT_EQ(geom2::measure::reference_area(wing), 12.0);
+}
+
+/**
+ * @brief Measure the projected reference area of a twisted wing
+ */
+TEST_F(MeasureTwistedWing, ReferenceArea)
+{
+    /* Measure the reference area */
+    EXPECT_NEAR(geom2::measure::reference_area(wing), 5.969, 1e-3);
+}
+
+/**
+ * @brief Measure the projected reference area of a wing with dihedral
+ */
+TEST_F(MeasureWingWithDihedral, ReferenceArea)
+{
+    /* Measure the reference area */
+    EXPECT_FLOAT_EQ(geom2::measure::reference_area(wing), 6.0);
+}
+
+/**
+ * @brief Measure the dihedral angle of a planar wing
+ */
+TEST_F(MeasurePlanarWing, Dihedral)
+{
+    /* Measure the dihedral angle */
+    EXPECT_FLOAT_EQ(geom2::measure::dihedral(wing, -3.0), 0.0);
+}
+
+/**
+ * @brief Measure the dihedral angle of a twisted wing
+ */
+TEST_F(MeasureTwistedWing, Dihedral)
+{
+    /* Measure the dihedral angle */
+    EXPECT_FLOAT_EQ(geom2::measure::dihedral(wing, -3.0), 0.0);
+}
+
+/**
+ * @brief Measure the dihedral angle of a wing with dihedral
+ */
+TEST_F(MeasureWingWithDihedral, Dihedral)
+{
+    /* Measure the dihedral angle */
+    EXPECT_NEAR(geom2::measure::dihedral(wing, -3.0), 45.0 * geom2::detail::to_radians, 1e-3);
+
+    /* Measure a negative dihedral angle */
+    wing.sections.back().origin = geom2::Point_3(0, -2, -4);
+    EXPECT_NEAR(geom2::measure::dihedral(wing, -3.0), -45.0 * geom2::detail::to_radians, 1e-3);
+
+    /* A symmetric wing can also be measured on the other side */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::dihedral(wing, 3.0), -45.0 * geom2::detail::to_radians, 1e-3);
+}
+
+/**
+ * @brief Measure the twist of a planar wing.
+ */
+TEST_F(MeasurePlanarWing, Twist)
+{
+    /* Measure the twist angle */
+    EXPECT_FLOAT_EQ(geom2::measure::twist(wing, -3.0), 0.0);
+
+    /* Measure the twist angle of a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_FLOAT_EQ(geom2::measure::twist(wing, 3.0), 0.0);
+}
+
+/**
+ * @brief Measure the twist of a wing with dihedral.
+ */
+TEST_F(MeasureWingWithDihedral, Twist)
+{
+    /* Measure the twist angle */
+    EXPECT_FLOAT_EQ(geom2::measure::twist(wing, -3.0), 0.0);
+
+    /* Measure the twist angle of a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_FLOAT_EQ(geom2::measure::twist(wing, 3.0), 0.0);
+}
+
+/**
+ * @brief Measure the twist of a twisted wing.
+ */
+TEST_F(MeasureTwistedWing, Twist)
+{
+    /* Set the twist of the wing to an even value in rad */
+    wing.sections[1].set_twist_angle(0.1);
+
+    /* Measure the twist angle */
+    EXPECT_NEAR(geom2::measure::twist(wing, -2.0), 0.10, 1e-3);
+    EXPECT_NEAR(geom2::measure::twist(wing, -3.0), 0.05, 1e-3);
+    EXPECT_NEAR(geom2::measure::twist(wing, -4.0), 0.00, 1e-3);
+
+    /* Measure the twist of a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::twist(wing, 2.0), 0.10, 1e-3);
+    EXPECT_NEAR(geom2::measure::twist(wing, 3.0), 0.05, 1e-3);
+    EXPECT_NEAR(geom2::measure::twist(wing, 4.0), 0.00, 1e-3);
+}
+
+/**
+ * @brief Measure the volume of a polygon surface.
+ */
+TEST_F(MeasurePolygon, Volume)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections.back().origin = {0, 0, 5};
+
+    /* Measure the volume */
+    EXPECT_FLOAT_EQ(geom2::measure::volume(surface), 20.0);
+
+    /* Add another section and measure again */
+    surface.sections.emplace_back(shape);
+    surface.sections.back().origin = {0, 0, 10};
+    EXPECT_FLOAT_EQ(geom2::measure::volume(surface), 40.0);
+}
+
+/**
+ * @brief Measure the volume of a planar wing surface.
+ */
+TEST_F(MeasurePlanarWing, Volume)
+{
+    /* Measure the volume */
+    EXPECT_NEAR(geom2::measure::volume(wing), 1.066, 1e-3);
+
+    /* Measure the volume as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::volume(wing), 2*1.066, 2e-3);
+}
+
+/**
+ * @brief Measure the aspect ratio of a planar wing surface.
+ */
+TEST_F(MeasurePlanarWing, AspectRatio)
+{
+    /* Measure the aspect ratio of the wing */
+    EXPECT_NEAR(geom2::measure::aspect_ratio(wing), (16.0/6.0), 1e-3);
+
+    /* Measure the aspect ratio as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::aspect_ratio(wing), (64.0/12.0), 1e-3);
+}
+
+/**
+ * @brief Measure the taper ratio of a planar wing surface.
+ */
+TEST_F(MeasurePlanarWing, TaperRatio)
+{
+    /* Measure the taper ratio of the wing */
+    EXPECT_NEAR(geom2::measure::taper_ratio(wing), (1.0/3.0), 1e-3);
+
+    /* Measure the taper ratio as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::taper_ratio(wing), (1.0/3.0), 1e-3);
+}
+
+/**
+ * @brief Measure the mean aerodynamic chord of a planar wing surface.
+ */
+TEST_F(MeasurePlanarWing, MeanAerodynamicChord)
+{
+    /* Measure the mean aerodynamic chord of the wing */
+    EXPECT_NEAR(geom2::measure::mean_aerodynamic_chord(wing), 1.777, 1e-3);
+
+    /* Measure the mean aerodynamic chord as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::mean_aerodynamic_chord(wing), 1.777, 1e-3);
+}
+
+/**
+ * @brief Measure the span position of the mean aerodynamic chord of a planar wing surface.
+ */
+TEST_F(MeasurePlanarWing, MeanAerodynamicChordPosition)
+{
+    /* Measure the mean aerodynamic chord position of the wing */
+    EXPECT_NEAR(geom2::measure::mean_aerodynamic_chord_position(wing), -1.555, 1e-3);
+
+    /* Measure the mean aerodynamic chord position as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::mean_aerodynamic_chord_position(wing), -1.555, 1e-3);
+
+    /* Test when the main extrusion is in positive local Z direction */
+    wing.is_symmetric = false;
+    wing.sections[1].origin = geom2::Point_3(0, 0, 2);
+    wing.sections[2].origin = geom2::Point_3(0, 0, 4);
+    EXPECT_NEAR(geom2::measure::mean_aerodynamic_chord_position(wing), 1.555, 1e-3);
+
+    /* Measure the mean aerodynamic chord position as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::mean_aerodynamic_chord_position(wing), 1.555, 1e-3);
+}
+
+/**
+ * @brief Measure the span position of the mean aerodynamic chord of a wing surface
+ * with dihedral.
+ */
+TEST_F(MeasureWingWithDihedral, MeanAerodynamicChordPosition)
+{
+    /* Increase the initial dihedral to increase its effect on the segment area */
+    wing.sections.back().origin = geom2::Point_3(0, 4, -4);
+
+    /* Measure the mean aerodynamic chord position of the wing */
+    EXPECT_NEAR(geom2::measure::mean_aerodynamic_chord_position(wing), -1.555, 1e-3);
+
+    /* Measure the mean aerodynamic chord position as a symmetric wing */
+    wing.is_symmetric = true;
+    EXPECT_NEAR(geom2::measure::mean_aerodynamic_chord_position(wing), -1.555, 1e-3);
+}
+
+/**
+ * @brief Measure the geometric centers of a polygon surface.
+ */
+TEST_F(MeasurePolygon, Centroids)
+{
+    /* Create a segment */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections[0].origin = {1, 0, 0};
+    surface.sections[0].set_width(2.0);
+    surface.sections[1].origin = {0, 0.5, 1};
+    surface.sections[1].set_width(1.0);
+    surface.sections[2].origin = {0, 0, 2};
+    surface.sections[2].set_width(1.0);
+
+    /* Measure the centroids */
+    std::vector<geom2::Point_3> centroids = geom2::measure::centroids(surface);
+
+    /* Check the centroids */
+    ASSERT_EQ(centroids.size(), surface.sections.size() - 1);
+    EXPECT_EQ(centroids[0], geom2::Point_3(0.5, 0.25, 0.5));
+    EXPECT_EQ(centroids[1], geom2::Point_3(0.0, 0.25, 1.5));
+}
+
+/**
+ * @brief Test measuring the geometric centers of a planar wing
+ */
+TEST_F(MeasurePlanarWing, Centroids)
+{
+    /* Measure the centroid */
+    std::vector<geom2::Point_3> centroids = geom2::measure::centroids(wing);
+
+    /* Check the centroids */
+    ASSERT_EQ(centroids.size(), wing.sections.size() - 1);
+    EXPECT_EQ(centroids[0], geom2::Point_3(1.0, 0, -1));
+    EXPECT_EQ(centroids[1], geom2::Point_3(0.5, 0, -3));
+}
+
+/**
+ * @brief Test the barycenter of a polygon surface.
+ */
+TEST_F(MeasurePolygon, Centroid)
+{
+    /* Create a segment */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections[0].origin = {1, 0, 0};
+    surface.sections[0].set_width(2.0);
+    surface.sections[1].origin = {0, 0.5, 1};
+    surface.sections[1].set_width(1.0);
+    surface.sections[2].origin = {0, 0, 2};
+    surface.sections[2].set_width(1.0);
+
+    /* Measure the barycenter */
+    geom2::Point_3 centroid = geom2::measure::centroid(surface);
+
+    /* Check the barycenter */
+    EXPECT_EQ(centroid, geom2::Point_3(0.25, 0.25, 1.0));
+}
+
+/**
+ * @brief Test measuring the barycenter of a planar wing
+ */
+TEST_F(MeasurePlanarWing, Centroid)
+{
+    /* Measure the barycenter */
+    geom2::Point_3 centroid = geom2::measure::centroid(wing);
+
+    /* Check the barycenter */
+    EXPECT_EQ(centroid, geom2::Point_3(0.75, 0, -2));
+
+    /* Measure the barycenter as a symmetric wing */
+    wing.is_symmetric = true;
+    centroid = geom2::measure::centroid(wing);
+    EXPECT_EQ(centroid, geom2::Point_3(0.75, 0, 0));
+};
+
+/**
+ * @brief Test measuring the inertia of a simple polygon cube.
+ */
+TEST_F(MeasurePolygon, Inertia)
+{
+    /* Create the cube surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    surface.sections.emplace_back(shape);
+    surface.sections.emplace_back(shape);
+    surface.sections[1].origin = {0, 0, 1};
+
+    /* Get the inertia tensor in respect to the CG */
+    auto I = geom2::measure::inertia(surface);
+
+    /* Test the Ixx result */
+    EXPECT_NEAR(I(0,0), 6.000, 1e-1);
+    /* Test the Iyy result */
+    EXPECT_NEAR(I(1,1), 6.000, 1e-1);
+    /* Test the Izz result */
+    EXPECT_NEAR(I(2,2), 10.667, 1e-1);
+
+    /* Test the Ixy result */
+    EXPECT_NEAR(I(0,1), 0.000, 1e-1);
+    /* Test the Ixz result */
+    EXPECT_NEAR(I(0,2), 0.000, 1e-1);
+    /* Test the Iyz result */
+    EXPECT_NEAR(I(1,2), 0.000, 1e-1);
+
+    /* Test the Iyx result */
+    EXPECT_NEAR(I(1,0), 0.000, 1e-1);
+    /* Test the Izx result */
+    EXPECT_NEAR(I(2,0), 0.000, 1e-1);
+    /* Test the Izy result */
+    EXPECT_NEAR(I(2,1), 0.000, 1e-1);
+}
+
+/**
+ * @brief Test measuring the inertia of a simple planar wing.
+ */
+TEST_F(MeasurePlanarWing, Inertia)
+{
+    /* Get the inertia tensor */
+    auto I = geom2::measure::inertia(wing);
+
+    /* Test the Ixx result */
+    EXPECT_NEAR(I(0,0), 17.560, 1e-1);
+    /* Test the Iyy result */
+    EXPECT_NEAR(I(1,1), 22.197, 1e-1);
+    /* Test the Izz result */
+    EXPECT_NEAR(I(2,2), 5.021, 1e-1);
+
+    /* Test the Ixy result */
+    EXPECT_NEAR(I(0,1), 0.147, 1e-1);
+    /* Test the Ixz result */
+    EXPECT_NEAR(I(0,2), 5.178, 1e-1);
+    /* Test the Iyz result */
+    EXPECT_NEAR(I(1,2), 0.506, 1e-1);
+
+    /* Test the Iyx result */
+    EXPECT_DOUBLE_EQ(I(1,0), I(0,1));
+    /* Test the Izx result */
+    EXPECT_DOUBLE_EQ(I(2,0), I(0,2));
+    /* Test the Izy result */
+    EXPECT_DOUBLE_EQ(I(2,1), I(1,2));
+
+    /* Measure a symmetric wing */
+    wing.is_symmetric = true;
+    auto inertia_sym = geom2::measure::inertia(wing);
+    EXPECT_EQ(I, inertia_sym);
+}
+
+/**
+ * @brief Test measuring the center of a polygon surface.
+ */
+TEST_F(MeasureCone, Center)
+{
+    /* Measure center at z = 0.0 */
+    geom2::Point_3 center = geom2::measure::center(cone, 0.0);
+    EXPECT_NEAR(center.x(), 0.0, 1e-3);
+    EXPECT_NEAR(center.y(), 0.0, 1e-3);
+    EXPECT_NEAR(center.z(), 0.0, 1e-3);
+
+    /* Measure center at z = 1.0 */
+    center = geom2::measure::center(cone, 1.0);
+    EXPECT_NEAR(center.x(), 0.0, 1e-3);
+    EXPECT_NEAR(center.y(), 0.25 / 3, 1e-3);
+    EXPECT_NEAR(center.z(), 1.0, 1e-3);
+
+    /* Measure center at z = 1.5 */
+    center = geom2::measure::center(cone, 1.5);
+    EXPECT_NEAR(center.x(), 0.0, 1e-3);
+    EXPECT_NEAR(center.y(), 0.125, 1e-3);
+    EXPECT_NEAR(center.z(), 1.5, 1e-3);
+
+    /* Measure center at z = 2.0 */
+    center = geom2::measure::center(cone, 2.0);
+    EXPECT_NEAR(center.x(), 0.0, 1e-3);
+    EXPECT_NEAR(center.y(), 0.50 / 3, 1e-3);
+    EXPECT_NEAR(center.z(), 2.0, 1e-3);
+
+    /* Measure center at z = 3.0 */
+    center = geom2::measure::center(cone, 3.0);
+    EXPECT_NEAR(center.x(), 0.0, 1e-3);
+    EXPECT_NEAR(center.y(), 0.25, 1e-3);
+    EXPECT_NEAR(center.z(), 3.0, 1e-3);
+}
+
+/**
+ * @brief Test measuring the top of a polygon surface.
+ */
+TEST_F(MeasureCone, Top)
+{
+    /* Measure the top at z = 0.0 */
+    geom2::Point_3 top = geom2::measure::top(cone, 0.0);
+    EXPECT_NEAR(top.x(), 0.0, 1e-3);
+    EXPECT_NEAR(top.y(), 0.5, 1e-3);
+    EXPECT_NEAR(top.z(), 0.0, 1e-3);
+
+    /* Measure the top at z = 1.0 */
+    top = geom2::measure::top(cone, 1.0);
+    EXPECT_NEAR(top.x(), 0.0, 1e-3);
+    EXPECT_NEAR(top.y(), 0.5, 1e-3);
+    EXPECT_NEAR(top.z(), 1.0, 1e-3);
+
+    /* Measure the top at z = 1.5 */
+    top = geom2::measure::top(cone, 1.5);
+    EXPECT_NEAR(top.x(), 0.0, 1e-3);
+    EXPECT_NEAR(top.y(), 0.5, 1e-3);
+    EXPECT_NEAR(top.z(), 1.5, 1e-3);
+
+    /* Measure the top at z = 2.0 */
+    top = geom2::measure::top(cone, 2.0);
+    EXPECT_NEAR(top.x(), 0.0, 1e-3);
+    EXPECT_NEAR(top.y(), 0.5, 1e-3);
+    EXPECT_NEAR(top.z(), 2.0, 1e-3);
+
+    /* Measure the top at z = 3.0 */
+    top = geom2::measure::top(cone, 3.0);
+    EXPECT_NEAR(top.x(), 0.0, 1e-3);
+    EXPECT_NEAR(top.y(), 0.5, 1e-3);
+    EXPECT_NEAR(top.z(), 3.0, 1e-3);
+}
+
+/**
+ * @brief Test measuring the bottom of a polygon surface.
+ */
+TEST_F(MeasureCone, Bottom)
+{
+    /* Measure the bottom at z = 0.0 */
+    geom2::Point_3 bottom = geom2::measure::bottom(cone, 0.0);
+    EXPECT_NEAR(bottom.x(), 0.0, 1e-3);
+    EXPECT_NEAR(bottom.y(), -0.5, 1e-3);
+    EXPECT_NEAR(bottom.z(), 0.0, 1e-3);
+
+    /* Measure the bottom at z = 1.0 */
+    bottom = geom2::measure::bottom(cone, 1.0);
+    EXPECT_NEAR(bottom.x(), 0.0, 1e-3);
+    EXPECT_NEAR(bottom.y(), -1.0 / 3, 1e-3);
+    EXPECT_NEAR(bottom.z(), 1.0, 1e-3);
+
+    /* Measure the bottom at z = 1.5 */
+    bottom = geom2::measure::bottom(cone, 1.5);
+    EXPECT_NEAR(bottom.x(), 0.0, 1e-3);
+    EXPECT_NEAR(bottom.y(), -0.25, 1e-3);
+    EXPECT_NEAR(bottom.z(), 1.5, 1e-3);
+
+    /* Measure the bottom at z = 2.0 */
+    bottom = geom2::measure::bottom(cone, 2.0);
+    EXPECT_NEAR(bottom.x(), 0.0, 1e-3);
+    EXPECT_NEAR(bottom.y(), -1.0 / 6, 1e-3);
+    EXPECT_NEAR(bottom.z(), 2.0, 1e-3);
+
+    /* Measure the bottom at z = 3.0 */
+    bottom = geom2::measure::bottom(cone, 3.0);
+    EXPECT_NEAR(bottom.x(), 0.0, 1e-3);
+    EXPECT_NEAR(bottom.y(), 0.0, 1e-3);
+    EXPECT_NEAR(bottom.z(), 3.0, 1e-3);
+}
+
+/**
+ * @brief Test measuring the left of a polygon surface.
+ */
+TEST_F(MeasureCone, Left)
+{
+    /* Measure the left at z = 0.0 */
+    geom2::Point_3 left = geom2::measure::left(cone, 0.0);
+    EXPECT_NEAR(left.x(), -1.0, 1e-3);
+    EXPECT_NEAR(left.y(), 0.0, 1e-3);
+    EXPECT_NEAR(left.z(), 0.0, 1e-3);
+
+    /* Measure the left at z = 1.0 */
+    left = geom2::measure::left(cone, 1.0);
+    EXPECT_NEAR(left.x(), -0.833, 1e-3);
+    EXPECT_NEAR(left.y(), 0.25 / 3, 1e-3);
+    EXPECT_NEAR(left.z(), 1.0, 1e-3);
+
+    /* Measure the left at z = 1.5 */
+    left = geom2::measure::left(cone, 1.5);
+    EXPECT_NEAR(left.x(), -0.75, 1e-3);
+    EXPECT_NEAR(left.y(), 0.125, 1e-3);
+    EXPECT_NEAR(left.z(), 1.5, 1e-3);
+
+    /* Measure the left at z = 2.0 */
+    left = geom2::measure::left(cone, 2.0);
+    EXPECT_NEAR(left.x(), -0.666, 1e-3);
+    EXPECT_NEAR(left.y(), 0.166, 1e-3);
+    EXPECT_NEAR(left.z(), 2.0, 1e-3);
+
+    /* Measure the left at z = 3.0 */
+    left = geom2::measure::left(cone, 3.0);
+    EXPECT_NEAR(left.x(), -0.5, 1e-3);
+    EXPECT_NEAR(left.y(), 0.25, 1e-3);
+    EXPECT_NEAR(left.z(), 3.0, 1e-3);
+}
+
+/**
+ * @brief Test measuring the right of a polygon surface.
+ */
+TEST_F(MeasureCone, Right)
+{
+    /* Measure the right at z = 0.0 */
+    geom2::Point_3 right = geom2::measure::right(cone, 0.0);
+    EXPECT_NEAR(right.x(), 1.0, 1e-3);
+    EXPECT_NEAR(right.y(), 0.0, 1e-3);
+    EXPECT_NEAR(right.z(), 0.0, 1e-3);
+
+    /* Measure the right at z = 1.0 */
+    right = geom2::measure::right(cone, 1.0);
+    EXPECT_NEAR(right.x(), 0.833, 1e-3);
+    EXPECT_NEAR(right.y(), 0.25 / 3, 1e-3);
+    EXPECT_NEAR(right.z(), 1.0, 1e-3);
+
+    /* Measure the right at z = 1.5 */
+    right = geom2::measure::right(cone, 1.5);
+    EXPECT_NEAR(right.x(), 0.75, 1e-3);
+    EXPECT_NEAR(right.y(), 0.125, 1e-3);
+    EXPECT_NEAR(right.z(), 1.5, 1e-3);
+
+    /* Measure the right at z = 2.0 */
+    right = geom2::measure::right(cone, 2.0);
+    EXPECT_NEAR(right.x(), 0.666, 1e-3);
+    EXPECT_NEAR(right.y(), 0.166, 1e-3);
+    EXPECT_NEAR(right.z(), 2.0, 1e-3);
+
+    /* Measure the right at z = 3.0 */
+    right = geom2::measure::right(cone, 3.0);
+    EXPECT_NEAR(right.x(), 0.5, 1e-3);
+    EXPECT_NEAR(right.y(), 0.25, 1e-3);
+    EXPECT_NEAR(right.z(), 3.0, 1e-3);
+}
+
diff --git a/aircraftGeometry2/test/processing/test_transform.cpp b/aircraftGeometry2/test/processing/test_transform.cpp
new file mode 100644
index 00000000..d5e2fd63
--- /dev/null
+++ b/aircraftGeometry2/test/processing/test_transform.cpp
@@ -0,0 +1,935 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+#include <aircraftGeometry2/io/dat.h>
+#include <aircraftGeometry2/geometry/factory.h>
+
+/* Unit Under Test */
+#include "aircraftGeometry2/processing/transform.h"
+
+/* === Types ===*/
+using Entity3D = geom2::Entity3D;
+using Point_2 = geom2::Point_2;
+using Point_3 = geom2::Point_3;
+using Direction_3 = geom2::Direction_3;
+using Polygon_2 = geom2::Polygon_2;
+using PolygonSection = geom2::PolygonSection;
+
+/* === Fixtures ===*/
+class TransformPolygon : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Create Polygon and insert points resulting in a rotated square*/
+        Polygon_2 polygon;
+        polygon.push_back(Point_2{0, -1});
+        polygon.push_back(Point_2{0.5, -0.5});
+        polygon.push_back(Point_2{1, 0});
+        polygon.push_back(Point_2{0.5, 0.5});
+        polygon.push_back(Point_2{0, 1});
+        polygon.push_back(Point_2{-0.5, 0.5});
+        polygon.push_back(Point_2{-1, 0});
+        polygon.push_back(Point_2{-0.5, -0.5});
+
+        /* Create the section */
+        section = PolygonSection{polygon};
+    }
+
+    /* === Members === */
+    PolygonSection section{};
+    Entity3D parent{};
+};
+
+/* === Tests === */
+/**
+ * @brief Test transforming a 2D point to the parent coordinate system.
+ * of the entity.
+ */
+TEST(TransformPoint2DTo3D, Translation)
+{
+    /* Create the properties */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(0, 0, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+
+    /* Create the point to transform */
+    Point_2 point(1, 2);
+
+    /* Convert the point */
+    Point_3 point_transformed = geom2::transform::to_parent(entity, point);
+
+    /* Check the result */
+    EXPECT_EQ(point_transformed, Point_3(2, 4, 3));
+}
+
+/**
+ * @brief Test transforming a 3D point to the parent coordinate system.
+ * when the normal direction is not the z-axis.
+ */
+TEST(TransformPoint2DTo3D, RotateAroundX)
+{
+    /* Create the properties */
+    Point_3 location(0, 0, 0);
+    Direction_3 normal(0, 1, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+
+    /* Create the point to transform */
+    Point_2 point_x(1, 0);
+    Point_2 point_y(0, 1);
+
+    /* X coordinates should not be changed */
+    Point_3 point_transformed = geom2::transform::to_parent(entity, point_x);
+    EXPECT_EQ(point_transformed, Point_3(1, 0, 0));
+
+    /* Y Coordinates should be changed */
+    point_transformed = geom2::transform::to_parent(entity, point_y);
+    EXPECT_NEAR(point_transformed.x(), 0, 1e-6);
+    EXPECT_NEAR(point_transformed.y(), 0.707, 1e-3);
+    EXPECT_NEAR(point_transformed.z(), -0.707, 1e-3);
+}
+
+/**
+ * @brief Test transforming a 3D point to the parent coordinate system.
+ */
+TEST(TransformPoint3DTo3D, Translation)
+{
+    /* Create the properties */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(0, 0, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+
+    /* Create the point to transform */
+    const Point_3 point_local(1, 2, 3);
+
+    /* Convert the point */
+    Point_3 point_transformed = geom2::transform::to_parent(entity, point_local);
+
+    /* Check the result */
+    EXPECT_EQ(point_transformed, Point_3(2, 4, 6));
+}
+
+/**
+ * @brief Test transforming a 3D point back to the local coordinate system.
+ */
+TEST(TransformToLocal, Translation)
+{
+    /* Create the properties */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(0, 0, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+
+    /* Create the point to transform */
+    const Point_3 point_global(2, 4, 6);
+
+    /* Convert the point */
+    Point_3 point_local = geom2::transform::to_local(entity, point_global);
+
+    /* Check the result */
+    EXPECT_EQ(point_local, Point_3(1, 2, 3));
+}
+
+/**
+ * @brief Test transforming a 3D point to the parent coordinate system.
+ */
+TEST(TransformPoint3DTo3D, RotateAroundX)
+{
+    /* Create an entity with a positive rotation around x */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(0, 1, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+
+    /* Create the point to transform */
+    const Point_3 point_local(1, 2, 3);
+
+    /* Check result */
+    Point_3 point_transformed = geom2::transform::to_parent(entity, point_local);
+    EXPECT_NEAR(point_transformed.x(), 2, 1e-3);
+    EXPECT_NEAR(point_transformed.y(), 5.536, 1e-3);
+    EXPECT_NEAR(point_transformed.z(), 3.707, 1e-3);
+
+    /* Rotate in the other direction */
+    entity.normal = Direction_3(0, -1, 1);
+    point_transformed = geom2::transform::to_parent(entity, point_local);
+    EXPECT_NEAR(point_transformed.x(), 2, 1e-3);
+    EXPECT_NEAR(point_transformed.y(), 1.293, 1e-3);
+    EXPECT_NEAR(point_transformed.z(), 6.536, 1e-3);
+
+    /* Test +90 deg rotation */
+    entity.normal = Direction_3(0, 1, 0);
+    point_transformed = geom2::transform::to_parent(entity, point_local);
+    EXPECT_NEAR(point_transformed.x(), 2, 1e-3);
+    EXPECT_NEAR(point_transformed.y(), 5, 1e-3);
+    EXPECT_NEAR(point_transformed.z(), 1, 1e-3);
+
+    /* Test +135 deg rotation */
+    entity.normal = Direction_3(0, 1, -1);
+    point_transformed = geom2::transform::to_parent(entity, point_local);
+    EXPECT_NEAR(point_transformed.x(), 2, 1e-3);
+    EXPECT_NEAR(point_transformed.y(), 2.707, 1e-3);
+    EXPECT_NEAR(point_transformed.z(), -0.535, 1e-3);
+}
+
+/**
+ * @brief Test transforming a 3D point to the local coordinate system.
+ */
+TEST(TransformToLocal, RotateAroundX)
+{
+    /* Create an entity with a positive rotation around x */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(0, 1, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+
+    /* Create the point to transform */
+    Point_3 point_global(2.0, 5.536, 3.707);
+
+    /* Check result */
+    Point_3 point_local = geom2::transform::to_local(entity, point_global);
+    EXPECT_NEAR(point_local.x(), 1.0, 1e-3);
+    EXPECT_NEAR(point_local.y(), 2.0, 1e-3);
+    EXPECT_NEAR(point_local.z(), 3.0, 1e-3);
+
+    /* Rotate in the other direction */
+    entity.normal = Direction_3(0, -1, 1);
+    point_global = Point_3(2.0, 1.293, 6.536);
+    point_local = geom2::transform::to_local(entity, point_global);
+    EXPECT_NEAR(point_local.x(), 1.0, 1e-3);
+    EXPECT_NEAR(point_local.y(), 2.0, 1e-3);
+    EXPECT_NEAR(point_local.z(), 3.0, 1e-3);
+
+    /* Test +90 deg rotation */
+    entity.normal = Direction_3(0, 1, 0);
+    point_global = Point_3(2.0, 5.0, 1.0);
+    point_local = geom2::transform::to_local(entity, point_global);
+    EXPECT_NEAR(point_local.x(), 1.0, 1e-3);
+    EXPECT_NEAR(point_local.y(), 2.0, 1e-3);
+    EXPECT_NEAR(point_local.z(), 3.0, 1e-3);
+
+    /* Test +135 deg rotation */
+    entity.normal = Direction_3(0, 1, -1);
+    point_global = Point_3(2.0, 2.707, -0.535);
+    point_local = geom2::transform::to_local(entity, point_global);
+    EXPECT_NEAR(point_local.x(), 1.0, 1e-3);
+    EXPECT_NEAR(point_local.y(), 2.0, 1e-3);
+    EXPECT_NEAR(point_local.z(), 3.0, 1e-3);
+}
+
+/**
+ * @brief Test transforming a 3D point to the parent coordinate system.
+ */
+TEST(TransformPoint3DTo3D, RotateAroundY)
+{
+    /* Create an entity with a positive rotation around y */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(1, 0, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+
+    /* Create the point to transform */
+    const Point_3 point_local(1, 2, 3);
+
+    /* Check result */
+    Point_3 point_transformed = geom2::transform::to_parent(entity, point_local);
+    EXPECT_NEAR(point_transformed.x(), 1.707, 1e-3);
+    EXPECT_NEAR(point_transformed.y(), 3.0, 1e-3);
+    EXPECT_NEAR(point_transformed.z(), 6.536, 1e-3);
+
+    /* Rotate in the other direction */
+    entity.normal = Direction_3(-1, 0, 1);
+    point_transformed = geom2::transform::to_parent(entity, point_local);
+    EXPECT_NEAR(point_transformed.x(), -2.536, 1e-3);
+    EXPECT_NEAR(point_transformed.y(), 3, 1e-3);
+    EXPECT_NEAR(point_transformed.z(), 3.707, 1e-3);
+
+    /* Test +135 deg rotation */
+    entity.normal = Direction_3(1, 0, -1);
+    point_transformed = geom2::transform::to_parent(entity, point_local);
+    EXPECT_NEAR(point_transformed.x(), 4.536, 1e-3);
+    EXPECT_NEAR(point_transformed.y(), 3.0, 1e-3);
+    EXPECT_NEAR(point_transformed.z(), 2.293, 1e-3);
+}
+
+/**
+ * @brief Test transforming a 3D point to the local coordinate system.
+ */
+TEST(TransformToLocal, RotateAroundY)
+{
+    /* Create an entity with a positive rotation around y */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(1, 0, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+
+    /* Create the point to transform */
+    Point_3 point_global(1.707, 3.0, 6.536);
+
+    /* Check result */
+    Point_3 point_local = geom2::transform::to_local(entity, point_global);
+    EXPECT_NEAR(point_local.x(), 1.0, 1e-3);
+    EXPECT_NEAR(point_local.y(), 2.0, 1e-3);
+    EXPECT_NEAR(point_local.z(), 3.0, 1e-3);
+
+    /* Rotate in the other direction */
+    entity.normal = Direction_3(-1, 0, 1);
+    point_global = Point_3(-2.536, 3, 3.707);
+    point_local = geom2::transform::to_local(entity, point_global);
+    EXPECT_NEAR(point_local.x(), 1.0, 1e-3);
+    EXPECT_NEAR(point_local.y(), 2.0, 1e-3);
+    EXPECT_NEAR(point_local.z(), 3.0, 1e-3);
+
+    /* Test +135 deg rotation */
+    entity.normal = Direction_3(1, 0, -1);
+    point_global = Point_3(4.536, 3.0, 2.293);
+    point_local = geom2::transform::to_local(entity, point_global);
+    EXPECT_NEAR(point_local.x(), 1.0, 1e-3);
+    EXPECT_NEAR(point_local.y(), 2.0, 1e-3);
+    EXPECT_NEAR(point_local.z(), 3.0, 1e-3);
+}
+
+/**
+ * @brief Test transforming a 3D point by introducing a rotation around z.
+ */
+TEST(TransformPoint3DTo3D, RotateAroundZ)
+{
+    /* Create an entity with a positive rotation around z */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(0, 0, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+    entity.rotation_z = 0.7854; // 45 degree
+
+    /* Create the point to transform */
+    const Point_3 point_local(1, 2, 3);
+
+    /* Check result */
+    Point_3 point_transformed = geom2::transform::to_parent(entity, point_local);
+    EXPECT_NEAR(point_transformed.x(), 0.293, 1e-3);
+    EXPECT_NEAR(point_transformed.y(), 4.121, 1e-3);
+    EXPECT_NEAR(point_transformed.z(), 6.0, 1e-3);
+
+    /* Rotate in the other direction */
+    // point_transformed = geom2::transform::toParent(entity, point_local);
+    // EXPECT_NEAR(point_transformed.x(), 0.586, 1e-3);
+    // EXPECT_NEAR(point_transformed.y(), 0.586, 1e-3);
+    // EXPECT_NEAR(point_transformed.z(), 3.0, 1e-3);
+}
+
+/**
+ * @brief Test transforming a 3D point to the local system by introducing a rotation around z.
+ */
+TEST(TransformToLocal, RotateAroundZ)
+{
+    /* Create an entity with a positive rotation around z */
+    Point_3 location(1, 2, 3);
+    Direction_3 normal(0, 0, 1);
+    std::string name("test");
+
+    /* Create default entity */
+    Entity3D entity{name, location, normal};
+    entity.rotation_z = 0.7854; // 45 degree
+
+    /* Create the point to transform */
+    Point_3 point_global(0.293, 4.121, 6.0);
+
+    /* Check result */
+    Point_3 point_local = geom2::transform::to_local(entity, point_global);
+    EXPECT_NEAR(point_local.x(), 1.0, 1e-3);
+    EXPECT_NEAR(point_local.y(), 2.0, 1e-3);
+    EXPECT_NEAR(point_local.z(), 3.0, 1e-3);
+}
+
+/**
+ * @brief Test converting two polygon sections to a surface mesh.
+ *
+ */
+TEST(TransformToSurfaceMesh, TwoSections)
+{
+    /* Create the shape */
+    Polygon_2 shape;
+    shape.push_back(Point_2{-1, -1});
+    shape.push_back(Point_2{1, -1});
+    shape.push_back(Point_2{1, 1});
+    shape.push_back(Point_2{-1, 1});
+
+    /* Create the sections */
+    std::vector<PolygonSection> sections;
+    sections.emplace_back(shape);
+    sections.emplace_back(shape);
+
+    /* Position the sections */
+    sections[0].origin = {0, 0, 0};
+    sections[1].origin = {0, 0, 1};
+
+    /* Convert the sections */
+    geom2::Mesh mesh = geom2::transform::to_mesh(sections);
+
+    /* Check the result */
+    EXPECT_EQ(mesh.number_of_vertices(), 8);
+    EXPECT_EQ(mesh.number_of_faces(), 8);
+}
+
+/**
+ * @brief Test converting two polygon sections which form a pyramid to a surface mesh.
+ *
+ */
+TEST(TransformToSurfaceMesh, PyramidTwoSections)
+{
+    /* Create the shapes */
+    Polygon_2 tip;
+    tip.push_back(Point_2{0, 0});
+    Polygon_2 shape;
+    shape.push_back(Point_2{-1, -1});
+    shape.push_back(Point_2{1, -1});
+    shape.push_back(Point_2{1, 1});
+    shape.push_back(Point_2{-1, 1});
+
+    /* Create the sections */
+    std::vector<PolygonSection> sections;
+    sections.emplace_back(tip);
+    sections.emplace_back(shape);
+
+    /* Position the sections */
+    sections[0].origin = {0, 0, 0};
+    sections[1].origin = {0, 0, 1};
+
+    /* Convert the sections */
+    geom2::Mesh mesh = geom2::transform::to_mesh(sections);
+
+    /* Check the result */
+    EXPECT_EQ(mesh.number_of_vertices(), 5);
+    EXPECT_EQ(mesh.number_of_faces(), 4);
+}
+
+/**
+ * @brief Test converting three polygon sections to a surface mesh.
+ *
+ */
+TEST(TransformToSurfaceMesh, ThreeSections)
+{
+    /* Create the shape */
+    Polygon_2 shape;
+    shape.push_back(Point_2{-1, -1});
+    shape.push_back(Point_2{1, -1});
+    shape.push_back(Point_2{1, 1});
+    shape.push_back(Point_2{-1, 1});
+
+    /* Create the sections */
+    std::vector<PolygonSection> sections;
+    sections.emplace_back(shape);
+    sections.emplace_back(shape);
+    sections.emplace_back(shape);
+
+    /* Position the sections */
+    sections[0].origin = {0, 0, 0};
+    sections[1].origin = {0, 0, 1};
+    sections[2].origin = {0, 0, 2};
+
+    /* Convert the sections */
+    geom2::Mesh mesh = geom2::transform::to_mesh(sections);
+
+    /* Check the result */
+    EXPECT_EQ(mesh.number_of_vertices(), 12);
+    EXPECT_EQ(mesh.number_of_faces(), 16);
+}
+
+/**
+ * @brief Test converting sections which have a different count of vertices
+ * to a surface mesh.
+ *
+ */
+TEST(TransformToSurfaceMesh, SectionsWithDifferentVertexCount)
+{
+    /* Create the shapes */
+    Polygon_2 square;
+    square.push_back(Point_2{-1, -1});
+    square.push_back(Point_2{1, -1});
+    square.push_back(Point_2{1, 1});
+    square.push_back(Point_2{-1, 1});
+    Polygon_2 single_point;
+    single_point.push_back(Point_2{0, 0});
+
+    /* Create the sections */
+    std::vector<PolygonSection> sections;
+    sections.emplace_back(square);
+    sections.emplace_back(single_point);
+
+    /* Position the sections */
+    sections[0].origin = {0, 0, 0};
+    sections[1].origin = {0, 0, 1};
+
+    /* Convert the sections */
+    geom2::Mesh mesh = geom2::transform::to_mesh(sections);
+
+    /* Check the result */
+    EXPECT_EQ(mesh.number_of_vertices(), 5);
+    EXPECT_EQ(mesh.number_of_faces(), 4);
+}
+
+/**
+ * @brief Test getting the top reflection point of a section.
+ */
+TEST_F(TransformPolygon, GetReflectionPointTop)
+{
+    /* Test top outline point in x direction */
+    Point_3 top_reflection = geom2::transform::get_reflection_point_top(section, parent, geom2::Direction_3(1, 0, 0));
+    EXPECT_EQ(top_reflection, Point_3(0, 1, 0));
+
+    /* Test top outline point in y direction */
+    top_reflection = geom2::transform::get_reflection_point_top(section, parent, geom2::Direction_3(0, 1, 0));
+    EXPECT_EQ(top_reflection, Point_3(-1, 0, 0));
+
+    /* Test when the parent has an offset in x direction */
+    parent.origin = Point_3(1, 0, 0);
+    top_reflection = geom2::transform::get_reflection_point_top(section, parent, geom2::Direction_3(1, 0, 0));
+    EXPECT_EQ(top_reflection, Point_3(1, 1, 0));
+
+    /* Test when the parent has an offset in y direction */
+    parent.origin = Point_3(0, 1, 0);
+    top_reflection = geom2::transform::get_reflection_point_top(section, parent, geom2::Direction_3(0, 1, 0));
+    EXPECT_EQ(top_reflection, Point_3(-1, 1, 0));
+
+    /* Test when the parent has an offset in z direction */
+    parent.origin = Point_3(0, 0, 1);
+    top_reflection = geom2::transform::get_reflection_point_top(section, parent, geom2::Direction_3(1, 0, 0));
+    EXPECT_EQ(top_reflection, Point_3(0, 1, 1));
+
+    /* Test top outline in 45 degree */
+    parent.origin = Point_3(0, 0, 0);
+    top_reflection = geom2::transform::get_reflection_point_top(section, parent, geom2::Direction_3(1, 1, 0));
+    EXPECT_EQ(top_reflection, Point_3(0, 1, 0));
+
+    /* Change the normal direction of the parent */
+    parent.normal = geom2::Direction_3(0, 1, 1);
+    top_reflection = geom2::transform::get_reflection_point_top(section, parent, geom2::Direction_3(1, 0, 0));
+    EXPECT_NEAR(top_reflection.x(), 0, 1e-3);
+    EXPECT_NEAR(top_reflection.y(), 0.707, 1e-3);
+    EXPECT_NEAR(top_reflection.z(), -0.707, 1e-3);
+
+    /*
+    * Create Polygon and insert points resulting in a rotated square.
+    * The order of the points mimics the order of the circle dat file.
+    * This order did introduce a bug when getting the reflection point.
+    */
+    Polygon_2 polygon_asymmetric;
+    polygon_asymmetric.push_back(Point_2{1, 0});
+    polygon_asymmetric.push_back(Point_2{0.5, 0.5});
+    polygon_asymmetric.push_back(Point_2{0, 1});
+    polygon_asymmetric.push_back(Point_2{-0.5, 0.5});
+    polygon_asymmetric.push_back(Point_2{-1, 0});
+    polygon_asymmetric.push_back(Point_2{-0.5, -0.5});
+    polygon_asymmetric.push_back(Point_2{0, -1.5});
+    polygon_asymmetric.push_back(Point_2{0.5, -0.5});
+
+    /* Create the section */
+    parent.origin = Point_3(0, 0, 0);
+    parent.normal = geom2::Direction_3(0, 0, 1);
+    section = PolygonSection{polygon_asymmetric};
+
+    /* Test top outline point in x direction */
+    top_reflection = geom2::transform::get_reflection_point_top(section, parent, geom2::Direction_3(1, 0, 0));
+    EXPECT_EQ(top_reflection, Point_3(0, 1, 0));
+}
+
+/**
+ * @brief Test getting the bottom reflection point of a section.
+ */
+TEST_F(TransformPolygon, GetReflectionPointBottom)
+{
+    /* Test bottom outline point in x direction */
+    Point_3 bottom_reflection = geom2::transform::get_reflection_point_bottom(section, parent, geom2::Direction_3(1, 0, 0));
+    EXPECT_EQ(bottom_reflection, Point_3(0, -1, 0));
+
+    /* Test bottom outline point in y direction */
+    bottom_reflection = geom2::transform::get_reflection_point_bottom(section, parent, geom2::Direction_3(0, 1, 0));
+    EXPECT_EQ(bottom_reflection, Point_3(1, 0, 0));
+
+    /* Test when the parent has an offset in x direction */
+    parent.origin = Point_3(1, 0, 0);
+    bottom_reflection = geom2::transform::get_reflection_point_bottom(section, parent, geom2::Direction_3(1, 0, 0));
+    EXPECT_EQ(bottom_reflection, Point_3(1, -1, 0));
+
+    /* Test when the parent has an offset in y direction */
+    parent.origin = Point_3(0, 1, 0);
+    bottom_reflection = geom2::transform::get_reflection_point_bottom(section, parent, geom2::Direction_3(0, 1, 0));
+    EXPECT_EQ(bottom_reflection, Point_3(1, 1, 0));
+
+    /* Test when the parent has an offset in z direction */
+    parent.origin = Point_3(0, 0, 1);
+    bottom_reflection = geom2::transform::get_reflection_point_bottom(section, parent, geom2::Direction_3(1, 0, 0));
+    EXPECT_EQ(bottom_reflection, Point_3(0, -1, 1));
+
+    /* Test bottom outline in 45 degree */
+    parent.origin = Point_3(0, 0, 0);
+    bottom_reflection = geom2::transform::get_reflection_point_bottom(section, parent, geom2::Direction_3(1, 1, 0));
+    EXPECT_EQ(bottom_reflection, Point_3(0, -1, 0));
+}
+
+/**
+ * @brief Test getting the outline of a surface.
+ */
+TEST_F(TransformPolygon, GetOutline3D)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    surface.sections.emplace_back(section);
+    surface.sections.emplace_back(section);
+    surface.sections.emplace_back(section);
+
+    /* Position the sections */
+    surface.sections[0].origin = {0, 0, 0};
+    surface.sections[1].origin = {0, 0, 1};
+    surface.sections[2].origin = {0, 0, 2};
+
+    /* Get the outline when viewed from the x direction */
+    std::vector<geom2::Point_3> outline = geom2::transform::outline_3d(surface, geom2::Direction_3(1, 0, 0));
+
+    /* Check the result */
+    EXPECT_EQ(outline.size(), 6);
+    EXPECT_EQ(outline[0], Point_3(0, 1, 0));
+    EXPECT_EQ(outline[1], Point_3(0, 1, 1));
+    EXPECT_EQ(outline[2], Point_3(0, 1, 2));
+    EXPECT_EQ(outline[3], Point_3(0, -1, 2));
+    EXPECT_EQ(outline[4], Point_3(0, -1, 1));
+    EXPECT_EQ(outline[5], Point_3(0, -1, 0));
+
+    /* Get the outline when viewed from the y direction */
+    outline.clear();
+    outline = geom2::transform::outline_3d(surface, geom2::Direction_3(0, 1, 0));
+
+    /* Check the result */
+    EXPECT_EQ(outline.size(), 6);
+    EXPECT_EQ(outline[0], Point_3(-1, 0, 0));
+    EXPECT_EQ(outline[1], Point_3(-1, 0, 1));
+    EXPECT_EQ(outline[2], Point_3(-1, 0, 2));
+    EXPECT_EQ(outline[3], Point_3(1, 0, 2));
+    EXPECT_EQ(outline[4], Point_3(1, 0, 1));
+    EXPECT_EQ(outline[5], Point_3(1, 0, 0));
+}
+
+/**
+ * @brief Test getting the outline of a surface projected to 2D.
+ */
+TEST_F(TransformPolygon, GetOutline2D)
+{
+    /* Create the surface */
+    geom2::MultisectionSurface<PolygonSection> surface;
+    surface.sections.emplace_back(section);
+    surface.sections.emplace_back(section);
+    surface.sections.emplace_back(section);
+
+    /* Position the sections */
+    surface.sections[0].origin = {0, 0, 0};
+    surface.sections[1].origin = {0, 0, 1};
+    surface.sections[2].origin = {0, 0, 2};
+
+    /* Get the outline when viewed from the x direction */
+    std::vector<geom2::Point_2> outline = geom2::transform::outline_2d(surface, geom2::Direction_3(1, 0, 0));
+
+    /* Check the result */
+    EXPECT_EQ(outline.size(), 6);
+    EXPECT_EQ(outline[0], Point_2(1, 0));
+    EXPECT_EQ(outline[1], Point_2(1, 1));
+    EXPECT_EQ(outline[2], Point_2(1, 2));
+    EXPECT_EQ(outline[3], Point_2(-1, 2));
+    EXPECT_EQ(outline[4], Point_2(-1, 1));
+    EXPECT_EQ(outline[5], Point_2(-1, 0));
+
+    /* Get the outline when viewed from the y direction */
+    outline.clear();
+    outline = geom2::transform::outline_2d(surface, geom2::Direction_3(0, 1, 0));
+
+    /* Check the result */
+    EXPECT_EQ(outline.size(), 6);
+    EXPECT_EQ(outline[0], Point_2(-1, 0));
+    EXPECT_EQ(outline[1], Point_2(-1, -1));
+    EXPECT_EQ(outline[2], Point_2(-1, -2));
+    EXPECT_EQ(outline[3], Point_2(1, -2));
+    EXPECT_EQ(outline[4], Point_2(1, -1));
+    EXPECT_EQ(outline[5], Point_2(1, -0));
+
+    /* Get the outline when viewed from 45 degree */
+    outline.clear();
+    outline = geom2::transform::outline_2d(surface, geom2::Direction_3(1, 1, 0));
+
+    /* Check the result */
+    EXPECT_EQ(outline.size(), 6);
+    EXPECT_NEAR(outline[0].x(), 0.000, 1e-3);
+    EXPECT_NEAR(outline[0].y(), -0.707, 1e-3);
+    EXPECT_NEAR(outline[1].x(), 1.000, 1e-3);
+    EXPECT_NEAR(outline[1].y(), -0.707, 1e-3);
+    EXPECT_NEAR(outline[2].x(), 2.000, 1e-3);
+    EXPECT_NEAR(outline[2].y(), -0.707, 1e-3);
+    EXPECT_NEAR(outline[3].x(), 2.000, 1e-3);
+    EXPECT_NEAR(outline[3].y(), 0.707, 1e-3);
+    EXPECT_NEAR(outline[4].x(), 1.000, 1e-3);
+    EXPECT_NEAR(outline[4].y(), 0.707, 1e-3);
+    EXPECT_NEAR(outline[5].x(), 0.000, 1e-3);
+    EXPECT_NEAR(outline[5].y(), 0.707, 1e-3);
+
+    /* Get the outline when the surface is rotated by 45 degrees */
+    outline.clear();
+    surface.normal = geom2::Direction_3(0, 1, 1);
+    outline = geom2::transform::outline_2d(surface, geom2::Direction_3(1, 0, 0));
+
+    /* Check the result */
+    EXPECT_EQ(outline.size(), 6);
+    EXPECT_NEAR(outline[0].x(), 0.707, 1e-3);
+    EXPECT_NEAR(outline[0].y(), -0.707, 1e-3);
+}
+
+/**
+ * @brief Test transforming a surface which consists of normalized coordinates
+ * to absolute coordinates using a paren surface.
+ */
+TEST(TransformToAbsolute, PolygonSurfaceWithAirfoilSurface)
+{
+    /* Test stubs dir */
+    std::filesystem::path stubs_dir{CMAKE_TEST_STUBS_DIR};
+
+    /* Create a simple wing */
+    geom2::SectionBuilder<geom2::AirfoilSection> builder;
+    geom2::MultisectionSurface<geom2::AirfoilSection> wing;
+    auto airfoil = geom2::io::read_airfoil(stubs_dir / "dat-files/n0012-tab.dat");
+    builder.arrange(airfoil, {1, 0, -5}, 3);
+    wing.sections = builder.get_result();
+    wing.sections[0].set_chord_length(5.0);
+    wing.sections[1].set_chord_length(4.0);
+    wing.sections[2].set_chord_length(3.0);
+
+    /* Create a polygon which is in relative coordinates */
+    Polygon_2 polygon;
+    polygon.push_back(Point_2{0.2, 0.0});
+    polygon.push_back(Point_2{0.8, 0.0});
+    geom2::MultisectionSurface<PolygonSection> polygon_surface;
+    polygon_surface.origin = {1, 2, 3};
+    polygon_surface.normal = {1, 1, 1};
+    polygon_surface.sections.emplace_back(polygon);
+    polygon[0] = Point_2{0.4, 0.0};
+    polygon_surface.sections.emplace_back(polygon);
+    polygon_surface.sections.back().origin = {0, 0, -0.5};
+
+    /* Get the polygon surface in absolute coordinates based on the wing shape */
+    auto polygon_absolute = geom2::transform::to_absolute(polygon_surface, wing);
+
+    /* The origin and normal should be the same as for the initial surface*/
+    EXPECT_EQ(polygon_absolute.origin, polygon_surface.origin);
+    EXPECT_EQ(polygon_absolute.normal, polygon_surface.normal);
+
+    /* Test the coordinates of the first resulting section */
+    auto shape = polygon_absolute.sections[0].get_contour(true);
+    EXPECT_EQ(polygon_absolute.sections[0].origin, Point_3(0, 0, 0));
+    EXPECT_EQ(shape[0], Point_2(0.2*5.0, 0));
+    EXPECT_EQ(shape[1], Point_2(0.8*5.0, 0));
+
+    /* Test the coordinates of the second resulting section */
+    shape = polygon_absolute.sections[1].get_contour(true);
+    EXPECT_EQ(polygon_absolute.sections[1].origin, Point_3(0, 0, -5));
+    EXPECT_EQ(shape[0], Point_2(2.6, 0));
+    EXPECT_EQ(shape[1], Point_2(4.2, 0));
+    
+    /* A symmetric wing should give the same result */
+    wing.is_symmetric = true;
+    polygon_absolute = geom2::transform::to_absolute(polygon_surface, wing);
+    shape = polygon_absolute.sections[1].get_contour(true);
+    EXPECT_EQ(polygon_absolute.sections[1].origin, Point_3(0, 0, -5));
+    EXPECT_EQ(shape[0], Point_2(2.6, 0));
+    EXPECT_EQ(shape[1], Point_2(4.2, 0));
+}
+
+/**
+ * @brief Test resampling a polygon with two vertices to match a given amount of vertices.
+ */
+TEST(ResamplePolygon2D, ResampleTwoVertices)
+{
+    /* Create a simple polygon */
+    Polygon_2 polygon;
+    polygon.push_back(Point_2{0, 0});
+    polygon.push_back(Point_2{1, 1});
+
+    /* Resample the polygon with 2 vertices */
+    auto resampled = geom2::transform::resample(polygon, 2);
+    ASSERT_EQ(resampled.size(), 2);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_EQ(resampled[1], Point_2(1.0, 1.0));
+
+    /* Resample the polygon with 3 vertices */
+    resampled = geom2::transform::resample(polygon, 3);
+    ASSERT_EQ(resampled.size(), 3);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_EQ(resampled[1], Point_2(0.5, 0.5));
+    EXPECT_EQ(resampled[2], Point_2(1.0, 1.0));
+
+    /* Resample the polygon with 3 vertices */
+    resampled = geom2::transform::resample(polygon, 4);
+    ASSERT_EQ(resampled.size(), 4);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_NEAR(resampled[1].x(), 0.333, 1e-3);
+    EXPECT_NEAR(resampled[1].y(), 0.333, 1e-3);
+    EXPECT_NEAR(resampled[2].x(), 0.666, 1e-3);
+    EXPECT_NEAR(resampled[2].y(), 0.666, 1e-3);
+    EXPECT_EQ(resampled[3], Point_2(1.0, 1.0));
+
+    /* Resample the polygon with 5 vertices */
+    resampled = geom2::transform::resample(polygon, 5);
+    ASSERT_EQ(resampled.size(), 5);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_NEAR(resampled[1].x(), 0.25, 1e-3);
+    EXPECT_NEAR(resampled[1].y(), 0.25, 1e-3);
+    EXPECT_NEAR(resampled[2].x(), 0.5, 1e-3);
+    EXPECT_NEAR(resampled[2].y(), 0.5, 1e-3);
+    EXPECT_NEAR(resampled[3].x(), 0.75, 1e-3);
+    EXPECT_NEAR(resampled[3].y(), 0.75, 1e-3);
+    EXPECT_EQ(resampled[4], Point_2(1.0, 1.0));
+}
+
+/**
+ * @brief Test resampling a polygon with three vertices to match a given amount of vertices.
+ */
+TEST(ResamplePolygon2D, ResampleThreeVertices)
+{
+    /* Create a simple polygon */
+    Polygon_2 polygon;
+    polygon.push_back(Point_2{0, 0});
+    polygon.push_back(Point_2{1, 1});
+    polygon.push_back(Point_2{2, 0});
+
+    /* Resample the polygon with 5 vertices */
+    auto resampled = geom2::transform::resample(polygon, 5);
+    ASSERT_EQ(resampled.size(), 5);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_EQ(resampled[1], Point_2(0.5, 0.5));
+    EXPECT_EQ(resampled[2], Point_2(1.0, 1.0));
+    EXPECT_EQ(resampled[3], Point_2(1.5, 0.5));
+    EXPECT_EQ(resampled[4], Point_2(2.0, 0.0));
+
+    /* Resample the polygon with 4 vertices */
+    resampled = geom2::transform::resample(polygon, 4);
+    ASSERT_EQ(resampled.size(), 4);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_EQ(resampled[1], Point_2(1.0, 1.0));
+    EXPECT_EQ(resampled[2], Point_2(1.5, 0.5));
+    EXPECT_EQ(resampled[3], Point_2(2.0, 0.0));
+
+    /* Resample the polygon with 6 vertices */
+    resampled = geom2::transform::resample(polygon, 6);
+    ASSERT_EQ(resampled.size(), 6);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_EQ(resampled[1], Point_2(0.5, 0.5));
+    EXPECT_EQ(resampled[2], Point_2(1.0, 1.0));
+    EXPECT_NEAR(resampled[3].x(), 1.333, 1e-3);
+    EXPECT_NEAR(resampled[3].y(), 0.666, 1e-3);
+    EXPECT_NEAR(resampled[4].x(), 1.666, 1e-3);
+    EXPECT_NEAR(resampled[4].y(), 0.333, 1e-3);
+    EXPECT_EQ(resampled[5], Point_2(2.0, 0.0));
+
+    /* Resample the polygon with 7 vertices */
+    resampled = geom2::transform::resample(polygon, 7);
+    ASSERT_EQ(resampled.size(), 7);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_NEAR(resampled[1].x(), 0.333, 1e-3);
+    EXPECT_NEAR(resampled[1].y(), 0.333, 1e-3);
+    EXPECT_NEAR(resampled[2].x(), 0.666, 1e-3);
+    EXPECT_NEAR(resampled[2].y(), 0.666, 1e-3);
+    EXPECT_EQ(resampled[3], Point_2(1.0, 1.0));
+    EXPECT_NEAR(resampled[4].x(), 1.333, 1e-3);
+    EXPECT_NEAR(resampled[4].y(), 0.666, 1e-3);
+    EXPECT_NEAR(resampled[5].x(), 1.666, 1e-3);
+    EXPECT_NEAR(resampled[5].y(), 0.333, 1e-3);
+    EXPECT_EQ(resampled[6], Point_2(2.0, 0.0));
+}
+
+/**
+ * @brief Test resampling a polygon with four vertices to match a given amount of vertices.
+ */
+TEST(ResamplePolygon2D, ResampleFourVertices)
+{
+    /* Create a simple polygon */
+    Polygon_2 polygon;
+    polygon.push_back(Point_2{0, 0});
+    polygon.push_back(Point_2{1, 1});
+    polygon.push_back(Point_2{2, 1});
+    polygon.push_back(Point_2{3, 0});
+
+    /* Resample the polygon with 5 vertices */
+    auto resampled = geom2::transform::resample(polygon, 5);
+    ASSERT_EQ(resampled.size(), 5);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_EQ(resampled[1], Point_2(1.0, 1.0));
+    EXPECT_EQ(resampled[2], Point_2(2.0, 1.0));
+    EXPECT_EQ(resampled[3], Point_2(2.5, 0.5));
+    EXPECT_EQ(resampled[4], Point_2(3.0, 0.0));
+
+    /* Resample the polygon with 6 vertices */
+    resampled = geom2::transform::resample(polygon, 6);
+    ASSERT_EQ(resampled.size(), 6);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+    EXPECT_EQ(resampled[1], Point_2(1.0, 1.0));
+    EXPECT_EQ(resampled[2], Point_2(1.5, 1.0));
+    EXPECT_EQ(resampled[3], Point_2(2.0, 1.0));
+    EXPECT_EQ(resampled[4], Point_2(2.5, 0.5));
+    EXPECT_EQ(resampled[5], Point_2(3.0, 0.0));
+}
+
+/**
+ * @brief Test the unsuccessful cases when resampling a polygon
+ */
+TEST(ResamplePolygon2D, ResampleThrowsError)
+{
+    /* Create a simple polygon */
+    Polygon_2 polygon;
+    polygon.push_back(Point_2{0, 0});
+
+    /* Nothing should change when the polygon just has one vertex */
+    auto resampled = geom2::transform::resample(polygon, 5);
+    ASSERT_EQ(resampled.size(), 1);
+    EXPECT_EQ(resampled[0], Point_2(0.0, 0.0));
+
+    /* Expect a throw when under sampling the polygon */
+    polygon.push_back(Point_2{1, 1});
+    polygon.push_back(Point_2{2, 1});
+    EXPECT_THROW(geom2::transform::resample(polygon, 2), std::invalid_argument);
+}
diff --git a/aircraftGeometry2/test/stubs/acxml-v2/fuselage.xml b/aircraftGeometry2/test/stubs/acxml-v2/fuselage.xml
new file mode 100644
index 00000000..4186166c
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/acxml-v2/fuselage.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<AcftExchangeFile>
+    <Geometry Desc="Contains the geometry description of the aircraft">
+        <Fuselage Desc="Fuselage geometry" ID="SimpleFuselage">
+            <FuselageRefPoint Desc="Position of the reference point to global point of reference">
+                <r_Fuselage Desc="Position in global X direction" ToolLevel="1" Unit="m">0.0</r_Fuselage>
+                <y_Fuselage Desc="Position in global Y direction" ToolLevel="1" Unit="m">0.0</y_Fuselage>
+                <h_Fuselage Desc="Position in global Z direction" ToolLevel="1" Unit="m">0.0</h_Fuselage>
+            </FuselageRefPoint>
+            <FuselageParameters Desc="parametric description of the fuselage">
+                <NoseDescription>
+                    <NoseSegments Desc="No of nose segments" ToolLevel="1">1</NoseSegments>
+                    <TipSegment>
+                        <h_Tip Desc="offset of nosetip" ToolLevel="1" Unit="m">0.0</h_Tip>
+                    </TipSegment>
+                    <NoseSegment ID="1">
+                        <SegmentPointData ToolLevel="1">../dat-files/circle-tab.dat</SegmentPointData>
+                        <w_Segment Desc="Breite des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</w_Segment>
+                        <h_Segment Desc="Hoehe des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</h_Segment>
+                        <l_Segment Desc="Laenge des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</l_Segment>
+                        <deltah_Segment Desc="Verticales Offset des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</deltah_Segment>
+                    </NoseSegment>
+                </NoseDescription>
+                <MidSectionDescription>
+                    <MidSectionSegments Desc="No of mid-segment segments" ToolLevel="1">1</MidSectionSegments>
+                    <MidSectionSegment ID="1">
+                        <SegmentPointData ToolLevel="1">../dat-files/circle-tab.dat</SegmentPointData>
+                        <w_Segment Desc="Breite des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</w_Segment>
+                        <h_Segment Desc="Hoehe des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</h_Segment>
+                        <l_Segment Desc="Laenge des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</l_Segment>
+                        <deltah_Segment Desc="Verticales Offset des Rumpf-Segments" ToolLevel="1" Unit="m">0</deltah_Segment>
+                    </MidSectionSegment>
+                </MidSectionDescription>
+                <TailDescription>
+                    <TailSegments Desc="No of tail segments" ToolLevel="1">1</TailSegments>
+                    <TailSegment ID="1">
+                        <SegmentPointData ToolLevel="1">../dat-files/circle-tab.dat</SegmentPointData>
+                        <w_Segment Desc="Breite des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</w_Segment>
+                        <h_Segment Desc="Hoehe des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</h_Segment>
+                        <l_Segment Desc="Laenge des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</l_Segment>
+                        <deltah_Segment Desc="Verticales Offset des Rumpf-Segments" ToolLevel="1" Unit="m">0.0</deltah_Segment>
+                    </TailSegment>
+                </TailDescription>
+            </FuselageParameters>
+        </Fuselage>
+    </Geometry>
+</AcftExchangeFile>
diff --git a/aircraftGeometry2/test/stubs/acxml-v2/nacelle.xml b/aircraftGeometry2/test/stubs/acxml-v2/nacelle.xml
new file mode 100644
index 00000000..5f923616
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/acxml-v2/nacelle.xml
@@ -0,0 +1,48 @@
+
+<?xml version="1.0" encoding="UTF-8"?>
+<AcftExchangeFile>
+    <Geometry Desc="Contains the geometry description of the aircraft">
+        <Nacelle Desc="Nacelle geometry" ID="SimpleHull">
+            <NacelleRefPoint Desc="Position of the reference point to global point of reference">
+                <r_Nacelle Desc="Position in global X direction" ToolLevel="1" Unit="m">0.0</r_Nacelle>
+                <y_Nacelle Desc="Position in global Y direction" ToolLevel="1" Unit="m">0.0</y_Nacelle>
+                <h_Nacelle Desc="Position in global Z direction" ToolLevel="1" Unit="m">0.0</h_Nacelle>
+            </NacelleRefPoint>
+            <NacelleParameters Desc="parametric description of the nacelle">
+                <i_Nacelle Desc="Angle of incidence in reference to the aircrafts coordinate system" ToolLevel="1" Unit="degree" lowerBoundary="-90" upperBoundary="90">0</i_Nacelle>
+                <Points Desc="No of points describing the section" ToolLevel="1">20</Points>
+                <Segments Desc="No of segments" ToolLevel="1" lowerBoundary="0" upperBoundary="inf">2</Segments>
+                <InletSegment>
+                    <SegmentPointData ToolLevel="1">../dat-files/circle-tab.dat</SegmentPointData>
+                    <w_Inlet Desc="Breite des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="0" upperBoundary="100">1.976823221</w_Inlet>
+                    <h_Inlet Desc="Hoehe des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="0" upperBoundary="100">2.289180745</h_Inlet>
+                    <l_Inlet Desc="Laenge des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="-0.01" upperBoundary="200">0.6776753197</l_Inlet>
+                </InletSegment>
+                <NacelleSegment ID="1">
+                    <InnerSegmentPointData ToolLevel="1">../dat-files/circle-tab.dat</InnerSegmentPointData>
+                    <OuterSegmentPointData ToolLevel="1">../dat-files/circle-tab.dat</OuterSegmentPointData>
+                    <w_i_Segment Desc="Innere Breite des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="0" upperBoundary="100">1.976823221</w_i_Segment>
+                    <w_o_Segment Desc="aeussere Breite des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="1.01337" upperBoundary="100">2.471029026</w_o_Segment>
+                    <h_i_Segment Desc="Innere Hoehe des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="0" upperBoundary="100">2.289180745</h_i_Segment>
+                    <h_o_Segment Desc="aeussere Hoehe des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="1.17349" upperBoundary="100">2.861475931</h_o_Segment>
+                    <l_Segment Desc="Laenge des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="-0.01" upperBoundary="200">1.355350639</l_Segment>
+                </NacelleSegment>
+                <NacelleSegment ID="2">
+                    <InnerSegmentPointData ToolLevel="1">../dat-files/circle-tab.dat</InnerSegmentPointData>
+                    <OuterSegmentPointData ToolLevel="1">../dat-files/circle-tab.dat</OuterSegmentPointData>
+                    <w_i_Segment Desc="Innere Breite des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="0" upperBoundary="100">1.976823221</w_i_Segment>
+                    <w_o_Segment Desc="aeussere Breite des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="1.01337" upperBoundary="100">2.471029026</w_o_Segment>
+                    <h_i_Segment Desc="Innere Hoehe des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="0" upperBoundary="100">2.289180745</h_i_Segment>
+                    <h_o_Segment Desc="aeussere Hoehe des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="1.17349" upperBoundary="100">2.861475931</h_o_Segment>
+                    <l_Segment Desc="Laenge des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="-0.01" upperBoundary="200">0.6776753197</l_Segment>
+                </NacelleSegment>
+                <ExitSegment>
+                    <SegmentPointData ToolLevel="1">../dat-files/circle-tab.dat</SegmentPointData>
+                    <h_Exit Desc="Hoehe des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="0" upperBoundary="100">2.289180745</h_Exit>
+                    <w_Exit Desc="Breite des Nacelle-Segments" ToolLevel="1" Unit="m" lowerBoundary="0" upperBoundary="100">1.976823221</w_Exit>
+                </ExitSegment>
+            </NacelleParameters>
+            <EngineTypeID Desc="Angabe der EngineType ID zwecks Zuordnung des korrekten Motors in dieser Nacelle" ToolLevel="1">0</EngineTypeID>
+        </Nacelle>
+    </Geometry>
+</AcftExchangeFile>
\ No newline at end of file
diff --git a/aircraftGeometry2/test/stubs/acxml-v2/pylon.xml b/aircraftGeometry2/test/stubs/acxml-v2/pylon.xml
new file mode 100644
index 00000000..6133cb93
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/acxml-v2/pylon.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<AcftExchangeFile>
+    <Geometry Desc="Contains the geometry description of the aircraft">
+        <Pylon Desc="Pylon Geometry" ID="SimplePylon">
+            <SurfaceRefPoint Desc="Position of the reference point to global point of reference">
+                <r_Surface Desc="Position in global X direction" ToolLevel="1" Unit="m">0.0</r_Surface>
+                <y_Surface Desc="Position in global Y direction" ToolLevel="1" Unit="m">0.0</y_Surface>
+                <h_Surface Desc="Position in global Z direction" ToolLevel="1" Unit="m">0.0</h_Surface>
+            </SurfaceRefPoint>
+            <SurfaceParameters Desc="Parametric description of pylon geometry">
+                <SectionPoints Desc="number of points of profile. Will be used by spline interpolation if DoInterpolate attribute is set true" DoInterpolate="0" ToolLevel="1" Unit="-">0</SectionPoints>
+                <SurfaceSegments Desc="Number of segments in this pylon" ToolLevel="1">2</SurfaceSegments>
+                <SurfaceSegment Desc="Segmentbeschreibung" ID="1" Type="Surface">
+                    <InnerProfile_Segment Desc="Inner airfoil segment. Geometry is stored in seperate file (*.dat)" ToolLevel="1">../dat-files/n0012-tab.dat</InnerProfile_Segment>
+                    <OuterProfile_Segment Desc="Outer airfoil segment. Geometry is stored in seperate file (*.dat)" ToolLevel="1">../dat-files/n0012-tab.dat</OuterProfile_Segment>
+                    <l_i_Segment Desc="Chord length of segments inner profile" ToolLevel="1" Unit="m">0.0</l_i_Segment>
+                    <l_o_Segment Desc="Chord length of segments outer profile" ToolLevel="1" Unit="m">0.0</l_o_Segment>
+                    <s_Segment Desc="Span of surface segment" ToolLevel="1" Unit="m">0.0</s_Segment>
+                    <epsilon_Segment Desc="Angle of twist of surface segment" ToolLevel="1" Unit="deg">0</epsilon_Segment>
+                    <nu_Segment Desc="Angle of dihedral of surface segment" ToolLevel="1" Unit="deg">0</nu_Segment>
+                    <phi_Segment Desc="Angle of sweep of surface segment" ToolLevel="1" Unit="deg">0</phi_Segment>
+                </SurfaceSegment>
+                <SurfaceSegment Desc="Segmentbeschreibung" ID="2" Type="Surface">
+                    <InnerProfile_Segment Desc="Inner airfoil segment. Geometry is stored in seperate file (*.dat)" ToolLevel="1">../dat-files/n0012-tab.dat</InnerProfile_Segment>
+                    <OuterProfile_Segment Desc="Outer airfoil segment. Geometry is stored in seperate file (*.dat)" ToolLevel="1">../dat-files/n0012-tab.dat</OuterProfile_Segment>
+                    <l_i_Segment Desc="Chord length of segments inner profile" ToolLevel="1" Unit="m">0.0</l_i_Segment>
+                    <l_o_Segment Desc="Chord length of segments outer profile" ToolLevel="1" Unit="m">0.0</l_o_Segment>
+                    <s_Segment Desc="Span of surface segment" ToolLevel="1" Unit="m">0.0</s_Segment>
+                    <epsilon_Segment Desc="Angle of twist of surface segment" ToolLevel="1" Unit="deg">0</epsilon_Segment>
+                    <nu_Segment Desc="Angle of dihedral of surface segment" ToolLevel="1" Unit="deg">0</nu_Segment>
+                    <phi_Segment Desc="Angle of sweep of surface segment" ToolLevel="1" Unit="deg">0.0</phi_Segment>
+                </SurfaceSegment>
+            </SurfaceParameters>
+        </Pylon>
+    </Geometry>
+</AcftExchangeFile>
+
diff --git a/aircraftGeometry2/test/stubs/acxml-v2/wing.xml b/aircraftGeometry2/test/stubs/acxml-v2/wing.xml
new file mode 100644
index 00000000..b1850319
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/acxml-v2/wing.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<AcftExchangeFile>
+    <Geometry Desc="Contains the geometry description of the aircraft">
+        <LiftingSurface Desc="Wing geometry" ID="MainWing">
+            <SurfaceRefPoint Desc="position of wing to global point of reference">
+                <r_Surface Desc="Position of the wing to global point of reference in x-direction" ToolLevel="1" Unit="m">0.0</r_Surface>
+                <y_Surface Desc="Position of the wing to global point of reference in y-direction" ToolLevel="1" Unit="m">0.0</y_Surface>
+                <h_Surface Desc="Position of the wing to global point of reference in z-direction" ToolLevel="1" Unit="m">0.0</h_Surface>
+            </SurfaceRefPoint>
+            <SurfaceParameters Desc="Parametric description of lifting surface geometry">
+                <Symmetric Desc="1:= symmetric wing / 0 := asymmetric wing" ToolLevel="1" Unit="-">1</Symmetric>
+                <RelChordRefForRotation Desc="Rel. Chordtiefe: Ref.-Pkt. fuer Verwindg. u. V-Stellg." ToolLevel="1" Unit="-">0</RelChordRefForRotation>
+                <i_Surface Desc="Angle of incidence in reference to the aircrafts coordinate system" ToolLevel="1" Unit="deg">0</i_Surface>
+                <SectionPoints Desc="number of points of profile. Will be used by spline interpolation if DoInterpolate attribute is set true" DoInterpolate="0" ToolLevel="1" Unit="-">200</SectionPoints>
+                <HalfSurfaceDescription Desc="Parameters of right wing (or both wings, if symmetric)" ID="1">
+                    <HalfSurfaceSegments Desc="Number of wing segments in this half surface" ToolLevel="1" Unit="-">2</HalfSurfaceSegments>
+                    <HalfSurfaceSegment Desc="Segmentbeschreibung (verfuegbare Typen: Fuselage, Surface, Tip)" ID="1" Type="Surface">
+                        <InnerProfile_Segment Desc="Inner airfoil segment. Geometry is stored in seperate file (*.dat)" ToolLevel="1">../dat-files/n0012-tab.dat</InnerProfile_Segment>
+                        <OuterProfile_Segment Desc="Outer airfoil segment. Geometry is stored in seperate file (*.dat)" ToolLevel="1">../dat-files/n0012-tab.dat</OuterProfile_Segment>
+                        <l_i_Segment Desc="Chord length of segments inner profile" ToolLevel="1" Unit="m">0.0</l_i_Segment>
+                        <l_o_Segment Desc="Chord length of segments outer profile" ToolLevel="1" Unit="m">0.0</l_o_Segment>
+                        <s_Segment Desc="Span of wing segment" ToolLevel="1" Unit="m">0.0</s_Segment>
+                        <epsilon_Segment Desc="Angle of twist of wing segment" ToolLevel="1" Unit="deg">0</epsilon_Segment>
+                        <nu_Segment Desc="Angle of dihedral of wing segment" ToolLevel="1" Unit="deg">0.0</nu_Segment>
+                        <phi_Segment Desc="Leading edge sweep angle of wing segment" ToolLevel="1" Unit="deg">0.0</phi_Segment>
+                        <l_rel_i_FrontSpar Desc="Relative chord position of front spar from leading edge of inner section" ToolLevel="1" Unit="-">0.0</l_rel_i_FrontSpar>
+                        <l_rel_i_RearSpar Desc="Relative chord position of rear spar from leading edge of inner section" ToolLevel="1" Unit="-">0.0</l_rel_i_RearSpar>
+                        <l_rel_o_FrontSpar Desc="Relative chord position of front spar from leading edge of outer section" ToolLevel="1" Unit="-">0.0</l_rel_o_FrontSpar>
+                        <l_rel_o_RearSpar Desc="Relative chord position of rear spar from leading edge of outer section" ToolLevel="1" Unit="-">0.0</l_rel_o_RearSpar>
+                    </HalfSurfaceSegment>
+                    <HalfSurfaceSegment Desc="Segmentbeschreibung (verfuegbare Typen: Fuselage, Surface, Tip)" ID="2" Type="Surface">
+                        <InnerProfile_Segment Desc="Inner airfoil segment. Geometry is stored in seperate file (*.dat)" ToolLevel="1">../dat-files/n0012-tab.dat</InnerProfile_Segment>
+                        <OuterProfile_Segment Desc="Outer airfoil segment. Geometry is stored in seperate file (*.dat)" ToolLevel="1">../dat-files/n0012-tab.dat</OuterProfile_Segment>
+                        <l_i_Segment Desc="Chord length of segments inner profile" ToolLevel="1" Unit="m">0.0</l_i_Segment>
+                        <l_o_Segment Desc="Chord length of segments outer profile" ToolLevel="1" Unit="m">0.0</l_o_Segment>
+                        <s_Segment Desc="Span of wing segment" ToolLevel="1" Unit="m">0.0</s_Segment>
+                        <epsilon_Segment Desc="Angle of twist of wing segment" ToolLevel="1" Unit="deg">0</epsilon_Segment>
+                        <nu_Segment Desc="Angle of dihedral of wing segment" ToolLevel="1" Unit="deg">0.0</nu_Segment>
+                        <phi_Segment Desc="Leading edge sweep angle of wing segment" ToolLevel="1" Unit="deg">0.0</phi_Segment>
+                        <l_rel_i_FrontSpar Desc="Relative chord position of front spar from leading edge of inner section" ToolLevel="1" Unit="-">0.0</l_rel_i_FrontSpar>
+                        <l_rel_i_RearSpar Desc="Relative chord position of rear spar from leading edge of inner section" ToolLevel="1" Unit="-">0.0</l_rel_i_RearSpar>
+                        <l_rel_o_FrontSpar Desc="Relative chord position of front spar from leading edge of outer section" ToolLevel="1" Unit="-">0.0</l_rel_o_FrontSpar>
+                        <l_rel_o_RearSpar Desc="Relative chord position of rear spar from leading edge of outer section" ToolLevel="1" Unit="-">0.0</l_rel_o_RearSpar>
+                    </HalfSurfaceSegment>
+                    <ControlDeviceSetup Desc="Planformbeschreibung der Steuerflaechen">
+                        <TEDevices Desc="Anzahl der Hinterkantenflaechen" ToolLevel="1">0</TEDevices>
+                        <TEDevice Desc="Beschreibung eines Hinterkantenelements" ID="1">
+                            <Type Desc="Typ der Hinterkantenflaeche (Aileron, DroopAileron, Flap, SlottedFlap, Fowler, DoubleFowler, TripleFowler, Special, SpoilerGround, SpoilerAir, morphingTrailingEdge)" ToolLevel="1">Fowler</Type>
+                            <s_rel_i Desc="relative Spannweite innen" ToolLevel="1" Unit="-">0.0</s_rel_i>
+                            <l_rel_i Desc="relative Sehnentiefe innen" ToolLevel="1" Unit="-">0.0</l_rel_i>
+                            <l_rel_TE_i Desc="relative Sehnentiefe von Hinterkante Fluegel zu Hinterkante device innen" ToolLevel="1" Unit="-">0</l_rel_TE_i>
+                            <s_rel_o Desc="relative Spannweite aussen" ToolLevel="1" Unit="-">0.0</s_rel_o>
+                            <l_rel_o Desc="relative Sehnentiefe aussen" ToolLevel="1" Unit="-">0.0</l_rel_o>
+                            <l_rel_TE_o Desc="relative Sehnentiefe von Hinterkante Fluegel zu Hinterkante device aussen" ToolLevel="1" Unit="-">0</l_rel_TE_o>
+                            <DeflectionAngle Desc="Steuerflaechenausschlagwinkel">
+                                <FullPos Desc="Maximaler Ausschlagwinkel in positive Richtung (Winkeldef.)" ToolLevel="1" Unit="deg">0</FullPos>
+                                <FullNeg Desc="Maximaler Ausschlagwinkel in negative Richtung (Winkeldef.)" ToolLevel="1" Unit="deg">0</FullNeg>
+                            </DeflectionAngle>
+                        </TEDevice>
+                        <LEDevices Desc="Anzahl der Vorderkantenflaechen" ToolLevel="1">0</LEDevices>
+                        <LEDevice Desc="Beschreibung eines Vorderkantenelements" ID="1">
+                            <Type Desc="Typ der Vorderkantenflaeche (Slat, Krueger, DroopNose, morphingDroopNose, Special)" ToolLevel="1">Slat</Type>
+                            <s_rel_i Desc="relative Spannweite innen" ToolLevel="1" Unit="-">0.0</s_rel_i>
+                            <l_rel_i Desc="relative Sehnentiefe innen" ToolLevel="1" Unit="-">0.0</l_rel_i>
+                            <s_rel_o Desc="relative Spannweite aussen" ToolLevel="1" Unit="-">0.0</s_rel_o>
+                            <l_rel_o Desc="relative Sehnentiefe aussen" ToolLevel="1" Unit="-">0.0</l_rel_o>
+                            <DeflectionAngle Desc="Steuerflaechenausschlagwinkel">
+                                <FullPos Desc="Maximaler Ausschlagwinkel in positive Richtung (Winkeldef.)" ToolLevel="1" Unit="deg">0</FullPos>
+                                <FullNeg Desc="Maximaler Ausschlagwinkel in negative Richtung (Winkeldef.)" ToolLevel="1" Unit="deg">0</FullNeg>
+                            </DeflectionAngle>
+                        </LEDevice>
+                    </ControlDeviceSetup>
+                </HalfSurfaceDescription>
+            </SurfaceParameters>
+        </LiftingSurface>
+    </Geometry>
+</AcftExchangeFile>
diff --git a/aircraftGeometry2/test/stubs/acxml-v3/fuselage.xml b/aircraftGeometry2/test/stubs/acxml-v3/fuselage.xml
new file mode 100644
index 00000000..165d189d
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/acxml-v3/fuselage.xml
@@ -0,0 +1,169 @@
+<aircraft_exchange_file version="3.0">
+    <component_design>
+        <fuselage description="Geometric description of the aircraft fuselages" tool_level="0">
+			<position description="Position of the fuselages with regard to the global reference point.">
+				<x description="Distance in x direction with regard to the global reference point. (fuselage nose point)">
+					<value>0</value>
+					<unit>m</unit>
+					<lower_boundary>-Inf</lower_boundary>
+					<upper_boundary>Inf</upper_boundary>
+				</x>
+				<y description="Distance in y direction with regard to the global reference point. (fuselage nose point)">
+					<value>0</value>
+					<unit>m</unit>
+					<lower_boundary>-Inf</lower_boundary>
+					<upper_boundary>Inf</upper_boundary>
+				</y>
+				<z description="Distance in z direction with regard to the global reference point. (distance to fuselage center line)">
+					<value>0</value>
+					<unit>m</unit>
+					<lower_boundary>-Inf</lower_boundary>
+					<upper_boundary>Inf</upper_boundary>
+				</z>
+			</position>
+			<specific>
+				<geometry>
+					<fuselage ID="0" description="Geometrical description of one entire fuselage.">
+						<name description="Name of the fuselage.">
+							<value>center_fuselage</value>
+						</name>
+						<position description="Position of one entire fuselage with regard to the global reference point.">
+							<x description="Distance in x direction with regard to the global reference point. (fuselage nose point)">
+								<value>0</value>
+								<unit>m</unit>
+								<lower_boundary>-Inf</lower_boundary>
+								<upper_boundary>Inf</upper_boundary>
+							</x>
+							<y description="Distance in y direction with regard to the global reference point. (fuselage nose point)">
+								<value>0</value>
+								<unit>m</unit>
+								<lower_boundary>-Inf</lower_boundary>
+							<upper_boundary>Inf</upper_boundary>
+							</y>
+							<z description="Distance in z direction with regard to the global reference point. (distance to fuselage center line)">
+								<value>0</value>
+								<unit>m</unit>
+								<lower_boundary>-Inf</lower_boundary>
+								<upper_boundary>Inf</upper_boundary>
+							</z>
+						</position>
+						<direction description="unit vector according to global coordinate system for direction applied at position">
+							<x description="Distance in x direction with regard to the global reference point. (fuselage nose point)">
+								<value>1</value>
+								<unit>1</unit>
+								<lower_boundary>0</lower_boundary>
+								<upper_boundary>1</upper_boundary>
+							</x>
+							<y description="Distance in y direction with regard to the global reference point. (fuselage nose point)">
+								<value>0</value>
+								<unit>1</unit>
+								<lower_boundary>0</lower_boundary>
+							<upper_boundary>1</upper_boundary>
+							</y>
+							<z description="Distance in z direction with regard to the global reference point. (distance to fuselage center line)">
+								<value>0</value>
+								<unit>1</unit>
+								<lower_boundary>0</lower_boundary>
+								<upper_boundary>1</upper_boundary>
+							</z>
+						</direction>
+						<sections description="Geometrical description of the fuselage sections of one entire fuselage">
+							<section ID="0" description="Geometrical description of one fuselage section.">
+								<name description="Name of the fuselage section.">
+									<value>section_1</value>
+								</name>		
+								<section_shape dedication="Contains a Strig with path to *.dat file or the key word 'ellipse'">
+									<value>../dat-files/circle-tab</value>
+								</section_shape>
+								<origin description="Origin of fuselage section (local).">
+									<x description="Distance in x direction in the local coordinate space.">
+										<value>0</value>
+										<unit>m</unit>
+										<lower_boundary>-Inf</lower_boundary>
+										<upper_boundary>Inf</upper_boundary>
+									</x>
+									<y description="Distance in y direction in the local coordinate space.">
+										<value>0</value>
+										<unit>m</unit>
+										<lower_boundary>-Inf</lower_boundary>
+									<upper_boundary>Inf</upper_boundary>
+									</y>
+									<z description="Distance in z direction in the local coordinate space.">
+										<value>0</value>
+										<unit>m</unit>
+										<lower_boundary>-Inf</lower_boundary>
+										<upper_boundary>Inf</upper_boundary>
+									</z>
+								</origin>
+								<upper_height description="Height of the upper half of the fuselage section.">
+									<value>1</value>
+									<unit>m</unit>
+									<lower_boundary>0</lower_boundary>
+									<upper_boundary>Inf</upper_boundary>
+								</upper_height>
+								<lower_height description="Height of the lower half of the fuselage section.">
+									<value>1</value>
+									<unit>m</unit>
+									<lower_boundary>0</lower_boundary>
+									<upper_boundary>Inf</upper_boundary>
+								</lower_height>								
+								<width description="Width of the fuselage section.">
+									<value>0.5</value>
+									<unit>m</unit>
+									<lower_boundary>0</lower_boundary>
+									<upper_boundary>Inf</upper_boundary>
+								</width>
+							</section>
+							<section ID="1" description="Geometrical description of one fuselage section.">
+								<name description="Name of the fuselage section.">
+									<value>section_2</value>
+								</name>		
+								<section_shape dedication="Contains a String with path to *.dat file or the key word 'ellipse'">
+									<value>../dat-files/circle-tab</value>
+								</section_shape>
+								<origin description="Origin of fuselage section (local).">
+									<x description="Distance in x direction in the local coordinate space.">
+										<value>0</value>
+										<unit>m</unit>
+										<lower_boundary>-Inf</lower_boundary>
+										<upper_boundary>Inf</upper_boundary>
+									</x>
+									<y description="Distance in y direction in the local coordinate space.">
+										<value>0</value>
+										<unit>m</unit>
+										<lower_boundary>-Inf</lower_boundary>
+									<upper_boundary>Inf</upper_boundary>
+									</y>
+									<z description="Distance in z direction in the local coordinate space.">
+										<value>2</value>
+										<unit>m</unit>
+										<lower_boundary>-Inf</lower_boundary>
+										<upper_boundary>Inf</upper_boundary>
+									</z>
+								</origin>
+								<upper_height description="Height of the upper half of the fuselage section.">
+									<value>1.5</value>
+									<unit>m</unit>
+									<lower_boundary>0</lower_boundary>
+									<upper_boundary>Inf</upper_boundary>
+								</upper_height>
+								<lower_height description="Height of the lower half of the fuselage section.">
+									<value>1.5</value>
+									<unit>m</unit>
+									<lower_boundary>0</lower_boundary>
+									<upper_boundary>Inf</upper_boundary>
+								</lower_height>								
+								<width description="Width of the fuselage section.">
+									<value>4</value>
+									<unit>m</unit>
+									<lower_boundary>0</lower_boundary>
+									<upper_boundary>Inf</upper_boundary>
+								</width>
+							</section>
+						</sections>
+					</fuselage>
+				</geometry>
+			</specific>
+		</fuselage>
+    </component_design>
+</aircraft_exchange_file>
diff --git a/aircraftGeometry2/test/stubs/acxml-v3/nacelle.xml b/aircraftGeometry2/test/stubs/acxml-v3/nacelle.xml
new file mode 100644
index 00000000..9bd62b67
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/acxml-v3/nacelle.xml
@@ -0,0 +1,126 @@
+<aircraft_exchange_file version="3.0">
+    <component_design>
+        <propulsion>
+            <specific>
+                <nacelle ID="0" description="Test nacelle">
+                    <position description="Origin of the nacelle in the global aircraft coordinate system">
+                        <x description="x coordinate of point">
+                            <value>0</value>
+                            <unit>m</unit>
+                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                            <upper_boundary>1.797693135e+308</upper_boundary>
+                        </x>
+                        <y description="y coordinate of point">
+                            <value>0</value>
+                            <unit>m</unit>
+                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                            <upper_boundary>1.797693135e+308</upper_boundary>
+                        </y>
+                        <z description="z coordinate of point">
+                            <value>0</value>
+                            <unit>m</unit>
+                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                            <upper_boundary>1.797693135e+308</upper_boundary>
+                        </z>
+                    </position>
+                    <normal description="Normal direction of the nacelle in the global aircraft coordinate system">
+                        <x description="x direction of unit vector">
+                            <value>0</value>
+                            <unit>1</unit>
+                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                            <upper_boundary>1.797693135e+308</upper_boundary>
+                        </x>
+                        <y description="y direction of unit vector">
+                            <value>0</value>
+                            <unit>1</unit>
+                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                            <upper_boundary>1.797693135e+308</upper_boundary>
+                        </y>
+                        <z description="z direction of unit vector">
+                            <value>1</value>
+                            <unit>1</unit>
+                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                            <upper_boundary>1.797693135e+308</upper_boundary>
+                        </z>
+                    </normal>
+                    <sections description="Geometrical description of the nacelle sections">
+                        <section ID="0">
+                            <origin description="Origin of the section (local)">
+                                <x description="x coordinate of point">
+                                    <value>0</value>
+                                    <unit>m</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </x>
+                                <y description="y coordinate of point">
+                                    <value>0</value>
+                                    <unit>m</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </y>
+                                <z description="z coordinate of point">
+                                    <value>0</value>
+                                    <unit>m</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </z>
+                            </origin>
+                            <width description="width of the section">
+                                <value>2</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </width>
+                            <height description="Height of the section">
+                                <value>1.5</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </height>
+                            <profile description="The profile name of the section">
+                                <value>circle-tab</value>
+                            </profile>
+                        </section>
+                        <section ID="1">
+                            <origin description="Origin of the section (local)">
+                                <x description="x coordinate of point">
+                                    <value>0</value>
+                                    <unit>m</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </x>
+                                <y description="y coordinate of point">
+                                    <value>0</value>
+                                    <unit>m</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </y>
+                                <z description="z coordinate of point">
+                                    <value>2</value>
+                                    <unit>m</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </z>
+                            </origin>
+                            <width description="width of the section">
+                                <value>1</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </width>
+                            <height description="Height of the section">
+                                <value>1</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </height>
+                            <profile description="The profile name of the section">
+                                <value>circle-tab</value>
+                            </profile>
+                        </section>
+                    </sections>
+                </nacelle>
+            </specific>
+        </propulsion>
+    </component_design>
+</aircraft_exchange_file>
diff --git a/aircraftGeometry2/test/stubs/acxml-v3/pylon.xml b/aircraftGeometry2/test/stubs/acxml-v3/pylon.xml
new file mode 100644
index 00000000..249789d8
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/acxml-v3/pylon.xml
@@ -0,0 +1,128 @@
+<aircraft_exchange_file version="3.0">
+    <component_design>
+        <propulsion>
+            <specific>
+                <propulsion ID="0" description="Description of one propulsion">
+                    <pylon>
+                        <position description="reference position in global coordinates">
+                            <x description="x coordinate of point">
+                                <value>0</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </x>
+                            <y description="y coordinate of point">
+                                <value>0</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </y>
+                            <z description="z coordinate of point">
+                                <value>0</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </z>
+                        </position>
+                        <normal description="unit vector according to global coordinate system for direction applied at position">
+                            <x description="x direction of unit vector">
+                                <value>0</value>
+                                <unit>1</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </x>
+                            <y description="y direction of unit vector">
+                                <value>-1</value>
+                                <unit>1</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </y>
+                            <z description="z direction of unit vector">
+                                <value>0</value>
+                                <unit>1</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </z>
+                        </normal>
+                        <sections description="sections">
+                            <section ID="0">
+                                <origin description="origin of chord (local)">
+                                    <x description="x coordinate of point">
+                                        <value>0</value>
+                                        <unit>m</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </x>
+                                    <y description="y coordinate of point">
+                                        <value>0</value>
+                                        <unit>m</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </y>
+                                    <z description="z coordinate of point">
+                                        <value>0</value>
+                                        <unit>m</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </z>
+                                </origin>
+                                <chord_length description="chord length of the section">
+                                    <value>2</value>
+                                    <unit>m</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </chord_length>
+                                <geometric_twist description="geometric twist of the section around leading edge">
+                                    <value>0</value>
+                                    <unit>rad</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </geometric_twist>
+                                <profile description="profile (data normalized to chord length)">
+                                    <value>n0012-tab</value>
+                                </profile>
+                            </section>
+                            <section ID="1">
+                                <origin description="origin of chord (local)">
+                                    <x description="x coordinate of point">
+                                        <value>0</value>
+                                        <unit>m</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </x>
+                                    <y description="y coordinate of point">
+                                        <value>0</value>
+                                        <unit>m</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </y>
+                                    <z description="z coordinate of point">
+                                        <value>-1</value>
+                                        <unit>m</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </z>
+                                </origin>
+                                <chord_length description="chord length of the section">
+                                    <value>1</value>
+                                    <unit>m</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </chord_length>
+                                <geometric_twist description="geometric twist of the section around leading edge">
+                                    <value>0</value>
+                                    <unit>rad</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </geometric_twist>
+                                <profile description="profile (data normalized to chord length)">
+                                    <value>n0012-tab</value>
+                                </profile>
+                            </section>
+                        </sections>
+                    </pylon>
+                </propulsion>
+            </specific>
+        </propulsion>
+    </component_design>
+</aircraft_exchange_file>
diff --git a/aircraftGeometry2/test/stubs/acxml-v3/wing.xml b/aircraftGeometry2/test/stubs/acxml-v3/wing.xml
new file mode 100644
index 00000000..3c3100cd
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/acxml-v3/wing.xml
@@ -0,0 +1,291 @@
+<aircraft_exchange_file version="3.0">
+    <component_design>
+        <wing>
+            <specific>
+                <geometry>
+                    <aerodynamic_surface ID="0" description="I lift">
+                        <name description="name of surface">
+                            <value>Example Wing</value>
+                        </name>
+                        <position description="reference position in global coordinates">
+                            <x description="x coordinate of point">
+                                <value>0</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </x>
+                            <y description="y coordinate of point">
+                                <value>0</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </y>
+                            <z description="z coordinate of point">
+                                <value>0</value>
+                                <unit>m</unit>
+                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                <upper_boundary>1.797693135e+308</upper_boundary>
+                            </z>
+                        </position>
+                        <parameters description="aerodynamic surface parameters">
+                            <direction description="unit vector according to global coordinate system for direction applied at position">
+                                <x description="x direction of unit vector">
+                                    <value>0</value>
+                                    <unit>1</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </x>
+                                <y description="y direction of unit vector">
+                                    <value>-1</value>
+                                    <unit>1</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </y>
+                                <z description="z direction of unit vector">
+                                    <value>0</value>
+                                    <unit>1</unit>
+                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                </z>
+                            </direction>
+                            <symmetric description="symmetric to x-z plane (global) aerodynamic surface">
+                                <value>true</value>
+                            </symmetric>
+                            <sections description="sections">
+                                <section ID="0">
+                                    <chord_origin description="origin of chord (local)">
+                                        <x description="x coordinate of point">
+                                            <value>0</value>
+                                            <unit>m</unit>
+                                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                                            <upper_boundary>1.797693135e+308</upper_boundary>
+                                        </x>
+                                        <y description="y coordinate of point">
+                                            <value>0</value>
+                                            <unit>m</unit>
+                                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                                            <upper_boundary>1.797693135e+308</upper_boundary>
+                                        </y>
+                                        <z description="z coordinate of point">
+                                            <value>0</value>
+                                            <unit>m</unit>
+                                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                                            <upper_boundary>1.797693135e+308</upper_boundary>
+                                        </z>
+                                    </chord_origin>
+                                    <chord_length description="chord length of the section">
+                                        <value>2</value>
+                                        <unit>m</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </chord_length>
+                                    <geometric_twist description="geometric twist of the section around leading edge">
+                                        <value>0</value>
+                                        <unit>rad</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </geometric_twist>
+                                    <scale_thickness description="scale the thickness defined by the profile with this factor">
+                                        <value>1.0</value>
+                                        <unit>1</unit>
+                                        <lower_boundary>0.0</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </scale_thickness>
+                                    <profile description="profile (data normalized to chord length)">
+                                        <value>n0012-tab</value>
+                                    </profile>
+                                </section>
+                                <section ID="1">
+                                    <chord_origin description="origin of chord (local)">
+                                        <x description="x coordinate of point">
+                                            <value>0</value>
+                                            <unit>m</unit>
+                                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                                            <upper_boundary>1.797693135e+308</upper_boundary>
+                                        </x>
+                                        <y description="y coordinate of point">
+                                            <value>0</value>
+                                            <unit>m</unit>
+                                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                                            <upper_boundary>1.797693135e+308</upper_boundary>
+                                        </y>
+                                        <z description="z coordinate of point">
+                                            <value>-1</value>
+                                            <unit>m</unit>
+                                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                                            <upper_boundary>1.797693135e+308</upper_boundary>
+                                        </z>
+                                    </chord_origin>
+                                    <chord_length description="chord length of the section">
+                                        <value>2</value>
+                                        <unit>m</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </chord_length>
+                                    <geometric_twist description="geometric twist of the section around leading edge">
+                                        <value>0</value>
+                                        <unit>rad</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </geometric_twist>
+                                    <scale_thickness description="">
+                                        <value>1.0</value>
+                                        <unit>1</unit>
+                                        <lower_boundary>0.0</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </scale_thickness>
+                                    <profile description="profile (data normalized to chord length)">
+                                        <value>n0012-tab</value>
+                                    </profile>
+                                </section>
+                                <section ID="2">
+                                    <chord_origin description="origin of chord (local)">
+                                        <x description="x coordinate of point">
+                                            <value>1</value>
+                                            <unit>m</unit>
+                                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                                            <upper_boundary>1.797693135e+308</upper_boundary>
+                                        </x>
+                                        <y description="y coordinate of point">
+                                            <value>0</value>
+                                            <unit>m</unit>
+                                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                                            <upper_boundary>1.797693135e+308</upper_boundary>
+                                        </y>
+                                        <z description="z coordinate of point">
+                                            <value>-2</value>
+                                            <unit>m</unit>
+                                            <lower_boundary>-1.797693135e+308</lower_boundary>
+                                            <upper_boundary>1.797693135e+308</upper_boundary>
+                                        </z>
+                                    </chord_origin>
+                                    <chord_length description="chord length of the section">
+                                        <value>1</value>
+                                        <unit>m</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </chord_length>
+                                    <scale_thickness description="scale the thickness defined by the profile with this factor">
+                                        <value>1.0</value>
+                                        <unit>1</unit>
+                                        <lower_boundary>0.0</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </scale_thickness>
+                                    <geometric_twist description="geometric twist of the section around leading edge">
+                                        <value>0</value>
+                                        <unit>rad</unit>
+                                        <lower_boundary>-1.797693135e+308</lower_boundary>
+                                        <upper_boundary>1.797693135e+308</upper_boundary>
+                                    </geometric_twist>
+                                    <profile description="profile (data normalized to chord length)">
+                                        <value>n0012-tab</value>
+                                    </profile>
+                                </section>
+                            </sections>
+                            <spars>
+                                <spar ID="0" description="I bend">
+                                    <position description="chord relative position of spar">
+                                        <inner_position description="relative inner position">
+                                            <chord description="chord position">
+                                                <from description="relative chord position">
+                                                    <value>0.3</value>
+                                                    <unit>1</unit>
+                                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                                </from>
+                                                <to description="relative chord position">
+                                                    <value>0.5</value>
+                                                    <unit>1</unit>
+                                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                                </to>
+                                            </chord>
+                                            <spanwise description="relative spanwise position">
+                                                <value>0.0</value>
+                                                <unit>1</unit>
+                                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                <upper_boundary>1.797693135e+308</upper_boundary>
+                                            </spanwise>
+                                        </inner_position>
+                                        <outer_position description="relative outer position">
+                                            <chord description="chord position">
+                                                <from description="relative chord position">
+                                                    <value>0.3</value>
+                                                    <unit>1</unit>
+                                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                                </from>
+                                                <to description="relative chord position">
+                                                    <value>0.4</value>
+                                                    <unit>1</unit>
+                                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                                </to>
+                                            </chord>
+                                            <spanwise description="relative spanwise position">
+                                                <value>0.9</value>
+                                                <unit>1</unit>
+                                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                <upper_boundary>1.797693135e+308</upper_boundary>
+                                            </spanwise>
+                                        </outer_position>
+                                    </position>
+                                </spar>
+                            </spars>
+                            <control_devices>
+                                <control_device ID="0" description="I control">
+                                    <position description="chord relative position of spar">
+                                        <inner_position description="relative inner position">
+                                            <chord description="chord position">
+                                                <from description="relative chord position">
+                                                    <value>0.7</value>
+                                                    <unit>1</unit>
+                                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                                </from>
+                                                <to description="relative chord position">
+                                                    <value>0.9</value>
+                                                    <unit>1</unit>
+                                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                                </to>
+                                            </chord>
+                                            <spanwise description="relative spanwise position">
+                                                <value>-0</value>
+                                                <unit>1</unit>
+                                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                <upper_boundary>1.797693135e+308</upper_boundary>
+                                            </spanwise>
+                                        </inner_position>
+                                        <outer_position description="relative outer position">
+                                            <chord description="chord position">
+                                                <from description="relative chord position">
+                                                    <value>0.8</value>
+                                                    <unit>1</unit>
+                                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                                </from>
+                                                <to description="relative chord position">
+                                                    <value>0.9</value>
+                                                    <unit>1</unit>
+                                                    <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                    <upper_boundary>1.797693135e+308</upper_boundary>
+                                                </to>
+                                            </chord>
+                                            <spanwise description="relative spanwise position">
+                                                <value>0.4</value>
+                                                <unit>1</unit>
+                                                <lower_boundary>-1.797693135e+308</lower_boundary>
+                                                <upper_boundary>1.797693135e+308</upper_boundary>
+                                            </spanwise>
+                                        </outer_position>
+                                    </position>
+                                </control_device>
+                            </control_devices>
+                        </parameters>
+                    </aerodynamic_surface>
+                </geometry>
+            </specific>
+        </wing>
+    </component_design>
+</aircraft_exchange_file>
diff --git a/aircraftGeometry2/test/stubs/dat-files/F15_12.dat b/aircraftGeometry2/test/stubs/dat-files/F15_12.dat
new file mode 100644
index 00000000..d08bb73f
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/dat-files/F15_12.dat
@@ -0,0 +1,160 @@
+# F15_12.dat (thickness ratio 0.12)
+ 1.00000     0.00000
+ 0.99380     0.00118
+ 0.98285     0.00331
+ 0.96997     0.00587
+ 0.95576     0.00881
+ 0.94094     0.01198
+ 0.92589     0.01535
+ 0.91072     0.01887
+ 0.89569     0.02235
+ 0.88146     0.02571
+ 0.86788     0.02876
+ 0.85450     0.03171
+ 0.84122     0.03434
+ 0.82773     0.03687
+ 0.81422     0.03901
+ 0.79982     0.04117
+ 0.78473     0.04332
+ 0.76924     0.04540
+ 0.75350     0.04743
+ 0.73773     0.04941
+ 0.72208     0.05127
+ 0.70654     0.05297
+ 0.69088     0.05452
+ 0.67516     0.05597
+ 0.65940     0.05730
+ 0.64359     0.05854
+ 0.62780     0.05968
+ 0.61217     0.06070
+ 0.59658     0.06160
+ 0.58100     0.06245
+ 0.56523     0.06316
+ 0.54932     0.06378
+ 0.53346     0.06431
+ 0.51755     0.06474
+ 0.50160     0.06507
+ 0.48567     0.06533
+ 0.46973     0.06549
+ 0.45375     0.06557
+ 0.43779     0.06556
+ 0.42185     0.06545
+ 0.40587     0.06526
+ 0.38987     0.06500
+ 0.37390     0.06465
+ 0.35794     0.06421
+ 0.34199     0.06368
+ 0.32601     0.06308
+ 0.31005     0.06240
+ 0.29415     0.06162
+ 0.27825     0.06076
+ 0.26235     0.05980
+ 0.24664     0.05878
+ 0.23109     0.05764
+ 0.21566     0.05643
+ 0.20027     0.05516
+ 0.18489     0.05370
+ 0.16940     0.05213
+ 0.15407     0.05042
+ 0.13882     0.04856
+ 0.12384     0.04653
+ 0.10906     0.04430
+ 0.09466     0.04192
+ 0.08087     0.03939
+ 0.06795     0.03671
+ 0.05623     0.03395
+ 0.04591     0.03116
+ 0.03713     0.02848
+ 0.02986     0.02602
+ 0.02394     0.02377
+ 0.01910     0.02166
+ 0.01510     0.01961
+ 0.01177     0.01761
+ 0.00899     0.01562
+ 0.00668     0.01362
+ 0.00479     0.01159
+ 0.00327     0.00957
+ 0.00208     0.00755
+ 0.00117     0.00557
+ 0.00052     0.00363
+ 0.00013     0.00177
+ 0.00000     0.00000
+ 0.00013    -0.00164
+ 0.00052    -0.00348
+ 0.00117    -0.00524
+ 0.00208    -0.00696
+ 0.00327    -0.00864
+ 0.00479    -0.01031
+ 0.00668    -0.01196
+ 0.00899    -0.01360
+ 0.01177    -0.01527
+ 0.01510    -0.01704
+ 0.01910    -0.01897
+ 0.02394    -0.02108
+ 0.02986    -0.02338
+ 0.03713    -0.02585
+ 0.04591    -0.02841
+ 0.05623    -0.03101
+ 0.06795    -0.03358
+ 0.08087    -0.03603
+ 0.09466    -0.03829
+ 0.10906    -0.04045
+ 0.12384    -0.04249
+ 0.13882    -0.04422
+ 0.15407    -0.04573
+ 0.16940    -0.04710
+ 0.18489    -0.04834
+ 0.20027    -0.04939
+ 0.21566    -0.05035
+ 0.23109    -0.05122
+ 0.24664    -0.05203
+ 0.26235    -0.05274
+ 0.27825    -0.05335
+ 0.29415    -0.05385
+ 0.31005    -0.05426
+ 0.32601    -0.05458
+ 0.34199    -0.05480
+ 0.35794    -0.05492
+ 0.37390    -0.05495
+ 0.38987    -0.05488
+ 0.40587    -0.05469
+ 0.42185    -0.05439
+ 0.43779    -0.05396
+ 0.45375    -0.05342
+ 0.46973    -0.05274
+ 0.48567    -0.05195
+ 0.50160    -0.05103
+ 0.51755    -0.04998
+ 0.53346    -0.04880
+ 0.54932    -0.04749
+ 0.56523    -0.04606
+ 0.58100    -0.04453
+ 0.59658    -0.04285
+ 0.61217    -0.04110
+ 0.62780    -0.03920
+ 0.64359    -0.03713
+ 0.65940    -0.03493
+ 0.67516    -0.03261
+ 0.69088    -0.03017
+ 0.70654    -0.02763
+ 0.72208    -0.02499
+ 0.73773    -0.02224
+ 0.75350    -0.01950
+ 0.76924    -0.01674
+ 0.78473    -0.01387
+ 0.79982    -0.01104
+ 0.81422    -0.00844
+ 0.82773    -0.00597
+ 0.84122    -0.00333
+ 0.85450    -0.00101
+ 0.86788     0.00112
+ 0.88146     0.00270
+ 0.89569     0.00357
+ 0.91072     0.00433
+ 0.92589     0.00466
+ 0.94094     0.00448
+ 0.95576     0.00385
+ 0.96997     0.00285
+ 0.98285     0.00162
+ 0.99380     0.00057
+ 1.00000     0.00000
diff --git a/aircraftGeometry2/test/stubs/dat-files/circle-comma.dat b/aircraftGeometry2/test/stubs/dat-files/circle-comma.dat
new file mode 100644
index 00000000..ca6f5718
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/dat-files/circle-comma.dat
@@ -0,0 +1,43 @@
+#Circular data
+
+0.50000,0.00000
+0.49384,0.07822
+0.47553,0.15451
+0.44550,0.22700
+0.40451,0.29389
+0.35355,0.35355
+0.29389,0.40451
+0.22700,0.44550
+0.15451,0.47553
+0.07822,0.49384
+0.00000,0.50000
+-0.07822,0.49384
+-0.15451,0.47553
+-0.22700,0.44550
+-0.29389,0.40451
+-0.35355,0.35355
+-0.40451,0.29389
+-0.44550,0.22700
+-0.47553,0.15451
+-0.49384,0.07822
+-0.50000,0.00000
+-0.49384,-0.07822
+-0.47553,-0.15451
+-0.44550,-0.22700
+-0.40451,-0.29389
+-0.35355,-0.35355
+-0.29389,-0.40451
+-0.22700,-0.44550
+-0.15451,-0.47553
+-0.07822,-0.49384
+-0.00000,-0.50000
+0.07822,-0.49384
+0.15451,-0.47553
+0.22700,-0.44550
+0.29389,-0.40451
+0.35355,-0.35355
+0.40451,-0.29389
+0.44550,-0.22700
+0.47553,-0.15451
+0.49384,-0.07822
+0.50000,-0.00000
\ No newline at end of file
diff --git a/aircraftGeometry2/test/stubs/dat-files/circle-semicolon.dat b/aircraftGeometry2/test/stubs/dat-files/circle-semicolon.dat
new file mode 100644
index 00000000..60f823c4
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/dat-files/circle-semicolon.dat
@@ -0,0 +1,43 @@
+#Circular data
+
+0.50000;0.00000
+0.49384;0.07822
+0.47553;0.15451
+0.44550;0.22700
+0.40451;0.29389
+0.35355;0.35355
+0.29389;0.40451
+0.22700;0.44550
+0.15451;0.47553
+0.07822;0.49384
+0.00000;0.50000
+-0.07822;0.49384
+-0.15451;0.47553
+-0.22700;0.44550
+-0.29389;0.40451
+-0.35355;0.35355
+-0.40451;0.29389
+-0.44550;0.22700
+-0.47553;0.15451
+-0.49384;0.07822
+-0.50000;0.00000
+-0.49384;-0.07822
+-0.47553;-0.15451
+-0.44550;-0.22700
+-0.40451;-0.29389
+-0.35355;-0.35355
+-0.29389;-0.40451
+-0.22700;-0.44550
+-0.15451;-0.47553
+-0.07822;-0.49384
+-0.00000;-0.50000
+0.07822;-0.49384
+0.15451;-0.47553
+0.22700;-0.44550
+0.29389;-0.40451
+0.35355;-0.35355
+0.40451;-0.29389
+0.44550;-0.22700
+0.47553;-0.15451
+0.49384;-0.07822
+0.50000;-0.00000
\ No newline at end of file
diff --git a/aircraftGeometry2/test/stubs/dat-files/circle-tab.dat b/aircraftGeometry2/test/stubs/dat-files/circle-tab.dat
new file mode 100644
index 00000000..64f5a325
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/dat-files/circle-tab.dat
@@ -0,0 +1,43 @@
+#Circular data
+
+0.50000	0.00000
+0.49384	0.07822
+0.47553	0.15451
+0.44550	0.22700
+0.40451	0.29389
+0.35355	0.35355
+0.29389	0.40451
+0.22700	0.44550
+0.15451	0.47553
+0.07822	0.49384
+0.00000	0.50000
+-0.07822	0.49384
+-0.15451	0.47553
+-0.22700	0.44550
+-0.29389	0.40451
+-0.35355	0.35355
+-0.40451	0.29389
+-0.44550	0.22700
+-0.47553	0.15451
+-0.49384	0.07822
+-0.50000	0.00000
+-0.49384	-0.07822
+-0.47553	-0.15451
+-0.44550	-0.22700
+-0.40451	-0.29389
+-0.35355	-0.35355
+-0.29389	-0.40451
+-0.22700	-0.44550
+-0.15451	-0.47553
+-0.07822	-0.49384
+-0.00000	-0.50000
+0.07822	-0.49384
+0.15451	-0.47553
+0.22700	-0.44550
+0.29389	-0.40451
+0.35355	-0.35355
+0.40451	-0.29389
+0.44550	-0.22700
+0.47553	-0.15451
+0.49384	-0.07822
+0.50000	-0.00000
\ No newline at end of file
diff --git a/aircraftGeometry2/test/stubs/dat-files/n0012-tab.dat b/aircraftGeometry2/test/stubs/dat-files/n0012-tab.dat
new file mode 100644
index 00000000..e7f86fe8
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/dat-files/n0012-tab.dat
@@ -0,0 +1,204 @@
+#NACA0012
+0	0
+0.00024672	0.00277913
+0.00098664	0.00551947
+0.00221902	0.00821995
+0.00394265	0.0108792
+0.00615583	0.01349561
+0.00885637	0.01606733
+0.01204162	0.01859226
+0.01570842	0.02106812
+0.01985316	0.02349241
+0.02447174	0.02586248
+0.02955962	0.02817553
+0.03511176	0.03042863
+0.04112269	0.03261878
+0.04758647	0.0347429
+0.05449674	0.03679788
+0.06184666	0.03878062
+0.06962899	0.04068804
+0.07783604	0.04251711
+0.08645971	0.04426491
+0.0954915	0.04592861
+0.10492249	0.04750555
+0.11474338	0.04899323
+0.12494447	0.05038933
+0.13551569	0.05169178
+0.14644661	0.05289871
+0.15772645	0.05400853
+0.16934407	0.05501991
+0.18128801	0.05593181
+0.19354647	0.05674347
+0.20610737	0.05745444
+0.21895831	0.05806456
+0.2320866	0.05857399
+0.24547929	0.05898318
+0.25912316	0.05929288
+0.27300475	0.05950414
+0.28711035	0.05961828
+0.30142605	0.0596369
+0.31593772	0.05956186
+0.33063104	0.05939525
+0.3454915	0.0591394
+0.36050445	0.05879685
+0.37565506	0.05837033
+0.39092838	0.05786273
+0.40630934	0.05727711
+0.42178277	0.05661666
+0.43733338	0.05588468
+0.45294584	0.05508455
+0.46860474	0.05421975
+0.48429462	0.05329379
+0.5	0.05231025
+0.51570538	0.05127272
+0.53139526	0.05018478
+0.54705416	0.04905004
+0.56266662	0.04787208
+0.57821723	0.04665444
+0.59369066	0.04540065
+0.60907162	0.04411417
+0.62434494	0.04279845
+0.63949555	0.04145686
+0.6545085	0.04009273
+0.66936896	0.03870931
+0.68406228	0.03730984
+0.69857395	0.03589746
+0.71288965	0.03447529
+0.72699525	0.03304638
+0.74087684	0.03161375
+0.75452071	0.03018037
+0.7679134	0.02874916
+0.78104169	0.02732304
+0.79389263	0.02590486
+0.80645353	0.02449747
+0.81871199	0.02310368
+0.83065593	0.02172629
+0.84227355	0.02036807
+0.85355339	0.01903179
+0.86448431	0.01772019
+0.87505553	0.01643599
+0.88525662	0.01518188
+0.89507751	0.01396055
+0.9045085	0.01277464
+0.91354029	0.01162677
+0.92216396	0.01051952
+0.93037101	0.00945542
+0.93815334	0.00843693
+0.94550326	0.00746647
+0.95241353	0.00654638
+0.95887731	0.00567891
+0.96488824	0.00486623
+0.97044038	0.00411038
+0.97552826	0.00341331
+0.98014684	0.00277684
+0.98429158	0.00220264
+0.98795838	0.00169224
+0.99114363	0.00124702
+0.99384417	0.0008682
+0.99605735	0.00055681
+0.99778098	0.00031372
+0.99901336	0.00013959
+0.99975328	0.00003492
+1	0
+	
+0	0
+0.00024672	-0.00277913
+0.00098664	-0.00551947
+0.00221902	-0.00821995
+0.00394265	-0.0108792
+0.00615583	-0.01349561
+0.00885637	-0.01606733
+0.01204162	-0.01859226
+0.01570842	-0.02106812
+0.01985316	-0.02349241
+0.02447174	-0.02586248
+0.02955962	-0.02817553
+0.03511176	-0.03042863
+0.04112269	-0.03261878
+0.04758647	-0.0347429
+0.05449674	-0.03679788
+0.06184666	-0.03878062
+0.06962899	-0.04068804
+0.07783604	-0.04251711
+0.08645971	-0.04426491
+0.0954915	-0.04592861
+0.10492249	-0.04750555
+0.11474338	-0.04899323
+0.12494447	-0.05038933
+0.13551569	-0.05169178
+0.14644661	-0.05289871
+0.15772645	-0.05400853
+0.16934407	-0.05501991
+0.18128801	-0.05593181
+0.19354647	-0.05674347
+0.20610737	-0.05745443
+0.21895831	-0.05806456
+0.2320866	-0.05857399
+0.24547929	-0.05898318
+0.25912316	-0.05929288
+0.27300475	-0.05950414
+0.28711035	-0.05961828
+0.30142605	-0.0596369
+0.31593772	-0.05956186
+0.33063104	-0.05939525
+0.3454915	-0.0591394
+0.36050445	-0.05879685
+0.37565506	-0.05837033
+0.39092838	-0.05786273
+0.40630934	-0.05727711
+0.42178277	-0.05661666
+0.43733338	-0.05588468
+0.45294584	-0.05508455
+0.46860474	-0.05421975
+0.48429462	-0.05329379
+0.5	-0.05231025
+0.51570538	-0.05127272
+0.53139526	-0.05018478
+0.54705416	-0.04905004
+0.56266662	-0.04787208
+0.57821723	-0.04665444
+0.59369066	-0.04540064
+0.60907162	-0.04411417
+0.62434494	-0.04279845
+0.63949555	-0.04145686
+0.6545085	-0.04009273
+0.66936896	-0.03870931
+0.68406228	-0.03730984
+0.69857395	-0.03589746
+0.71288965	-0.03447529
+0.72699525	-0.03304638
+0.74087684	-0.03161375
+0.75452071	-0.03018037
+0.7679134	-0.02874916
+0.78104169	-0.02732304
+0.79389263	-0.02590486
+0.80645353	-0.02449747
+0.81871199	-0.02310368
+0.83065593	-0.02172629
+0.84227355	-0.02036807
+0.85355339	-0.01903179
+0.86448431	-0.01772019
+0.87505553	-0.01643599
+0.88525662	-0.01518188
+0.89507751	-0.01396055
+0.9045085	-0.01277464
+0.91354029	-0.01162677
+0.92216396	-0.01051952
+0.93037101	-0.00945542
+0.93815334	-0.00843693
+0.94550326	-0.00746647
+0.95241353	-0.00654638
+0.95887731	-0.00567891
+0.96488824	-0.00486623
+0.97044038	-0.00411038
+0.97552826	-0.00341331
+0.98014684	-0.00277684
+0.98429158	-0.00220264
+0.98795838	-0.00169224
+0.99114363	-0.00124702
+0.99384417	-0.0008682
+0.99605735	-0.00055681
+0.99778098	-0.00031372
+0.99901336	-0.00013959
+0.99975328	-0.00003492
+1	0
diff --git a/aircraftGeometry2/test/stubs/dat-files/n0012-wrong-direction.dat b/aircraftGeometry2/test/stubs/dat-files/n0012-wrong-direction.dat
new file mode 100644
index 00000000..c27f9a5a
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/dat-files/n0012-wrong-direction.dat
@@ -0,0 +1,204 @@
+#NACA0012
+0	0
+-0.00024672	0.00277913
+-0.00098664	0.00551947
+-0.00221902	0.00821995
+-0.00394265	0.0108792
+-0.00615583	0.01349561
+-0.00885637	0.01606733
+-0.01204162	0.01859226
+-0.01570842	0.02106812
+-0.01985316	0.02349241
+-0.02447174	0.02586248
+-0.02955962	0.02817553
+-0.03511176	0.03042863
+-0.04112269	0.03261878
+-0.04758647	0.0347429
+-0.05449674	0.03679788
+-0.06184666	0.03878062
+-0.06962899	0.04068804
+-0.07783604	0.04251711
+-0.08645971	0.04426491
+-0.0954915	0.04592861
+-0.10492249	0.04750555
+-0.11474338	0.04899323
+-0.12494447	0.05038933
+-0.13551569	0.05169178
+-0.14644661	0.05289871
+-0.15772645	0.05400853
+-0.16934407	0.05501991
+-0.18128801	0.05593181
+-0.19354647	0.05674347
+-0.20610737	0.05745444
+-0.21895831	0.05806456
+-0.2320866	0.05857399
+-0.24547929	0.05898318
+-0.25912316	0.05929288
+-0.27300475	0.05950414
+-0.28711035	0.05961828
+-0.30142605	0.0596369
+-0.31593772	0.05956186
+-0.33063104	0.05939525
+-0.3454915	0.0591394
+-0.36050445	0.05879685
+-0.37565506	0.05837033
+-0.39092838	0.05786273
+-0.40630934	0.05727711
+-0.42178277	0.05661666
+-0.43733338	0.05588468
+-0.45294584	0.05508455
+-0.46860474	0.05421975
+-0.48429462	0.05329379
+-0.5	0.05231025
+-0.51570538	0.05127272
+-0.53139526	0.05018478
+-0.54705416	0.04905004
+-0.56266662	0.04787208
+-0.57821723	0.04665444
+-0.59369066	0.04540065
+-0.60907162	0.04411417
+-0.62434494	0.04279845
+-0.63949555	0.04145686
+-0.6545085	0.04009273
+-0.66936896	0.03870931
+-0.68406228	0.03730984
+-0.69857395	0.03589746
+-0.71288965	0.03447529
+-0.72699525	0.03304638
+-0.74087684	0.03161375
+-0.75452071	0.03018037
+-0.7679134	0.02874916
+-0.78104169	0.02732304
+-0.79389263	0.02590486
+-0.80645353	0.02449747
+-0.81871199	0.02310368
+-0.83065593	0.02172629
+-0.84227355	0.02036807
+-0.85355339	0.01903179
+-0.86448431	0.01772019
+-0.87505553	0.01643599
+-0.88525662	0.01518188
+-0.89507751	0.01396055
+-0.9045085	0.01277464
+-0.91354029	0.01162677
+-0.92216396	0.01051952
+-0.93037101	0.00945542
+-0.93815334	0.00843693
+-0.94550326	0.00746647
+-0.95241353	0.00654638
+-0.95887731	0.00567891
+-0.96488824	0.00486623
+-0.97044038	0.00411038
+-0.97552826	0.00341331
+-0.98014684	0.00277684
+-0.98429158	0.00220264
+-0.98795838	0.00169224
+-0.99114363	0.00124702
+-0.99384417	0.0008682
+-0.99605735	0.00055681
+-0.99778098	0.00031372
+-0.99901336	0.00013959
+-0.99975328	0.00003492
+-1	0
+	
+0	0
+-0.00024672	-0.00277913
+-0.00098664	-0.00551947
+-0.00221902	-0.00821995
+-0.00394265	-0.0108792
+-0.00615583	-0.01349561
+-0.00885637	-0.01606733
+-0.01204162	-0.01859226
+-0.01570842	-0.02106812
+-0.01985316	-0.02349241
+-0.02447174	-0.02586248
+-0.02955962	-0.02817553
+-0.03511176	-0.03042863
+-0.04112269	-0.03261878
+-0.04758647	-0.0347429
+-0.05449674	-0.03679788
+-0.06184666	-0.03878062
+-0.06962899	-0.04068804
+-0.07783604	-0.04251711
+-0.08645971	-0.04426491
+-0.0954915	-0.04592861
+-0.10492249	-0.04750555
+-0.11474338	-0.04899323
+-0.12494447	-0.05038933
+-0.13551569	-0.05169178
+-0.14644661	-0.05289871
+-0.15772645	-0.05400853
+-0.16934407	-0.05501991
+-0.18128801	-0.05593181
+-0.19354647	-0.05674347
+-0.20610737	-0.05745443
+-0.21895831	-0.05806456
+-0.2320866	-0.05857399
+-0.24547929	-0.05898318
+-0.25912316	-0.05929288
+-0.27300475	-0.05950414
+-0.28711035	-0.05961828
+-0.30142605	-0.0596369
+-0.31593772	-0.05956186
+-0.33063104	-0.05939525
+-0.3454915	-0.0591394
+-0.36050445	-0.05879685
+-0.37565506	-0.05837033
+-0.39092838	-0.05786273
+-0.40630934	-0.05727711
+-0.42178277	-0.05661666
+-0.43733338	-0.05588468
+-0.45294584	-0.05508455
+0.46860474	-0.05421975
+-0.48429462	-0.05329379
+-0.5	-0.05231025
+-0.51570538	-0.05127272
+-0.53139526	-0.05018478
+-0.54705416	-0.04905004
+-0.56266662	-0.04787208
+-0.57821723	-0.04665444
+-0.59369066	-0.04540064
+-0.60907162	-0.04411417
+-0.62434494	-0.04279845
+-0.63949555	-0.04145686
+-0.6545085	-0.04009273
+-0.66936896	-0.03870931
+-0.68406228	-0.03730984
+-0.69857395	-0.03589746
+-0.71288965	-0.03447529
+-0.72699525	-0.03304638
+-0.74087684	-0.03161375
+-0.75452071	-0.03018037
+-0.7679134	-0.02874916
+-0.78104169	-0.02732304
+-0.79389263	-0.02590486
+-0.80645353	-0.02449747
+-0.81871199	-0.02310368
+-0.83065593	-0.02172629
+-0.84227355	-0.02036807
+-0.85355339	-0.01903179
+-0.86448431	-0.01772019
+-0.87505553	-0.01643599
+-0.88525662	-0.01518188
+-0.89507751	-0.01396055
+-0.9045085	-0.01277464
+-0.91354029	-0.01162677
+-0.92216396	-0.01051952
+-0.93037101	-0.00945542
+-0.93815334	-0.00843693
+-0.94550326	-0.00746647
+-0.95241353	-0.00654638
+-0.95887731	-0.00567891
+-0.96488824	-0.00486623
+-0.97044038	-0.00411038
+-0.97552826	-0.00341331
+-0.98014684	-0.00277684
+-0.98429158	-0.00220264
+-0.98795838	-0.00169224
+-0.99114363	-0.00124702
+-0.99384417	-0.0008682
+-0.99605735	-0.00055681
+-0.99778098	-0.00031372
+-0.99901336	-0.00013959
+-0.99975328	-0.00003492
+-1	0
diff --git a/aircraftGeometry2/test/stubs/dat-files/n0012-wrong-origin.dat b/aircraftGeometry2/test/stubs/dat-files/n0012-wrong-origin.dat
new file mode 100644
index 00000000..265f7ff8
--- /dev/null
+++ b/aircraftGeometry2/test/stubs/dat-files/n0012-wrong-origin.dat
@@ -0,0 +1,204 @@
+#NACA0012
+1	0
+1.00024672	0.00277913
+1.00098664	0.00551947
+1.00221902	0.00821995
+1.00394265	0.0108792
+1.00615583	0.01349561
+1.00885637	0.01606733
+1.01204162	0.01859226
+1.01570842	0.02106812
+1.01985316	0.02349241
+1.02447174	0.02586248
+1.02955962	0.02817553
+1.03511176	0.03042863
+1.04112269	0.03261878
+1.04758647	0.0347429
+1.05449674	0.03679788
+1.06184666	0.03878062
+1.06962899	0.04068804
+1.07783604	0.04251711
+1.08645971	0.04426491
+1.0954915	0.04592861
+1.10492249	0.04750555
+1.11474338	0.04899323
+1.12494447	0.05038933
+1.13551569	0.05169178
+1.14644661	0.05289871
+1.15772645	0.05400853
+1.16934407	0.05501991
+1.18128801	0.05593181
+1.19354647	0.05674347
+1.20610737	0.05745444
+1.21895831	0.05806456
+1.2320866	0.05857399
+1.24547929	0.05898318
+1.25912316	0.05929288
+1.27300475	0.05950414
+1.28711035	0.05961828
+1.30142605	0.0596369
+1.31593772	0.05956186
+1.33063104	0.05939525
+1.3454915	0.0591394
+1.36050445	0.05879685
+1.37565506	0.05837033
+1.39092838	0.05786273
+1.40630934	0.05727711
+1.42178277	0.05661666
+1.43733338	0.05588468
+1.45294584	0.05508455
+1.46860474	0.05421975
+1.48429462	0.05329379
+1.5	0.05231025
+1.51570538	0.05127272
+1.53139526	0.05018478
+1.54705416	0.04905004
+1.56266662	0.04787208
+1.57821723	0.04665444
+1.59369066	0.04540065
+1.60907162	0.04411417
+1.62434494	0.04279845
+1.63949555	0.04145686
+1.6545085	0.04009273
+1.66936896	0.03870931
+1.68406228	0.03730984
+1.69857395	0.03589746
+1.71288965	0.03447529
+1.72699525	0.03304638
+1.74087684	0.03161375
+1.75452071	0.03018037
+1.7679134	0.02874916
+1.78104169	0.02732304
+1.79389263	0.02590486
+1.80645353	0.02449747
+1.81871199	0.02310368
+1.83065593	0.02172629
+1.84227355	0.02036807
+1.85355339	0.01903179
+1.86448431	0.01772019
+1.87505553	0.01643599
+1.88525662	0.01518188
+1.89507751	0.01396055
+1.9045085	0.01277464
+1.91354029	0.01162677
+1.92216396	0.01051952
+1.93037101	0.00945542
+1.93815334	0.00843693
+1.94550326	0.00746647
+1.95241353	0.00654638
+1.95887731	0.00567891
+1.96488824	0.00486623
+1.97044038	0.00411038
+1.97552826	0.00341331
+1.98014684	0.00277684
+1.98429158	0.00220264
+1.98795838	0.00169224
+1.99114363	0.00124702
+1.99384417	0.0008682
+1.99605735	0.00055681
+1.99778098	0.00031372
+1.99901336	0.00013959
+1.99975328	0.00003492
+2	0
+	
+1	0
+1.00024672	-0.00277913
+1.00098664	-0.00551947
+1.00221902	-0.00821995
+1.00394265	-0.0108792
+1.00615583	-0.01349561
+1.00885637	-0.01606733
+1.01204162	-0.01859226
+1.01570842	-0.02106812
+1.01985316	-0.02349241
+1.02447174	-0.02586248
+1.02955962	-0.02817553
+1.03511176	-0.03042863
+1.04112269	-0.03261878
+1.04758647	-0.0347429
+1.05449674	-0.03679788
+1.06184666	-0.03878062
+1.06962899	-0.04068804
+1.07783604	-0.04251711
+1.08645971	-0.04426491
+1.0954915	-0.04592861
+1.10492249	-0.04750555
+1.11474338	-0.04899323
+1.12494447	-0.05038933
+1.13551569	-0.05169178
+1.14644661	-0.05289871
+1.15772645	-0.05400853
+1.16934407	-0.05501991
+1.18128801	-0.05593181
+1.19354647	-0.05674347
+1.20610737	-0.05745443
+1.21895831	-0.05806456
+1.2320866	-0.05857399
+1.24547929	-0.05898318
+1.25912316	-0.05929288
+1.27300475	-0.05950414
+1.28711035	-0.05961828
+1.30142605	-0.0596369
+1.31593772	-0.05956186
+1.33063104	-0.05939525
+1.3454915	-0.0591394
+1.36050445	-0.05879685
+1.37565506	-0.05837033
+1.39092838	-0.05786273
+1.40630934	-0.05727711
+1.42178277	-0.05661666
+1.43733338	-0.05588468
+1.45294584	-0.05508455
+1.46860474	-0.05421975
+1.48429462	-0.05329379
+1.5	-0.05231025
+1.51570538	-0.05127272
+1.53139526	-0.05018478
+1.54705416	-0.04905004
+1.56266662	-0.04787208
+1.57821723	-0.04665444
+1.59369066	-0.04540064
+1.60907162	-0.04411417
+1.62434494	-0.04279845
+1.63949555	-0.04145686
+1.6545085	-0.04009273
+1.66936896	-0.03870931
+1.68406228	-0.03730984
+1.69857395	-0.03589746
+1.71288965	-0.03447529
+1.72699525	-0.03304638
+1.74087684	-0.03161375
+1.75452071	-0.03018037
+1.7679134	-0.02874916
+1.78104169	-0.02732304
+1.79389263	-0.02590486
+1.80645353	-0.02449747
+1.81871199	-0.02310368
+1.83065593	-0.02172629
+1.84227355	-0.02036807
+1.85355339	-0.01903179
+1.86448431	-0.01772019
+1.87505553	-0.01643599
+1.88525662	-0.01518188
+1.89507751	-0.01396055
+1.9045085	-0.01277464
+1.91354029	-0.01162677
+1.92216396	-0.01051952
+1.93037101	-0.00945542
+1.93815334	-0.00843693
+1.94550326	-0.00746647
+1.95241353	-0.00654638
+1.95887731	-0.00567891
+1.96488824	-0.00486623
+1.97044038	-0.00411038
+1.97552826	-0.00341331
+1.98014684	-0.00277684
+1.98429158	-0.00220264
+1.98795838	-0.00169224
+1.99114363	-0.00124702
+1.99384417	-0.0008682
+1.99605735	-0.00055681
+1.99778098	-0.00031372
+1.99901336	-0.00013959
+1.99975328	-0.00003492
+2	0
diff --git a/aircraftGeometry2/test/test_airfoil_surface.cpp b/aircraftGeometry2/test/test_airfoil_surface.cpp
new file mode 100644
index 00000000..902cd9c2
--- /dev/null
+++ b/aircraftGeometry2/test/test_airfoil_surface.cpp
@@ -0,0 +1,394 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+
+/* Unit Under Test */
+#include "aircraftGeometry2/airfoil_surface.h"
+
+/* === Fixtures === */
+class WingAIXMLv2 : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Open the simple wing example */
+        std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+        file /= "acxml-v2/wing.xml";
+        if (!std::filesystem::exists(file))
+        {
+            throw std::runtime_error("Could not find file: " + file.string());
+        }
+        AcXml = aixml::openDocument(file);
+    }
+    std::shared_ptr<node> AcXml;
+};
+
+class WingAIXMLv3 : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Open the simple wing example */
+        std::filesystem::path file = data_dir / "acxml-v3/wing.xml";
+        if (!std::filesystem::exists(file))
+        {
+            throw std::runtime_error("Could not find file: " + file.string());
+        }
+        AcXml = aixml::openDocument(file);
+    }
+    std::shared_ptr<node> AcXml;
+    std::filesystem::path data_dir{CMAKE_TEST_STUBS_DIR};
+};
+
+
+/* === Types === */
+using Point_3 = geom2::Point_3;
+using SparAIXMLv2 = WingAIXMLv2;
+using SparAIXMLv3 = WingAIXMLv3;
+
+/* === Tests === */
+/**
+ * @brief Test base properties when creating a spar of a simple wing
+ */
+TEST_F(SparAIXMLv2, BaseProperties)
+{
+    /* Set the wing base properties */
+    AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceRefPoint/r_Surface") = 1.0;
+    AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceRefPoint/y_Surface") = 2.0;
+    AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceRefPoint/h_Surface") = 3.0;
+
+    /* Create spar */
+    geom2::SparFactory spar{AcXml, ""};
+
+    /* Build from node */
+    auto surface = spar.create("LiftingSurface@MainWing");
+
+    /* Test its properties*/
+    EXPECT_EQ(surface.origin, Point_3(1.0, 2.0, 3.0));
+}
+
+/**
+ * @brief Test the shape of a simple spar
+ */
+TEST_F(SparAIXMLv2, CreateTwoParallelSections)
+{
+    /* Set the section properties */
+    node &segments = AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceParameters/HalfSurfaceDescription");
+    // First Segment
+    node &section = segments.at("HalfSurfaceSegment@1");
+    section.at("l_i_Segment") = 2.0;
+    section.at("l_o_Segment") = 1.0;
+    section.at("s_Segment") = 3.0;
+    section.at("l_rel_i_FrontSpar") = 0.2;
+    section.at("l_rel_o_FrontSpar") = 0.2;
+    section.at("l_rel_i_RearSpar") = 0.3;
+    section.at("l_rel_o_RearSpar") = 0.3;
+    // Second Segment
+    node &section2 = segments.at("HalfSurfaceSegment@2");
+    section2.at("l_i_Segment") = 1.0;
+    section2.at("l_o_Segment") = 0.5;
+    section2.at("s_Segment") = 3.0;
+    section2.at("l_rel_i_FrontSpar") = 0.2;
+    section2.at("l_rel_o_FrontSpar") = 0.2;
+    section2.at("l_rel_i_RearSpar") = 0.3;
+    section2.at("l_rel_o_RearSpar") = 0.3;
+
+    /* Create spar*/
+    geom2::SparFactory spar{AcXml, ""};
+    auto surface = spar.create("LiftingSurface@MainWing");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 3);
+
+    /* Section 1 */
+    auto poly = surface.sections[0].get_contour(true);
+    ASSERT_EQ(poly.size(), 2);
+    ASSERT_TRUE(poly.is_simple());
+    EXPECT_NEAR(poly.bbox().x_span(), 0.1, 1e-3);
+
+    /* Section 2 */
+    poly = surface.sections[1].get_contour(true);
+    EXPECT_NEAR(poly.bbox().x_span(), 0.1, 1e-3);
+
+    /* Section 3 */
+    poly = surface.sections[2].get_contour(true);
+    EXPECT_NEAR(poly.bbox().x_span(), 0.1, 1e-3);
+}
+
+/**
+ * @brief Test the creating a simple spar with dihedral
+ */
+TEST_F(SparAIXMLv2, CreateSegmentWidthDihedral)
+{
+    GTEST_SKIP() << "Should the wing-normalized spar contain a dihedral or not?";
+    /* Set the section properties */
+    node &segments = AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceParameters/HalfSurfaceDescription");
+    // First Segment
+    node &section = segments.at("HalfSurfaceSegment@1");
+    section.at("l_i_Segment") = 2.0;
+    section.at("l_o_Segment") = 1.0;
+    section.at("s_Segment") = 3.0;
+    section.at("nu_Segment") = 45.0;
+    section.at("l_rel_i_FrontSpar") = 0.2;
+    section.at("l_rel_o_FrontSpar") = 0.2;
+    section.at("l_rel_i_RearSpar") = 0.3;
+    section.at("l_rel_o_RearSpar") = 0.3;
+    // Second Segment
+    node &section2 = segments.at("HalfSurfaceSegment@2");
+    section2.at("l_i_Segment") = 1.0;
+    section2.at("l_o_Segment") = 0.5;
+    section2.at("s_Segment") = 3.0;
+    section2.at("l_rel_i_FrontSpar") = 0.2;
+    section2.at("l_rel_o_FrontSpar") = 0.2;
+    section2.at("l_rel_i_RearSpar") = 0.3;
+    section2.at("l_rel_o_RearSpar") = 0.3;
+
+    /* Create spar*/
+    geom2::SparFactory spar{AcXml, ""};
+    auto surface = spar.create("LiftingSurface@MainWing");
+
+    /* Section 1 */
+    EXPECT_NEAR(surface.sections[1].normal.dx(), 0.0, 1e-3);
+    EXPECT_NEAR(surface.sections[1].normal.dy(), -0.707, 1e-3);
+    EXPECT_NEAR(surface.sections[1].normal.dz(), 0.707, 1e-3);
+}
+
+/**
+ * @brief Test base properties when creating a simple wing
+ */
+TEST_F(WingAIXMLv2, BaseProperties)
+{
+    /* Set the wing base properties */
+    AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceRefPoint/r_Surface") = 1.0;
+    AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceRefPoint/y_Surface") = 2.0;
+    AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceRefPoint/h_Surface") = 3.0;
+
+    /* Create spar */
+    geom2::WingFactory wing{AcXml, ""};
+
+    /* Build from node */
+    auto surface = wing.create("LiftingSurface@MainWing");
+
+    /* Test its properties*/
+    EXPECT_EQ(surface.origin, Point_3(1.0, 2.0, 3.0));
+    EXPECT_TRUE(surface.is_symmetric);
+}
+
+/**
+ * @brief Test creating a wing with two parallel sections.
+ */
+TEST_F(WingAIXMLv2, CreateTwoParallelSections)
+{
+    /* Set the section properties */
+    node &segments = AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceParameters/HalfSurfaceDescription");
+    // First Segment
+    node &section1 = segments.at("HalfSurfaceSegment@1");
+    section1.at("l_i_Segment") = 2.0;
+    section1.at("l_o_Segment") = 2.0;
+    section1.at("s_Segment") = 3.0;
+    section1.at("l_rel_i_FrontSpar") = 0.2;
+    section1.at("l_rel_o_FrontSpar") = 0.2;
+    section1.at("l_rel_i_RearSpar") = 0.3;
+    section1.at("l_rel_o_RearSpar") = 0.3;
+    node &section2 = segments.at("HalfSurfaceSegment@2");
+    section2.at("l_i_Segment") = 2.0;
+    section2.at("l_o_Segment") = 1.0;
+    section2.at("s_Segment") = 1.5;
+    section2.at("l_rel_i_FrontSpar") = 0.2;
+    section2.at("l_rel_o_FrontSpar") = 0.2;
+    section2.at("l_rel_i_RearSpar") = 0.3;
+    section2.at("l_rel_o_RearSpar") = 0.3;
+
+    /* Create pylon */
+    geom2::WingFactory wing{AcXml, ""};
+    auto surface = wing.create("LiftingSurface@MainWing");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 3);
+
+    /* Section1 */
+    auto result = surface.sections[0];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 2.0);
+
+    /* Section2 */
+    result = surface.sections[1];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, -3.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 2.0);
+
+    /* Section3 */
+    result = surface.sections[2];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, -4.5));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 1.0);
+}
+
+/**
+ * @brief Test creating a TED for a simple wing
+ */
+TEST_F(WingAIXMLv2, CreateTED)
+{
+    /* Set the wing plan form */
+    node &segments = AcXml->at("AcftExchangeFile/Geometry/LiftingSurface/SurfaceParameters/HalfSurfaceDescription");
+    node &section1 = segments.at("HalfSurfaceSegment@1");
+    section1.at("l_i_Segment") = 2.0;
+    section1.at("l_o_Segment") = 1.0;
+    section1.at("s_Segment") = 3.0;
+
+    /* Set the TED parameters */
+    node &flap = segments.at("ControlDeviceSetup/TEDevice@1");
+    flap.at("s_rel_i") = 0.2;
+    flap.at("l_rel_i") = 0.3;
+    flap.at("l_rel_TE_i") = 0.4;
+    flap.at("s_rel_o") = 0.5;
+    flap.at("l_rel_o") = 0.2;
+    flap.at("l_rel_TE_o") = 0.1;
+
+    /* Create the control surfaces */
+    geom2::ControlDeviceFactory devices{AcXml, ""};
+    auto device = devices.create("LiftingSurface@MainWing/SurfaceParameters/HalfSurfaceDescription/ControlDeviceSetup/TEDevice@1");
+
+    /* Test results */
+    ASSERT_EQ(device.sections.size(), 2);
+    EXPECT_EQ(device.origin, Point_3(0.0, 0.0, 0.0));
+    /* Section 1 */
+    auto result = device.sections[0];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, -0.2));
+    EXPECT_NEAR(result.get_contour(true).bbox().x_span(), 0.3, 1e-3);
+    /* Section 2 */
+    result = device.sections[1];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, -0.5));
+    EXPECT_NEAR(result.get_contour(true).bbox().x_span(), 0.7, 1e-3);
+}
+
+/**
+ * @brief Test base properties when creating a simple wing
+ */
+TEST_F(WingAIXMLv3, BaseProperties)
+{
+    /* Set the expectations */
+    std::string base_path{"aircraft_exchange_file/component_design/wing/specific/geometry/aerodynamic_surface@0"};
+    AcXml->at(base_path + "/name/value") = "My Wing";
+    AcXml->at(base_path + "/position/x/value") = 1.0;
+    AcXml->at(base_path + "/position/y/value") = 2.0;
+    AcXml->at(base_path + "/position/z/value") = 3.0;
+    AcXml->at(base_path + "/parameters/direction/x/value") = 0.0;
+    AcXml->at(base_path + "/parameters/direction/y/value") = -1.0;
+    AcXml->at(base_path + "/parameters/direction/z/value") = 0.0;
+
+    /* Create Factory */
+    geom2::WingFactory wing{AcXml, data_dir / "dat-files"};
+
+    /* Build from node */
+    auto surface = wing.create("wing/specific/geometry/aerodynamic_surface@0");
+
+    /* Test its properties*/
+    EXPECT_EQ(surface.name, "My Wing");
+    EXPECT_EQ(surface.origin, Point_3(1.0, 2.0, 3.0));
+    EXPECT_EQ(surface.normal, geom2::Direction_3(0.0, -1.0, 0.0));
+    EXPECT_TRUE(surface.is_symmetric);
+}
+
+/**
+ * @brief Test creating a wing with two parallel sections.
+ */
+TEST_F(WingAIXMLv3, CreateParallelSections)
+{
+    /* Create the factory */
+    geom2::WingFactory wing{AcXml, data_dir / "dat-files"};
+
+    /* Create the surface */
+    auto surface = wing.create("wing/specific/geometry/aerodynamic_surface@0");
+
+    /* Test the section geometry */
+    ASSERT_FALSE(surface.sections.empty());
+    EXPECT_EQ(surface.sections.size(), 3);
+    EXPECT_EQ(surface.sections[0].name, "n0012-tab");
+    EXPECT_EQ(surface.sections[0].get_chord_length(), 2.0);
+    EXPECT_EQ(surface.sections[0].get_contour().size(), 200);
+};
+
+/**
+ * @brief Test creating a wing with thickness scaled sections.
+ */
+TEST_F(WingAIXMLv3, CreateScaledThicknessSections)
+{
+    /* Adjust the thickness scale of the first */
+    std::string base_path{"aircraft_exchange_file/component_design/wing/specific/geometry/aerodynamic_surface@0"};
+    AcXml->at(base_path + "/parameters/sections/section@0/scale_thickness/value") = 1.5;
+
+    /* Create the factory */
+    geom2::WingFactory wing{AcXml, data_dir / "dat-files"};
+
+    /* Create the surface */
+    auto surface = wing.create("wing/specific/geometry/aerodynamic_surface@0");
+
+    /* Test the section geometry */
+    auto section = surface.sections[0];
+    EXPECT_EQ(section.get_thickness_scale(), 1.5);
+}
+
+/**
+ * @brief Test creating a spar surface from the AIXML v3 format
+ */
+TEST_F(WingAIXMLv3, CreateSparSurface)
+{
+    /* Create the factory */
+    geom2::SparFactory spar{AcXml, data_dir / "dat-files"};
+
+    /* Create the surface */
+    auto surface = spar.create("wing/specific/geometry/aerodynamic_surface@0/spars/spar@0");
+
+    /* Test the section geometry */
+    ASSERT_FALSE(surface.sections.empty());
+    EXPECT_EQ(surface.sections.size(), 2);
+    EXPECT_DOUBLE_EQ(surface.sections[0].get_contour(true).bbox().xmin(), 0.3);
+    EXPECT_DOUBLE_EQ(surface.sections[0].get_contour(true).bbox().xmax(), 0.5);
+    EXPECT_EQ(surface.sections[0].origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_DOUBLE_EQ(surface.sections[1].get_contour(true).bbox().xmin(), 0.3);
+    EXPECT_DOUBLE_EQ(surface.sections[1].get_contour(true).bbox().xmax(), 0.4);
+    EXPECT_EQ(surface.sections[1].origin, Point_3(0.0, 0.0, 0.9));
+}
+
+/**
+ * @brief Test creating the control surfaces from the AIXML v3 format
+ */
+TEST_F(WingAIXMLv3, CreateControlSurface)
+{
+    /* Create the factory */
+    geom2::ControlDeviceFactory devices{AcXml, data_dir / "dat-files"};
+
+    /* Create the surface */
+    auto surface = devices.create("wing/specific/geometry/aerodynamic_surface@0/control_devices/control_device@0");
+
+    /* Test results */
+    ASSERT_EQ(surface.sections.size(), 2);
+    EXPECT_EQ(surface.origin, Point_3(0.0, 0.0, 0.0));
+    /* Section 1 */
+    auto result = surface.sections[0];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_NEAR(result.get_contour(true).bbox().x_span(), 0.2, 1e-3);
+    /* Section 2 */
+    result = surface.sections[1];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 0.4));
+    EXPECT_NEAR(result.get_contour(true).bbox().x_span(), 0.1, 1e-3);
+}
diff --git a/aircraftGeometry2/test/test_fuselage.cpp b/aircraftGeometry2/test/test_fuselage.cpp
new file mode 100644
index 00000000..4a399e0d
--- /dev/null
+++ b/aircraftGeometry2/test/test_fuselage.cpp
@@ -0,0 +1,292 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+
+/* Unit Under Test */
+#include <aircraftGeometry2/fuselage.h>
+
+/* === Types === */
+using Point_3 = geom2::Point_3;
+
+/* === Fixtures === */
+class FuselageAIXMLv2 : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Open the simple fuselage example */
+        std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+        file /= "acxml-v2/fuselage.xml";
+        if (!std::filesystem::exists(file))
+        {
+            throw std::runtime_error("Could not find file: " + file.string());
+        }
+        AcXml = aixml::openDocument(file);
+    }
+    std::shared_ptr<node> AcXml;
+};
+
+class FuselageAIXMLv3 : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Open the simple wing example */
+        std::filesystem::path file = data_dir / "acxml-v3/fuselage.xml";
+        if (!std::filesystem::exists(file))
+        {
+            throw std::runtime_error("Could not find file: " + file.string());
+        }
+        AcXml = aixml::openDocument(file);
+    }
+    std::shared_ptr<node> AcXml;
+    std::filesystem::path data_dir{CMAKE_TEST_STUBS_DIR};
+};
+
+/* === Tests === */
+/**
+ * @brief Test the base properties which should be set by the builder.
+ *
+ */
+TEST_F(FuselageAIXMLv2, FuselageBaseProperties)
+{
+    /* Set the fuselage properties */
+    AcXml->at("AcftExchangeFile/Geometry/Fuselage/FuselageRefPoint/r_Fuselage") = 1.0;
+    AcXml->at("AcftExchangeFile/Geometry/Fuselage/FuselageRefPoint/y_Fuselage") = 2.0;
+    AcXml->at("AcftExchangeFile/Geometry/Fuselage/FuselageRefPoint/h_Fuselage") = 3.0;
+
+    /* Create fuselage factory */
+    geom2::FuselageFactory fuselage{AcXml, ""};
+
+    /* Build from node */
+    auto surface = fuselage.create("Fuselage@SimpleFuselage");
+
+    /* Test its properties*/
+    EXPECT_EQ(surface.origin, Point_3(1.0, 2.0, 3.0));
+    EXPECT_FALSE(surface.sections.empty());
+}
+
+/**
+ * @brief Test the nose segment properties which should be set by the builder.
+ *
+ */
+TEST_F(FuselageAIXMLv2, FuselageNoseSegments)
+{
+    /* Set the fuselage properties */
+    AcXml->at("AcftExchangeFile/Geometry/Fuselage/FuselageParameters/NoseDescription/TipSegment/h_Tip") = 0.42;
+    node &segment = AcXml->at("AcftExchangeFile/Geometry/Fuselage/FuselageParameters/NoseDescription/NoseSegment@1");
+    segment.at("w_Segment") = 2.0;
+    segment.at("h_Segment") = 3.0;
+    segment.at("l_Segment") = 4.0;
+    segment.at("deltah_Segment") = 5.0;
+
+    /* Create fuselage factory */
+    geom2::FuselageFactory fuselage{AcXml, ""};
+
+    /* Build from node */
+    auto surface = fuselage.create("Fuselage@SimpleFuselage");
+
+    /* Tip Segment */
+    auto tip = surface.sections.at(0);
+    EXPECT_EQ(tip.origin, Point_3(0.0, 0.42, 0));
+    EXPECT_EQ(tip.name, "ellipse");
+    EXPECT_EQ(tip.get_contour(true).bbox().x_span(), 0.0);
+    EXPECT_EQ(tip.get_contour(true).bbox().y_span(), 0.0);
+
+    /* First Segment */
+    auto seg = surface.sections.at(1);
+    EXPECT_EQ(seg.origin, Point_3(0.0, 5.0, 4.0));
+    EXPECT_EQ(seg.name, "circle-tab");
+    EXPECT_EQ(seg.get_contour(true).bbox().x_span(), 2.0);
+    EXPECT_EQ(seg.get_contour(true).bbox().y_span(), 3.0);
+}
+
+/**
+ * @brief Test the mid section segment properties which should be set by the builder.
+ *
+ */
+TEST_F(FuselageAIXMLv2, FuselageMidSectionSegments)
+{
+    /* Set the fuselage properties */
+    node &segment = AcXml->at("AcftExchangeFile/Geometry/Fuselage/FuselageParameters/MidSectionDescription/MidSectionSegment@1");
+    segment.at("w_Segment") = 2.0;
+    segment.at("h_Segment") = 3.0;
+    segment.at("l_Segment") = 4.0;
+    segment.at("deltah_Segment") = 5.0;
+
+    /* Create fuselage factory */
+    geom2::FuselageFactory fuselage{AcXml, ""};
+
+    /* Build from node */
+    auto surface = fuselage.create("Fuselage@SimpleFuselage");
+
+    /* First Segment */
+    // Since the fixture contains an empty nose section the "first"
+    // mid section is the second surface segment...
+    auto seg = surface.sections[2];
+    EXPECT_EQ(seg.origin, Point_3(0.0, 5.0, 4.0));
+    EXPECT_EQ(seg.get_contour(true).bbox().x_span(), 2.0);
+    EXPECT_EQ(seg.get_contour(true).bbox().y_span(), 3.0);
+}
+
+/**
+ * @brief Test the tail segment properties which should be set by the builder.
+ *
+ */
+TEST_F(FuselageAIXMLv2, FuselageTailSegments)
+{
+    /* Set the fuselage properties */
+    node &segment = AcXml->at("AcftExchangeFile/Geometry/Fuselage/FuselageParameters/TailDescription/TailSegment@1");
+    segment.at("w_Segment") = 2.0;
+    segment.at("h_Segment") = 3.0;
+    segment.at("l_Segment") = 4.0;
+    segment.at("deltah_Segment") = 5.0;
+
+    /* Create fuselage factory */
+    geom2::FuselageFactory fuselage{AcXml, ""};
+
+    /* Build from node */
+    auto surface = fuselage.create("Fuselage@SimpleFuselage");
+
+    /* First Segment */
+    // Since the fixture contains an empty nose and mid section the "first"
+    // tail section is the third surface segment...
+    auto seg = surface.sections[3];
+    EXPECT_EQ(seg.origin, Point_3(0.0, 5.0, 4.0));
+    EXPECT_EQ(seg.get_contour(true).bbox().x_span(), 2.0);
+    EXPECT_EQ(seg.get_contour(true).bbox().y_span(), 3.0);
+}
+
+/**
+ * @brief Test the base properties which should be set by the builder.
+ *
+ */
+TEST_F(FuselageAIXMLv3, FuselageBaseProperties)
+{
+    /* Set the fuselage properties */
+    AcXml->at("aircraft_exchange_file/component_design/fuselage/specific/geometry/fuselage@0/position/x/value") = 1.0;
+    AcXml->at("aircraft_exchange_file/component_design/fuselage/specific/geometry/fuselage@0/position/y/value") = 2.0;
+    AcXml->at("aircraft_exchange_file/component_design/fuselage/specific/geometry/fuselage@0/position/z/value") = 3.0;
+
+    /* Create fuselage factory */
+    geom2::FuselageFactory fuselage{AcXml, data_dir / "dat-files"};
+
+    /* Build from node */
+    auto surface = fuselage.create("fuselage/specific/geometry/fuselage@0");
+
+    /* Test its properties*/
+    EXPECT_EQ(surface.origin, Point_3(1.0, 2.0, 3.0));
+    EXPECT_EQ(surface.normal, geom2::Direction_3(1.0, 0.0, 0.0));
+    EXPECT_FALSE(surface.sections.empty());
+}
+
+/**
+ * @brief Test the shape of a fuselage with dat files defining the section shape
+ *
+ */
+TEST_F(FuselageAIXMLv3, FuselageDATSections)
+{
+    /* Create the fuselage factory */
+    geom2::FuselageFactory fuselage{AcXml, data_dir / "dat-files"};
+
+    /* Build from node */
+    auto surface = fuselage.create("fuselage/specific/geometry/fuselage@0");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 2);
+
+    /* Sections 0 */
+    auto section = surface.sections[0];
+    EXPECT_EQ(section.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_EQ(section.name, "circle-tab");
+    EXPECT_EQ(section.get_contour(true).bbox().x_span(), 0.5);
+    EXPECT_EQ(section.get_contour(true).bbox().y_span(), 2.0);
+
+    /* Sections 1 */
+    section = surface.sections[1];
+    EXPECT_EQ(section.origin, Point_3(0.0, 0.0, 2.0));
+    EXPECT_EQ(section.name, "circle-tab");
+    EXPECT_EQ(section.get_contour(true).bbox().x_span(), 4.0);
+    EXPECT_EQ(section.get_contour(true).bbox().y_span(), 3.0);
+}
+
+/**
+ * @brief Test the shape of a fuselage with dat files defining the section shape
+ *
+ */
+TEST_F(FuselageAIXMLv3, FuselageEllipseSections)
+{
+    /* Change the section shape to ellipse */
+    AcXml->at("aircraft_exchange_file/component_design/fuselage/specific/geometry/fuselage@0/sections/section@0/section_shape/value") = "ellipse";
+
+    /* Create the fuselage factory */
+    geom2::FuselageFactory fuselage{AcXml, data_dir / "dat-files"};
+
+    /* Build from node */
+    auto surface = fuselage.create("fuselage/specific/geometry/fuselage@0");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 2);
+
+    /* Sections 0 */
+    auto section = surface.sections[0];
+    EXPECT_EQ(section.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_EQ(section.name, "ellipse");
+    EXPECT_EQ(section.get_contour(true).bbox().x_span(), 0.5);
+    EXPECT_EQ(section.get_contour(true).bbox().y_span(), 2.0);
+
+    /* Sections 1 */
+    section = surface.sections[1];
+    EXPECT_EQ(section.origin, Point_3(0.0, 0.0, 2.0));
+    EXPECT_EQ(section.get_contour(true).bbox().x_span(), 4.0);
+    EXPECT_EQ(section.get_contour(true).bbox().y_span(), 3.0);
+}
+
+/**
+ * @brief Test the nose section of the fuselage.
+ * 
+ */
+TEST_F(FuselageAIXMLv3, FuselageNoseSection)
+{
+    /* Set the dimensions of the first section to 0 */
+    node &section = AcXml->at("aircraft_exchange_file/component_design/fuselage/specific/geometry/fuselage@0/sections/section@0");
+    section.at("upper_height/value") = 0.0;
+    section.at("lower_height/value") = 0.0;
+    section.at("width/value") = 0.0;
+
+    /* Create the fuselage factory */
+    geom2::FuselageFactory fuselage{AcXml, data_dir / "dat-files"};
+
+    /* Build from node */
+    auto surface = fuselage.create("fuselage/specific/geometry/fuselage@0");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 2);
+
+    /* Sections 0 */
+    auto nose = surface.sections[0];
+    EXPECT_EQ(nose.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_EQ(nose.get_contour(false).size(), 1);
+    EXPECT_EQ(nose.get_contour(false).bbox().x_span(), 0.0);
+    EXPECT_EQ(nose.get_contour(false).bbox().y_span(), 0.0);
+}
diff --git a/aircraftGeometry2/test/test_nacelle.cpp b/aircraftGeometry2/test/test_nacelle.cpp
new file mode 100644
index 00000000..d1baed17
--- /dev/null
+++ b/aircraftGeometry2/test/test_nacelle.cpp
@@ -0,0 +1,182 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+
+/* Unit Under Test */
+#include <aircraftGeometry2/hull_surface.h>
+
+/* === Types === */
+using Point_3 = geom2::Point_3;
+
+/* === Fixtures === */
+class NacelleAIXMLv2 : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Open the simple fuselage example from the stubs folder */
+        std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+        file /= "acxml-v2/nacelle.xml";
+        if (!std::filesystem::exists(file))
+        {
+            throw std::runtime_error("Could not find file: " + file.string());
+        }
+        AcXml = aixml::openDocument(file);
+    }
+    std::shared_ptr<node> AcXml;
+};
+
+class NacelleAIXMLv3 : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Open the simple fuselage example from the stubs folder */
+        std::filesystem::path file = data_dir / "acxml-v3/nacelle.xml";
+        if (!std::filesystem::exists(file))
+        {
+            throw std::runtime_error("Could not find file: " + file.string());
+        }
+        AcXml = aixml::openDocument(file);
+    }
+    std::filesystem::path data_dir{CMAKE_TEST_STUBS_DIR};
+    std::shared_ptr<node> AcXml;
+    std::string root_path_nacelle{"aircraft_exchange_file/component_design/propulsion/specific/"}; //cppcheck-suppress unusedStructMember
+};
+
+/* === Tests === */
+/**
+ * @brief Test the base properties which should be set by the factory.
+ */
+TEST_F(NacelleAIXMLv2, BaseProperties)
+{
+    /* Set the nacelle base properties */
+    AcXml->at("AcftExchangeFile/Geometry/Nacelle/NacelleRefPoint/r_Nacelle") = 1.0;
+    AcXml->at("AcftExchangeFile/Geometry/Nacelle/NacelleRefPoint/y_Nacelle") = 2.0;
+    AcXml->at("AcftExchangeFile/Geometry/Nacelle/NacelleRefPoint/h_Nacelle") = 3.0;
+
+    /* Create nacelle */
+    geom2::HullFactory nacelle{AcXml, ""};
+
+    /* Build from node */
+    auto surface = nacelle.create("Nacelle@SimpleHull");
+
+    /* Test its properties*/
+    EXPECT_EQ(surface.origin, Point_3(1.0, 2.0, 3.0));
+}
+
+/**
+ * @brief Test creating a nacelle.
+ */
+TEST_F(NacelleAIXMLv2, CreateNacelle)
+{
+    /* Create nacelle as defined in the stub file */
+    geom2::HullFactory nacelle{AcXml, ""};
+    auto surface = nacelle.create("Nacelle@SimpleHull");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 4);
+
+    /* Inlet */
+    auto result = surface.sections[0];
+    EXPECT_EQ(result.name, "circle-tab");
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_NEAR(result.get_contour(true).bbox().x_span(), 1.976, 1e-3);
+    EXPECT_NEAR(result.get_contour(true).bbox().y_span(), 2.289, 1e-3);
+
+    /* Section1 */
+    result = surface.sections[1];
+    EXPECT_EQ(result.name, "circle-tab");
+    EXPECT_NEAR(result.origin.x(), 0.0, 1e-3);
+    EXPECT_NEAR(result.origin.y(), 0.0, 1e-3);
+    EXPECT_NEAR(result.origin.z(), 0.677, 1e-3);
+    EXPECT_NEAR(result.get_contour(true).bbox().x_span(), 2.471, 1e-3);
+    EXPECT_NEAR(result.get_contour(true).bbox().y_span(), 2.861, 1e-3);
+
+    /* Section2 */
+    result = surface.sections[2];
+    EXPECT_EQ(result.name, "circle-tab");
+    EXPECT_NEAR(result.origin.x(), 0.0, 1e-3);
+    EXPECT_NEAR(result.origin.y(), 0.0, 1e-3);
+    EXPECT_NEAR(result.origin.z(), 2.033, 1e-3);
+    EXPECT_NEAR(result.get_contour(true).bbox().x_span(), 2.471, 1e-3);
+    EXPECT_NEAR(result.get_contour(true).bbox().y_span(), 2.861, 1e-3);
+
+    /* Outlet */
+    result = surface.sections[3];
+    EXPECT_EQ(result.name, "circle-tab");
+    EXPECT_NEAR(result.origin.x(), 0.0, 1e-3);
+    EXPECT_NEAR(result.origin.y(), 0.0, 1e-3);
+    EXPECT_NEAR(result.origin.z(), 2.711, 1e-3);
+    EXPECT_NEAR(result.get_contour(true).bbox().x_span(), 1.976, 1e-3);
+    EXPECT_NEAR(result.get_contour(true).bbox().y_span(), 2.289, 1e-3);
+}
+
+/**
+ * @brief Test the base properties which should be set by the factory.
+ */
+TEST_F(NacelleAIXMLv3, BaseProperties)
+{
+    /* Set the nacelle base properties */
+    AcXml->at(root_path_nacelle + "nacelle@0/position/x/value") = 1.0;
+    AcXml->at(root_path_nacelle + "nacelle@0/position/y/value") = 2.0;
+    AcXml->at(root_path_nacelle + "nacelle@0/position/z/value") = 3.0;
+
+    /* Create nacelle */
+    geom2::HullFactory nacelle{AcXml, data_dir / "dat-files"};
+
+    /* Build from node */
+    auto surface = nacelle.create("propulsion/specific/nacelle@0");
+
+    /* Test its properties*/
+    EXPECT_EQ(surface.origin, Point_3(1.0, 2.0, 3.0));
+    EXPECT_EQ(surface.normal, geom2::Direction_3(0.0, 0.0, 1.0));
+}
+
+/**
+ * @brief Test creating a nacelle with two parallel sections.
+ */
+TEST_F(NacelleAIXMLv3, CreateTwoParallelSections)
+{
+    /* Create nacelle */
+    geom2::HullFactory nacelle{AcXml, data_dir / "dat-files"};
+
+    /* Build from node */
+    auto surface = nacelle.create("propulsion/specific/nacelle@0");
+
+    /* Test the result */
+    ASSERT_EQ(surface.sections.size(), 2);
+
+    /* Section 0 */
+    auto result = surface.sections[0];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_EQ(result.name, "circle-tab");
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 2.0);
+    EXPECT_EQ(result.get_contour(true).bbox().y_span(), 1.5);
+
+    /* Section 1 */
+    result = surface.sections[1];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 2.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 1.0);
+    EXPECT_EQ(result.get_contour(true).bbox().y_span(), 1.0);
+}
\ No newline at end of file
diff --git a/aircraftGeometry2/test/test_pylon.cpp b/aircraftGeometry2/test/test_pylon.cpp
new file mode 100644
index 00000000..48f242d9
--- /dev/null
+++ b/aircraftGeometry2/test/test_pylon.cpp
@@ -0,0 +1,292 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <gtest/gtest.h>
+
+/* Unit Under Test */
+#include <aircraftGeometry2/airfoil_surface.h>
+
+/* === Types === */
+using Point_3 = geom2::Point_3;
+using Direction_3 = geom2::Direction_3;
+
+/* === Fixtures === */
+class PylonAIXMLv2 : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Open the simple fuselage example */
+        std::filesystem::path file{CMAKE_TEST_STUBS_DIR};
+        file /= "acxml-v2/pylon.xml";
+        if (!std::filesystem::exists(file))
+        {
+            throw std::runtime_error("Could not find file: " + file.string());
+        }
+        AcXml = aixml::openDocument(file);
+    }
+    std::shared_ptr<node> AcXml;
+};
+
+class PylonAIXMLv3 : public ::testing::Test
+{
+protected:
+    void SetUp() override
+    {
+        /* Open the simple wing example */
+        std::filesystem::path file = data_dir / "acxml-v3/pylon.xml";
+        if (!std::filesystem::exists(file))
+        {
+            throw std::runtime_error("Could not find file: " + file.string());
+        }
+        AcXml = aixml::openDocument(file);
+    }
+    std::shared_ptr<node> AcXml;
+    std::filesystem::path data_dir{CMAKE_TEST_STUBS_DIR};
+};
+
+/* === Tests === */
+/**
+ * @brief Test the base properties which should be set by the factory.
+ */
+TEST_F(PylonAIXMLv2, BaseProperties)
+{
+    /* Set the pylon base properties */
+    AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceRefPoint/r_Surface") = 1.0;
+    AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceRefPoint/y_Surface") = 2.0;
+    AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceRefPoint/h_Surface") = 3.0;
+
+    /* Create pylon */
+    geom2::AirfoilSurfaceFactory pylon{AcXml, ""};
+
+    /* Build from node */
+    auto surface = pylon.create("Pylon@SimplePylon");
+
+    /* Test its properties*/
+    EXPECT_EQ(surface.origin, Point_3(1.0, 2.0, 3.0));
+}
+
+/**
+ * @brief Test creating a pylon with two parallel sections.
+ */
+TEST_F(PylonAIXMLv2, CreateTwoParallelSections)
+{
+    /* Set the section properties */
+    node &section1 = AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceParameters/SurfaceSegment@1");
+    section1.at("l_i_Segment") = 2.0;
+    section1.at("l_o_Segment") = 2.0;
+    section1.at("s_Segment") = 3.0;
+    node &section2 = AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceParameters/SurfaceSegment@2");
+    section2.at("l_i_Segment") = 2.0;
+    section2.at("l_o_Segment") = 0.8;
+    section2.at("s_Segment") = 1.5;
+
+    /* Create pylon */
+    geom2::AirfoilSurfaceFactory pylon{AcXml, ""};
+    auto surface = pylon.create("Pylon@SimplePylon");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 3);
+
+    /* Section1 */
+    auto result = surface.sections[0];
+    EXPECT_EQ(result.name, "n0012-tab");
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 2.0);
+
+    /* Section2 */
+    result = surface.sections[1];
+    EXPECT_EQ(result.name, "n0012-tab");
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, -3.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 2.0);
+
+    /* Section3 */
+    result = surface.sections[2];
+    EXPECT_EQ(result.name, "n0012-tab");
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, -4.5));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 0.8);
+}
+
+/**
+ * @brief Test creating a pylon with a segment with dihedral.
+ */
+TEST_F(PylonAIXMLv2, CreateSegmentWithDihedral)
+{
+    /* Set the section properties */
+    node &section1 = AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceParameters/SurfaceSegment@1");
+    section1.at("l_i_Segment") = 2.0;
+    section1.at("l_o_Segment") = 2.0;
+    section1.at("s_Segment") = 3.0;
+    node &section2 = AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceParameters/SurfaceSegment@2");
+    section2.at("l_i_Segment") = 2.0;
+    section2.at("l_o_Segment") = 0.8;
+    section2.at("s_Segment") = 1.5;
+    section2.at("nu_Segment") = 45;
+
+    /* Create pylon */
+    geom2::AirfoilSurfaceFactory pylon{AcXml, ""};
+    auto surface = pylon.create("Pylon@SimplePylon");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 3);
+
+    /* Section1 */
+    auto result = surface.sections[0];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 2.0);
+
+    /* Section2 */
+    result = surface.sections[1];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, -3.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 2.0);
+
+    /* Section3 */
+    result = surface.sections[2];
+    EXPECT_EQ(result.origin.x(), 0.0);
+    EXPECT_NEAR(result.origin.y(), 1.0605, 1e-3);
+    EXPECT_NEAR(result.origin.z(), -4.0607, 1e-3);
+    EXPECT_EQ(result.normal.dx(), 0.0);
+    GTEST_SKIP() << "Should the dihedral of pylon sections also be neglected on section level as for wings?";
+    EXPECT_NEAR(result.normal.dy(), -0.7071, 1e-3);
+    EXPECT_NEAR(result.normal.dz(), 0.7071, 1e-3);
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 0.8);
+}
+
+/**
+ * @brief Test creating a pylon with a segment with sweep.
+ */
+TEST_F(PylonAIXMLv2, CreateSegmentWithSweep)
+{
+    /* Set the section properties */
+    node &section1 = AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceParameters/SurfaceSegment@1");
+    section1.at("l_i_Segment") = 2.0;
+    section1.at("l_o_Segment") = 2.0;
+    section1.at("s_Segment") = 3.0;
+    node &section2 = AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceParameters/SurfaceSegment@2");
+    section2.at("l_i_Segment") = 2.0;
+    section2.at("l_o_Segment") = 0.8;
+    section2.at("s_Segment") = 1.5;
+    section2.at("phi_Segment") = 45;
+
+    /* Create pylon */
+    geom2::AirfoilSurfaceFactory pylon{AcXml, ""};
+    auto surface = pylon.create("Pylon@SimplePylon");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 3);
+
+    /* Section1 */
+    auto result = surface.sections[0];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 2.0);
+
+    /* Section2 */
+    result = surface.sections[1];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, -3.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 2.0);
+
+    /* Section3 */
+    result = surface.sections[2];
+    EXPECT_NEAR(result.origin.x(), 1.5, 1e-3);
+    EXPECT_EQ(result.origin.y(), 0.0);
+    EXPECT_NEAR(result.origin.z(), -4.5, 1e-3);
+    EXPECT_EQ(result.normal, Direction_3(0.0, 0.0, 1.0));
+    EXPECT_EQ(result.get_contour(true).bbox().x_span(), 0.8);
+}
+
+/**
+ * @brief Test creating a pylon with a segment with twist.
+ */
+TEST_F(PylonAIXMLv2, CreateSegmentWithTwist)
+{
+    /* Set the section properties */
+    node &section1 = AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceParameters/SurfaceSegment@1");
+    section1.at("l_i_Segment") = 2.0;
+    section1.at("l_o_Segment") = 2.0;
+    section1.at("s_Segment") = 3.0;
+    node &section2 = AcXml->at("AcftExchangeFile/Geometry/Pylon/SurfaceParameters/SurfaceSegment@2");
+    section2.at("l_i_Segment") = 2.0;
+    section2.at("l_o_Segment") = 1.0;
+    section2.at("s_Segment") = 1.5;
+    section2.at("epsilon_Segment") = 45;
+
+    /* Create pylon */
+    geom2::AirfoilSurfaceFactory pylon{AcXml, ""};
+    auto surface = pylon.create("Pylon@SimplePylon");
+
+    /* Test its properties*/
+    ASSERT_EQ(surface.sections.size(), 3);
+
+    /* Roughly test whether a twist is applied on the last section */
+    auto result = surface.sections[2].get_contour(true).bbox();
+    EXPECT_NEAR(result.x_span(), 0.707, 1e-2);
+}
+
+/**
+ * @brief Test the base properties which should be set by the factory.
+ */
+TEST_F(PylonAIXMLv3, BaseProperties)
+{
+    /* Set the pylon base properties */
+    AcXml->at("aircraft_exchange_file/component_design/propulsion/specific/propulsion@0/pylon/position/x/value") = 1.0;
+    AcXml->at("aircraft_exchange_file/component_design/propulsion/specific/propulsion@0/pylon/position/y/value") = 2.0;
+    AcXml->at("aircraft_exchange_file/component_design/propulsion/specific/propulsion@0/pylon/position/z/value") = 3.0;
+
+    /* Create pylon */
+    geom2::AirfoilSurfaceFactory pylon{AcXml, data_dir / "dat-files"};
+
+    /* Build from node */
+    auto surface = pylon.create("propulsion/specific/propulsion@0/pylon");
+
+    /* Test its properties*/
+    EXPECT_EQ(surface.origin, Point_3(1.0, 2.0, 3.0));
+    EXPECT_EQ(surface.normal, Direction_3(0.0, -1.0, 0.0));
+}
+
+/**
+ * @brief Test creating a pylon with two parallel sections.
+ */
+TEST_F(PylonAIXMLv3, CreateTwoParallelSections)
+{
+    /* Create pylon */
+    geom2::AirfoilSurfaceFactory pylon{AcXml, data_dir / "dat-files"};
+
+    /* Build from node */
+    auto surface = pylon.create("propulsion/specific/propulsion@0/pylon");
+
+    /* Test the result */
+    ASSERT_EQ(surface.sections.size(), 2);
+
+    /* Section 0 */
+    auto result = surface.sections[0];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, 0.0));
+    EXPECT_EQ(result.name, "n0012-tab");
+    EXPECT_EQ(result.get_chord_length(), 2.0);
+    EXPECT_EQ(result.get_thickness_scale(), 1.0);
+
+    /* Section 1 */
+    result = surface.sections[1];
+    EXPECT_EQ(result.origin, Point_3(0.0, 0.0, -1.0));
+    EXPECT_EQ(result.name, "n0012-tab");
+    EXPECT_EQ(result.get_chord_length(), 1.0);
+    EXPECT_EQ(result.get_thickness_scale(), 1.0);
+}
diff --git a/airfoils/CMakeLists.txt b/airfoils/CMakeLists.txt
new file mode 100644
index 00000000..73e2268b
--- /dev/null
+++ b/airfoils/CMakeLists.txt
@@ -0,0 +1,64 @@
+# Set the library name
+set( LIBRARY_NAME airfoils )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/airfoils.cpp
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_AIRFOILS_SHARED" PUBLIC "IMPORT_AIRFOILS_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Add the unitConversion include directory as a private interface to resolve
+# the circular dependency between the two libraries
+target_link_libraries( ${LIBRARY_NAME}
+    PUBLIC    
+        standardFiles
+    PRIVATE 
+        unitConversion
+        aircraftGeometry2
+)
+
+if( BUILD_UNITTEST)
+    add_subdirectory(test)
+endif()
+
+# === Add a demo executable ===
+add_executable( demo_${LIBRARY_NAME} ${LIBRARY_SOURCES} src/demo.cpp)
+target_link_libraries( demo_${LIBRARY_NAME}
+    PRIVATE
+        unitConversion
+        aircraftGeometry2
+        standardFiles
+)
+
+target_include_directories( demo_${LIBRARY_NAME}
+    PRIVATE
+        ${CMAKE_CURRENT_LIST_DIR}/include
+)
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/airfoils/F15/F15_11.dat b/airfoils/F15/F15_11.dat
new file mode 100644
index 00000000..46d2a3cd
--- /dev/null
+++ b/airfoils/F15/F15_11.dat
@@ -0,0 +1,160 @@
+# F15_11.dat (thickness ratio 0.11)
+ 1.00000     0.00000
+ 0.99380     0.00116
+ 0.98285     0.00324
+ 0.96997     0.00575
+ 0.95576     0.00860
+ 0.94094     0.01167
+ 0.92589     0.01491
+ 0.91072     0.01826
+ 0.89569     0.02157
+ 0.88146     0.02475
+ 0.86788     0.02760
+ 0.85450     0.03034
+ 0.84122     0.03277
+ 0.82773     0.03508
+ 0.81422     0.03703
+ 0.79982     0.03899
+ 0.78473     0.04094
+ 0.76924     0.04281
+ 0.75350     0.04464
+ 0.73773     0.04642
+ 0.72208     0.04809
+ 0.70654     0.04961
+ 0.69088     0.05099
+ 0.67516     0.05228
+ 0.65940     0.05346
+ 0.64359     0.05455
+ 0.62780     0.05556
+ 0.61217     0.05646
+ 0.59658     0.05724
+ 0.58100     0.05799
+ 0.56523     0.05860
+ 0.54932     0.05915
+ 0.53346     0.05960
+ 0.51755     0.05996
+ 0.50160     0.06024
+ 0.48567     0.06044
+ 0.46973     0.06057
+ 0.45375     0.06061
+ 0.43779     0.06058
+ 0.42185     0.06046
+ 0.40587     0.06026
+ 0.38987     0.06000
+ 0.37390     0.05966
+ 0.35794     0.05924
+ 0.34199     0.05875
+ 0.32601     0.05818
+ 0.31005     0.05754
+ 0.29415     0.05681
+ 0.27825     0.05600
+ 0.26235     0.05511
+ 0.24664     0.05416
+ 0.23109     0.05311
+ 0.21566     0.05199
+ 0.20027     0.05080
+ 0.18489     0.04944
+ 0.16940     0.04800
+ 0.15407     0.04641
+ 0.13882     0.04469
+ 0.12384     0.04282
+ 0.10906     0.04077
+ 0.09466     0.03858
+ 0.08087     0.03625
+ 0.06795     0.03378
+ 0.05623     0.03124
+ 0.04591     0.02868
+ 0.03713     0.02621
+ 0.02986     0.02396
+ 0.02394     0.02190
+ 0.01910     0.01997
+ 0.01510     0.01809
+ 0.01177     0.01624
+ 0.00899     0.01440
+ 0.00668     0.01255
+ 0.00479     0.01068
+ 0.00327     0.00881
+ 0.00208     0.00695
+ 0.00117     0.00511
+ 0.00052     0.00333
+ 0.00013     0.00163
+ 0.00000     0.00000
+ 0.00013    -0.00150
+ 0.00052    -0.00318
+ 0.00117    -0.00479
+ 0.00208    -0.00635
+ 0.00327    -0.00788
+ 0.00479    -0.00940
+ 0.00668    -0.01089
+ 0.00899    -0.01238
+ 0.01177    -0.01390
+ 0.01510    -0.01552
+ 0.01910    -0.01728
+ 0.02394    -0.01921
+ 0.02986    -0.02133
+ 0.03713    -0.02359
+ 0.04591    -0.02593
+ 0.05623    -0.02830
+ 0.06795    -0.03065
+ 0.08087    -0.03289
+ 0.09466    -0.03495
+ 0.10906    -0.03692
+ 0.12384    -0.03879
+ 0.13882    -0.04036
+ 0.15407    -0.04173
+ 0.16940    -0.04297
+ 0.18489    -0.04408
+ 0.20027    -0.04504
+ 0.21566    -0.04590
+ 0.23109    -0.04669
+ 0.24664    -0.04741
+ 0.26235    -0.04805
+ 0.27825    -0.04859
+ 0.29415    -0.04904
+ 0.31005    -0.04940
+ 0.32601    -0.04968
+ 0.34199    -0.04986
+ 0.35794    -0.04996
+ 0.37390    -0.04997
+ 0.38987    -0.04988
+ 0.40587    -0.04969
+ 0.42185    -0.04939
+ 0.43779    -0.04898
+ 0.45375    -0.04846
+ 0.46973    -0.04782
+ 0.48567    -0.04706
+ 0.50160    -0.04620
+ 0.51755    -0.04520
+ 0.53346    -0.04409
+ 0.54932    -0.04286
+ 0.56523    -0.04151
+ 0.58100    -0.04007
+ 0.59658    -0.03850
+ 0.61217    -0.03686
+ 0.62780    -0.03508
+ 0.64359    -0.03315
+ 0.65940    -0.03109
+ 0.67516    -0.02892
+ 0.69088    -0.02664
+ 0.70654    -0.02427
+ 0.72208    -0.02181
+ 0.73773    -0.01926
+ 0.75350    -0.01671
+ 0.76924    -0.01415
+ 0.78473    -0.01149
+ 0.79982    -0.00886
+ 0.81422    -0.00646
+ 0.82773    -0.00419
+ 0.84122    -0.00176
+ 0.85450     0.00035
+ 0.86788     0.00227
+ 0.88146     0.00366
+ 0.89569     0.00435
+ 0.91072     0.00494
+ 0.92589     0.00511
+ 0.94094     0.00479
+ 0.95576     0.00405
+ 0.96997     0.00297
+ 0.98285     0.00169
+ 0.99380     0.00060
+ 1.00000     0.00000
diff --git a/airfoils/F15/F15_12.dat b/airfoils/F15/F15_12.dat
new file mode 100644
index 00000000..3c3a698b
--- /dev/null
+++ b/airfoils/F15/F15_12.dat
@@ -0,0 +1,160 @@
+# F15_12.dat (thickness ratio 0.12)
+ 1.00000     0.00000
+ 0.99380     0.00118
+ 0.98285     0.00331
+ 0.96997     0.00587
+ 0.95576     0.00881
+ 0.94094     0.01198
+ 0.92589     0.01535
+ 0.91072     0.01887
+ 0.89569     0.02235
+ 0.88146     0.02571
+ 0.86788     0.02876
+ 0.85450     0.03171
+ 0.84122     0.03434
+ 0.82773     0.03687
+ 0.81422     0.03901
+ 0.79982     0.04117
+ 0.78473     0.04332
+ 0.76924     0.04540
+ 0.75350     0.04743
+ 0.73773     0.04941
+ 0.72208     0.05127
+ 0.70654     0.05297
+ 0.69088     0.05452
+ 0.67516     0.05597
+ 0.65940     0.05730
+ 0.64359     0.05854
+ 0.62780     0.05968
+ 0.61217     0.06070
+ 0.59658     0.06160
+ 0.58100     0.06245
+ 0.56523     0.06316
+ 0.54932     0.06378
+ 0.53346     0.06431
+ 0.51755     0.06474
+ 0.50160     0.06507
+ 0.48567     0.06533
+ 0.46973     0.06549
+ 0.45375     0.06557
+ 0.43779     0.06556
+ 0.42185     0.06545
+ 0.40587     0.06526
+ 0.38987     0.06500
+ 0.37390     0.06465
+ 0.35794     0.06421
+ 0.34199     0.06368
+ 0.32601     0.06308
+ 0.31005     0.06240
+ 0.29415     0.06162
+ 0.27825     0.06076
+ 0.26235     0.05980
+ 0.24664     0.05878
+ 0.23109     0.05764
+ 0.21566     0.05643
+ 0.20027     0.05516
+ 0.18489     0.05370
+ 0.16940     0.05213
+ 0.15407     0.05042
+ 0.13882     0.04856
+ 0.12384     0.04653
+ 0.10906     0.04430
+ 0.09466     0.04192
+ 0.08087     0.03939
+ 0.06795     0.03671
+ 0.05623     0.03395
+ 0.04591     0.03116
+ 0.03713     0.02848
+ 0.02986     0.02602
+ 0.02394     0.02377
+ 0.01910     0.02166
+ 0.01510     0.01961
+ 0.01177     0.01761
+ 0.00899     0.01562
+ 0.00668     0.01362
+ 0.00479     0.01159
+ 0.00327     0.00957
+ 0.00208     0.00755
+ 0.00117     0.00557
+ 0.00052     0.00363
+ 0.00013     0.00177
+ 0.00000     0.00000
+ 0.00013    -0.00164
+ 0.00052    -0.00348
+ 0.00117    -0.00524
+ 0.00208    -0.00696
+ 0.00327    -0.00864
+ 0.00479    -0.01031
+ 0.00668    -0.01196
+ 0.00899    -0.01360
+ 0.01177    -0.01527
+ 0.01510    -0.01704
+ 0.01910    -0.01897
+ 0.02394    -0.02108
+ 0.02986    -0.02338
+ 0.03713    -0.02585
+ 0.04591    -0.02841
+ 0.05623    -0.03101
+ 0.06795    -0.03358
+ 0.08087    -0.03603
+ 0.09466    -0.03829
+ 0.10906    -0.04045
+ 0.12384    -0.04249
+ 0.13882    -0.04422
+ 0.15407    -0.04573
+ 0.16940    -0.04710
+ 0.18489    -0.04834
+ 0.20027    -0.04939
+ 0.21566    -0.05035
+ 0.23109    -0.05122
+ 0.24664    -0.05203
+ 0.26235    -0.05274
+ 0.27825    -0.05335
+ 0.29415    -0.05385
+ 0.31005    -0.05426
+ 0.32601    -0.05458
+ 0.34199    -0.05480
+ 0.35794    -0.05492
+ 0.37390    -0.05495
+ 0.38987    -0.05488
+ 0.40587    -0.05469
+ 0.42185    -0.05439
+ 0.43779    -0.05396
+ 0.45375    -0.05342
+ 0.46973    -0.05274
+ 0.48567    -0.05195
+ 0.50160    -0.05103
+ 0.51755    -0.04998
+ 0.53346    -0.04880
+ 0.54932    -0.04749
+ 0.56523    -0.04606
+ 0.58100    -0.04453
+ 0.59658    -0.04285
+ 0.61217    -0.04110
+ 0.62780    -0.03920
+ 0.64359    -0.03713
+ 0.65940    -0.03493
+ 0.67516    -0.03261
+ 0.69088    -0.03017
+ 0.70654    -0.02763
+ 0.72208    -0.02499
+ 0.73773    -0.02224
+ 0.75350    -0.01950
+ 0.76924    -0.01674
+ 0.78473    -0.01387
+ 0.79982    -0.01104
+ 0.81422    -0.00844
+ 0.82773    -0.00597
+ 0.84122    -0.00333
+ 0.85450    -0.00101
+ 0.86788     0.00112
+ 0.88146     0.00270
+ 0.89569     0.00357
+ 0.91072     0.00433
+ 0.92589     0.00466
+ 0.94094     0.00448
+ 0.95576     0.00385
+ 0.96997     0.00285
+ 0.98285     0.00162
+ 0.99380     0.00057
+ 1.00000     0.00000
diff --git a/airfoils/F15/F15_15.dat b/airfoils/F15/F15_15.dat
new file mode 100644
index 00000000..caa1be42
--- /dev/null
+++ b/airfoils/F15/F15_15.dat
@@ -0,0 +1,160 @@
+# F15_15.dat (thickness ratio 0.15)
+ 1.00000     0.00000
+ 0.99380     0.00126
+ 0.98285     0.00352
+ 0.96997     0.00625
+ 0.95576     0.00943
+ 0.94094     0.01292
+ 0.92589     0.01669
+ 0.91072     0.02069
+ 0.89569     0.02470
+ 0.88146     0.02858
+ 0.86788     0.03221
+ 0.85450     0.03580
+ 0.84122     0.03905
+ 0.82773     0.04222
+ 0.81422     0.04494
+ 0.79982     0.04769
+ 0.78473     0.05047
+ 0.76924     0.05317
+ 0.75350     0.05579
+ 0.73773     0.05837
+ 0.72208     0.06080
+ 0.70654     0.06304
+ 0.69088     0.06511
+ 0.67516     0.06704
+ 0.65940     0.06883
+ 0.64359     0.07050
+ 0.62780     0.07204
+ 0.61217     0.07343
+ 0.59658     0.07465
+ 0.58100     0.07582
+ 0.56523     0.07681
+ 0.54932     0.07769
+ 0.53346     0.07845
+ 0.51755     0.07908
+ 0.50160     0.07959
+ 0.48567     0.07999
+ 0.46973     0.08027
+ 0.45375     0.08044
+ 0.43779     0.08050
+ 0.42185     0.08043
+ 0.40587     0.08025
+ 0.38987     0.07998
+ 0.37390     0.07960
+ 0.35794     0.07910
+ 0.34199     0.07849
+ 0.32601     0.07779
+ 0.31005     0.07698
+ 0.29415     0.07606
+ 0.27825     0.07502
+ 0.26235     0.07387
+ 0.24664     0.07263
+ 0.23109     0.07125
+ 0.21566     0.06978
+ 0.20027     0.06822
+ 0.18489     0.06645
+ 0.16940     0.06454
+ 0.15407     0.06244
+ 0.13882     0.06015
+ 0.12384     0.05766
+ 0.10906     0.05490
+ 0.09466     0.05195
+ 0.08087     0.04882
+ 0.06795     0.04550
+ 0.05623     0.04207
+ 0.04591     0.03860
+ 0.03713     0.03527
+ 0.02986     0.03219
+ 0.02394     0.02937
+ 0.01910     0.02674
+ 0.01510     0.02419
+ 0.01177     0.02172
+ 0.00899     0.01927
+ 0.00668     0.01681
+ 0.00479     0.01433
+ 0.00327     0.01184
+ 0.00208     0.00936
+ 0.00117     0.00692
+ 0.00052     0.00452
+ 0.00013     0.00220
+ 0.00000     0.00000
+ 0.00013    -0.00207
+ 0.00052    -0.00436
+ 0.00117    -0.00659
+ 0.00208    -0.00877
+ 0.00327    -0.01092
+ 0.00479    -0.01305
+ 0.00668    -0.01516
+ 0.00899    -0.01725
+ 0.01177    -0.01938
+ 0.01510    -0.02162
+ 0.01910    -0.02405
+ 0.02394    -0.02669
+ 0.02986    -0.02956
+ 0.03713    -0.03264
+ 0.04591    -0.03586
+ 0.05623    -0.03913
+ 0.06795    -0.04237
+ 0.08087    -0.04546
+ 0.09466    -0.04832
+ 0.10906    -0.05105
+ 0.12384    -0.05362
+ 0.13882    -0.05582
+ 0.15407    -0.05775
+ 0.16940    -0.05951
+ 0.18489    -0.06109
+ 0.20027    -0.06246
+ 0.21566    -0.06369
+ 0.23109    -0.06483
+ 0.24664    -0.06588
+ 0.26235    -0.06681
+ 0.27825    -0.06761
+ 0.29415    -0.06829
+ 0.31005    -0.06884
+ 0.32601    -0.06929
+ 0.34199    -0.06961
+ 0.35794    -0.06982
+ 0.37390    -0.06990
+ 0.38987    -0.06986
+ 0.40587    -0.06969
+ 0.42185    -0.06937
+ 0.43779    -0.06890
+ 0.45375    -0.06829
+ 0.46973    -0.06752
+ 0.48567    -0.06661
+ 0.50160    -0.06555
+ 0.51755    -0.06432
+ 0.53346    -0.06294
+ 0.54932    -0.06140
+ 0.56523    -0.05972
+ 0.58100    -0.05790
+ 0.59658    -0.05591
+ 0.61217    -0.05382
+ 0.62780    -0.05156
+ 0.64359    -0.04909
+ 0.65940    -0.04646
+ 0.67516    -0.04368
+ 0.69088    -0.04075
+ 0.70654    -0.03770
+ 0.72208    -0.03452
+ 0.73773    -0.03120
+ 0.75350    -0.02786
+ 0.76924    -0.02451
+ 0.78473    -0.02102
+ 0.79982    -0.01757
+ 0.81422    -0.01437
+ 0.82773    -0.01133
+ 0.84122    -0.00804
+ 0.85450    -0.00510
+ 0.86788    -0.00234
+ 0.88146    -0.00017
+ 0.89569     0.00122
+ 0.91072     0.00251
+ 0.92589     0.00333
+ 0.94094     0.00354
+ 0.95576     0.00323
+ 0.96997     0.00247
+ 0.98285     0.00141
+ 0.99380     0.00049
+ 1.00000     0.00000
diff --git a/airfoils/NACA/n0012.dat b/airfoils/NACA/n0012.dat
new file mode 100644
index 00000000..e7f86fe8
--- /dev/null
+++ b/airfoils/NACA/n0012.dat
@@ -0,0 +1,204 @@
+#NACA0012
+0	0
+0.00024672	0.00277913
+0.00098664	0.00551947
+0.00221902	0.00821995
+0.00394265	0.0108792
+0.00615583	0.01349561
+0.00885637	0.01606733
+0.01204162	0.01859226
+0.01570842	0.02106812
+0.01985316	0.02349241
+0.02447174	0.02586248
+0.02955962	0.02817553
+0.03511176	0.03042863
+0.04112269	0.03261878
+0.04758647	0.0347429
+0.05449674	0.03679788
+0.06184666	0.03878062
+0.06962899	0.04068804
+0.07783604	0.04251711
+0.08645971	0.04426491
+0.0954915	0.04592861
+0.10492249	0.04750555
+0.11474338	0.04899323
+0.12494447	0.05038933
+0.13551569	0.05169178
+0.14644661	0.05289871
+0.15772645	0.05400853
+0.16934407	0.05501991
+0.18128801	0.05593181
+0.19354647	0.05674347
+0.20610737	0.05745444
+0.21895831	0.05806456
+0.2320866	0.05857399
+0.24547929	0.05898318
+0.25912316	0.05929288
+0.27300475	0.05950414
+0.28711035	0.05961828
+0.30142605	0.0596369
+0.31593772	0.05956186
+0.33063104	0.05939525
+0.3454915	0.0591394
+0.36050445	0.05879685
+0.37565506	0.05837033
+0.39092838	0.05786273
+0.40630934	0.05727711
+0.42178277	0.05661666
+0.43733338	0.05588468
+0.45294584	0.05508455
+0.46860474	0.05421975
+0.48429462	0.05329379
+0.5	0.05231025
+0.51570538	0.05127272
+0.53139526	0.05018478
+0.54705416	0.04905004
+0.56266662	0.04787208
+0.57821723	0.04665444
+0.59369066	0.04540065
+0.60907162	0.04411417
+0.62434494	0.04279845
+0.63949555	0.04145686
+0.6545085	0.04009273
+0.66936896	0.03870931
+0.68406228	0.03730984
+0.69857395	0.03589746
+0.71288965	0.03447529
+0.72699525	0.03304638
+0.74087684	0.03161375
+0.75452071	0.03018037
+0.7679134	0.02874916
+0.78104169	0.02732304
+0.79389263	0.02590486
+0.80645353	0.02449747
+0.81871199	0.02310368
+0.83065593	0.02172629
+0.84227355	0.02036807
+0.85355339	0.01903179
+0.86448431	0.01772019
+0.87505553	0.01643599
+0.88525662	0.01518188
+0.89507751	0.01396055
+0.9045085	0.01277464
+0.91354029	0.01162677
+0.92216396	0.01051952
+0.93037101	0.00945542
+0.93815334	0.00843693
+0.94550326	0.00746647
+0.95241353	0.00654638
+0.95887731	0.00567891
+0.96488824	0.00486623
+0.97044038	0.00411038
+0.97552826	0.00341331
+0.98014684	0.00277684
+0.98429158	0.00220264
+0.98795838	0.00169224
+0.99114363	0.00124702
+0.99384417	0.0008682
+0.99605735	0.00055681
+0.99778098	0.00031372
+0.99901336	0.00013959
+0.99975328	0.00003492
+1	0
+	
+0	0
+0.00024672	-0.00277913
+0.00098664	-0.00551947
+0.00221902	-0.00821995
+0.00394265	-0.0108792
+0.00615583	-0.01349561
+0.00885637	-0.01606733
+0.01204162	-0.01859226
+0.01570842	-0.02106812
+0.01985316	-0.02349241
+0.02447174	-0.02586248
+0.02955962	-0.02817553
+0.03511176	-0.03042863
+0.04112269	-0.03261878
+0.04758647	-0.0347429
+0.05449674	-0.03679788
+0.06184666	-0.03878062
+0.06962899	-0.04068804
+0.07783604	-0.04251711
+0.08645971	-0.04426491
+0.0954915	-0.04592861
+0.10492249	-0.04750555
+0.11474338	-0.04899323
+0.12494447	-0.05038933
+0.13551569	-0.05169178
+0.14644661	-0.05289871
+0.15772645	-0.05400853
+0.16934407	-0.05501991
+0.18128801	-0.05593181
+0.19354647	-0.05674347
+0.20610737	-0.05745443
+0.21895831	-0.05806456
+0.2320866	-0.05857399
+0.24547929	-0.05898318
+0.25912316	-0.05929288
+0.27300475	-0.05950414
+0.28711035	-0.05961828
+0.30142605	-0.0596369
+0.31593772	-0.05956186
+0.33063104	-0.05939525
+0.3454915	-0.0591394
+0.36050445	-0.05879685
+0.37565506	-0.05837033
+0.39092838	-0.05786273
+0.40630934	-0.05727711
+0.42178277	-0.05661666
+0.43733338	-0.05588468
+0.45294584	-0.05508455
+0.46860474	-0.05421975
+0.48429462	-0.05329379
+0.5	-0.05231025
+0.51570538	-0.05127272
+0.53139526	-0.05018478
+0.54705416	-0.04905004
+0.56266662	-0.04787208
+0.57821723	-0.04665444
+0.59369066	-0.04540064
+0.60907162	-0.04411417
+0.62434494	-0.04279845
+0.63949555	-0.04145686
+0.6545085	-0.04009273
+0.66936896	-0.03870931
+0.68406228	-0.03730984
+0.69857395	-0.03589746
+0.71288965	-0.03447529
+0.72699525	-0.03304638
+0.74087684	-0.03161375
+0.75452071	-0.03018037
+0.7679134	-0.02874916
+0.78104169	-0.02732304
+0.79389263	-0.02590486
+0.80645353	-0.02449747
+0.81871199	-0.02310368
+0.83065593	-0.02172629
+0.84227355	-0.02036807
+0.85355339	-0.01903179
+0.86448431	-0.01772019
+0.87505553	-0.01643599
+0.88525662	-0.01518188
+0.89507751	-0.01396055
+0.9045085	-0.01277464
+0.91354029	-0.01162677
+0.92216396	-0.01051952
+0.93037101	-0.00945542
+0.93815334	-0.00843693
+0.94550326	-0.00746647
+0.95241353	-0.00654638
+0.95887731	-0.00567891
+0.96488824	-0.00486623
+0.97044038	-0.00411038
+0.97552826	-0.00341331
+0.98014684	-0.00277684
+0.98429158	-0.00220264
+0.98795838	-0.00169224
+0.99114363	-0.00124702
+0.99384417	-0.0008682
+0.99605735	-0.00055681
+0.99778098	-0.00031372
+0.99901336	-0.00013959
+0.99975328	-0.00003492
+1	0
diff --git a/airfoils/include/airfoils/airfoils.h b/airfoils/include/airfoils/airfoils.h
new file mode 100644
index 00000000..8859f7e7
--- /dev/null
+++ b/airfoils/include/airfoils/airfoils.h
@@ -0,0 +1,93 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIRFOILS_INCLUDE_AIRFOILS_AIRFOILS_H_
+#define AIRFOILS_INCLUDE_AIRFOILS_AIRFOILS_H_
+
+#include <aircraftGeometry2/io/dat.h>
+
+#include <filesystem>
+#include <map>
+#include <string>
+#include <vector>
+
+class Airfoils {
+ public:
+  /**
+   * \brief Construct a new Airfoils:: Airfoils object
+   *
+   * \param path_to_airfoil_directory
+   */
+  explicit Airfoils(const std::filesystem::path& path_to_airfoil_directory);
+
+  /**
+   * \brief Destroy the Airfoils object
+   *
+   */
+  ~Airfoils() = default;
+
+  /**
+   * \brief Add directory airfoils to the available airfoils list
+   *
+   * \param path_to_airfoil_directory
+   * \throws invalid_argument if directory does not exist
+   */
+  void add_directory_airfoils(const std::filesystem::path& path_to_airfoil_directory);
+
+  /**
+   * \brief Adds airfoil to available airfoils list
+   *
+   * \param airfoil_path airfoil path
+   * \throws invalid_argument if airfoil does not exists
+   */
+  void add_airfoil(const std::filesystem::path& airfoil_path);
+
+  /**
+   * \brief Prints available airfoils - key and path
+   *
+   */
+  void print_available_airfoils();
+
+  /**
+   * \brief Copy airfoil from available airfoils to an existing target directory
+   *
+   * \param airfoil airfoil key
+   * \param target_directory path to target directory
+   */
+  void copy_available_airfoil(const std::string& airfoil, const std::filesystem::path& target_directory);
+
+  /**
+   * \brief Get airfoil shape
+   *
+   * \param airfoil airfoil key string from available airfoils
+   * \throws invalid_argument if airfoil is not in available airfoils
+   * \return geom2::Polygon_2 shape of the airfoil geometry
+   */
+  geom2::Polygon_2 get_airfoil(const std::string& airfoil);
+
+ private:
+  std::map<std::string, const std::filesystem::path>
+      available_airfoils;  //<std::map of available airfoils and their specific path. first entry - airfoil name, second
+                           //entry path to the airfoil.
+};
+
+#endif  // AIRFOILS_INCLUDE_AIRFOILS_AIRFOILS_H_
diff --git a/airfoils/src/airfoils.cpp b/airfoils/src/airfoils.cpp
new file mode 100644
index 00000000..c163ff6e
--- /dev/null
+++ b/airfoils/src/airfoils.cpp
@@ -0,0 +1,105 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "airfoils/airfoils.h"
+
+#include <standardFiles/functions.h>
+
+#include <format>
+#include <iostream>
+
+Airfoils::Airfoils(const std::filesystem::path& path_to_airfoil_directory) {
+  if (!std::filesystem::exists(path_to_airfoil_directory)) {
+    throwError(__FILE__, __func__, __LINE__,
+               std::format("Directory {} does not exist!", path_to_airfoil_directory.string()));
+  }
+  add_directory_airfoils(path_to_airfoil_directory);
+}
+
+void Airfoils::print_available_airfoils() {
+  for (const auto& item : available_airfoils) {
+    std::cout << std::format("Airfoil ... {:<20.50} ... path {:<50.100}", item.first, item.second.string())
+              << std::endl;
+  }
+}
+
+geom2::Polygon_2 Airfoils::get_airfoil(const std::string& airfoil) {
+  geom2::Polygon_2 airfoil_data;
+
+  auto airfoil_data_it = available_airfoils.find(airfoil);
+  if (airfoil_data_it == available_airfoils.end()) {
+    throwError(__FILE__, __func__, __LINE__, std::format("Airfoil {} not available ...", airfoil));
+  }
+  return geom2::io::read_airfoil(airfoil_data_it->second);
+}
+
+void Airfoils::copy_available_airfoil(const std::string& airfoil, const std::filesystem::path& target_directory) {
+  auto airfoil_it = available_airfoils.find(airfoil);
+  if (!std::filesystem::exists(target_directory)) {
+    throwError(__FILE__, __func__, __LINE__,
+               std::format("Target directory {} does not exist", target_directory.string()));
+  }
+  if (airfoil_it == available_airfoils.end()) {
+    throwError(__FILE__, __func__, __LINE__, std::format("Airfoil {} is not available", airfoil));
+  }
+  std::filesystem::path absolute_target_directory = std::filesystem::absolute(target_directory);
+  std::filesystem::path absolute_airfoils_path = std::filesystem::absolute(airfoil_it->second);
+  if (absolute_target_directory.string().compare(absolute_airfoils_path.parent_path().string()) == 0) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->out << std::format("Copying airfoil skipped - airfoil {} is already in {}", airfoil,
+                                        target_directory.string())
+                         << std::endl;
+    } else {
+      std::cout << std::format("Copying airfoil skipped - airfoil {} is already in {}", airfoil,
+                               target_directory.string())
+                << std::endl;
+    }
+    return;
+  }
+  try {
+    std::filesystem::copy(absolute_airfoils_path, absolute_target_directory,
+                          std::filesystem::copy_options::update_existing);
+  } catch (std::exception& e) {
+    throwError(__FILE__, __func__, __LINE__, e.what());
+  }
+}
+
+void Airfoils::add_directory_airfoils(const std::filesystem::path& path_to_airfoil_directory) {
+  if (!std::filesystem::exists(path_to_airfoil_directory)) {
+    throw std::invalid_argument(std::format("Directory {} does not exist!", path_to_airfoil_directory.string()));
+    // throwError(__FILE__,__func__,__LINE__,std::format("Directory {} does not exist!",
+    // path_to_airfoil_directory.string()));
+  }
+  for (const auto& entry : std::filesystem::directory_iterator(path_to_airfoil_directory)) {
+    add_airfoil(entry.path());
+  }
+}
+
+void Airfoils::add_airfoil(const std::filesystem::path& airfoil_path) {
+  if (!std::filesystem::exists(airfoil_path)) {
+    throwError(__FILE__, __func__, __LINE__, std::format("Airfoil {} does not exist", airfoil_path.string()));
+  }
+  if (std::filesystem::is_regular_file(airfoil_path) && airfoil_path.extension() == ".dat") {
+    std::string airfoil = airfoil_path.filename().stem().string();
+    available_airfoils.try_emplace(airfoil, airfoil_path);
+  }
+}
diff --git a/airfoils/src/demo.cpp b/airfoils/src/demo.cpp
new file mode 100644
index 00000000..b6261429
--- /dev/null
+++ b/airfoils/src/demo.cpp
@@ -0,0 +1,37 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <airfoils/airfoils.h>
+
+#include <string>
+int main(int argc, char** argv) {
+  try {
+    Airfoils airfoils("../airfoils/available_airfoil_storage");
+    airfoils.print_available_airfoils();
+    airfoils.copy_available_airfoil("naca0012", "../airfoils/copy_airfoils_storage");
+  } catch (std::string& e) {
+    std::cerr << e << std::endl;
+  } catch (std::exception& e) {
+    std::cerr << e.what() << std::endl;
+  }
+  return 0;
+}
diff --git a/airfoils/test/CMakeLists.txt b/airfoils/test/CMakeLists.txt
new file mode 100644
index 00000000..05bf25bc
--- /dev/null
+++ b/airfoils/test/CMakeLists.txt
@@ -0,0 +1,51 @@
+# Convert the module sources to a path found by CMake
+list(TRANSFORM LIBRARY_SOURCES PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/../ OUTPUT_VARIABLE TEST_SOURCES)
+
+# ==============================================
+# Add the test executable
+#
+# *** IMPORTANT ***
+# -> Change *.cpp files according to the tests
+# ==============================================
+add_executable(test_${LIBRARY_NAME}
+    test_airfoils.cpp
+    ${TEST_SOURCES}
+)
+
+# Link the test executable against UNICADO libs and gtest
+target_link_libraries( test_${LIBRARY_NAME}
+    PRIVATE
+        aircraftGeometry2
+        GTest::gtest_main
+        standardFiles
+)
+
+# Set compile definitions for the test executable
+target_compile_options( test_${LIBRARY_NAME} PRIVATE "-w") # Skip warnings
+
+# The the original source folder as includes, to that the test can access the
+# original source files
+target_include_directories( test_${LIBRARY_NAME}
+    PRIVATE
+        ${CMAKE_CURRENT_SOURCE_DIR}/../src/
+		${CMAKE_CURRENT_SOURCE_DIR}/../include/
+)
+
+# Build the test runner into the current directory
+set_target_properties( test_${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+
+# Add a custom target to run the tests with cmake
+add_custom_target(runtest_${LIBRARY_NAME}
+        # COMMAND CTEST_OUTPUT_ON_FAILURE=1 GTEST_COLOR=1
+        COMMAND test_${LIBRARY_NAME}
+        DEPENDS test_${LIBRARY_NAME})
+
+# *optional* Add the test executable to ctest
+# gtest_discover_tests(test_${LIBRARY_NAME})
+
+# Set compile options according to operating system
+if( WIN32 )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS;BUILD_AIRFOILS_DLL")
+elseif( UNIX )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "BUILD_AIRFOILS_SO")
+endif()
diff --git a/airfoils/test/test_airfoil_directory/F15.dat b/airfoils/test/test_airfoil_directory/F15.dat
new file mode 100644
index 00000000..46d2a3cd
--- /dev/null
+++ b/airfoils/test/test_airfoil_directory/F15.dat
@@ -0,0 +1,160 @@
+# F15_11.dat (thickness ratio 0.11)
+ 1.00000     0.00000
+ 0.99380     0.00116
+ 0.98285     0.00324
+ 0.96997     0.00575
+ 0.95576     0.00860
+ 0.94094     0.01167
+ 0.92589     0.01491
+ 0.91072     0.01826
+ 0.89569     0.02157
+ 0.88146     0.02475
+ 0.86788     0.02760
+ 0.85450     0.03034
+ 0.84122     0.03277
+ 0.82773     0.03508
+ 0.81422     0.03703
+ 0.79982     0.03899
+ 0.78473     0.04094
+ 0.76924     0.04281
+ 0.75350     0.04464
+ 0.73773     0.04642
+ 0.72208     0.04809
+ 0.70654     0.04961
+ 0.69088     0.05099
+ 0.67516     0.05228
+ 0.65940     0.05346
+ 0.64359     0.05455
+ 0.62780     0.05556
+ 0.61217     0.05646
+ 0.59658     0.05724
+ 0.58100     0.05799
+ 0.56523     0.05860
+ 0.54932     0.05915
+ 0.53346     0.05960
+ 0.51755     0.05996
+ 0.50160     0.06024
+ 0.48567     0.06044
+ 0.46973     0.06057
+ 0.45375     0.06061
+ 0.43779     0.06058
+ 0.42185     0.06046
+ 0.40587     0.06026
+ 0.38987     0.06000
+ 0.37390     0.05966
+ 0.35794     0.05924
+ 0.34199     0.05875
+ 0.32601     0.05818
+ 0.31005     0.05754
+ 0.29415     0.05681
+ 0.27825     0.05600
+ 0.26235     0.05511
+ 0.24664     0.05416
+ 0.23109     0.05311
+ 0.21566     0.05199
+ 0.20027     0.05080
+ 0.18489     0.04944
+ 0.16940     0.04800
+ 0.15407     0.04641
+ 0.13882     0.04469
+ 0.12384     0.04282
+ 0.10906     0.04077
+ 0.09466     0.03858
+ 0.08087     0.03625
+ 0.06795     0.03378
+ 0.05623     0.03124
+ 0.04591     0.02868
+ 0.03713     0.02621
+ 0.02986     0.02396
+ 0.02394     0.02190
+ 0.01910     0.01997
+ 0.01510     0.01809
+ 0.01177     0.01624
+ 0.00899     0.01440
+ 0.00668     0.01255
+ 0.00479     0.01068
+ 0.00327     0.00881
+ 0.00208     0.00695
+ 0.00117     0.00511
+ 0.00052     0.00333
+ 0.00013     0.00163
+ 0.00000     0.00000
+ 0.00013    -0.00150
+ 0.00052    -0.00318
+ 0.00117    -0.00479
+ 0.00208    -0.00635
+ 0.00327    -0.00788
+ 0.00479    -0.00940
+ 0.00668    -0.01089
+ 0.00899    -0.01238
+ 0.01177    -0.01390
+ 0.01510    -0.01552
+ 0.01910    -0.01728
+ 0.02394    -0.01921
+ 0.02986    -0.02133
+ 0.03713    -0.02359
+ 0.04591    -0.02593
+ 0.05623    -0.02830
+ 0.06795    -0.03065
+ 0.08087    -0.03289
+ 0.09466    -0.03495
+ 0.10906    -0.03692
+ 0.12384    -0.03879
+ 0.13882    -0.04036
+ 0.15407    -0.04173
+ 0.16940    -0.04297
+ 0.18489    -0.04408
+ 0.20027    -0.04504
+ 0.21566    -0.04590
+ 0.23109    -0.04669
+ 0.24664    -0.04741
+ 0.26235    -0.04805
+ 0.27825    -0.04859
+ 0.29415    -0.04904
+ 0.31005    -0.04940
+ 0.32601    -0.04968
+ 0.34199    -0.04986
+ 0.35794    -0.04996
+ 0.37390    -0.04997
+ 0.38987    -0.04988
+ 0.40587    -0.04969
+ 0.42185    -0.04939
+ 0.43779    -0.04898
+ 0.45375    -0.04846
+ 0.46973    -0.04782
+ 0.48567    -0.04706
+ 0.50160    -0.04620
+ 0.51755    -0.04520
+ 0.53346    -0.04409
+ 0.54932    -0.04286
+ 0.56523    -0.04151
+ 0.58100    -0.04007
+ 0.59658    -0.03850
+ 0.61217    -0.03686
+ 0.62780    -0.03508
+ 0.64359    -0.03315
+ 0.65940    -0.03109
+ 0.67516    -0.02892
+ 0.69088    -0.02664
+ 0.70654    -0.02427
+ 0.72208    -0.02181
+ 0.73773    -0.01926
+ 0.75350    -0.01671
+ 0.76924    -0.01415
+ 0.78473    -0.01149
+ 0.79982    -0.00886
+ 0.81422    -0.00646
+ 0.82773    -0.00419
+ 0.84122    -0.00176
+ 0.85450     0.00035
+ 0.86788     0.00227
+ 0.88146     0.00366
+ 0.89569     0.00435
+ 0.91072     0.00494
+ 0.92589     0.00511
+ 0.94094     0.00479
+ 0.95576     0.00405
+ 0.96997     0.00297
+ 0.98285     0.00169
+ 0.99380     0.00060
+ 1.00000     0.00000
diff --git a/airfoils/test/test_airfoil_directory/F15_failure.dat b/airfoils/test/test_airfoil_directory/F15_failure.dat
new file mode 100644
index 00000000..e69de29b
diff --git a/airfoils/test/test_airfoil_directory/n0012.dat b/airfoils/test/test_airfoil_directory/n0012.dat
new file mode 100644
index 00000000..3a8a2473
--- /dev/null
+++ b/airfoils/test/test_airfoil_directory/n0012.dat
@@ -0,0 +1,204 @@
+#NACA0012
+0	0
+0.00024672	0.00277913
+0.00098664	0.00551947
+0.00221902	0.00821995
+0.00394265	0.0108792
+0.00615583	0.01349561
+0.00885637	0.01606733
+0.01204162	0.01859226
+0.01570842	0.02106812
+0.01985316	0.02349241
+0.02447174	0.02586248
+0.02955962	0.02817553
+0.03511176	0.03042863
+0.04112269	0.03261878
+0.04758647	0.0347429
+0.05449674	0.03679788
+0.06184666	0.03878062
+0.06962899	0.04068804
+0.07783604	0.04251711
+0.08645971	0.04426491
+0.0954915	0.04592861
+0.10492249	0.04750555
+0.11474338	0.04899323
+0.12494447	0.05038933
+0.13551569	0.05169178
+0.14644661	0.05289871
+0.15772645	0.05400853
+0.16934407	0.05501991
+0.18128801	0.05593181
+0.19354647	0.05674347
+0.20610737	0.05745444
+0.21895831	0.05806456
+0.2320866	0.05857399
+0.24547929	0.05898318
+0.25912316	0.05929288
+0.27300475	0.05950414
+0.28711035	0.05961828
+0.30142605	0.0596369
+0.31593772	0.05956186
+0.33063104	0.05939525
+0.3454915	0.0591394
+0.36050445	0.05879685
+0.37565506	0.05837033
+0.39092838	0.05786273
+0.40630934	0.05727711
+0.42178277	0.05661666
+0.43733338	0.05588468
+0.45294584	0.05508455
+0.46860474	0.05421975
+0.48429462	0.05329379
+0.5	0.05231025
+0.51570538	0.05127272
+0.53139526	0.05018478
+0.54705416	0.04905004
+0.56266662	0.04787208
+0.57821723	0.04665444
+0.59369066	0.04540065
+0.60907162	0.04411417
+0.62434494	0.04279845
+0.63949555	0.04145686
+0.6545085	0.04009273
+0.66936896	0.03870931
+0.68406228	0.03730984
+0.69857395	0.03589746
+0.71288965	0.03447529
+0.72699525	0.03304638
+0.74087684	0.03161375
+0.75452071	0.03018037
+0.7679134	0.02874916
+0.78104169	0.02732304
+0.79389263	0.02590486
+0.80645353	0.02449747
+0.81871199	0.02310368
+0.83065593	0.02172629
+0.84227355	0.02036807
+0.85355339	0.01903179
+0.86448431	0.01772019
+0.87505553	0.01643599
+0.88525662	0.01518188
+0.89507751	0.01396055
+0.9045085	0.01277464
+0.91354029	0.01162677
+0.92216396	0.01051952
+0.93037101	0.00945542
+0.93815334	0.00843693
+0.94550326	0.00746647
+0.95241353	0.00654638
+0.95887731	0.00567891
+0.96488824	0.00486623
+0.97044038	0.00411038
+0.97552826	0.00341331
+0.98014684	0.00277684
+0.98429158	0.00220264
+0.98795838	0.00169224
+0.99114363	0.00124702
+0.99384417	0.0008682
+0.99605735	0.00055681
+0.99778098	0.00031372
+0.99901336	0.00013959
+0.99975328	0.00003492
+1	0
+	
+0	0
+0.00024672	-0.00277913
+0.00098664	-0.00551947
+0.00221902	-0.00821995
+0.00394265	-0.0108792
+0.00615583	-0.01349561
+0.00885637	-0.01606733
+0.01204162	-0.01859226
+0.01570842	-0.02106812
+0.01985316	-0.02349241
+0.02447174	-0.02586248
+0.02955962	-0.02817553
+0.03511176	-0.03042863
+0.04112269	-0.03261878
+0.04758647	-0.0347429
+0.05449674	-0.03679788
+0.06184666	-0.03878062
+0.06962899	-0.04068804
+0.07783604	-0.04251711
+0.08645971	-0.04426491
+0.0954915	-0.04592861
+0.10492249	-0.04750555
+0.11474338	-0.04899323
+0.12494447	-0.05038933
+0.13551569	-0.05169178
+0.14644661	-0.05289871
+0.15772645	-0.05400853
+0.16934407	-0.05501991
+0.18128801	-0.05593181
+0.19354647	-0.05674347
+0.20610737	-0.05745443
+0.21895831	-0.05806456
+0.2320866	-0.05857399
+0.24547929	-0.05898318
+0.25912316	-0.05929288
+0.27300475	-0.05950414
+0.28711035	-0.05961828
+0.30142605	-0.0596369
+0.31593772	-0.05956186
+0.33063104	-0.05939525
+0.3454915	-0.0591394
+0.36050445	-0.05879685
+0.37565506	-0.05837033
+0.39092838	-0.05786273
+0.40630934	-0.05727711
+0.42178277	-0.05661666
+0.43733338	-0.05588468
+0.45294584	-0.05508455
+0.46860474	-0.05421975
+0.48429462	-0.05329379
+0.5	-0.05231025
+0.51570538	-0.05127272
+0.53139526	-0.05018478
+0.54705416	-0.04905004
+0.56266662	-0.04787208
+0.57821723	-0.04665444
+0.59369066	-0.04540064
+0.60907162	-0.04411417
+0.62434494	-0.04279845
+0.63949555	-0.04145686
+0.6545085	-0.04009273
+0.66936896	-0.03870931
+0.68406228	-0.03730984
+0.69857395	-0.03589746
+0.71288965	-0.03447529
+0.72699525	-0.03304638
+0.74087684	-0.03161375
+0.75452071	-0.03018037
+0.7679134	-0.02874916
+0.78104169	-0.02732304
+0.79389263	-0.02590486
+0.80645353	-0.02449747
+0.81871199	-0.02310368
+0.83065593	-0.02172629
+0.84227355	-0.02036807
+0.85355339	-0.01903179
+0.86448431	-0.01772019
+0.87505553	-0.01643599
+0.88525662	-0.01518188
+0.89507751	-0.01396055
+0.9045085	-0.01277464
+0.91354029	-0.01162677
+0.92216396	-0.01051952
+0.93037101	-0.00945542
+0.93815334	-0.00843693
+0.94550326	-0.00746647
+0.95241353	-0.00654638
+0.95887731	-0.00567891
+0.96488824	-0.00486623
+0.97044038	-0.00411038
+0.97552826	-0.00341331
+0.98014684	-0.00277684
+0.98429158	-0.00220264
+0.98795838	-0.00169224
+0.99114363	-0.00124702
+0.99384417	-0.0008682
+0.99605735	-0.00055681
+0.99778098	-0.00031372
+0.99901336	-0.00013959
+0.99975328	-0.00003492
+1	0
diff --git a/airfoils/test/test_airfoil_directory/naca0012_failure.dat b/airfoils/test/test_airfoil_directory/naca0012_failure.dat
new file mode 100644
index 00000000..e69de29b
diff --git a/airfoils/test/test_airfoils.cpp b/airfoils/test/test_airfoils.cpp
new file mode 100644
index 00000000..add13062
--- /dev/null
+++ b/airfoils/test/test_airfoils.cpp
@@ -0,0 +1,98 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <airfoils/airfoils.h>
+#include <gtest/gtest.h>
+
+#include <filesystem>
+
+std::filesystem::path executable_path(".");
+std::filesystem::path test_directory("../../../airfoils/test");
+std::filesystem::path test_airfoil_directory = test_directory.string() + "/test_airfoil_directory";
+std::filesystem::path test_copy_directory = test_directory.string() + "/test_copy_directory";
+
+TEST(airfoilsAddDirectory, addDirectorySuccess) { EXPECT_NO_THROW(Airfoils(test_airfoil_directory.string())); }
+
+TEST(airfoilsAddDirectory, addDirectoryFailure) { EXPECT_ANY_THROW(Airfoils("bla")); }
+
+/**
+ * \brief Airfoil add testcase success
+ *
+ */
+TEST(airfoilsAddAirfoil, addAirfoilSuccess) {
+  Airfoils airfoils(test_airfoil_directory.string());
+  std::filesystem::path airfoil_path = test_airfoil_directory.string() + "/F15_failure.dat";
+  EXPECT_NO_THROW(airfoils.add_airfoil(airfoil_path));
+}
+
+/**
+ * \brief Airfoil add testcase failure
+ *
+ */
+TEST(airfoilsAddAirfoil, addAirfoilFailure) {
+  Airfoils airfoils(test_airfoil_directory.string());
+
+  EXPECT_ANY_THROW(airfoils.add_airfoil("bla"));
+}
+
+/**
+ * \brief Copy airfoil success
+ *
+ */
+TEST(airfoilsCopyAirfoil, copyAirfoilSuccess) {
+  Airfoils airfoils(test_airfoil_directory.string());
+  std::string f15_failure_airfoil_key = "F15_failure";
+  airfoils.copy_available_airfoil(f15_failure_airfoil_key, test_copy_directory);
+  std::filesystem::path copied_path = test_copy_directory.string() + "/" + f15_failure_airfoil_key + ".dat";
+  EXPECT_TRUE(std::filesystem::exists(copied_path));
+}
+
+/**
+ * \brief Get Airfoil Success
+ *
+ */
+TEST(airfoilsGetAirfoil, getAirfoilSuccess) {
+  Airfoils airfoils(test_airfoil_directory.string());
+  std::string n0012_airfoil_key = "n0012";
+  auto n0012_airfoil = airfoils.get_airfoil(n0012_airfoil_key);
+  EXPECT_EQ(n0012_airfoil.vertices().size(), 200);
+}
+
+/**
+ * \brief Get Airfoil Failure -> not in list
+ *
+ */
+TEST(airfoilsGetAirfoil, getAirfoilNotInListFailure) {
+  Airfoils airfoils(test_airfoil_directory.string());
+  std::string false_airfoil_key = "n0";
+  EXPECT_ANY_THROW(airfoils.get_airfoil(false_airfoil_key));
+}
+
+/**
+ * \brief Get Airfoil Failure -> no valid points
+ *
+ */
+TEST(airfoilsGetAirfoil, getAirfoilInListFailure) {
+  Airfoils airfoils(test_airfoil_directory.string());
+  std::string correct_airfoil_key = "naca0012_failure";
+  EXPECT_ANY_THROW(airfoils.get_airfoil(correct_airfoil_key));
+}
diff --git a/airfoils/test/test_copy_directory/F15_failure.dat b/airfoils/test/test_copy_directory/F15_failure.dat
new file mode 100644
index 00000000..e69de29b
diff --git a/aixml/CMakeLists.txt b/aixml/CMakeLists.txt
new file mode 100644
index 00000000..f36fb92f
--- /dev/null
+++ b/aixml/CMakeLists.txt
@@ -0,0 +1,82 @@
+# Set the library name
+set( LIBRARY_NAME aixml )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/node.cpp
+    src/tinystr.cpp
+    src/tinyxml.cpp
+    src/tinyxmlerror.cpp
+    src/tinyxmlparser.cpp
+    resources.rc
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_AIXML_SHARED" PUBLIC "IMPORT_AIXML_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Link against dependent libraries
+target_link_libraries( ${LIBRARY_NAME} 
+    PUBLIC
+        runtimeInfo
+        unitConversion
+        standardFiles
+)
+
+# Add the tests if enabled
+if(BUILD_UNITTEST)
+    add_subdirectory(test)
+endif()
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
+
+# Add python bindings
+pybind11_add_module( py11${LIBRARY_NAME}
+    src/node.cpp
+    src/tinystr.cpp
+    src/tinyxml.cpp
+    src/tinyxmlerror.cpp
+    src/tinyxmlparser.cpp
+    src/py_aixml.cpp
+)
+target_include_directories( py11${LIBRARY_NAME} PUBLIC include)
+target_link_libraries( py11${LIBRARY_NAME} PRIVATE UnicadoLibs::unitConversion)
+
+# On Windows the Python Debug builds are not properly supported -> warn about this
+if(MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug")
+    message(WARNING "\n[${PROJECT_NAME}] -> Building Python binding of ${LIBRARY_NAME} in Debug Mode on Windows. This is not properly supported!")
+endif()
+
+# Set the output directory for the python binding -> Use generator expressions to force multi-generator output to the same location
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyaixml/pyaixml$<0:>) # .dll for Windows
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyaixml/pyaixml$<0:>) # .so for Unix
+
+# Add the package to the package list for exporting the target
+# and propagate the resulting list back to the parent scope
+list( APPEND PYTHON_TARGETS ${CMAKE_CURRENT_LIST_DIR}/pyaixml )
+set( PYTHON_TARGETS ${PYTHON_TARGETS} PARENT_SCOPE )
+
+install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyaixml DESTINATION lib)
\ No newline at end of file
diff --git a/aixml/include/aixml/endnode.h b/aixml/include/aixml/endnode.h
new file mode 100644
index 00000000..81e14950
--- /dev/null
+++ b/aixml/include/aixml/endnode.h
@@ -0,0 +1,856 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIXML_INCLUDE_AIXML_ENDNODE_H_
+#define AIXML_INCLUDE_AIXML_ENDNODE_H_
+#include <aixml/node.h>
+#include <runtimeInfo/runtimeInfo.h>
+#include <unitConversion/constants.h>
+#include <unitConversion/unitConversion.h>
+#include <standardFiles/functions.h>
+
+#include <concepts>
+#include <iostream>
+#include <limits>
+#include <numeric>
+#include <set>
+#include <stdexcept>
+#include <string>
+#include <tuple>
+#include <typeinfo>
+#include <vector>
+#include <format>
+
+/**
+ * \brief Concept for numerical or non numerical endnode
+ *
+ * @tparam T typename (arithmetic or std::string)
+ */
+template <typename T>
+concept is_numeric = (std::is_arithmetic<T>::value && (!std::is_same<T, bool>::value));
+
+/**
+ * \brief Endnode Baseclass
+ *
+ * @tparam T standard c++ types
+ */
+template <typename T>
+class EndnodeBase {
+ public:
+  /**
+   * \brief Construct a new Endnode Base object
+   *
+   */
+  EndnodeBase() = default;
+
+  /**
+   * \brief Construct a new Endnode Base object (numeric)
+   *
+   * \param pathToNode path to xml node without / at the end
+   * \param description description of node in xml -> will be written with update method
+   */
+  explicit EndnodeBase(std::string pathToNode, std::string description)
+    requires is_numeric<T>
+  {  // NOLINT
+    description_ = description;
+    paths.push_back(pathToNode);
+    paths.push_back("/value");
+    paths.push_back("/unit");
+    paths.push_back("/lower_boundary");
+    paths.push_back("/upper_boundary");
+    unit_ = "1";
+    lower_boundary_ = std::numeric_limits<T>::lowest();
+    upper_boundary_ = std::numeric_limits<T>::max();
+    value_ = static_cast<T>(0);
+  }
+
+  /**
+   * \brief Construct a new Endnode Base object (non numeric - bool)
+   *
+   * \param pathToNode path to xml node without / at the end
+   * \param description description of node in xml -> will be written with update method
+   */
+  explicit EndnodeBase(std::string pathToNode, std::string description)
+    requires(!is_numeric<T> && std::is_same<T, bool>::value)
+  {  // NOLINT
+    description_ = description;
+    paths.push_back(pathToNode);
+    paths.push_back("/value");
+    value_ = true;
+  }
+
+  /**
+   * \brief Construct a new Endnode Base object (non numeric - std::string)
+   *
+   * \param pathToNode path to xml node without / at the end
+   * \param description description of node in xml -> will be written with update method
+   */
+  explicit EndnodeBase(std::string pathToNode, std::string description)
+    requires(!is_numeric<T> && std::is_same<T, std::string>::value)
+  {  // NOLINT
+    description_ = description;
+    paths.push_back(pathToNode);
+    paths.push_back("/value");
+    value_ = "";
+  }
+
+  /**
+   * \brief Construct a new Endnode Base object
+   *
+   * \param pathToNode path to xml node without / at the end
+   * \param description description of node in xml -> will be written with update method
+   * \param default_value default value if node not existent when read
+   */
+  explicit EndnodeBase(std::string pathToNode, std::string description, T default_value)
+      : EndnodeBase(pathToNode, description) {
+    value_ = default_value;
+  }
+
+  /**
+   * \brief Construct a new Endnode Base object (numeric)
+   *
+   * \param pathToNode path to xml node without / at the end
+   * \param description description of node in xml -> will be written with update method
+   * \param default_value default value if node not existent when read
+   * \param default_unit default unit if node not existent when read
+   */
+  explicit EndnodeBase(std::string pathToNode, std::string description, T default_value, std::string default_unit)
+    requires is_numeric<T>
+      : EndnodeBase(pathToNode, description, default_value) {
+    if (si_units.contains(default_unit)) {
+      unit_ = default_unit;
+    } else {
+      throw std::invalid_argument("Error - unit " + default_unit + " not part of si-units");
+    }
+  }
+
+  /**
+   * \brief Construct a new Endnode Base object (numeric)
+   *
+   * \param pathToNode path to xml node without / at the end
+   * \param description description of node in xml -> will be written with update method
+   * \param default_value default value if node not existent when read
+   * \param default_unit default unit if node not existent when read
+   * \param default_lower_boundary default lower boundary if node not existent when read
+   * \param default_upper_boundary default upper boundary if node not existent when read
+   */
+  explicit EndnodeBase(std::string pathToNode, std::string description, T default_value, std::string default_unit,
+                       T default_lower_boundary, T default_upper_boundary)
+    requires is_numeric<T>
+      : EndnodeBase(pathToNode, description, default_value, default_unit) {
+    lower_boundary_ = default_lower_boundary;
+    upper_boundary_ = default_upper_boundary;
+  }
+
+  /**
+   * \brief Read endnode  (numeric)
+   *
+   * \param xml node of file
+   * \return EndnodeBase& instance reference of current object
+   */
+  EndnodeBase& read(const node& xml)
+    requires is_numeric<T>
+  {  // NOLINT
+    try {
+      description_ = xml.at(paths[0]).getStringAttrib("description");
+      unit_ = static_cast<std::string>(xml.at(paths[0] + paths[2]));
+      value_ = static_cast<T>(xml.at(paths[0] + paths[1]));
+      lower_boundary_ = static_cast<T>(xml.at(paths[0] + paths[3]));
+      upper_boundary_ = static_cast<T>(xml.at(paths[0] + paths[4]));
+    } catch (...) {
+      if (myRuntimeInfo != nullptr) {
+        myRuntimeInfo->warn << "Node to read not existing ... " << paths.at(0) << std::endl;
+      } else {
+        std::cerr << "Node to read not existing ... " << paths.at(0) << std::endl;
+      }
+    }
+    check_boundaries();
+    return *this;
+  }
+
+  /**
+   * \brief Read endnode (non-numeric)
+   *
+   * \param xml node of file
+   * \return EndnodeBase& instance reference of current object
+   */
+  EndnodeBase& read(const node& xml)
+    requires(!is_numeric<T>)
+  {  // NOLINT
+    try {
+      description_ = xml.at(paths[0]).getStringAttrib("description");
+      if (std::is_same<T, bool>::value) {
+        value_ = static_cast<std::string>(xml.at(paths[0] + paths[1])) == "true";
+      } else {
+        value_ = static_cast<T>(xml.at(paths[0] + paths[1]));
+      }
+    } catch (...) {
+      if (myRuntimeInfo != nullptr) {
+        myRuntimeInfo->warn << "Node to read not existing ... " << paths.at(0) << std::endl;
+      } else {
+        std::cerr << "Node to read not existing ... " << paths.at(0) << std::endl;
+      }
+    }
+    return *this;
+  }
+
+  /**
+   * \brief Prints endnode (numeric)
+   *
+   */
+  void print()
+    requires is_numeric<T>
+  {  // NOLINT
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->out << std::right << "Description: " << std::setw(10) << description_ << '\n'
+                         << "Value: " << std::setw(10) << std::scientific << value_ << '\n'
+                         << "Unit : " << std::setw(10) << unit_ << '\n'
+                         << "lb   : " << std::setw(10) << std::scientific << lower_boundary_ << '\n'
+                         << "ub   : " << std::setw(10) << std::scientific << upper_boundary_ << '\n';
+    } else {
+      std::cout << std::right << "Description: " << std::setw(10) << description_ << '\n'
+                << "Value: " << std::setw(10) << std::scientific << value_ << '\n'
+                << "Unit : " << std::setw(10) << unit_ << '\n'
+                << "lb   : " << std::setw(10) << std::scientific << lower_boundary_ << '\n'
+                << "ub   : " << std::setw(10) << std::scientific << upper_boundary_ << '\n';
+    }
+  }
+
+  /**
+   * \brief Prints endnode (non-numeric)
+   *
+   */
+  void print()
+    requires(!is_numeric<T>)
+  {  // NOLINT
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->out << "Text: " << value_ << std::endl;
+    } else {
+      std::cout << "Text: " << value_ << std::endl;
+    }
+  }
+
+  /**
+   * \brief Get value from object
+   *
+   * \return T value of object type (si-units)
+   */
+  T value(void) const { return value_; }
+
+  /**
+   * \brief Get unit from object
+   *
+   * \return std::string unit of object (si-units)
+   */
+  std::string unit(void) const
+    requires is_numeric<T>
+  {  // NOLINT
+    return unit_;
+  }
+
+  /**
+   * \brief Get lower boundary from object (numeric)
+   *
+   * \return T lower boundary value (si-units)
+   */
+  T lower_boundary(void) const
+    requires is_numeric<T>
+  {  // NOLINT
+    return lower_boundary_;
+  }
+
+  /**
+   * \brief Get upper boundary from object (numeric)
+   *
+   * \return T upper boundary value (si-units)
+   */
+  T upper_boundary(void) const
+    requires is_numeric<T>
+  {  // NOLINT
+    return upper_boundary_;
+  }
+
+  /**
+   * \brief Check value if insight boundaries (numeric)
+   *
+   * \return bool true if checks passed, false if checks failed + warning
+   */
+  void check_boundaries(void) const
+    requires is_numeric<T>
+  {  // NOLINT
+    if (value_ < lower_boundary_ || value_ > upper_boundary_) {
+      throwError<std::out_of_range>(__FILE__, __func__, __LINE__, std::format("Boundary violation in {}. Current value {} is out of bounds", paths.at(0), value_));
+    }
+  }
+
+  /**
+   * \brief Check unit value. If part of si_units (true) - allowed custom units (see Phabricator
+   * https://unicado.ilr.rwth-aachen.de/w/style_guides/unit_convension) then false -> otherwise throw exception with
+   * information (numeric)
+   *
+   * \return true unit is part of si_unit
+   * \return false part of allowed custom units
+   */
+  bool check_unit()
+    requires is_numeric<T>
+  {  // NOLINT
+    if (!si_units.contains(unit_)) {
+      if (!custom_to_si.contains(unit_)) {
+        throw std::invalid_argument("No valid unit for " + paths.at(0) + " of type -> " + unit_);
+      } else {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  /**
+   * \brief Convert items in object if unit part of custom units
+   *
+   */
+  void convert_items()
+    requires is_numeric<T>
+  {  // NOLINT
+    if (!check_unit()) {
+      // Write current values to xml values
+      value_ *= to_si_factors.at(unit_);
+      lower_boundary_ *= to_si_factors.at(unit_);
+      upper_boundary_ *= to_si_factors.at(unit_);
+      unit_ = custom_to_si.at(unit_);
+    }
+  }
+
+ protected:
+  std::string description_{""};
+  std::vector<std::string> paths;
+
+  T value_;
+  T lower_boundary_;
+  T upper_boundary_;
+  std::string unit_;
+
+  const std::set<std::string> si_units{
+      "m",       // meter
+      "m^2",     // sqauremeter
+      "m^3",     // cubicmeter
+      "m/s",     // meter per second
+      "rad",     // radian
+      "1",       // no unit
+      "Pa",      // pascal
+      "kg",      // kilogram
+      "kg/s",    // kilogram per second
+      "kg/Ns",   // kilogram per newton second
+      "s",       // second
+      "J",       // Joule
+      "J/kg",    // Joule per kilogram
+      "J/m^3",   // Joule per cubic meter
+      "W",       // Watt
+      "V",       // volt
+      "A",       // ampere
+      "N",       // newton
+      "N/m^2",   // newton per square meter
+      "kg/m^2",  // kilogram per square meter
+      "kg/m^3",  // kilogram per cubic meter
+      "kgm^2",   // kilogram square meter
+      "K",       // Kelvin
+      "EUR",     // Euro
+      "US",      // Dollar
+  };
+  const std::map<std::string, std::string> custom_to_si = {
+      {"deg", "rad"}, {"ft", "m"},      {"FL", "m"},          {"NM", "m"},       {"lbs", "kg"},   {"lbs/min", "kg/s"},
+      {"EUR", "EUR"}, {"US", "US"},     {"g", "1"},           {"dBA", "Pa"},     {"EPNdB", "Pa"}, {"Sone", "Pa"},
+      {"h", "s"},     {"min", "s"},     {"a", "s"},           {"ft/min", "m/s"}, {"kts", "m/s"},  {"KCAS", "m/s"},
+      {"l", "m^3"},   {"Celsius", "K"}, {"micro meter", "m"}, {"kg/h", "kg/s"}};
+
+  const std::map<std::string, double> to_si_factors = {  // NOLINT
+      {"deg", convertUnit(DEGREE, RADIAN, 1.0)},
+      {"ft", convertUnit(FOOT, METER, 1.0)},
+      {"FL", convertUnit(FOOT, METER, 100.0)},
+      {"NM", convertUnit(NAUTICALMILE, METER, 1.0)},
+      {"lbs", convertUnit(NOPREFIX, POUND, KILO, GRAM, 1.0)},
+      {"lbs/min", convertUnit(NOPREFIX, POUND, KILO, GRAM, 1.0) / convertUnit(MINUTE, SECOND, 1.0)},
+      {"kg/h", 1.0 / convertUnit(HOUR, SECOND, 1.0)},
+      {"EUR", 1.0},    // Missing conversion
+      {"US", 1.0},     // Missing conversion
+      {"g", 1.0},      // Missing conversion
+      {"dBA", 1.0},    // Missing conversion
+      {"EPNdB", 1.0},  // Missing conversion
+      {"Sone", 1.0},   // Missing conversion
+      {"h", convertUnit(HOUR, SECOND, 1.0)},
+      {"min", convertUnit(MINUTE, SECOND, 1.0)},
+      {"a", convertUnit(HOUR, SECOND, 24.0 * 365)},
+      {"ft/min", convertUnit(FOOT, METER, 1.0) / convertUnit(MINUTE, SECOND, 1.0)},
+      {"kts", convertUnit(KNOTS, METERPERSECOND, 1.0)},
+      {"KCAS", convertUnit(KNOTS, METERPERSECOND, 1.0)},
+      {"l", 0.001},  // Missing conversion - not populated by convertUnit
+      {"Celsius", convertUnit(CELCIUS, KELVIN, 1.0)},
+      {"micro meter", convertUnit(MICRO, METER, NOPREFIX, METER, 1.0)}};
+};
+
+/**
+ * \brief Endnode class - derived from EndnodeBase class
+ *
+ * @tparam T typename (arithmetic or std::string)
+ */
+template <typename T>
+class Endnode : public EndnodeBase<T> {
+ public:
+  /**
+   * \brief Construct a new Endnode object
+   *
+   */
+  Endnode() : EndnodeBase<T>() {}
+
+  /**
+   * \brief Construct a new Endnode object
+   *
+   * \param pathToNode
+   * \param description
+   */
+  explicit Endnode(std::string pathToNode, std::string description) : EndnodeBase<T>(pathToNode, description) {}
+
+  /**
+   * \brief Construct a new Endnode object
+   *
+   * \param pathToNode path to xml node without / at the end
+   * \param description description of node in xml -> will be written with update method
+   * \param default_value default value if node not existent when read
+   */
+  explicit Endnode(std::string pathToNode, std::string description, T default_value)
+      : EndnodeBase<T>(pathToNode, description, default_value) {}
+
+  /**
+   * \brief Construct a new Endnode object (numeric)
+   *
+   * \param pathToNode path to xml node without / at the end
+   * \param description description of node in xml -> will be written with update method
+   * \param default_value default value if node not existent when read
+   * \param default_unit default unit if node not existent when read
+   */
+  explicit Endnode(std::string pathToNode, std::string description, T default_value, std::string default_unit)
+      : EndnodeBase<T>(pathToNode, description, default_value, default_unit) {}
+
+  /**
+   * \brief Construct a new Endnode object (numeric)
+   *
+   * \param pathToNode path to xml node without / at the end
+   * \param description description of node in xml -> will be written with update method
+   * \param default_value default value if node not existent when read
+   * \param default_unit default unit if node not existent when read
+   * \param default_lower_boundary default lower boundary if node not existent when read
+   * \param default_upper_boundary default upper boundary if node not existent when read
+   */
+  explicit Endnode(std::string pathToNode, std::string description, T default_value, std::string default_unit,
+                   T default_lower_boundary, T default_upper_boundary)
+      : EndnodeBase<T>(pathToNode, description, default_value, default_unit, default_lower_boundary,
+                       default_upper_boundary) {}
+
+  /**
+   * \brief Read endnode element from xml file at pathToNode (numeric)
+   *
+   * \param xml node of file
+   * \return Endnode& Endnode object
+   */
+  Endnode& read(const node& xml)  // NOLINT
+    requires is_numeric<T>
+  {  // NOLINT
+    EndnodeBase<T>::read(xml);
+    if (!EndnodeBase<T>::check_unit()) {
+      EndnodeBase<T>::convert_items();
+    }
+    return *this;
+  }
+
+  /**
+   * \brief Read endnode element from xml file at pathToNode (non-numeric)
+   *
+   * \param xml node of file
+   * \return Endnode& Endnode object
+   */
+  Endnode& read(const node& xml)  // NOLINT
+    requires(!is_numeric<T>)
+  {  // NOLINT
+    EndnodeBase<T>::read(xml);
+    return *this;
+  }
+
+  /**
+   * \brief Update endnode element in xml at pathToNode (numeric)
+   *
+   * \param xml node of file
+   */
+  void update(node& xml)  // NOLINT
+    requires is_numeric<T>
+  {  // NOLINT
+    EndnodeBase<T>::check_boundaries();
+    std::string origin = EndnodeBase<T>::paths[0];
+    xml[origin].setAttrib<std::string>("description", EndnodeBase<T>::description_);
+    xml[origin + EndnodeBase<T>::paths[1]] = EndnodeBase<T>::value_;
+    xml[origin + EndnodeBase<T>::paths[2]] = EndnodeBase<T>::unit_;
+    xml[origin + EndnodeBase<T>::paths[3]] = EndnodeBase<T>::lower_boundary_;
+    xml[origin + EndnodeBase<T>::paths[4]] = EndnodeBase<T>::upper_boundary_;
+  }
+
+  /**
+   * \brief Update endnode element in xml at pathToNode (non-numeric - bool)
+   *
+   * \param xml node of file
+   */
+  void update(node& xml)  // NOLINT
+    requires(!is_numeric<T> && std::is_same<T, bool>::value)
+  {  // NOLINT
+    std::string origin = EndnodeBase<T>::paths[0];
+    xml[origin].setAttrib<std::string>("description", EndnodeBase<T>::description_);
+    xml[origin + EndnodeBase<T>::paths[1]] = (EndnodeBase<T>::value_ == true) ? "true" : "false";
+  }
+
+  /**
+   * \brief Update endnode element in xml at pathToNode (non-numeric - std::string)
+   *
+   * \param xml node of file
+   */
+  void update(node& xml)  // NOLINT
+    requires(!is_numeric<T> && std::is_same<T, std::string>::value)
+  {  // NOLINT
+    std::string origin = EndnodeBase<T>::paths[0];
+    xml[origin].setAttrib<std::string>("description", EndnodeBase<T>::description_);
+    xml[origin + EndnodeBase<T>::paths[1]] = EndnodeBase<T>::value_;
+  }
+
+  /**
+   * \brief Set the value object
+   *
+   * \param val value to set
+   */
+  void set_value(const T val) { EndnodeBase<T>::value_ = val; }
+
+  /**
+   * \brief Set the unit object
+   *
+   * \param unit unit to set -> must be part of si-units
+   */
+  void set_unit(const std::string& unit)
+    requires is_numeric<T>
+  {  // NOLINT
+    if (EndnodeBase<T>::si_units.contains(unit)) {
+      EndnodeBase<T>::unit_ = unit;
+    } else {
+      throw std::invalid_argument("Error - no si-unit: " + unit);
+    }
+  }
+
+  /**
+   * \brief Set lower boundary of object (numeric)
+   *
+   * \param lb lower boundary
+   */
+  void set_lower_boundary(const T lb)  // NOLINT
+    requires is_numeric<T>
+  {  // NOLINT
+    EndnodeBase<T>::lower_boundary_ = lb;
+  }
+
+  /**
+   * \brief Set upper boundary of object (numeric)
+   *
+   * \param ub upper boundary
+   */
+  void set_upper_boundary(const T ub)
+    requires is_numeric<T>
+  {  // NOLINT
+    EndnodeBase<T>::upper_boundary_ = ub;
+  }
+
+  /**
+   * \brief Set the boundaries object (numeric)
+   *
+   * \param lb lower boundary
+   * \param ub upper boundary
+   */
+  void set_boundaries(const T lb, const T ub)
+    requires is_numeric<T>
+  {  // NOLINT
+    set_lower_boundary(lb);
+    set_upper_boundary(ub);
+  }
+
+  /**
+   * \brief Assign operator value
+   *
+   * \param value value to assign
+   */
+  void operator=(const T value) { this->set_value(value); }
+
+  /**
+   * \brief Add operator (single value)
+   *
+   * \param val value of type T
+   * \return Endnode<T>& reference to current class
+   */
+  Endnode<T>& operator+=(const T& val)
+    requires is_numeric<T>
+  {  // NOLINT
+    this->set_value(this->value() + val);
+    return *this;
+  }
+
+  /**
+   * \brief Subtract operator (single value)
+   *
+   * \param val value of type T
+   * \return Endnode<T>& reference to current class
+   */
+  Endnode<T>& operator-=(const T& val)
+    requires is_numeric<T>
+  {  // NOLINT
+    this->set_value(this->value() - val);
+    return *this;
+  }
+
+  /**
+   * \brief Multiply operator (single value)
+   *
+   * \param val value of type T
+   * \return Endnode<T>& reference to current class
+   */
+  Endnode<T>& operator*=(const T& val)
+    requires is_numeric<T>
+  {  // NOLINT
+    this->set_value(this->value() * val);
+    return *this;
+  }
+
+  /**
+   * \brief Divide operator (single value)
+   *
+   * \param val value of type T
+   * \return Endnode<T>& reference to current class
+   */
+  Endnode<T>& operator/=(const T& val)
+    requires is_numeric<T>
+  {  // NOLINT
+    this->set_value(this->value() / val);
+    return *this;
+  }
+
+  /**
+   * \brief Assign operator (numeric)
+   *
+   * \param boundaries boundaries to assign as tuple
+   */
+  void operator=(const std::tuple<T, T> boundaries)
+    requires is_numeric<T>
+  {  // NOLINT
+    set_lower_boundary(std::get<0>(boundaries));
+    set_upper_boundary(std::get<1>(boundaries));
+  }
+
+  /**
+   * \brief Assign operator
+   *
+   * \param info unit and boundaries to assign as tuple
+   */
+  void operator=(const std::tuple<std::string, T, T> info)
+    requires is_numeric<T>
+  {  // NOLINT
+    set_unit(std::get<0>(info));
+    set_lower_boundary(std::get<1>(info));
+    set_upper_boundary(std::get<2>(info));
+  }
+};
+
+/**
+ * \brief EndnodeReadOnly class - derived from EndnodeBase class
+ *
+ * @tparam T typename (arithmetic or std::string)
+ */
+template <typename T>
+class EndnodeReadOnly : public EndnodeBase<T> {
+ public:
+  /**
+   * \brief Construct a new Endnode Read Only object
+   *
+   */
+  EndnodeReadOnly() : EndnodeBase<T>() {}
+
+  /**
+   * \brief Construct a new Endnode Read Only object
+   *
+   * \param pathToNode
+   */
+  explicit EndnodeReadOnly(std::string pathToNode) : EndnodeBase<T>(pathToNode, "") {}
+
+  /**
+   * \brief Construct a new Endnode Read Only object
+   *
+   * \param pathToNode
+   * \param default_value
+   */
+  explicit EndnodeReadOnly(std::string pathToNode, T default_value) : EndnodeBase<T>(pathToNode, "", default_value) {
+    value_xml_ = default_value;
+  }
+
+  /**
+   * \brief Construct a new Endnode Read Only object
+   *
+   * \param pathToNode
+   * \param default_value
+   * \param default_unit
+   */
+  explicit EndnodeReadOnly(std::string pathToNode, T default_value, std::string default_unit)
+      : EndnodeBase<T>(pathToNode, "", default_value, default_unit) {
+    value_xml_ = default_value;
+    unit_xml_ = default_unit;
+  }
+
+  /**
+   * \brief Construct a new Endnode Read Only object
+   *
+   * \param pathToNode
+   * \param default_value
+   * \param default_unit
+   * \param default_lower_boundary
+   * \param default_upper_boundary
+   */
+  explicit EndnodeReadOnly(std::string pathToNode, T default_value, std::string default_unit, T default_lower_boundary,
+                           T default_upper_boundary)
+      : EndnodeBase<T>(pathToNode, "", default_value, default_unit, default_lower_boundary, default_upper_boundary) {
+    value_xml_ = default_value;
+    unit_xml_ = default_unit;
+    lower_boundary_xml_ = default_lower_boundary;
+    upper_boundary_xml_ = default_upper_boundary;
+  }
+
+  /**
+   * \brief Read endnode element from xml file at pathToNode (numeric)
+   *
+   * \param xml node of file
+   * \return EndnodeReadOnly& EndnodeReadOnly object reference
+   */
+  EndnodeReadOnly& read(const node& xml)
+    requires is_numeric<T>
+  {  // NOLINT
+    EndnodeBase<T>::read(xml);
+    value_xml_ = EndnodeBase<T>::value_;
+    unit_xml_ = EndnodeBase<T>::unit_;
+    lower_boundary_xml_ = EndnodeBase<T>::lower_boundary_;
+    upper_boundary_xml_ = EndnodeBase<T>::upper_boundary_;
+    if (!EndnodeBase<T>::check_unit()) {
+      EndnodeBase<T>::convert_items();
+    }
+    return *this;
+  }
+
+  /**
+   * \brief Read endnode element from xml file at pathToNode (non-numeric)
+   *
+   * \param xml node of file
+   * \return EndnodeReadOnly& EndnodeReadOnly object reference
+   */
+  EndnodeReadOnly& read(const node& xml)
+    requires(!is_numeric<T>)
+  {  // NOLINT
+    EndnodeBase<T>::read(xml);
+    return *this;
+  }
+
+  /**
+   * \brief Value from xml (unparsed - numeric)
+   *
+   * \return T value of endnode element
+   */
+  T value_xml() const { return value_xml_; }
+
+  /**
+   * \brief Unit from xml (unparsed - numeric)
+   *
+   * \return std::string unit of endnode element
+   */
+  std::string unit_xml() const
+    requires is_numeric<T>
+  {  // NOLINT
+    return unit_xml_;
+  }
+
+  /**
+   * \brief Lower boundary from xml (unparsed - numeric)
+   *
+   * \return T lower boundary of endnode element
+   */
+  T lower_boundary_xml() const
+    requires is_numeric<T>
+  {  // NOLINT
+    return lower_boundary_xml_;
+  }
+
+  /**
+   * \brief upper_boundary from xml (unparsed - numeric)
+   *
+   * \return T upper boundary of endnode element
+   */
+  T upper_boundary_xml() const
+    requires is_numeric<T>
+  {  // NOLINT
+    return upper_boundary_xml_;
+  }
+
+  /**
+   * \brief Print unparsed xml values (numeric)
+   *
+   */
+  void print_xml() const
+    requires is_numeric<T>
+  {  // NOLINT
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->out << std::right << "Description: " << std::setw(10) << EndnodeBase<T>::description_ << '\n'
+                         << "Value: " << std::setw(10) << std::scientific << value_xml_ << '\n'
+                         << "Unit : " << std::setw(10) << unit_xml_ << '\n'
+                         << "lb   : " << std::setw(10) << std::scientific << lower_boundary_xml_ << '\n'
+                         << "ub   : " << std::setw(10) << std::scientific << upper_boundary_xml_ << '\n';
+    } else {
+      std::cout << std::right << "Description: " << std::setw(10) << EndnodeBase<T>::description_ << '\n'
+                << "Value: " << std::setw(10) << std::scientific << value_xml_ << '\n'
+                << "Unit : " << std::setw(10) << unit_xml_ << '\n'
+                << "lb   : " << std::setw(10) << std::scientific << lower_boundary_xml_ << '\n'
+                << "ub   : " << std::setw(10) << std::scientific << upper_boundary_xml_ << '\n';
+    }
+  }
+
+  /**
+   * \brief Print parsed xml values
+   *
+   */
+  void print_xml() const
+    requires(!is_numeric<T>)
+  {  // NOLINT
+    EndnodeBase<T>::print();
+  }
+
+ protected:
+  T value_xml_;
+  std::string unit_xml_;
+  T lower_boundary_xml_;
+  T upper_boundary_xml_;
+};
+
+#endif  // AIXML_INCLUDE_AIXML_ENDNODE_H_
+  // AIXML_INCLUDE_AIXML_ENDNODE_H_
diff --git a/aixml/include/aixml/node.h b/aixml/include/aixml/node.h
new file mode 100644
index 00000000..fcf99e76
--- /dev/null
+++ b/aixml/include/aixml/node.h
@@ -0,0 +1,424 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef AIXML_INCLUDE_AIXML_NODE_H_
+#define AIXML_INCLUDE_AIXML_NODE_H_
+#include <cstdint>
+#include <filesystem>
+#include <limits>
+#include <map>
+#include <memory>
+#include <sstream>
+#include <string>
+#include <unordered_map>
+#include <vector>
+
+#ifdef BUILD_AIXML_SHARED
+#ifdef _WIN32
+#define AIXMLDLLEXPORT __declspec(dllexport)
+#else
+#define AIXMLDLLEXPORT __attribute__((visibility("default")))
+#endif
+#elif defined(IMPORT_AIXML_SHARED)
+#ifdef _WIN32
+#define AIXMLDLLEXPORT __declspec(dllimport)
+#else
+#define AIXMLDLLEXPORT
+#endif
+#else
+#define AIXMLDLLEXPORT
+#endif
+
+#define AIXMLPRECISION 10
+
+AIXMLDLLEXPORT void split(const std::string& s, char delim, std::vector<std::string>* elems);
+AIXMLDLLEXPORT std::vector<std::string> split(const std::string& s, char delim);
+
+class node; /**< Forward declaration for namespace */
+class TiXmlNode;
+class TiXmlElement;
+class TiXmlDocument;
+
+namespace aixml {
+/** \brief Function generates xml-tree of file, returns reference to the root-node
+ * \param filename
+ */
+AIXMLDLLEXPORT node& openDocument(std::string fileName);
+
+/** \brief Function generates xml-tree of file, returns a shared pointer to the root-node
+ * \param filename
+ */
+AIXMLDLLEXPORT auto openDocument(const std::filesystem::path& fileName) -> std::shared_ptr<node>;
+
+/** \brief Function saves the XML-tree to the file, throws error if toolLevel is smaller than the ToolLevel-attribute in
+ * a modified element \param root \param toolLevel
+ */
+AIXMLDLLEXPORT bool saveDocument(const node& root, int toolLevel = 0);
+
+/** \brief Function deletes xml tree
+ * \param root
+ */
+AIXMLDLLEXPORT void closeDocument(const node& root);
+
+/** \brief Function checks weather an XML-File ist path compatible with another (schema)XML
+ * \param schemaXML
+ * \param xmlToBeTested
+ */
+AIXMLDLLEXPORT bool checkSchema(const node& schemaXML, const node& xmlToBeTested);
+
+/** \brief Function applies scheme to xmlToBeUpdated, empty nodes get added to xmlToBeUpdated if missing
+ * \param schemaXML
+ * \param xmlToBeUpdated
+ */
+AIXMLDLLEXPORT void applySchema(const node& schemaXML, node* xmlToBeUpdated);
+
+/** \brief Function returns a single parent node including childs and not the full document
+ * \param filename
+ * \param s
+ * \param depth
+ */
+AIXMLDLLEXPORT node getSingleNode(const std::string& filename, std::string s,
+                                  int depth = std::numeric_limits<int>::max());
+} /* namespace aixml */
+
+/**< \brief Class for the description of node
+ */
+class AIXMLDLLEXPORT node {
+ private:
+  enum class valueType { UNDEFINED, STRING, DOUBLE }; /**< INT,BOOL */
+ public:
+  node();
+  explicit node(const std::string& name, bool writeToXml = true);
+  node(const std::string& name, const std::string& value, bool writeToXml = true);
+  node(const std::string& name, node* parent, bool writeToXml = true);
+  node(const std::string& name, const std::string& value, node* parent, bool writeToXml = true);
+  node(const node& nodeToCopy);
+  virtual ~node();
+
+  AIXMLDLLEXPORT friend node& aixml::openDocument(std::string fileName);
+  AIXMLDLLEXPORT friend auto aixml::openDocument(const std::filesystem::path& fileName) -> std::shared_ptr<node>;
+  AIXMLDLLEXPORT friend bool aixml::saveDocument(const node& root, int toolLevel);
+  AIXMLDLLEXPORT friend void aixml::closeDocument(const node& root);
+  AIXMLDLLEXPORT friend bool aixml::checkSchema(const node& schemaXML, const node& xmlToBeTested);
+  AIXMLDLLEXPORT friend void aixml::applySchema(const node& schemaXML, node* xmlToBeUpdated);
+  node getSingleNode(std::string filename, std::string s, int depth);
+
+  std::string getName() const;
+  /** \brief Function returns a reference to node matching the subPath, if no node is found throws error
+   * \param s
+   * \param depth
+   */
+  node& at(const std::string& s, int depth = std::numeric_limits<int>::max()) const;
+
+  /** \brief Function returns a pointer to node matching the subPath, if no node is found returns 0=false
+   *  \details The function splits the given string s into subpaths and searchs if the
+   *   current element is existing somewhere in the subtree. If the element is found somewhere
+   *   in the tree, the subtree of this element is taken to search for the next element.
+   *   If you set the depth variable to 1, you are able to search explicitly for a given unique path s
+   * \param s
+   * \param depth
+   */
+  node* find(const std::string& s, int depth = std::numeric_limits<int>::max()) const;
+
+  /** \brief Function returns a vector with nodes matching the subPath
+   * \param subPath
+   * \param depth
+   */
+  std::vector<node*> getVector(std::string subPath, int depth = 1) const;
+
+  /** \brief Function returns a vector with doubles of elements matching the subPath
+   * \param subPath
+   * \param depth
+   */
+  std::vector<double> getDoubleVector(const std::string& subPath, int depth = 1) const;
+
+  /** \brief Function returns a vector with integers of elements matching the subPath
+   * \param subPath
+   * \param depth
+   */
+  std::vector<int> getIntVector(const std::string& subPath, int depth = 1) const;
+
+  /** \brief Function returns a vector with booleans of elements matching the subPath
+   * \param subPath
+   * \param depth
+   */
+  std::vector<bool> getBoolVector(const std::string& subPath, int depth = 1) const;
+
+  /** \brief Function returns a vector with strings of elements matching the subPath
+   * \param subPath
+   * \param depth
+   */
+  std::vector<std::string> getStringVector(const std::string& subPath, int depth = 1) const;
+
+  /** \brief Function returns the first node with an attribute uID with a value matching the given string
+   * \param uid
+   */
+  node* findNodeByUid(std::string uid);
+
+  /** \brief Function returns a map with every existing uid as keys and the corresponding vector of nodes as values
+   */
+  std::unordered_map<std::string, std::vector<node*>> getAllUidsWithNodes();
+
+  /** \brief Runction returns an attribute with the given name as boolean
+   * \param name
+   */
+  bool getBoolAttrib(std::string name) const;
+
+  /** \brief returns an attribute with the given name as integer
+   * \param name
+   */
+  int getIntAttrib(std::string name) const;
+
+  /** \brief returns an attribute with the given name as double
+   * \param name
+   */
+  double getDoubleAttrib(std::string name) const;
+
+  /** \brief returns an attribute with the given name as string
+   * \param name
+   */
+  std::string getStringAttrib(std::string name) const;
+
+  /** \brief returns an attribute with the given name as string
+   * \param name
+   */
+  bool hasAttrib(std::string name) const;
+
+  /** \brief Add an attribute to the node, keeps the old value if attribute already exists
+   * \param name
+   * \param T value
+   */
+  template <class T>
+  void addAttrib(std::string name, T value);
+
+  /** \brief Sets an attribute, depending on addIfNotExistent a new attribute can be added
+   * \param name
+   * \param T value
+   * \param addIfNotExistent
+   */
+  template <class T>
+  void setAttrib(std::string name, T value, bool addIfNotExistent = true);
+
+  /** \brief Deletes an attribute from the node
+   * \param name
+   */
+  void deleteAttrib(std::string name);
+
+  /** \brief returns a map of attributes from the node
+   */
+  std::map<std::string, std::string> getAttribMap() const;
+
+  /** \brief Constructs an new node and appends to this node as child, if writeToXML is true, new node appears in
+   * XML-File \param name \param writeToXML
+   */
+  node& appendChild(const std::string& name, bool writeToXML = false);
+
+  /** \brief Appends an existing node to this node as child
+   * \param new_mode
+   */
+  node& appendChild(node* new_node);
+
+  /** \brief Copies and appends an existing node to this node as child
+   * \param nodeToBeInserted
+   */
+  node& appendChild(const node& nodeToBeInserted);
+
+  /** \brief Appends a vector of string names as children to a current node. If writeToXML is true, new node appears in
+   * XML-File \param names \param writeToXML
+   */
+  void appendChildren(const std::vector<std::string>& names, bool writeToXml);
+
+  /** \brief Appends a vector of existing nodes to this node as children
+   * \param new_nodes
+   */
+  void appendChildren(std::vector<node*> new_nodes);
+
+  /** \brief Copies and appends a vector of existing nodes to this node as children
+   * \param nodesToBeInserted
+   */
+  void appendChildren(const std::vector<node>& nodesToBeInserted);
+
+  /** \brief Deletes the child and the full subtree
+   * \param name
+   */
+  void deleteChild(const std::string& name);
+
+  /** \brief Recursive function get called for deleting the subtree from the child on
+   * \param old_node
+   */
+  void deleteChild(node* old_node);
+
+  /** \brief Deletes all children including their subtrees
+   */
+  void deleteChildren();
+
+  /** \brief duplicates this node and by default appends to parent-element after this node, returns reference to new
+   * node \param new_parent
+   */
+  node& duplicate(node* new_parent = nullptr);
+
+  /** \brief duplicates this node, fills new node with zeros and by default appends to parent-element after this node,
+   * returns reference to new node \param new_parent
+   */
+  node& duplicateEmpty(node* new_parent = nullptr);
+
+  /** \brief creates copy of nodeToBeInserted and replaces existing node with name=name (including identifiers) old node
+   * gets deleted \param name \param nodeToBeInserted \param createIfNotExistent
+   */
+  node& replaceChild(std::string name, const node& nodeToBeInserted, bool createIfNotExistent = false);
+
+  /** \brief creates copy of nodeToBeInserted and inserts after node with name=name (including identifiers)
+   * \param name
+   * \param noteToBeInserted
+   */
+  node& insertAfterChild(std::string name, const node& nodeToBeInserted);
+
+  /** \brief creates copy of nodeToBeInserted and inserts before node with name=name (including identifiers)
+   * \param name
+   * \param nodeToBeInserted
+   */
+  node& insertBeforeChild(std::string name, const node& nodeToBeInserted);
+
+  /** \brief sets everything to zero, if setAttributesToZero is set, also attributes get set to zero
+   * \param setAttributesToZero
+   */
+  void setToZero(bool setAttributesToZero = false);
+
+  /* Conversion operators */
+  operator double();
+  operator std::string();
+  node& operator[](std::string s);
+
+  /* Overloaded operators */
+  AIXMLDLLEXPORT friend std::ostream& operator<<(std::ostream& stream, node& n);
+
+  void operator=(const double& d);
+  void operator=(const int& i);
+  void operator=(const bool& b);
+  void operator=(const std::string& s);
+  void operator=(const char* s);
+
+  AIXMLDLLEXPORT friend std::string operator+(const std::string& value, node n);
+  AIXMLDLLEXPORT friend std::string operator+(node n, const std::string& value);
+  AIXMLDLLEXPORT friend double operator+(double value, node n);
+  AIXMLDLLEXPORT friend double operator+(const node& n, double value);
+  AIXMLDLLEXPORT friend double operator-(double value, node n);
+  AIXMLDLLEXPORT friend double operator-(const node& n, double value);
+  AIXMLDLLEXPORT friend double operator/(double value, node n);
+  AIXMLDLLEXPORT friend double operator/(node n, double value);
+  AIXMLDLLEXPORT friend double operator*(double value, node n);
+  AIXMLDLLEXPORT friend double operator*(const node& n, double value);
+  double operator*(const node& n);
+  double operator/(const node& n);
+  double operator+(const node& n);
+  double operator-(const node& n);
+
+  double arithmetic_operation(node n, char c);
+
+  AIXMLDLLEXPORT friend double checkBoundaries(const node& value, const double& minValue, const double& maxValue);
+  AIXMLDLLEXPORT friend double checkBoundaries(node value, const double& minValue, const bool& includeLeft,
+                                               const double& maxValue, const bool& includeRight);
+  AIXMLDLLEXPORT friend bool checkBoundaries(node value);
+  AIXMLDLLEXPORT friend uint16_t checkBoundaries(node value, const uint16_t maxValue);
+
+  std::string getFullPath(std::string aPath = "", bool includingIdentifier = true) const;
+  std::string getRootName() const;
+
+  static std::vector<std::string> input;
+  static std::vector<std::string> output;
+
+  std::string name;
+
+  auto getChildren() const -> const std::vector<node*>& { return children; }
+
+ private:
+  std::map<std::string, std::string> attributes;
+  node* parent;
+  std::vector<node*> children;
+  std::string undefinedValue;
+  std::string stringValue;
+  //    int intValue;
+  double doubleValue;
+  //    bool boolValue;
+  valueType type;
+  void addNodeToDom(TiXmlNode* tiNode);
+  std::string getResult() const;
+  static void addNodeToDoc(node* treeNode, TiXmlElement* docNode, int toolLevel);
+  bool writeToXml;
+  bool modified;
+  void addToInputOutput(bool isInput = true);
+
+  /** \brief Function initializes the attributes with given values
+   * \param name
+   * \param writeToXml
+   * \param value
+   * \param parent
+   */
+  void init(const std::string& name = "", bool writeToXml = true, const std::string& value = "",
+            node* parent = nullptr);
+  std::vector<node*> findVector(std::string subPath, bool findAll, int depth) const;
+  void getAllUidsWithNodes(std::unordered_map<std::string, std::vector<node*>>* nodesAndUids);
+};
+
+/** \brief Checks whether a given string value is a boolean type
+ * \details Currently a valid boolean would be 0, 1, true, false, True, False, TRUE, FALSE, on, On, ON, off, Off, OFF
+ * \param aValue: A value of type string
+ * \return a boolean value which indicates whether the string value is a boolean or not
+ */
+AIXMLDLLEXPORT bool isBoolean(const std::string& aValue);
+
+/** \brief Checks whether a given string value is can be classified as true
+ * \details Currently a true boolean would be 1, true, True, TRUE, on, On, ON
+ * \param aValue: A value of type string
+ * \return a boolean value which indicates whether the string value is true
+ */
+AIXMLDLLEXPORT bool isTrue(const std::string& aValue);
+
+/** \brief Checks whether a given string value is can be classified as false
+ * \details Currently a true boolean would be 0, false, False, FALSE, off, Off, OFF
+ * \param aValue: A value of type string
+ * \return a boolean value which indicates whether the string value is a boolean or not
+ */
+AIXMLDLLEXPORT bool isFalse(const std::string& aValue);
+
+/** \brief Add an attribute to the node
+ */
+template <class T>
+void node::addAttrib(std::string name, T value) {
+  std::stringstream ss;
+  ss << value;
+  attributes.emplace(name, ss.str());
+}
+
+/** \brief Add an attribute to the node
+ */
+template <class T>
+void node::setAttrib(std::string name, T value, bool addIfNotAxistent) {
+  std::stringstream ss;
+  ss << value;
+  if (addIfNotAxistent) {
+    attributes[name] = ss.str();
+  } else if (attributes.count(name)) {
+    attributes[name] = ss.str();
+  }
+}
+#endif  // AIXML_INCLUDE_AIXML_NODE_H_
diff --git a/aixml/pyaixml/pyaixml/__init__.py b/aixml/pyaixml/pyaixml/__init__.py
new file mode 100644
index 00000000..9721d61a
--- /dev/null
+++ b/aixml/pyaixml/pyaixml/__init__.py
@@ -0,0 +1,31 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+
+"""Python package of the aixml C++ library.
+
+    Imports the pre-build binary and exposes its interface.
+"""
+# Package information
+__version__ = "0.5.0"
+__author__ = "Sebastian Oberschwendtner, sebastian.oberschwendtner@tum.de"
+
+# Import the binary and expose all members
+from .py11aixml import *
diff --git a/aixml/pyaixml/pyproject.toml b/aixml/pyaixml/pyproject.toml
new file mode 100644
index 00000000..826b4142
--- /dev/null
+++ b/aixml/pyaixml/pyproject.toml
@@ -0,0 +1,18 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[tool.setuptools.package-data]
+pyaixml = ["*.so", "*.dll", "*.pyd"]
+
+[project]
+name = "pyaixml"
+version = "3.0.0"
+description = "Python binding of the aixml C++ library of UNICADO"
+requires-python = ">=3.10"
+authors = [
+    {name = "Sebastian Oberschwendtner", email = "sebastian.oberschwendtner@tum.de"},
+]
+classifiers = [
+"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
+]
diff --git a/aixml/resources.rc b/aixml/resources.rc
new file mode 100644
index 00000000..16935228
--- /dev/null
+++ b/aixml/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "aixml\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "aixml.dll\0"
+            VALUE "ProductName",        "aixml\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/aixml/src/main.cpp b/aixml/src/main.cpp
new file mode 100644
index 00000000..3024ee49
--- /dev/null
+++ b/aixml/src/main.cpp
@@ -0,0 +1,54 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "../aixml/node.h"
+
+int main() {
+    try {
+        node doc = node::openDocument("A320.xml");
+        node aixml = doc.at("AcftExchangeFile");
+        std::vector<node> liftingSurfaces = aixml.getVector("Geometry/LiftingSurface");
+        std::vector<double> r_surface_double = aixml.getDoubleVector("Geometry/LiftingSurface/r_Surface", 2);
+        std::vector<bool> r_surface_bool = aixml.getBoolVector("Geometry/LiftingSurface/SurfaceRefPoint/r_Surface");
+        std::vector<int> r_surface_int = aixml.getIntVector("Geometry/LiftingSurface/SurfaceRefPoint/r_Surface");
+
+        for (double d : r_surface_double) {
+            std::cout << d << std::endl;
+        }
+        for (int i : r_surface_int) {
+            std::cout << i << std::endl;
+        }
+        for (bool b : r_surface_bool) {
+            std::cout << b << std::endl;
+        }
+
+        if (node::saveDocument(doc)) {
+            std::cout << "yay" << std::endl;
+        }
+    }
+    catch(const std::string& s) {
+        std::cout << s << std::endl;
+    }
+    catch(const char* s) {
+        std::cout << s << std::endl;
+    }
+}
diff --git a/aixml/src/node.cpp b/aixml/src/node.cpp
new file mode 100644
index 00000000..3d0687bd
--- /dev/null
+++ b/aixml/src/node.cpp
@@ -0,0 +1,1066 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "aixml/node.h"
+
+#include <unitConversion/constants.h>
+
+#include <algorithm>
+#include <cmath>
+#include <iostream>
+#include <queue>
+#include <utility>
+
+#include "tinyxml.h"
+
+std::vector<std::string> node::input;
+std::vector<std::string> node::output;
+
+void split(const std::string& s, char delim, std::vector<std::string>* elems) {
+  std::stringstream ss;
+  ss.str(s);
+  std::string item;
+  while (std::getline(ss, item, delim)) {
+    elems->push_back(item);
+  }
+}
+
+std::vector<std::string> split(const std::string& s, char delim) {
+  std::vector<std::string> elems;
+  split(s, delim, &elems);
+  return elems;
+}
+
+template <class T>
+std::string num_to_string(const T n) {
+  std::stringstream ss;
+  ss << n;
+  return ss.str();
+}
+
+node::node() { init(); }
+
+node::node(const std::string& name, bool writeToXml) { init(name, writeToXml); }
+
+node::node(const std::string& name, const std::string& value, bool writeToXml) { init(name, writeToXml, value); }
+
+node::node(const std::string& name, node* parent, bool writeToXml) { init(name, writeToXml, "", parent); }
+
+node::node(const std::string& name, const std::string& value, node* parent, bool writeToXml) {
+  init(name, writeToXml, value, parent);
+}
+
+node::node(const node& nodeToCopy)
+    : name(nodeToCopy.name),
+      attributes(nodeToCopy.attributes),
+      parent(nodeToCopy.parent),
+      undefinedValue(nodeToCopy.undefinedValue),
+      stringValue(nodeToCopy.stringValue),
+      doubleValue(nodeToCopy.doubleValue),
+      type(nodeToCopy.type),
+      writeToXml(nodeToCopy.writeToXml),
+      modified(nodeToCopy.modified) {
+  for (node* child : nodeToCopy.children) {
+    child->duplicate(this);
+  }
+}
+
+void node::init(const std::string& name, bool writeToXml, const std::string& value, node* parent) {
+  this->name = name;
+  this->parent = parent;
+  undefinedValue = value;
+  stringValue = "";
+  doubleValue = 0.;
+  type = valueType::UNDEFINED;
+  this->writeToXml = writeToXml;
+  modified = 0;
+}
+
+std::vector<node*> node::findVector(std::string subPath, bool findAll, int depth) const {
+  std::string identifier_name = "ID";
+  std::string identifier = "";
+  std::vector<std::string> splittet_at_slash = split(subPath, '/');
+  if (splittet_at_slash.size() > 1) {
+    if (splittet_at_slash.at(0) == "") {
+      splittet_at_slash.erase(splittet_at_slash.begin());
+    }
+    std::vector<node*> currentNodes = this->findVector(splittet_at_slash.at(0), findAll, depth);
+    std::vector<node*> newCurrentNodes;  // Only used by calling with findAll=true
+    for (unsigned int i = 1; i < splittet_at_slash.size(); i++) {
+      if (findAll) {
+        newCurrentNodes.clear();
+        for (node* n : currentNodes) {
+          std::vector<node*> nodesFromOneChild = n->findVector(splittet_at_slash.at(i), true, depth);
+          newCurrentNodes.insert(newCurrentNodes.end(), nodesFromOneChild.begin(), nodesFromOneChild.end());
+        }
+        currentNodes = newCurrentNodes;
+      } else if (!currentNodes.empty()) {
+        currentNodes = currentNodes.back()->findVector(splittet_at_slash.at(i), false, depth);
+      }
+    }
+    return currentNodes;
+  }
+  std::vector<std::string> splittet_at_id = split(subPath, '@');
+  if (splittet_at_id.size() > 1) {
+    subPath = splittet_at_id.at(0);
+    if (splittet_at_id.at(1).find('=') == std::string::npos) {
+      identifier = splittet_at_id.at(1);
+    } else if (split(splittet_at_id.at(1), '=').size() > 1) {
+      identifier_name = split(splittet_at_id.at(1), '=').at(0);
+      identifier = split(splittet_at_id.at(1), '=').at(1);
+    } else {
+      identifier_name = split(splittet_at_id.at(1), '=').at(0);
+      identifier = "";
+    }
+  }
+  std::queue<node*> myQueue;
+  std::queue<int> myDepths;
+  for (node* child : this->children) {
+    myQueue.push(child);
+    myDepths.push(1);
+  }
+  int currentDepth = 0;
+  std::vector<node*> result;
+  while (!myQueue.empty() && currentDepth <= depth) {
+    node* currentNode(myQueue.front());
+    myQueue.pop();
+    currentDepth = myDepths.front();
+    myDepths.pop();
+    if (currentNode->name == subPath &&
+        (splittet_at_id.size() == 1 || currentNode->attributes.at(identifier_name) == identifier)) {
+      result.push_back(currentNode);
+      if (!findAll) {
+        return result;
+      }
+    } else {
+      for (node* child : currentNode->children) {
+        myQueue.push(child);
+        myDepths.push(currentDepth + 1);
+      }
+    }
+    if (!myDepths.empty()) {
+      currentDepth = myDepths.front();
+    }
+  }
+  return result;
+}
+
+node& node::at(const std::string& subPath, int depth) const {
+  std::vector<node*> result = findVector(subPath, false, depth);
+  if (result.empty()) {
+    throw std::string("element " + subPath + " in node " + getFullPath() + " not found");
+  } else {
+    return *result.at(0);
+  }
+}
+
+node* node::find(const std::string& subPath, int depth) const {
+  std::vector<node*> result = findVector(subPath, false, depth);
+  if (result.empty()) {
+    return nullptr;
+  } else {
+    return result.at(0);
+  }
+}
+
+std::vector<node*> node::getVector(const std::string subPath, int depth) const {
+  std::vector<node*> result = findVector(subPath, true, depth);
+  if (result.empty()) {
+    throw std::string("element " + subPath + " in node " + getFullPath() + " not found");
+  } else {
+    return result;
+  }
+}
+
+std::vector<double> node::getDoubleVector(const std::string& subPath, int depth) const {
+  std::vector<node*> nodes = findVector(subPath, true, depth);
+  std::vector<double> res;
+  if (nodes.empty()) {
+    throw std::string("element " + subPath + " in node " + getFullPath() + " not found");
+  } else {
+    res.resize(nodes.size());
+    std::transform(nodes.begin(), nodes.end(), res.begin(), [](const node* aNode) { return *aNode; });
+  }
+  return res;
+}
+
+std::vector<int> node::getIntVector(const std::string& subPath, int depth) const {
+  std::vector<node*> nodes = findVector(subPath, true, depth);
+  std::vector<int> res;
+  if (nodes.empty()) {
+    throw std::string("element " + subPath + " in node " + getFullPath() + " not found");
+  } else {
+    res.resize(nodes.size());
+    std::transform(nodes.begin(), nodes.end(), res.begin(), [](const node* aNode) { return *aNode; });
+  }
+  return res;
+}
+
+std::vector<bool> node::getBoolVector(const std::string& subPath, int depth) const {
+  std::vector<node*> nodes = findVector(subPath, true, depth);
+  std::vector<bool> res;
+  if (nodes.empty()) {
+    throw std::string("element " + subPath + " in node " + getFullPath() + " not found");
+  } else {
+    res.resize(nodes.size());
+    std::transform(nodes.begin(), nodes.end(), res.begin(), [](const node* aNode) { return *aNode; });
+  }
+  return res;
+}
+
+std::vector<std::string> node::getStringVector(const std::string& subPath,
+                                               int depth) const {  // cppcheck-suppress unusedFunction
+  std::vector<node*> nodes = findVector(subPath, true, depth);
+  std::vector<std::string> res;
+  if (nodes.empty()) {
+    throw std::string("element " + subPath + " in node " + getFullPath() + " not found");
+  } else {
+    res.resize(nodes.size());
+    std::transform(nodes.begin(), nodes.end(), res.begin(), [](node* n) { return std::string(*n); });
+  }
+  return res;
+}
+
+std::unordered_map<std::string, std::vector<node*>> node::getAllUidsWithNodes() {
+  std::unordered_map<std::string, std::vector<node*>> nodes;
+  getAllUidsWithNodes(&nodes);
+  return nodes;
+}
+
+void node::getAllUidsWithNodes(std::unordered_map<std::string, std::vector<node*>>* nodesAndUids) {
+  if (this->attributes.find("uID") != this->attributes.end()) {
+    std::string uid = this->attributes.at("uID");
+    if (nodesAndUids->find(uid) != nodesAndUids->end()) {
+      nodesAndUids->at(uid).push_back(this);
+    } else {
+      nodesAndUids->insert(std::make_pair(uid, std::vector<node*>(1, this)));
+    }
+  }
+  for (std::vector<node*>::iterator child = this->children.begin(); child != this->children.end(); ++child) {
+    (*child)->getAllUidsWithNodes(nodesAndUids);
+  }
+}
+
+node* node::findNodeByUid(std::string uid) {
+  // check, if attribute <uid> exists
+  if (this->attributes.find("uID") != this->attributes.end()) {
+    if (uid == this->attributes.at("uID")) return this;
+  }
+  if (this->children.empty()) {
+    return nullptr;
+  }
+  for (std::vector<node*>::iterator child = this->children.begin(); child != this->children.end(); ++child) {
+    node* res = (*child)->findNodeByUid(uid);
+    if (res != nullptr) return res;
+  }
+  return nullptr;
+}
+
+node::~node() {
+  for (unsigned int i = 0; i < children.size(); i++) {
+    delete children[i];
+  }
+  // dtor
+}
+
+node& aixml::openDocument(std::string fileName) {
+  TiXmlDocument pdoc(fileName.c_str());
+  const bool loadOkay = pdoc.LoadFile();
+  if (loadOkay) {
+    pdoc.SetCondenseWhiteSpace(false);
+  } else {
+    throw std::string{"Could not open " + fileName + ". The file is either not existing or possibly damaged."};
+  }
+  node* root = new node();
+  root->addNodeToDom(&pdoc);
+  return *root;
+}
+
+auto aixml::openDocument(const std::filesystem::path& fileName) -> std::shared_ptr<node> {
+  TiXmlDocument pdoc(fileName.string().c_str());
+  const bool loadOkay = pdoc.LoadFile();
+  if (loadOkay) {
+    pdoc.SetCondenseWhiteSpace(false);
+  } else {
+    throw std::string{"Could not open " + fileName.string() + ". The file is either not existing or possibly damaged."};
+  }
+  auto root = std::make_shared<node>();
+  root->addNodeToDom(&pdoc);
+  return root;
+}
+
+void node::addNodeToDom(TiXmlNode* tiNode) {
+  this->name = tiNode->Value();
+  if (tiNode->Type() == TiXmlNode::TINYXML_ELEMENT) {
+    for (TiXmlAttribute* attribute = tiNode->ToElement()->FirstAttribute(); attribute; attribute = attribute->Next()) {
+      this->attributes.emplace(attribute->Name(), attribute->Value());
+    }
+  }
+  for (TiXmlNode* child = tiNode->FirstChild(); child; child = child->NextSibling()) {
+    if (child->Type() == TiXmlNode::TINYXML_ELEMENT) {
+      node* childNode = new node();
+      childNode->parent = this;
+      this->children.push_back(childNode);
+      childNode->addNodeToDom(child);
+    } else if (child->Type() == TiXmlNode::TINYXML_TEXT) {
+      this->undefinedValue = child->Value();
+    }
+  }
+}
+bool aixml::saveDocument(const node& root, int toolLevel) {
+  TiXmlDocument* pdoc = new TiXmlDocument(root.name.c_str());
+  for (node* n : root.children) {
+    TiXmlElement* element = new TiXmlElement("");
+    pdoc->InsertEndChild(*element);
+    node::addNodeToDoc(n, pdoc->LastChild()->ToElement(), toolLevel);
+  }
+  bool succeeded = pdoc->SaveFile();
+  delete pdoc;
+  return succeeded;
+}
+void node::addNodeToDoc(node* treeNode, TiXmlElement* docNode, int toolLevel) {
+  docNode->SetValue(treeNode->name.c_str());
+  for (std::pair<std::string, std::string> attrib : treeNode->attributes) {
+    docNode->SetAttribute(attrib.first.c_str(), attrib.second.c_str());
+  }
+  for (node* child : treeNode->children) {
+    if (child->writeToXml) {
+      TiXmlElement* element = new TiXmlElement("");
+      docNode->InsertEndChild(*element);
+      addNodeToDoc(child, docNode->LastChild()->ToElement(), toolLevel);
+    }
+  }
+  if (treeNode->children.size() == 0) {
+    if ((!treeNode->modified) || !treeNode->hasAttrib("ToolLevel")) {
+      TiXmlText* text = new TiXmlText(treeNode->getResult().c_str());
+      docNode->InsertEndChild(*text);
+    } else if (treeNode->getIntAttrib("ToolLevel") <= toolLevel) {
+      docNode->SetAttribute("ToolLevel", /*int*/ num_to_string(toolLevel).c_str());
+      TiXmlText* text = new TiXmlText(treeNode->getResult().c_str());
+      docNode->InsertEndChild(*text);
+    } else {
+      throw std::string("tool level to low (value) " + treeNode->getFullPath());
+    }
+  }
+}
+void aixml::closeDocument(const node& root) { delete &root; }
+
+node& node::appendChild(const std::string& name, bool writeToXml) {
+  node* new_node = new node();
+  new_node->name = name;
+  new_node->writeToXml = writeToXml;
+  new_node->parent = this;
+  this->children.push_back(new_node);
+  return *new_node;
+}
+
+node& node::appendChild(node* new_node) {
+  new_node->parent = this;
+  this->children.push_back(new_node);
+  return *new_node;
+}
+node& node::appendChild(const node& nodeToBeInserted) {
+  node* new_node = new node(nodeToBeInserted);
+  new_node->parent = this;
+  this->children.push_back(new_node);
+  return *new_node;
+}
+
+void node::appendChildren(const std::vector<std::string>& names, bool writeToXml) {
+  for (std::string name : names) {
+    node* new_node = new node();
+    new_node->name = name;
+    new_node->writeToXml = writeToXml;
+    new_node->parent = this;
+    children.push_back(new_node);
+  }
+}
+
+void node::appendChildren(std::vector<node*> new_nodes) {
+  for (node* new_node : new_nodes) {
+    new_node->parent = this;
+    children.push_back(new_node);
+  }
+}
+
+void node::appendChildren(const std::vector<node>& nodesToBeInserted) {
+  for (node nodeToBeInserted : nodesToBeInserted) {
+    node* new_node = new node(nodeToBeInserted);
+    new_node->parent = this;
+    children.push_back(new_node);
+  }
+}
+
+void node::deleteChild(const std::string& name) { this->deleteChild(find(name, 1)); }
+
+void node::deleteChild(node* old_node) {
+  if (old_node) {
+    children.erase(std::remove(children.begin(), children.end(), old_node), children.end());
+    delete old_node;
+  }
+}
+void node::deleteChildren() {  // cppcheck-suppress unusedFunction
+  for (node* n : children) {
+    delete n;
+  }
+  children.clear();
+}
+
+node& node::duplicate(node* new_parent) {
+  node* new_node = new node();
+  if (new_parent) {
+    new_node->parent = new_parent;
+    new_parent->children.push_back(new_node);
+  } else {
+    new_node->parent = parent;
+    parent->children.insert(std::find(parent->children.begin(), parent->children.end(), this) + 1, new_node);
+  }
+  new_node->name = name;
+  new_node->undefinedValue = undefinedValue;
+  new_node->stringValue = stringValue;
+  new_node->doubleValue = doubleValue;
+  new_node->type = type;
+  new_node->writeToXml = writeToXml;
+  new_node->modified = modified;
+  std::map<std::string, std::string> new_attributes(attributes);
+  new_node->attributes = new_attributes;
+  for (node* child : children) {
+    child->duplicate(new_node);
+  }
+  return *new_node;
+}
+node& node::duplicateEmpty(node* new_parent) {
+  node* new_node = new node();
+  if (new_parent) {
+    new_node->parent = new_parent;
+    new_parent->children.push_back(new_node);
+  } else {
+    new_node->parent = parent;
+    parent->children.insert(std::find(parent->children.begin(), parent->children.end(), this) + 1, new_node);
+  }
+  new_node->name = name;
+  new_node->undefinedValue = "0";
+  new_node->type = valueType::UNDEFINED;
+  new_node->writeToXml = writeToXml;
+  new_node->modified = false;
+  std::map<std::string, std::string> new_attributes(attributes);
+  new_node->attributes = new_attributes;
+  for (node* child : children) {
+    child->duplicateEmpty(new_node);
+  }
+  return *new_node;
+}
+
+node& node::replaceChild(std::string name, const node& nodeToBeInserted,
+                         bool createIfNotExistent) {  // cppcheck-suppress unusedFunction
+  node* old_node = this->find(name);
+  node* new_node = nullptr;
+  if (old_node) {
+    new_node = new node(nodeToBeInserted);
+    new_node->parent = old_node->parent;
+    std::replace(old_node->parent->children.begin(), old_node->parent->children.end(), old_node, new_node);
+    delete old_node;
+  } else if (createIfNotExistent) {
+    new_node = new node(nodeToBeInserted);
+    this->appendChild(new_node);
+  } else {
+    throw std::string("node " + getFullPath() + "/" + name + " not existing");
+  }
+  return *new_node;
+}
+node& node::insertAfterChild(std::string name, const node& nodeToBeInserted) {  // cppcheck-suppress unusedFunction
+  node* old_node = this->find(name);
+  node* new_node = nullptr;
+  if (old_node) {
+    new_node = new node(nodeToBeInserted);
+    new_node->parent = old_node->parent;
+    old_node->parent->children.insert(
+        std::find(old_node->parent->children.begin(), old_node->parent->children.end(), old_node) + 1, new_node);
+  } else {
+    throw std::string("node " + getFullPath() + "/" + name + " not existing");
+  }
+  return *new_node;
+}
+
+node& node::insertBeforeChild(std::string name, const node& nodeToBeInserted) {  // cppcheck-suppress unusedFunction
+  node* old_node = this->find(name);
+  node* new_node = nullptr;
+  if (old_node) {
+    new_node = new node(nodeToBeInserted);
+    old_node->parent->children.insert(
+        std::find(old_node->parent->children.begin(), old_node->parent->children.end(), old_node), new_node);
+  } else {
+    throw std::string("node " + getFullPath() + "/" + name + " not existing");
+  }
+  return *new_node;
+}
+
+bool node::getBoolAttrib(std::string name) const {  // cppcheck-suppress unusedFunction
+  if (!this->hasAttrib(name)) {
+    throw std::string("attribute " + name + " in node " + getFullPath() + " not found");
+  }
+  if (!isBoolean(attributes.at(name))) {
+    throw std::string("attribute " + name + " in node " + getFullPath() + "is not a valid boolean");
+  }
+  if (isTrue(attributes.at(name).c_str())) return true;
+  if (isFalse(attributes.at(name).c_str())) return false;
+
+  /*previous behaviour only to have a return statement in the end of the function. Technically function won't reach
+   * statement */
+  return atoi(attributes.at(name).c_str());
+}
+
+int node::getIntAttrib(std::string name) const {
+  if (!this->hasAttrib(name)) {
+    throw std::string("attribute " + name + " in node " + getFullPath() + " not found");
+  }
+  return atoi(attributes.at(name).c_str());
+}
+
+double node::getDoubleAttrib(std::string name) const {  // cppcheck-suppress unusedFunction
+  if (!this->hasAttrib(name)) {
+    throw std::string("attribute " + name + " in node " + getFullPath() + " not found");
+  }
+  return atof(attributes.at(name).c_str());
+}
+
+std::string node::getStringAttrib(std::string name) const {  // cppcheck-suppress unusedFunction
+  if (!this->hasAttrib(name)) {
+    throw std::string("attribute " + name + " in node " + getFullPath() + " not found");
+  }
+  return attributes.at(name);
+}
+bool node::hasAttrib(std::string name) const { return attributes.count(name); }
+
+void node::deleteAttrib(std::string name) {  // cppcheck-suppress unusedFunction
+  attributes.erase(name);
+}
+
+std::map<std::string, std::string> node::getAttribMap() const {  // cppcheck-suppress unusedFunction
+  return attributes;
+}
+
+double checkBoundaries(const node& value, const double& minValue, const double& maxValue) {
+  return checkBoundaries(value, minValue, false, maxValue, false);
+}
+
+double checkBoundaries(node value, const double& minValue, const bool& includeLeft, const double& maxValue,
+                       const bool& includeRight) {
+  double res = value;
+  if (res > minValue && res < maxValue) {
+    return value;
+  } else if (includeLeft && (fabs(res - minValue) < ACCURACY_HIGH)) {
+    return value;
+  } else if (includeRight && (fabs(res - maxValue) < ACCURACY_HIGH)) {
+    return value;
+  }
+  std::string leftBoundary = "(";
+  std::string rightBoundary = ")";
+  if (includeLeft) {
+    leftBoundary = "[";
+  }
+  if (includeRight) {
+    rightBoundary = "]";
+  }
+  throw std::string("parameter " + value.getFullPath() + "=" + num_to_string(res) + " not in range " + leftBoundary +
+                    /*double*/ num_to_string(minValue) + "," + /*double*/ num_to_string(maxValue) + rightBoundary);
+}
+
+bool checkBoundaries(node value) {
+  std::string res = value.undefinedValue;
+  if (!isBoolean(res)) {
+    throw std::string("Parameter " + value.getFullPath() + " = " + res + " has not a valid boolean value.");
+  } else if (res == "0" || res == "false" || res == "False" || res == "FALSE") {
+    return false;
+  } else {
+    return true;
+  }
+}
+
+uint16_t checkBoundaries(node value, const uint16_t maxValue) {
+  // Only using the number of modes parameter. If using two values function overload would be ambiguous
+  std::string res = value.undefinedValue;
+  if (!(static_cast<uint16_t>(value) == value)) {
+    throw std::string("Parameter " + value.getFullPath() + " = " + res + " has not a valid unsigned integer value.");
+  }
+  // No check for <0 because uint16_t will never be <0
+  if (static_cast<uint16_t>(value) > maxValue) {
+    throw std::string("Parameter " + value.getFullPath() + " = " + res + " not in range [0," + num_to_string(maxValue) +
+                      "]");
+  }
+  return static_cast<uint16_t>(value);
+}
+
+// overloaded cast operators (operator-magic)
+node::operator double() {
+  if (children.size() != 0) {
+    throw "element " + getFullPath() + " has no value";
+  } else if (type == valueType::UNDEFINED) {
+    /*
+    //Slow but good code
+    addToInputOutput();
+    //If the Node type is undefined check if you can convert the string to a number. Only if that is so
+    // return the converted number and set the node type as double.
+    std::regex number_regex("^\\s*\\-?\\d*\\.*\\d*\\s*$");
+    if (std::regex_match(undefinedValue, number_regex))
+    {
+        type=valueType::DOUBLE;
+        doubleValue=atof(undefinedValue.c_str());
+        return doubleValue;
+    }
+    //Since the value can not be converted to a Number return nan.
+    else
+    {
+        return std::numeric_limits<double>::quiet_NaN();
+    }
+    */
+    // Sloppy but fast code
+    addToInputOutput();
+    type = valueType::DOUBLE;
+    doubleValue = atof(undefinedValue.c_str());
+    return doubleValue;
+  } else if (type == valueType::STRING) {
+    addToInputOutput();
+    type = valueType::DOUBLE;
+    doubleValue = atof(stringValue.c_str());
+    return doubleValue;
+  } else if (type == valueType::DOUBLE) {
+    return doubleValue;
+  } else {
+    throw "failed to convert " + getFullPath() + " from string to numeric/bool type";
+  }
+}
+
+node::operator std::string() {
+  if (children.size() != 0) {
+    throw "element has no value";
+  } else if (type == valueType::UNDEFINED) {
+    addToInputOutput();
+    type = valueType::STRING;
+    stringValue = undefinedValue;
+    return stringValue;
+  } else if (type == valueType::STRING) {
+    return stringValue;
+  } else if (type ==
+             valueType::DOUBLE) {  // In case the value was already converted to a double return the original string.
+    return undefinedValue;
+  } else {
+    throw "failed to convert numeric/bool type to string";
+  }
+}
+
+std::ostream& operator<<(std::ostream& stream, node& n) {
+  if (n.type == node::valueType::UNDEFINED) {
+    n.addToInputOutput();
+    stream << n.undefinedValue;
+    return stream;
+  } else if (n.type == node::valueType::STRING) {
+    stream << n.stringValue;
+    return stream;
+  } else {
+    stream << n.doubleValue;
+    return stream;
+  }
+}
+
+std::string node::getResult() const {
+  std::stringstream stream;
+  if (type == valueType::UNDEFINED) {
+    stream << undefinedValue;
+    return stream.str();
+  } else if (type == valueType::STRING) {
+    stream << stringValue;
+    return stream.str();
+  } else {
+    stream.precision(AIXMLPRECISION);
+    stream << doubleValue;
+    return stream.str();
+  }
+}
+
+void node::operator=(const double& d) {
+  modified = true;
+  addToInputOutput(false);
+  if (type == valueType::DOUBLE) {
+    doubleValue = d;
+  } else if (type == valueType::UNDEFINED) {
+    type = valueType::DOUBLE;
+    doubleValue = d;
+  } else {
+    stringValue = /*double*/ num_to_string(d);
+  }
+}
+
+void node::operator=(const int& i) {
+  modified = true;
+  addToInputOutput(false);
+  if (type == valueType::UNDEFINED) {
+    type = valueType::DOUBLE;
+    doubleValue = i;
+  } else if (type == valueType::DOUBLE) {
+    doubleValue = i;
+  } else {
+    stringValue = /*int*/ num_to_string(i);
+  }
+}
+
+void node::operator=(const bool& b) {
+  modified = true;
+  addToInputOutput(false);
+  if (type == valueType::UNDEFINED) {
+    type = valueType::DOUBLE;
+    doubleValue = static_cast<double>(b);
+  } else if (type == valueType::DOUBLE) {
+    doubleValue = static_cast<double>(b);
+  } else {
+    if (b) {
+      stringValue = "1";
+    } else {
+      stringValue = "0";
+    }
+  }
+}
+
+void node::operator=(const std::string& s) {
+  modified = true;
+  addToInputOutput(false);
+  if (type == valueType::UNDEFINED) {
+    type = valueType::STRING;
+    stringValue = s;
+  } else if (type == valueType::DOUBLE) {
+    doubleValue = atof(s.c_str());
+  } else {
+    stringValue = s;
+  }
+}
+
+void node::operator=(const char* s) {
+  modified = true;
+  addToInputOutput(false);
+  if (type == valueType::UNDEFINED) {
+    type = valueType::STRING;
+    stringValue = s;
+  } else if (type == valueType::DOUBLE) {
+    doubleValue = atof(s);
+  } else {
+    stringValue = s;
+  }
+}
+
+std::string operator+(const std::string& value, node n) {
+  if (n.type == node::valueType::UNDEFINED) {
+    return value + std::string(n);
+  } else if (n.type == node::valueType::STRING) {
+    return value + n.stringValue;
+  } else {
+    return value + /*double*/ num_to_string(n.doubleValue);
+  }
+}
+
+std::string operator+(node n, const std::string& value) {
+  if (n.type == node::valueType::UNDEFINED) {
+    return std::string(n) + value;
+  } else if (n.type == node::valueType::STRING) {
+    return n.stringValue + value;
+  } else {
+    return /*double*/ num_to_string(n.doubleValue) + value;
+  }
+}
+
+// overloaded arithmetical operators
+
+double operator+(double value, node n) {
+  if (n.type == node::valueType::UNDEFINED || n.type == node::valueType::DOUBLE) {
+    return value + static_cast<double>(n);
+  }
+  throw std::string("failed to convert " + n.getFullPath() + "from string to numeric");
+}
+double operator+(const node& n, double value) { return value + n; }
+double operator-(double value, node n) {
+  if (n.type == node::valueType::UNDEFINED || n.type == node::valueType::DOUBLE) {
+    return value - static_cast<double>(n);
+  }
+  throw std::string("failed to convert " + n.getFullPath() + "from string to numeric");
+}
+double operator-(const node& n, double value) { return (-1) * (value - n); }
+double operator/(double value, node n) {
+  if (n.type == node::valueType::UNDEFINED || n.type == node::valueType::DOUBLE) {
+    return value / static_cast<double>(n);
+  }
+  throw std::string("failed to convert " + n.getFullPath() + "from string to numeric");
+}
+double operator/(node n, double value) {
+  if (n.type == node::valueType::UNDEFINED || n.type == node::valueType::DOUBLE) {
+    return static_cast<double>(n) / value;
+  }
+  throw std::string("failed to convert " + n.getFullPath() + "from string to numeric");
+}
+double operator*(double value, node n) {
+  if (n.type == node::valueType::UNDEFINED || n.type == node::valueType::DOUBLE) {
+    return value * static_cast<double>(n);
+  }
+  throw std::string("failed to convert " + n.getFullPath() + "from string to numeric");
+}
+double operator*(const node& n, double value) { return value * n; }
+
+double node::operator*(const node& n) { return arithmetic_operation(n, '*'); }
+double node::operator/(const node& n) { return arithmetic_operation(n, '/'); }
+double node::operator-(const node& n) { return arithmetic_operation(n, '-'); }
+double node::operator+(const node& n) { return arithmetic_operation(n, '+'); }
+
+double node::arithmetic_operation(node n, char c) {
+  double a;
+  double b;
+  if (this->type == valueType::UNDEFINED || this->type == valueType::DOUBLE) {
+    a = *this;
+  } else {
+    throw std::string("failed to convert " + getFullPath() + "from string to numeric");
+  }
+  if (n.type == valueType::UNDEFINED || n.type == valueType::DOUBLE) {
+    b = n;
+  } else {
+    throw std::string("failed to convert " + n.getFullPath() + "from string to numeric");
+  }
+  switch (c) {
+    case '+':
+      return a + b;
+    case '*':
+      return a * b;
+    case '/':
+      return a / b;
+    case '-':
+      return a - b;
+  }
+  return NAN;
+}
+std::string node::getFullPath(std::string aPath, bool includingIdentifier) const {
+  std::string newPath = this->name;
+  if (includingIdentifier) {
+    if (this->hasAttrib("ID") && this->hasAttrib("uID")) {
+      std::cout << "WARNING: in function \"node::" << __FUNCTION__ << "\" XML-element \"" << this->name
+                << "\" has ambiguous identifiers. Both, \"ID\" and \"uID\" are present. \"ID\" will be used."
+                << std::endl;
+      newPath += "@ID=" + this->attributes.at("ID");
+    } else {
+      if (this->hasAttrib("ID")) {
+        newPath += "@ID=" + this->attributes.at("ID");
+      } else if (this->hasAttrib("uID")) {
+        newPath += "@uID=" + this->attributes.at("uID");
+      }
+    }
+  }
+  if (aPath != "") newPath += "/";
+  aPath.insert(0, newPath);
+  node* theParent = this->parent;
+  if (theParent) {
+    return theParent->getFullPath(aPath, includingIdentifier);
+  }
+  return aPath;
+}
+
+/**
+ * \brief Returns name of root node
+ * \return std::string name of root node
+ */
+std::string node::getRootName() const {
+  node* root = this->parent;
+  if (root == nullptr) {
+    return this->name;
+  }
+  do {
+    root = root->parent;
+  } while (root != nullptr);
+  return root->name;
+}
+
+void node::addToInputOutput(bool isInput) {
+  /*std::string thePath=name;
+  if (hasAttrib("ID"))
+  {
+      thePath+="@"+attributes["ID"];
+  }
+  node* theParent=parent;
+  while (theParent)
+  {
+      std::string theNewPath=theParent->name;
+      if (theParent->hasAttrib("ID"))
+      {
+          theNewPath+="@"+theParent->attributes["ID"];
+      }
+      thePath=theNewPath+"/"+thePath;
+      theParent=theParent->parent;
+  }*/
+  if (isInput) {
+    input.push_back(getFullPath());
+  } else {
+    output.push_back(getFullPath());
+  }
+}
+
+bool aixml::checkSchema(const node& schemaXML, const node& xmlToBeTested) {
+  for (node* n : xmlToBeTested.children) {
+    node* equivalent = schemaXML.find(n->name, 1);
+    if (!equivalent) {
+      return false;
+    } else {
+      if (!checkSchema(*equivalent, *n)) {
+        return false;
+      }
+    }
+  }
+  return true;
+}
+
+void aixml::applySchema(const node& schemaXML, node* xmlToBeUpdated) {
+  for (std::pair<std::string, std::string> attribute : schemaXML.attributes) {
+    if (!xmlToBeUpdated->hasAttrib(attribute.first)) {
+      std::cout << "atribute " + attribute.first + " from scheme-element:" << std::endl;
+      std::cout << schemaXML.getFullPath() << std::endl;
+      std::cout << "gets added to xml at:" << std::endl;
+      std::cout << xmlToBeUpdated->getFullPath() << std::endl;
+      xmlToBeUpdated->setAttrib(attribute.first, attribute.second);
+    }
+  }
+  for (node* n : schemaXML.children) {
+    std::vector<node*> equivalents = xmlToBeUpdated->findVector(n->name, true, 1);
+    if (equivalents.empty()) {
+      std::cout << "element from scheme:" << std::endl;
+      std::cout << n->getFullPath() << std::endl;
+      std::cout << "gets added as child to xml at:" << std::endl;
+      std::cout << xmlToBeUpdated->getFullPath() << std::endl;
+      n->duplicateEmpty(xmlToBeUpdated);
+    } else {
+      for (node* equivalent : equivalents) {
+        applySchema(*n, equivalent);
+      }
+    }
+  }
+}
+std::string node::getName() const {  // cppcheck-suppress unusedFunction
+  return name;
+}
+void node::setToZero(bool setAttributesToZero) {
+  if (setAttributesToZero) {
+    for (std::pair<std::string, std::string> attribute : attributes) {
+      setAttrib(attribute.first, "0");
+    }
+  }
+  if (children.empty()) {
+    undefinedValue = "0";
+  } else {
+    undefinedValue = "";
+  }
+  stringValue = "";
+  doubleValue = 0;
+  type = valueType::UNDEFINED;
+  //    writeToXml=writeToXml;
+  modified = true;
+  for (node* child : children) {
+    child->setToZero(setAttributesToZero);
+  }
+}
+
+node aixml::getSingleNode(const std::string& filename, std::string s, int depth) {  // cppcheck-suppress unusedFunction
+  const node& xml = openDocument(filename);
+  node res = xml.at(s, depth);
+  closeDocument(xml);
+  return res;
+}
+
+/**
+ * \brief Square bracket operator[] - generates paths if not existent
+ * \param s std::string parameter - begin relative from current node e.g.
+ *          if at root and want to access child at root use nodevariable["<child>/.../.../..."]
+ * \return node& returns node at last level of output
+ */
+node& node::operator[](std::string s) {
+  std::vector<std::string> nodenames = split(s, '/');
+  if (nodenames.size() == 1 && s.compare(this->name) == 0) {
+    return *this;
+  }
+  if (nodenames.at(0).compare(this->name) == 0) {
+    nodenames.erase(nodenames.begin());
+  }
+  std::string currentpath = "";
+  for (std::string nodename : nodenames) {
+    if (!this->find(currentpath + nodename)) {
+      std::vector<std::string> id = split(nodename, '@');
+      if (this->children.size() == 0 || currentpath.compare("") == 0) {
+        this->appendChild(id[0], true);
+      } else {
+        // remove slash since find can't operate on ending /
+        std::string modifiedpath = currentpath;
+        if (modifiedpath.back() == '/') {
+          modifiedpath.pop_back();
+        }
+        this->find(modifiedpath)->appendChild(id[0], true);
+      }
+      if (id.size() > 1) {
+        auto m_v = this->findVector(currentpath + id[0], true, 1);
+        m_v.at((std::stoull(id[1])))->addAttrib("ID", std::stoi(id[1]));
+      }
+      this->find(currentpath + nodename)->type = valueType::UNDEFINED;
+    }
+    currentpath += nodename;
+    if (nodename.compare(nodenames.back()) != 0) {
+      currentpath += "/";
+    }
+  }
+  return this->at(currentpath);
+}
+
+bool isBoolean(const std::string& aValue) {
+  if (isTrue(aValue) || isFalse(aValue)) return true;
+  return false;
+}
+
+bool isTrue(const std::string& aValue) {
+  std::vector<std::string> trueBools = {"1", "true", "True", "TRUE", "on", "On", "ON"};
+  bool boolIsTrue = false;
+  for (uint8_t i(0); i < trueBools.size(); i++) {
+    if (aValue.compare(trueBools.at(i)) == 0) {
+      boolIsTrue = true;
+      break;
+    }
+  }
+  if (!boolIsTrue) {
+    return false;
+  } else {
+    return true;
+  }
+}
+
+bool isFalse(const std::string& aValue) {
+  std::vector<std::string> falseBools = {"0", "false", "False", "FALSE", "off", "Off", "OFF"};
+  bool boolIsFalse = false;
+  for (uint8_t i(0); i < falseBools.size(); i++) {
+    if (aValue.compare(falseBools.at(i)) == 0) {
+      boolIsFalse = true;
+      break;
+    }
+  }
+  if (!boolIsFalse) {
+    return false;
+  } else {
+    return true;
+  }
+}
diff --git a/aixml/src/py_aixml.cpp b/aixml/src/py_aixml.cpp
new file mode 100644
index 00000000..9bbb1ae9
--- /dev/null
+++ b/aixml/src/py_aixml.cpp
@@ -0,0 +1,178 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <pybind11/pybind11.h>
+#include <pybind11/operators.h>
+#include <pybind11/stl/filesystem.h>
+#include "aixml/node.h"
+
+namespace py = pybind11;
+
+/* === Helper functions === */
+/**
+ * @brief Helper function to insert a Python ElementTree object into a node.
+ * This function recursively inserts the children of the element and copies
+ * the attributes.
+ * @param element The Python `ElementTree.Element` object.
+ * @param insert_into The pointer to the node to insert the element(s) into.
+ */
+void insert_element(const py::object &element, node *const insert_into)
+{
+    /* Insert the node */
+    node *new_node = &insert_into->appendChild(element.attr("tag").cast<std::string>());
+
+    /* Set the node value */
+    *new_node = element.attr("text").cast<std::string>();
+
+    /* Update the attributes */
+    py::dict attributes = element.attr("attrib");
+    for (auto item : attributes) {
+        new_node->addAttrib(item.first.cast<std::string>(), item.second.cast<std::string>());
+    }
+    
+    /* Insert the children recursively */
+    for (auto& child : element) {
+        insert_element(py::cast<py::object>(child), new_node);
+    }
+}
+
+/**
+ * @brief Helper function to convert a Python ElementTree structure into a node object.
+ * @param root The Python `ElementTree.Element` root element of the tree.
+ * @return The node object.
+ */
+auto from_ElementTree(const py::object &root_element) -> std::shared_ptr<node> 
+{
+    /* Create a new node */
+    auto root_node = std::make_shared<node>();
+
+    /* Insert the children */
+    insert_element(root_element, root_node.get());
+
+    /* Return the node */
+    return root_node;
+}
+
+/**
+ * @brief Helper function to insert a node into a Python ElementTree object.
+ * This function recursively inserts the children of the node and copies
+ * the attributes.
+ * @param node The node to insert.
+ * @param insert_into The Python `ElementTree.Element` object to insert the node into.
+ */
+void insert_node(const node &node, py::object &insert_into)
+{
+    /* Get the attributes of the node */
+    py::dict attributes{};
+    for (auto& [key, value] : node.getAttribMap())
+    {
+        attributes.attr("__setitem__")(key, value);
+    }
+
+    /* Insert the new element */
+    py::object ET_Element = py::module::import("xml.etree.ElementTree").attr("Element");
+    insert_into.attr("append")(ET_Element(node.getName(), attributes));
+
+    /* Insert the children recursively */
+    for (auto& child : node.getChildren())
+    {
+        py::object element = insert_into.attr("__getitem__")(-1);
+        insert_node(*child, element);
+    }
+}
+
+/**
+ * @brief Helper function to convert a node object into a Python ElementTree object.
+ * @param root_node The node object.
+ * @return The Python `ElementTree.Element` root element of the tree.
+ */
+auto to_ElementTree(node &root_node) -> py::object
+{
+    /* Create a new element */
+    py::object ET_Element = py::module::import("xml.etree.ElementTree").attr("Element");
+    auto root_element = ET_Element(root_node.getName());
+
+    /* Insert the children recursively */
+    insert_node(root_node, root_element);
+
+    /* Return the element */
+    return root_element;
+}
+
+/* === Python bindings === */
+PYBIND11_MODULE(py11aixml, m)
+{
+    /* Module docstring */
+    m.doc() = "Python bindings for aixml.";
+
+    /* Add the document interface */
+    m.def(
+        "openDocument",
+        py::overload_cast<const std::filesystem::path &>(&aixml::openDocument),
+        py::arg("fileName"),
+        "Open an aixml document.")
+    .def(
+        "saveDocument",
+        aixml::saveDocument,
+        py::arg("root"),
+        py::arg("toolLevel") = 0,
+        "Function saves the XML-tree to the file, throws error if toolLevel is smaller than the ToolLevel-attribute in a modified element");
+
+    /* Add the node class with its shared pointer */
+    py::class_<node, std::shared_ptr<node>>(m, "Node")
+        .def(py::init<>())
+        .def(
+            "at",
+            &node::at,
+            py::arg("path"),
+            py::arg("depth") = static_cast<py::int_>(std::numeric_limits<int>::max()),
+            py::return_value_policy::reference,
+            "Returns a reference to the node matching the specified path.")
+        .def(
+            "__float__",
+            [](node &n) { return static_cast<double>(n); },
+            "Converts the node to a float.")
+        .def(
+            "__int__",
+            [](node &n) { return static_cast<int>(n); },
+            "Converts the node to an int.")
+        .def(
+            "__str__",
+            [](node &n) { return static_cast<std::string>(n); },
+            "Converts the node to a string.");
+
+    /* Create a node object from a Python ElementTree object */
+    m.def(
+        "from_ElementTree",
+        from_ElementTree,
+        py::arg("root_element"),
+        py::return_value_policy::move,
+        "Creates a node object from a Python `ElementTree.Element` object.");
+    
+    /* Create a Python ElementTree object from a node object */
+    m.def(
+        "to_ElementTree",
+        to_ElementTree,
+        py::arg("root_node"),
+        py::return_value_policy::move,
+        "Creates a Python `ElementTree.Element` object from a node object.");
+}
diff --git a/aixml/src/tinystr.cpp b/aixml/src/tinystr.cpp
new file mode 100644
index 00000000..06657682
--- /dev/null
+++ b/aixml/src/tinystr.cpp
@@ -0,0 +1,111 @@
+/*
+www.sourceforge.net/projects/tinyxml
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+
+#ifndef TIXML_USE_STL
+
+#include "tinystr.h"
+
+// Error value for find primitive
+const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1);
+
+
+// Null rep.
+TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } };
+
+
+void TiXmlString::reserve (size_type cap)
+{
+	if (cap > capacity())
+	{
+		TiXmlString tmp;
+		tmp.init(length(), cap);
+		memcpy(tmp.start(), data(), length());
+		swap(tmp);
+	}
+}
+
+
+TiXmlString& TiXmlString::assign(const char* str, size_type len)
+{
+	size_type cap = capacity();
+	if (len > cap || cap > 3*(len + 8))
+	{
+		TiXmlString tmp;
+		tmp.init(len);
+		memcpy(tmp.start(), str, len);
+		swap(tmp);
+	}
+	else
+	{
+		memmove(start(), str, len);
+		set_size(len);
+	}
+	return *this;
+}
+
+
+TiXmlString& TiXmlString::append(const char* str, size_type len)
+{
+	size_type newsize = length() + len;
+	if (newsize > capacity())
+	{
+		reserve (newsize + capacity());
+	}
+	memmove(finish(), str, len);
+	set_size(newsize);
+	return *this;
+}
+
+
+TiXmlString operator + (const TiXmlString & a, const TiXmlString & b)
+{
+	TiXmlString tmp;
+	tmp.reserve(a.length() + b.length());
+	tmp += a;
+	tmp += b;
+	return tmp;
+}
+
+TiXmlString operator + (const TiXmlString & a, const char* b)
+{
+	TiXmlString tmp;
+	TiXmlString::size_type b_len = static_cast<TiXmlString::size_type>( strlen(b) );
+	tmp.reserve(a.length() + b_len);
+	tmp += a;
+	tmp.append(b, b_len);
+	return tmp;
+}
+
+TiXmlString operator + (const char* a, const TiXmlString & b)
+{
+	TiXmlString tmp;
+	TiXmlString::size_type a_len = static_cast<TiXmlString::size_type>( strlen(a) );
+	tmp.reserve(a_len + b.length());
+	tmp.append(a, a_len);
+	tmp += b;
+	return tmp;
+}
+
+
+#endif	// TIXML_USE_STL
diff --git a/aixml/src/tinystr.h b/aixml/src/tinystr.h
new file mode 100644
index 00000000..9b23b11f
--- /dev/null
+++ b/aixml/src/tinystr.h
@@ -0,0 +1,302 @@
+/*
+www.sourceforge.net/projects/tinyxml
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+
+#ifndef TIXML_USE_STL
+
+#ifndef TIXML_STRING_INCLUDED
+#define TIXML_STRING_INCLUDED
+
+#include <assert.h>
+#include <string.h>
+
+/*	The support for explicit isn't that universal, and it isn't really
+	required - it is used to check that the TiXmlString class isn't incorrectly
+	used. Be nice to old compilers and macro it here:
+*/
+#if defined(_MSC_VER) && (_MSC_VER >= 1200 )
+	// Microsoft visual studio, version 6 and higher.
+	#define TIXML_EXPLICIT explicit
+#elif defined(__GNUC__) && (__GNUC__ >= 3 )
+	// GCC version 3 and higher.s
+	#define TIXML_EXPLICIT explicit
+#else
+	#define TIXML_EXPLICIT
+#endif
+
+/** \brief TiXmlString is an emulation of a subset of the std::string template.
+           Its purpose is to allow compiling TinyXML on compilers with no or poor STL support.
+           Only the member functions relevant to the TinyXML project have been implemented.
+           The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase
+           a string and there's no more room, we allocate a buffer twice as big as we need.
+ */
+class TiXmlString
+{
+  public :
+  	typedef size_t size_type; /**< The size type used */
+
+	/* Error value for find primitive */
+	static const size_type npos; // = -1;
+
+
+	/* TiXmlString empty constructor */
+	TiXmlString () : rep_(&nullrep_)
+	{
+	}
+
+	/* TiXmlString copy constructor */
+	TiXmlString ( const TiXmlString & copy) : rep_(0)
+	{
+		init(copy.length());
+		memcpy(start(), copy.data(), length());
+	}
+
+	/* TiXmlString constructor, based on a string */
+	TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(0)
+	{
+		init( static_cast<size_type>( strlen(copy) ));
+		memcpy(start(), copy, length());
+	}
+
+	/* TiXmlString constructor, based on a string */
+	TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(0)
+	{
+		init(len);
+		memcpy(start(), str, len);
+	}
+
+	/* TiXmlString destructor */
+	~TiXmlString ()
+	{
+		quit();
+	}
+
+	TiXmlString& operator = (const char * copy)
+	{
+		return assign( copy, (size_type)strlen(copy));
+	}
+
+	TiXmlString& operator = (const TiXmlString & copy)
+	{
+		return assign(copy.start(), copy.length());
+	}
+
+
+	/* += operator. Maps to append */
+	TiXmlString& operator += (const char * suffix)
+	{
+		return append(suffix, static_cast<size_type>( strlen(suffix) ));
+	}
+
+	/* += operator. Maps to append */
+	TiXmlString& operator += (char single)
+	{
+		return append(&single, 1);
+	}
+
+	/* += operator. Maps to append */
+	TiXmlString& operator += (const TiXmlString & suffix)
+	{
+		return append(suffix.data(), suffix.length());
+	}
+
+
+	/* Convert a TiXmlString into a null-terminated char * */
+	const char * c_str () const { return rep_->str; }
+
+	/* Convert a TiXmlString into a char * (need not be null terminated).*/
+	const char * data () const { return rep_->str; }
+
+	// Return the length of a TiXmlString
+	size_type length () const { return rep_->size; }
+
+	// Alias for length()
+	size_type size () const { return rep_->size; }
+
+	// Checks if a TiXmlString is empty
+	bool empty () const { return rep_->size == 0; }
+
+	// Return capacity of string
+	size_type capacity () const { return rep_->capacity; }
+
+
+	// single char extraction
+	const char& at (size_type index) const
+	{
+		assert( index < length() );
+		return rep_->str[ index ];
+	}
+
+	// [] operator
+	char& operator [] (size_type index) const
+	{
+		assert( index < length() );
+		return rep_->str[ index ];
+	}
+
+	// find a char in a string. Return TiXmlString::npos if not found
+	size_type find (char lookup) const
+	{
+		return find(lookup, 0);
+	}
+
+	// find a char in a string from an offset. Return TiXmlString::npos if not found
+	size_type find (char tofind, size_type offset) const
+	{
+		if (offset >= length()) return npos;
+
+		for (const char* p = c_str() + offset; *p != '\0'; ++p)
+		{
+		   if (*p == tofind) return static_cast< size_type >( p - c_str() );
+		}
+		return npos;
+	}
+
+	void clear ()
+	{
+		/*Lee:
+		  The original was just too strange, though correct:
+		  	TiXmlString().swap(*this);
+		  Instead use the quit & re-init: */
+		quit();
+		init(0,0);
+	}
+
+	/*	Function to reserve a big amount of data when we know we'll need it. Be aware that this
+		function DOES NOT clear the content of the TiXmlString if any exists.
+	*/
+	void reserve (size_type cap);
+
+	TiXmlString& assign (const char* str, size_type len);
+
+	TiXmlString& append (const char* str, size_type len);
+
+	void swap (TiXmlString& other)
+	{
+		Rep* r = rep_;
+		rep_ = other.rep_;
+		other.rep_ = r;
+	}
+
+  private:
+
+	void init(size_type sz) { init(sz, sz); }
+	void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; }
+	char* start() const { return rep_->str; }
+	char* finish() const { return rep_->str + rep_->size; }
+
+	struct Rep
+	{
+		size_type size, capacity;
+		char str[1];
+	};
+
+	void init(size_type sz, size_type cap)
+	{
+		if (cap)
+		{
+			/* Lee: the original form:
+               rep_ = static_cast<Rep*>(operator new(sizeof(Rep) + cap));
+			   doesn't work in some cases of new being overloaded. Switching
+			   to the normal allocation, although use an 'int' for systems
+			   that are overly picky about structure alignment. */
+			const size_type bytesNeeded = sizeof(Rep) + cap;
+			const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int );
+			rep_ = reinterpret_cast<Rep*>( new int[ intsNeeded ] );
+
+			rep_->str[ rep_->size = sz ] = '\0';
+			rep_->capacity = cap;
+		}
+		else
+		{
+			rep_ = &nullrep_;
+		}
+	}
+
+	void quit()
+	{
+		if (rep_ != &nullrep_)
+		{
+			/* The rep_ is really an array of ints. (see the allocator, above).
+			   Cast it back before delete, so the compiler won't incorrectly call destructors. */
+			delete [] ( reinterpret_cast<int*>( rep_ ) );
+		}
+	}
+
+	Rep * rep_;
+	static Rep nullrep_;
+
+} ;
+
+
+inline bool operator == (const TiXmlString & a, const TiXmlString & b)
+{
+	return    ( a.length() == b.length() ) /**< optimization on some platforms */
+	       && ( strcmp(a.c_str(), b.c_str()) == 0 ); /**< actual compare */
+}
+inline bool operator < (const TiXmlString & a, const TiXmlString & b)
+{
+	return strcmp(a.c_str(), b.c_str()) < 0;
+}
+
+inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); }
+inline bool operator >  (const TiXmlString & a, const TiXmlString & b) { return b < a; }
+inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); }
+inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); }
+
+inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; }
+inline bool operator == (const char* a, const TiXmlString & b) { return b == a; }
+inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); }
+inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); }
+
+TiXmlString operator + (const TiXmlString & a, const TiXmlString & b);
+TiXmlString operator + (const TiXmlString & a, const char* b);
+TiXmlString operator + (const char* a, const TiXmlString & b);
+
+
+/*
+   TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString.
+   Only the operators that we need for TinyXML have been developped.
+*/
+class TiXmlOutStream : public TiXmlString
+{
+public :
+
+	/* TiXmlOutStream << operator. */
+	TiXmlOutStream & operator << (const TiXmlString & in)
+	{
+		*this += in;
+		return *this;
+	}
+
+	/* TiXmlOutStream << operator. */
+	TiXmlOutStream & operator << (const char * in)
+	{
+		*this += in;
+		return *this;
+	}
+
+} ;
+
+#endif	// TIXML_STRING_INCLUDED
+#endif	// TIXML_USE_STL
diff --git a/aixml/src/tinyxml.cpp b/aixml/src/tinyxml.cpp
new file mode 100644
index 00000000..9c161dfc
--- /dev/null
+++ b/aixml/src/tinyxml.cpp
@@ -0,0 +1,1886 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code by Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+#include <ctype.h>
+
+#ifdef TIXML_USE_STL
+#include <sstream>
+#include <iostream>
+#endif
+
+#include "tinyxml.h"
+
+FILE* TiXmlFOpen( const char* filename, const char* mode );
+
+bool TiXmlBase::condenseWhiteSpace = true;
+
+// Microsoft compiler security
+FILE* TiXmlFOpen( const char* filename, const char* mode )
+{
+	#if defined(_MSC_VER) && (_MSC_VER >= 1400 )
+		FILE* fp = 0;
+		errno_t err = fopen_s( &fp, filename, mode );
+		if ( !err && fp )
+			return fp;
+		return 0;
+	#else
+		return fopen( filename, mode );
+	#endif
+}
+
+void TiXmlBase::EncodeString( const TIXML_STRING& str, TIXML_STRING* outString )
+{
+	int i=0;
+
+	while( i<(int)str.length() )
+	{
+		unsigned char c = (unsigned char) str[i];
+
+		if (    c == '&' 
+		     && i < ( (int)str.length() - 2 )
+			 && str[i+1] == '#'
+			 && str[i+2] == 'x' )
+		{
+			// Hexadecimal character reference.
+			// Pass through unchanged.
+			// &#xA9;	-- copyright symbol, for example.
+			//
+			// The -1 is a bug fix from Rob Laveaux. It keeps
+			// an overflow from happening if there is no ';'.
+			// There are actually 2 ways to exit this loop -
+			// while fails (error case) and break (semicolon found).
+			// However, there is no mechanism (currently) for
+			// this function to return an error.
+			while ( i<(int)str.length()-1 )
+			{
+				outString->append( str.c_str() + i, 1 );
+				++i;
+				if ( str[i] == ';' )
+					break;
+			}
+		}
+		else if ( c == '&' )
+		{
+			outString->append( entity[0].str, entity[0].strLength );
+			++i;
+		}
+		else if ( c == '<' )
+		{
+			outString->append( entity[1].str, entity[1].strLength );
+			++i;
+		}
+		else if ( c == '>' )
+		{
+			outString->append( entity[2].str, entity[2].strLength );
+			++i;
+		}
+		else if ( c == '\"' )
+		{
+			outString->append( entity[3].str, entity[3].strLength );
+			++i;
+		}
+		else if ( c == '\'' )
+		{
+			outString->append( entity[4].str, entity[4].strLength );
+			++i;
+		}
+		else if ( c < 32 )
+		{
+			// Easy pass at non-alpha/numeric/symbol
+			// Below 32 is symbolic.
+			char buf[ 32 ];
+			
+			#if defined(TIXML_SNPRINTF)		
+				TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) );
+			#else
+				sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) );
+			#endif		
+
+			//*ME:	warning C4267: convert 'size_t' to 'int'
+			//*ME:	Int-Cast to make compiler happy ...
+			outString->append( buf, (int)strlen( buf ) );
+			++i;
+		}
+		else
+		{
+			//char realc = (char) c;
+			//outString->append( &realc, 1 );
+			*outString += (char) c;	// somewhat more efficient function call.
+			++i;
+		}
+	}
+}
+
+
+TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase()
+{
+	parent = 0;
+	type = _type;
+	firstChild = 0;
+	lastChild = 0;
+	prev = 0;
+	next = 0;
+}
+
+
+TiXmlNode::~TiXmlNode()
+{
+	TiXmlNode* node = firstChild;
+	TiXmlNode* temp = 0;
+
+	while ( node )
+	{
+		temp = node;
+		node = node->next;
+		delete temp;
+	}	
+}
+
+
+void TiXmlNode::CopyTo( TiXmlNode* target ) const
+{
+	target->SetValue (value.c_str() );
+	target->userData = userData; 
+	target->location = location;
+}
+
+
+void TiXmlNode::Clear()
+{
+	TiXmlNode* node = firstChild;
+	TiXmlNode* temp = 0;
+
+	while ( node )
+	{
+		temp = node;
+		node = node->next;
+		delete temp;
+	}	
+
+	firstChild = 0;
+	lastChild = 0;
+}
+
+
+TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node )
+{
+	assert( node->parent == 0 || node->parent == this );
+	assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() );
+
+	if ( node->Type() == TiXmlNode::TINYXML_DOCUMENT )
+	{
+		delete node;
+		if ( GetDocument() ) 
+			GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	node->parent = this;
+
+	node->prev = lastChild;
+	node->next = 0;
+
+	if ( lastChild )
+		lastChild->next = node;
+	else
+		firstChild = node;			// it was an empty list.
+
+	lastChild = node;
+	return node;
+}
+
+
+TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis )
+{
+	if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT )
+	{
+		if ( GetDocument() ) 
+			GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+	TiXmlNode* node = addThis.Clone();
+	if ( !node )
+		return 0;
+
+	return LinkEndChild( node );
+}
+
+
+TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis )
+{	
+	if ( !beforeThis || beforeThis->parent != this ) {
+		return 0;
+	}
+	if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT )
+	{
+		if ( GetDocument() ) 
+			GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	TiXmlNode* node = addThis.Clone();
+	if ( !node )
+		return 0;
+	node->parent = this;
+
+	node->next = beforeThis;
+	node->prev = beforeThis->prev;
+	if ( beforeThis->prev )
+	{
+		beforeThis->prev->next = node;
+	}
+	else
+	{
+		assert( firstChild == beforeThis );
+		firstChild = node;
+	}
+	beforeThis->prev = node;
+	return node;
+}
+
+
+TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis )
+{
+	if ( !afterThis || afterThis->parent != this ) {
+		return 0;
+	}
+	if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT )
+	{
+		if ( GetDocument() ) 
+			GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	TiXmlNode* node = addThis.Clone();
+	if ( !node )
+		return 0;
+	node->parent = this;
+
+	node->prev = afterThis;
+	node->next = afterThis->next;
+	if ( afterThis->next )
+	{
+		afterThis->next->prev = node;
+	}
+	else
+	{
+		assert( lastChild == afterThis );
+		lastChild = node;
+	}
+	afterThis->next = node;
+	return node;
+}
+
+
+TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis )
+{
+	if ( !replaceThis )
+		return 0;
+
+	if ( replaceThis->parent != this )
+		return 0;
+
+	if ( withThis.ToDocument() ) {
+		// A document can never be a child.	Thanks to Noam.
+		TiXmlDocument* document = GetDocument();
+		if ( document ) 
+			document->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	TiXmlNode* node = withThis.Clone();
+	if ( !node )
+		return 0;
+
+	node->next = replaceThis->next;
+	node->prev = replaceThis->prev;
+
+	if ( replaceThis->next )
+		replaceThis->next->prev = node;
+	else
+		lastChild = node;
+
+	if ( replaceThis->prev )
+		replaceThis->prev->next = node;
+	else
+		firstChild = node;
+
+	delete replaceThis;
+	node->parent = this;
+	return node;
+}
+
+
+bool TiXmlNode::RemoveChild( TiXmlNode* removeThis )
+{
+	if ( !removeThis ) {
+		return false;
+	}
+
+	if ( removeThis->parent != this )
+	{	
+		assert( 0 );
+		return false;
+	}
+
+	if ( removeThis->next )
+		removeThis->next->prev = removeThis->prev;
+	else
+		lastChild = removeThis->prev;
+
+	if ( removeThis->prev )
+		removeThis->prev->next = removeThis->next;
+	else
+		firstChild = removeThis->next;
+
+	delete removeThis;
+	return true;
+}
+
+const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const
+{
+	const TiXmlNode* node;
+	for ( node = firstChild; node; node = node->next )
+	{
+		if ( strcmp( node->Value(), _value ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+
+const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const
+{
+	const TiXmlNode* node;
+	for ( node = lastChild; node; node = node->prev )
+	{
+		if ( strcmp( node->Value(), _value ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+
+const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const
+{
+	if ( !previous )
+	{
+		return FirstChild();
+	}
+	else
+	{
+		assert( previous->parent == this );
+		return previous->NextSibling();
+	}
+}
+
+
+const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const
+{
+	if ( !previous )
+	{
+		return FirstChild( val );
+	}
+	else
+	{
+		assert( previous->parent == this );
+		return previous->NextSibling( val );
+	}
+}
+
+
+const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const 
+{
+	const TiXmlNode* node;
+	for ( node = next; node; node = node->next )
+	{
+		if ( strcmp( node->Value(), _value ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+
+const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const
+{
+	const TiXmlNode* node;
+	for ( node = prev; node; node = node->prev )
+	{
+		if ( strcmp( node->Value(), _value ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+
+void TiXmlElement::RemoveAttribute( const char * name )
+{
+    #ifdef TIXML_USE_STL
+	TIXML_STRING str( name );
+	TiXmlAttribute* node = attributeSet.Find( str );
+	#else
+	TiXmlAttribute* node = attributeSet.Find( name );
+	#endif
+	if ( node )
+	{
+		attributeSet.Remove( node );
+		delete node;
+	}
+}
+
+const TiXmlElement* TiXmlNode::FirstChildElement() const
+{
+	const TiXmlNode* node;
+
+	for (	node = FirstChild();
+			node;
+			node = node->NextSibling() )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const
+{
+	const TiXmlNode* node;
+
+	for (	node = FirstChild( _value );
+			node;
+			node = node->NextSibling( _value ) )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+const TiXmlElement* TiXmlNode::NextSiblingElement() const
+{
+	const TiXmlNode* node;
+
+	for (	node = NextSibling();
+			node;
+			node = node->NextSibling() )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const
+{
+	const TiXmlNode* node;
+
+	for (	node = NextSibling( _value );
+			node;
+			node = node->NextSibling( _value ) )
+	{
+		if ( node->ToElement() )
+			return node->ToElement();
+	}
+	return 0;
+}
+
+
+const TiXmlDocument* TiXmlNode::GetDocument() const
+{
+	const TiXmlNode* node;
+
+	for( node = this; node; node = node->parent )
+	{
+		if ( node->ToDocument() )
+			return node->ToDocument();
+	}
+	return 0;
+}
+
+
+TiXmlElement::TiXmlElement (const char * _value)
+	: TiXmlNode( TiXmlNode::TINYXML_ELEMENT )
+{
+	firstChild = lastChild = 0;
+	value = _value;
+}
+
+
+#ifdef TIXML_USE_STL
+TiXmlElement::TiXmlElement( const std::string& _value ) 
+	: TiXmlNode( TiXmlNode::TINYXML_ELEMENT )
+{
+	firstChild = lastChild = 0;
+	value = _value;
+}
+#endif
+
+
+TiXmlElement::TiXmlElement( const TiXmlElement& copy)
+	: TiXmlNode( TiXmlNode::TINYXML_ELEMENT )
+{
+	firstChild = lastChild = 0;
+	copy.CopyTo( this );	
+}
+
+
+TiXmlElement& TiXmlElement::operator=( const TiXmlElement& base )
+{
+	ClearThis();
+	base.CopyTo( this );
+	return *this;
+}
+
+
+TiXmlElement::~TiXmlElement()
+{
+	ClearThis();
+}
+
+
+void TiXmlElement::ClearThis()
+{
+	Clear();
+	while( attributeSet.First() )
+	{
+		TiXmlAttribute* node = attributeSet.First();
+		attributeSet.Remove( node );
+		delete node;
+	}
+}
+
+
+const char* TiXmlElement::Attribute( const char* name ) const
+{
+	const TiXmlAttribute* node = attributeSet.Find( name );
+	if ( node )
+		return node->Value();
+	return 0;
+}
+
+
+#ifdef TIXML_USE_STL
+const std::string* TiXmlElement::Attribute( const std::string& name ) const
+{
+	const TiXmlAttribute* attrib = attributeSet.Find( name );
+	if ( attrib )
+		return &attrib->ValueStr();
+	return 0;
+}
+#endif
+
+
+const char* TiXmlElement::Attribute( const char* name, int* i ) const
+{
+	const TiXmlAttribute* attrib = attributeSet.Find( name );
+	const char* result = 0;
+
+	if ( attrib ) {
+		result = attrib->Value();
+		if ( i ) {
+			attrib->QueryIntValue( i );
+		}
+	}
+	return result;
+}
+
+
+#ifdef TIXML_USE_STL
+const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const
+{
+	const TiXmlAttribute* attrib = attributeSet.Find( name );
+	const std::string* result = 0;
+
+	if ( attrib ) {
+		result = &attrib->ValueStr();
+		if ( i ) {
+			attrib->QueryIntValue( i );
+		}
+	}
+	return result;
+}
+#endif
+
+
+const char* TiXmlElement::Attribute( const char* name, double* d ) const
+{
+	const TiXmlAttribute* attrib = attributeSet.Find( name );
+	const char* result = 0;
+
+	if ( attrib ) {
+		result = attrib->Value();
+		if ( d ) {
+			attrib->QueryDoubleValue( d );
+		}
+	}
+	return result;
+}
+
+
+#ifdef TIXML_USE_STL
+const std::string* TiXmlElement::Attribute( const std::string& name, double* d ) const
+{
+	const TiXmlAttribute* attrib = attributeSet.Find( name );
+	const std::string* result = 0;
+
+	if ( attrib ) {
+		result = &attrib->ValueStr();
+		if ( d ) {
+			attrib->QueryDoubleValue( d );
+		}
+	}
+	return result;
+}
+#endif
+
+
+int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const
+{
+	const TiXmlAttribute* attrib = attributeSet.Find( name );
+	if ( !attrib )
+		return TIXML_NO_ATTRIBUTE;
+	return attrib->QueryIntValue( ival );
+}
+
+
+int TiXmlElement::QueryUnsignedAttribute( const char* name, unsigned* value ) const
+{
+	const TiXmlAttribute* node = attributeSet.Find( name );
+	if ( !node )
+		return TIXML_NO_ATTRIBUTE;
+
+	int ival = 0;
+	int result = node->QueryIntValue( &ival );
+	*value = (unsigned)ival;
+	return result;
+}
+
+
+int TiXmlElement::QueryBoolAttribute( const char* name, bool* bval ) const
+{
+	const TiXmlAttribute* node = attributeSet.Find( name );
+	if ( !node )
+		return TIXML_NO_ATTRIBUTE;
+	
+	int result = TIXML_WRONG_TYPE;
+	if (    StringEqual( node->Value(), "true", true, TIXML_ENCODING_UNKNOWN ) 
+		 || StringEqual( node->Value(), "yes", true, TIXML_ENCODING_UNKNOWN ) 
+		 || StringEqual( node->Value(), "1", true, TIXML_ENCODING_UNKNOWN ) ) 
+	{
+		*bval = true;
+		result = TIXML_SUCCESS;
+	}
+	else if (    StringEqual( node->Value(), "false", true, TIXML_ENCODING_UNKNOWN ) 
+			  || StringEqual( node->Value(), "no", true, TIXML_ENCODING_UNKNOWN ) 
+			  || StringEqual( node->Value(), "0", true, TIXML_ENCODING_UNKNOWN ) ) 
+	{
+		*bval = false;
+		result = TIXML_SUCCESS;
+	}
+	return result;
+}
+
+
+
+#ifdef TIXML_USE_STL
+int TiXmlElement::QueryIntAttribute( const std::string& name, int* ival ) const
+{
+	const TiXmlAttribute* attrib = attributeSet.Find( name );
+	if ( !attrib )
+		return TIXML_NO_ATTRIBUTE;
+	return attrib->QueryIntValue( ival );
+}
+#endif
+
+
+int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const
+{
+	const TiXmlAttribute* attrib = attributeSet.Find( name );
+	if ( !attrib )
+		return TIXML_NO_ATTRIBUTE;
+	return attrib->QueryDoubleValue( dval );
+}
+
+
+#ifdef TIXML_USE_STL
+int TiXmlElement::QueryDoubleAttribute( const std::string& name, double* dval ) const
+{
+	const TiXmlAttribute* attrib = attributeSet.Find( name );
+	if ( !attrib )
+		return TIXML_NO_ATTRIBUTE;
+	return attrib->QueryDoubleValue( dval );
+}
+#endif
+
+
+void TiXmlElement::SetAttribute( const char * name, int val )
+{	
+	TiXmlAttribute* attrib = attributeSet.FindOrCreate( name );
+	if ( attrib ) {
+		attrib->SetIntValue( val );
+	}
+}
+
+
+#ifdef TIXML_USE_STL
+void TiXmlElement::SetAttribute( const std::string& name, int val )
+{	
+	TiXmlAttribute* attrib = attributeSet.FindOrCreate( name );
+	if ( attrib ) {
+		attrib->SetIntValue( val );
+	}
+}
+#endif
+
+
+void TiXmlElement::SetDoubleAttribute( const char * name, double val )
+{	
+	TiXmlAttribute* attrib = attributeSet.FindOrCreate( name );
+	if ( attrib ) {
+		attrib->SetDoubleValue( val );
+	}
+}
+
+
+#ifdef TIXML_USE_STL
+void TiXmlElement::SetDoubleAttribute( const std::string& name, double val )
+{	
+	TiXmlAttribute* attrib = attributeSet.FindOrCreate( name );
+	if ( attrib ) {
+		attrib->SetDoubleValue( val );
+	}
+}
+#endif 
+
+
+void TiXmlElement::SetAttribute( const char * cname, const char * cvalue )
+{
+	TiXmlAttribute* attrib = attributeSet.FindOrCreate( cname );
+	if ( attrib ) {
+		attrib->SetValue( cvalue );
+	}
+}
+
+
+#ifdef TIXML_USE_STL
+void TiXmlElement::SetAttribute( const std::string& _name, const std::string& _value )
+{
+	TiXmlAttribute* attrib = attributeSet.FindOrCreate( _name );
+	if ( attrib ) {
+		attrib->SetValue( _value );
+	}
+}
+#endif
+
+
+void TiXmlElement::Print( FILE* cfile, int depth ) const
+{
+	int i;
+	assert( cfile );
+	for ( i=0; i<depth; i++ ) {
+		fprintf( cfile, "    " );
+	}
+
+	fprintf( cfile, "<%s", value.c_str() );
+
+	const TiXmlAttribute* attrib;
+	for ( attrib = attributeSet.First(); attrib; attrib = attrib->Next() )
+	{
+		fprintf( cfile, " " );
+		attrib->Print( cfile, depth );
+	}
+
+	// There are 3 different formatting approaches:
+	// 1) An element without children is printed as a <foo /> node
+	// 2) An element with only a text child is printed as <foo> text </foo>
+	// 3) An element with children is printed on multiple lines.
+	TiXmlNode* node;
+	if ( !firstChild )
+	{
+		fprintf( cfile, " />" );
+	}
+	else if ( firstChild == lastChild && firstChild->ToText() )
+	{
+		fprintf( cfile, ">" );
+		firstChild->Print( cfile, depth + 1 );
+		fprintf( cfile, "</%s>", value.c_str() );
+	}
+	else
+	{
+		fprintf( cfile, ">" );
+
+		for ( node = firstChild; node; node=node->NextSibling() )
+		{
+			if ( !node->ToText() )
+			{
+				fprintf( cfile, "\n" );
+			}
+			node->Print( cfile, depth+1 );
+		}
+		fprintf( cfile, "\n" );
+		for( i=0; i<depth; ++i ) {
+			fprintf( cfile, "    " );
+		}
+		fprintf( cfile, "</%s>", value.c_str() );
+	}
+}
+
+
+void TiXmlElement::CopyTo( TiXmlElement* target ) const
+{
+	// superclass:
+	TiXmlNode::CopyTo( target );
+
+	// Element class: 
+	// Clone the attributes, then clone the children.
+	const TiXmlAttribute* attribute = 0;
+	for(	attribute = attributeSet.First();
+	attribute;
+	attribute = attribute->Next() )
+	{
+		target->SetAttribute( attribute->Name(), attribute->Value() );
+	}
+
+	TiXmlNode* node = 0;
+	for ( node = firstChild; node; node = node->NextSibling() )
+	{
+		target->LinkEndChild( node->Clone() );
+	}
+}
+
+bool TiXmlElement::Accept( TiXmlVisitor* visitor ) const
+{
+	if ( visitor->VisitEnter( *this, attributeSet.First() ) ) 
+	{
+		for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() )
+		{
+			if ( !node->Accept( visitor ) )
+				break;
+		}
+	}
+	return visitor->VisitExit( *this );
+}
+
+
+TiXmlNode* TiXmlElement::Clone() const
+{
+	TiXmlElement* clone = new TiXmlElement( Value() );
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+const char* TiXmlElement::GetText() const
+{
+	const TiXmlNode* child = this->FirstChild();
+	if ( child ) {
+		const TiXmlText* childText = child->ToText();
+		if ( childText ) {
+			return childText->Value();
+		}
+	}
+	return 0;
+}
+
+
+TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT )
+{
+	tabsize = 4;
+	useMicrosoftBOM = false;
+	ClearError();
+}
+
+TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT )
+{
+	tabsize = 4;
+	useMicrosoftBOM = false;
+	value = documentName;
+	ClearError();
+}
+
+
+#ifdef TIXML_USE_STL
+TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT )
+{
+	tabsize = 4;
+	useMicrosoftBOM = false;
+    value = documentName;
+	ClearError();
+}
+#endif
+
+
+TiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT )
+{
+	copy.CopyTo( this );
+}
+
+
+TiXmlDocument& TiXmlDocument::operator=( const TiXmlDocument& copy )
+{
+	Clear();
+	copy.CopyTo( this );
+	return *this;
+}
+
+
+bool TiXmlDocument::LoadFile( TiXmlEncoding encoding )
+{
+	return LoadFile( Value(), encoding );
+}
+
+
+bool TiXmlDocument::SaveFile() const
+{
+	return SaveFile( Value() );
+}
+
+bool TiXmlDocument::LoadFile( const char* _filename, TiXmlEncoding encoding )
+{
+	TIXML_STRING filename( _filename );
+	value = filename;
+
+	// reading in binary mode so that tinyxml can normalize the EOL
+	FILE* file = TiXmlFOpen( value.c_str (), "rb" );	
+
+	if ( file )
+	{
+		bool result = LoadFile( file, encoding );
+		fclose( file );
+		return result;
+	}
+	else
+	{
+		SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return false;
+	}
+}
+
+bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding )
+{
+	if ( !file ) 
+	{
+		SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return false;
+	}
+
+	// Delete the existing data:
+	Clear();
+	location.Clear();
+
+	// Get the file size, so we can pre-allocate the string. HUGE speed impact.
+	long length = 0;
+	fseek( file, 0, SEEK_END );
+	length = ftell( file );
+	fseek( file, 0, SEEK_SET );
+
+	// Strange case, but good to handle up front.
+	if ( length <= 0 )
+	{
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return false;
+	}
+
+	// Subtle bug here. TinyXml did use fgets. But from the XML spec:
+	// 2.11 End-of-Line Handling
+	// <snip>
+	// <quote>
+	// ...the XML processor MUST behave as if it normalized all line breaks in external 
+	// parsed entities (including the document entity) on input, before parsing, by translating 
+	// both the two-character sequence #xD #xA and any #xD that is not followed by #xA to 
+	// a single #xA character.
+	// </quote>
+	//
+	// It is not clear fgets does that, and certainly isn't clear it works cross platform. 
+	// Generally, you expect fgets to translate from the convention of the OS to the c/unix
+	// convention, and not work generally.
+
+	/*
+	while( fgets( buf, sizeof(buf), file ) )
+	{
+		data += buf;
+	}
+	*/
+
+	char* buf = new char[ length+1 ];
+	buf[0] = 0;
+
+	if ( fread( buf, length, 1, file ) != 1 ) {
+		delete [] buf;
+		SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return false;
+	}
+
+	// Process the buffer in place to normalize new lines. (See comment above.)
+	// Copies from the 'p' to 'q' pointer, where p can advance faster if
+	// a newline-carriage return is hit.
+	//
+	// Wikipedia:
+	// Systems based on ASCII or a compatible character set use either LF  (Line feed, '\n', 0x0A, 10 in decimal) or 
+	// CR (Carriage return, '\r', 0x0D, 13 in decimal) individually, or CR followed by LF (CR+LF, 0x0D 0x0A)...
+	//		* LF:    Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD, etc.), BeOS, Amiga, RISC OS, and others
+    //		* CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS
+    //		* CR:    Commodore 8-bit machines, Apple II family, Mac OS up to version 9 and OS-9
+
+	const char* p = buf;	// the read head
+	char* q = buf;			// the write head
+	const char CR = 0x0d;
+	const char LF = 0x0a;
+
+	buf[length] = 0;
+	while( *p ) {
+		assert( p < (buf+length) );
+		assert( q <= (buf+length) );
+		assert( q <= p );
+
+		if ( *p == CR ) {
+			*q++ = LF;
+			p++;
+			if ( *p == LF ) {		// check for CR+LF (and skip LF)
+				p++;
+			}
+		}
+		else {
+			*q++ = *p++;
+		}
+	}
+	assert( q <= (buf+length) );
+	*q = 0;
+
+	Parse( buf, 0, encoding );
+
+	delete [] buf;
+	return !Error();
+}
+
+
+bool TiXmlDocument::SaveFile( const char * filename ) const
+{
+	// The old c stuff lives on...
+	FILE* fp = TiXmlFOpen( filename, "w" );
+	if ( fp )
+	{
+		bool result = SaveFile( fp );
+		fclose( fp );
+		return result;
+	}
+	return false;
+}
+
+
+bool TiXmlDocument::SaveFile( FILE* fp ) const
+{
+	if ( useMicrosoftBOM ) 
+	{
+		const unsigned char TIXML_UTF_LEAD_0 = 0xefU;
+		const unsigned char TIXML_UTF_LEAD_1 = 0xbbU;
+		const unsigned char TIXML_UTF_LEAD_2 = 0xbfU;
+
+		fputc( TIXML_UTF_LEAD_0, fp );
+		fputc( TIXML_UTF_LEAD_1, fp );
+		fputc( TIXML_UTF_LEAD_2, fp );
+	}
+	Print( fp, 0 );
+	return (ferror(fp) == 0);
+}
+
+
+void TiXmlDocument::CopyTo( TiXmlDocument* target ) const
+{
+	TiXmlNode::CopyTo( target );
+
+	target->error = error;
+	target->errorId = errorId;
+	target->errorDesc = errorDesc;
+	target->tabsize = tabsize;
+	target->errorLocation = errorLocation;
+	target->useMicrosoftBOM = useMicrosoftBOM;
+
+	TiXmlNode* node = 0;
+	for ( node = firstChild; node; node = node->NextSibling() )
+	{
+		target->LinkEndChild( node->Clone() );
+	}	
+}
+
+
+TiXmlNode* TiXmlDocument::Clone() const
+{
+	TiXmlDocument* clone = new TiXmlDocument();
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+void TiXmlDocument::Print( FILE* cfile, int depth ) const
+{
+	assert( cfile );
+	for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() )
+	{
+		node->Print( cfile, depth );
+		fprintf( cfile, "\n" );
+	}
+}
+
+
+bool TiXmlDocument::Accept( TiXmlVisitor* visitor ) const
+{
+	if ( visitor->VisitEnter( *this ) )
+	{
+		for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() )
+		{
+			if ( !node->Accept( visitor ) )
+				break;
+		}
+	}
+	return visitor->VisitExit( *this );
+}
+
+
+const TiXmlAttribute* TiXmlAttribute::Next() const
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( next->value.empty() && next->name.empty() )
+		return 0;
+	return next;
+}
+
+/*
+TiXmlAttribute* TiXmlAttribute::Next()
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( next->value.empty() && next->name.empty() )
+		return 0;
+	return next;
+}
+*/
+
+const TiXmlAttribute* TiXmlAttribute::Previous() const
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( prev->value.empty() && prev->name.empty() )
+		return 0;
+	return prev;
+}
+
+/*
+TiXmlAttribute* TiXmlAttribute::Previous()
+{
+	// We are using knowledge of the sentinel. The sentinel
+	// have a value or name.
+	if ( prev->value.empty() && prev->name.empty() )
+		return 0;
+	return prev;
+}
+*/
+
+void TiXmlAttribute::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const
+{
+	TIXML_STRING n, v;
+
+	EncodeString( name, &n );
+	EncodeString( value, &v );
+
+	if (value.find ('\"') == TIXML_STRING::npos) {
+		if ( cfile ) {
+			fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() );
+		}
+		if ( str ) {
+			(*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\"";
+		}
+	}
+	else {
+		if ( cfile ) {
+			fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() );
+		}
+		if ( str ) {
+			(*str) += n; (*str) += "='"; (*str) += v; (*str) += "'";
+		}
+	}
+}
+
+
+int TiXmlAttribute::QueryIntValue( int* ival ) const
+{
+	if ( TIXML_SSCANF( value.c_str(), "%d", ival ) == 1 )
+		return TIXML_SUCCESS;
+	return TIXML_WRONG_TYPE;
+}
+
+int TiXmlAttribute::QueryDoubleValue( double* dval ) const
+{
+	if ( TIXML_SSCANF( value.c_str(), "%lf", dval ) == 1 )
+		return TIXML_SUCCESS;
+	return TIXML_WRONG_TYPE;
+}
+
+void TiXmlAttribute::SetIntValue( int _value )
+{
+	char buf [64];
+	#if defined(TIXML_SNPRINTF)		
+		TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value);
+	#else
+		sprintf (buf, "%d", _value);
+	#endif
+	SetValue (buf);
+}
+
+void TiXmlAttribute::SetDoubleValue( double _value )
+{
+	char buf [256];
+	#if defined(TIXML_SNPRINTF)		
+		TIXML_SNPRINTF( buf, sizeof(buf), "%g", _value);
+	#else
+		sprintf (buf, "%g", _value);
+	#endif
+	SetValue (buf);
+}
+
+int TiXmlAttribute::IntValue() const
+{
+	return atoi (value.c_str ());
+}
+
+double  TiXmlAttribute::DoubleValue() const
+{
+	return atof (value.c_str ());
+}
+
+
+TiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT )
+{
+	copy.CopyTo( this );
+}
+
+
+TiXmlComment& TiXmlComment::operator=( const TiXmlComment& base )
+{
+	Clear();
+	base.CopyTo( this );
+	return *this;
+}
+
+
+void TiXmlComment::Print( FILE* cfile, int depth ) const
+{
+	assert( cfile );
+	for ( int i=0; i<depth; i++ )
+	{
+		fprintf( cfile,  "    " );
+	}
+	fprintf( cfile, "<!--%s-->", value.c_str() );
+}
+
+
+void TiXmlComment::CopyTo( TiXmlComment* target ) const
+{
+	TiXmlNode::CopyTo( target );
+}
+
+
+bool TiXmlComment::Accept( TiXmlVisitor* visitor ) const
+{
+	return visitor->Visit( *this );
+}
+
+
+TiXmlNode* TiXmlComment::Clone() const
+{
+	TiXmlComment* clone = new TiXmlComment();
+
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+void TiXmlText::Print( FILE* cfile, int depth ) const
+{
+	assert( cfile );
+	if ( cdata )
+	{
+		int i;
+		fprintf( cfile, "\n" );
+		for ( i=0; i<depth; i++ ) {
+			fprintf( cfile, "    " );
+		}
+		fprintf( cfile, "<![CDATA[%s]]>\n", value.c_str() );	// unformatted output
+	}
+	else
+	{
+		TIXML_STRING buffer;
+		EncodeString( value, &buffer );
+		fprintf( cfile, "%s", buffer.c_str() );
+	}
+}
+
+
+void TiXmlText::CopyTo( TiXmlText* target ) const
+{
+	TiXmlNode::CopyTo( target );
+	target->cdata = cdata;
+}
+
+
+bool TiXmlText::Accept( TiXmlVisitor* visitor ) const
+{
+	return visitor->Visit( *this );
+}
+
+
+TiXmlNode* TiXmlText::Clone() const
+{	
+	TiXmlText* clone = 0;
+	clone = new TiXmlText( "" );
+
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+TiXmlDeclaration::TiXmlDeclaration( const char * _version,
+									const char * _encoding,
+									const char * _standalone )
+	: TiXmlNode( TiXmlNode::TINYXML_DECLARATION )
+{
+	version = _version;
+	encoding = _encoding;
+	standalone = _standalone;
+}
+
+
+#ifdef TIXML_USE_STL
+TiXmlDeclaration::TiXmlDeclaration(	const std::string& _version,
+									const std::string& _encoding,
+									const std::string& _standalone )
+	: TiXmlNode( TiXmlNode::TINYXML_DECLARATION )
+{
+	version = _version;
+	encoding = _encoding;
+	standalone = _standalone;
+}
+#endif
+
+
+TiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy )
+	: TiXmlNode( TiXmlNode::TINYXML_DECLARATION )
+{
+	copy.CopyTo( this );	
+}
+
+
+TiXmlDeclaration& TiXmlDeclaration::operator=( const TiXmlDeclaration& copy )
+{
+	Clear();
+	copy.CopyTo( this );
+	return *this;
+}
+
+
+void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const
+{
+	if ( cfile ) fprintf( cfile, "<?xml " );
+	if ( str )	 (*str) += "<?xml ";
+
+	if ( !version.empty() ) {
+		if ( cfile ) fprintf (cfile, "version=\"%s\" ", version.c_str ());
+		if ( str ) { (*str) += "version=\""; (*str) += version; (*str) += "\" "; }
+	}
+	if ( !encoding.empty() ) {
+		if ( cfile ) fprintf (cfile, "encoding=\"%s\" ", encoding.c_str ());
+		if ( str ) { (*str) += "encoding=\""; (*str) += encoding; (*str) += "\" "; }
+	}
+	if ( !standalone.empty() ) {
+		if ( cfile ) fprintf (cfile, "standalone=\"%s\" ", standalone.c_str ());
+		if ( str ) { (*str) += "standalone=\""; (*str) += standalone; (*str) += "\" "; }
+	}
+	if ( cfile ) fprintf( cfile, "?>" );
+	if ( str )	 (*str) += "?>";
+}
+
+
+void TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const
+{
+	TiXmlNode::CopyTo( target );
+
+	target->version = version;
+	target->encoding = encoding;
+	target->standalone = standalone;
+}
+
+
+bool TiXmlDeclaration::Accept( TiXmlVisitor* visitor ) const
+{
+	return visitor->Visit( *this );
+}
+
+
+TiXmlNode* TiXmlDeclaration::Clone() const
+{	
+	TiXmlDeclaration* clone = new TiXmlDeclaration();
+
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+void TiXmlUnknown::Print( FILE* cfile, int depth ) const
+{
+	for ( int i=0; i<depth; i++ )
+		fprintf( cfile, "    " );
+	fprintf( cfile, "<%s>", value.c_str() );
+}
+
+
+void TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const
+{
+	TiXmlNode::CopyTo( target );
+}
+
+
+bool TiXmlUnknown::Accept( TiXmlVisitor* visitor ) const
+{
+	return visitor->Visit( *this );
+}
+
+
+TiXmlNode* TiXmlUnknown::Clone() const
+{
+	TiXmlUnknown* clone = new TiXmlUnknown();
+
+	if ( !clone )
+		return 0;
+
+	CopyTo( clone );
+	return clone;
+}
+
+
+TiXmlAttributeSet::TiXmlAttributeSet()
+{
+	sentinel.next = &sentinel;
+	sentinel.prev = &sentinel;
+}
+
+
+TiXmlAttributeSet::~TiXmlAttributeSet()
+{
+	assert( sentinel.next == &sentinel );
+	assert( sentinel.prev == &sentinel );
+}
+
+
+void TiXmlAttributeSet::Add( TiXmlAttribute* addMe )
+{
+    #ifdef TIXML_USE_STL
+	assert( !Find( TIXML_STRING( addMe->Name() ) ) );	// Shouldn't be multiply adding to the set.
+	#else
+	assert( !Find( addMe->Name() ) );	// Shouldn't be multiply adding to the set.
+	#endif
+
+	addMe->next = &sentinel;
+	addMe->prev = sentinel.prev;
+
+	sentinel.prev->next = addMe;
+	sentinel.prev      = addMe;
+}
+
+void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe )
+{
+	TiXmlAttribute* node;
+
+	for( node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( node == removeMe )
+		{
+			node->prev->next = node->next;
+			node->next->prev = node->prev;
+			node->next = 0;
+			node->prev = 0;
+			return;
+		}
+	}
+	assert( 0 );		// we tried to remove a non-linked attribute.
+}
+
+
+#ifdef TIXML_USE_STL
+TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const
+{
+	for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( node->name == name )
+			return node;
+	}
+	return 0;
+}
+
+TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const std::string& _name )
+{
+	TiXmlAttribute* attrib = Find( _name );
+	if ( !attrib ) {
+		attrib = new TiXmlAttribute();
+		Add( attrib );
+		attrib->SetName( _name );
+	}
+	return attrib;
+}
+#endif
+
+
+TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) const
+{
+	for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next )
+	{
+		if ( strcmp( node->name.c_str(), name ) == 0 )
+			return node;
+	}
+	return 0;
+}
+
+
+TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const char* _name )
+{
+	TiXmlAttribute* attrib = Find( _name );
+	if ( !attrib ) {
+		attrib = new TiXmlAttribute();
+		Add( attrib );
+		attrib->SetName( _name );
+	}
+	return attrib;
+}
+
+
+#ifdef TIXML_USE_STL	
+std::istream& operator>> (std::istream & in, TiXmlNode & base)
+{
+	TIXML_STRING tag;
+	tag.reserve( 8 * 1000 );
+	base.StreamIn( &in, &tag );
+
+	base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING );
+	return in;
+}
+#endif
+
+
+#ifdef TIXML_USE_STL	
+std::ostream& operator<< (std::ostream & out, const TiXmlNode & base)
+{
+	TiXmlPrinter printer;
+	printer.SetStreamPrinting();
+	base.Accept( &printer );
+	out << printer.Str();
+
+	return out;
+}
+
+
+std::string& operator<< (std::string& out, const TiXmlNode& base )
+{
+	TiXmlPrinter printer;
+	printer.SetStreamPrinting();
+	base.Accept( &printer );
+	out.append( printer.Str() );
+
+	return out;
+}
+#endif
+
+
+TiXmlHandle TiXmlHandle::FirstChild() const
+{
+	if ( node )
+	{
+		TiXmlNode* child = node->FirstChild();
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::FirstChild( const char * value ) const
+{
+	if ( node )
+	{
+		TiXmlNode* child = node->FirstChild( value );
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::FirstChildElement() const
+{
+	if ( node )
+	{
+		TiXmlElement* child = node->FirstChildElement();
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const
+{
+	if ( node )
+	{
+		TiXmlElement* child = node->FirstChildElement( value );
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::Child( int count ) const
+{
+	if ( node )
+	{
+		int i;
+		TiXmlNode* child = node->FirstChild();
+		for (	i=0;
+				child && i<count;
+				child = child->NextSibling(), ++i )
+		{
+			// nothing
+		}
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::Child( const char* value, int count ) const
+{
+	if ( node )
+	{
+		int i;
+		TiXmlNode* child = node->FirstChild( value );
+		for (	i=0;
+				child && i<count;
+				child = child->NextSibling( value ), ++i )
+		{
+			// nothing
+		}
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::ChildElement( int count ) const
+{
+	if ( node )
+	{
+		int i;
+		TiXmlElement* child = node->FirstChildElement();
+		for (	i=0;
+				child && i<count;
+				child = child->NextSiblingElement(), ++i )
+		{
+			// nothing
+		}
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+TiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const
+{
+	if ( node )
+	{
+		int i;
+		TiXmlElement* child = node->FirstChildElement( value );
+		for (	i=0;
+				child && i<count;
+				child = child->NextSiblingElement( value ), ++i )
+		{
+			// nothing
+		}
+		if ( child )
+			return TiXmlHandle( child );
+	}
+	return TiXmlHandle( 0 );
+}
+
+
+bool TiXmlPrinter::VisitEnter( const TiXmlDocument& )
+{
+	return true;
+}
+
+bool TiXmlPrinter::VisitExit( const TiXmlDocument& )
+{
+	return true;
+}
+
+bool TiXmlPrinter::VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute )
+{
+	DoIndent();
+	buffer += "<";
+	buffer += element.Value();
+
+	for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() )
+	{
+		buffer += " ";
+		attrib->Print( 0, 0, &buffer );
+	}
+
+	if ( !element.FirstChild() ) 
+	{
+		buffer += " />";
+		DoLineBreak();
+	}
+	else 
+	{
+		buffer += ">";
+		if (    element.FirstChild()->ToText()
+			  && element.LastChild() == element.FirstChild()
+			  && element.FirstChild()->ToText()->CDATA() == false )
+		{
+			simpleTextPrint = true;
+			// no DoLineBreak()!
+		}
+		else
+		{
+			DoLineBreak();
+		}
+	}
+	++depth;	
+	return true;
+}
+
+
+bool TiXmlPrinter::VisitExit( const TiXmlElement& element )
+{
+	--depth;
+	if ( !element.FirstChild() ) 
+	{
+		// nothing.
+	}
+	else 
+	{
+		if ( simpleTextPrint )
+		{
+			simpleTextPrint = false;
+		}
+		else
+		{
+			DoIndent();
+		}
+		buffer += "</";
+		buffer += element.Value();
+		buffer += ">";
+		DoLineBreak();
+	}
+	return true;
+}
+
+
+bool TiXmlPrinter::Visit( const TiXmlText& text )
+{
+	if ( text.CDATA() )
+	{
+		DoIndent();
+		buffer += "<![CDATA[";
+		buffer += text.Value();
+		buffer += "]]>";
+		DoLineBreak();
+	}
+	else if ( simpleTextPrint )
+	{
+		TIXML_STRING str;
+		TiXmlBase::EncodeString( text.ValueTStr(), &str );
+		buffer += str;
+	}
+	else
+	{
+		DoIndent();
+		TIXML_STRING str;
+		TiXmlBase::EncodeString( text.ValueTStr(), &str );
+		buffer += str;
+		DoLineBreak();
+	}
+	return true;
+}
+
+
+bool TiXmlPrinter::Visit( const TiXmlDeclaration& declaration )
+{
+	DoIndent();
+	declaration.Print( 0, 0, &buffer );
+	DoLineBreak();
+	return true;
+}
+
+
+bool TiXmlPrinter::Visit( const TiXmlComment& comment )
+{
+	DoIndent();
+	buffer += "<!--";
+	buffer += comment.Value();
+	buffer += "-->";
+	DoLineBreak();
+	return true;
+}
+
+
+bool TiXmlPrinter::Visit( const TiXmlUnknown& unknown )
+{
+	DoIndent();
+	buffer += "<";
+	buffer += unknown.Value();
+	buffer += ">";
+	DoLineBreak();
+	return true;
+}
+
diff --git a/aixml/src/tinyxml.h b/aixml/src/tinyxml.h
new file mode 100644
index 00000000..f95c9316
--- /dev/null
+++ b/aixml/src/tinyxml.h
@@ -0,0 +1,1806 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code by Lee Thomason (www.grinninglizard.com) Copyright 2015
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+
+#ifndef TINYXML_INCLUDED
+#define TINYXML_INCLUDED
+
+#ifdef _MSC_VER
+#pragma warning( push )
+#pragma warning( disable : 4530 )
+#pragma warning( disable : 4786 )
+#endif
+
+#include <cctype>
+#include <cstddef>
+#include <cstdio>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+// Help out windows:
+#if defined( _DEBUG ) && !defined( DEBUG )
+#define DEBUG
+#endif
+
+#ifdef TIXML_USE_STL
+	#include <string>
+ 	#include <iostream>
+	#include <sstream>
+	#define TIXML_STRING		std::string
+#else
+	#include "tinystr.h"
+	#define TIXML_STRING		TiXmlString
+#endif
+
+// Deprecated library function hell. Compilers want to use the
+// new safe versions. This probably doesn't fully address the problem,
+// but it gets closer. There are too many compilers for me to fully
+// test. If you get compilation troubles, undefine TIXML_SAFE
+#define TIXML_SAFE
+
+#ifdef TIXML_SAFE
+	#if defined(_MSC_VER) && (_MSC_VER >= 1400 )
+		// Microsoft visual studio, version 2005 and higher.
+		#define TIXML_SNPRINTF _snprintf_s
+		#define TIXML_SSCANF   sscanf_s
+	#elif defined(_MSC_VER) && (_MSC_VER >= 1200 )
+		// Microsoft visual studio, version 6 and higher.
+		//#pragma message( "Using _sn* functions." )
+		#define TIXML_SNPRINTF _snprintf
+		#define TIXML_SSCANF   sscanf
+	#elif defined(__GNUC__) && (__GNUC__ >= 3 )
+		// GCC version 3 and higher.s
+		//#warning( "Using sn* functions." )
+		#define TIXML_SNPRINTF snprintf
+		#define TIXML_SSCANF   sscanf
+	#else
+		#define TIXML_SNPRINTF snprintf
+		#define TIXML_SSCANF   sscanf
+	#endif
+#endif
+
+class TiXmlDocument;
+class TiXmlElement;
+class TiXmlComment;
+class TiXmlUnknown;
+class TiXmlAttribute;
+class TiXmlText;
+class TiXmlDeclaration;
+class TiXmlParsingData;
+
+const int TIXML_MAJOR_VERSION = 2;
+const int TIXML_MINOR_VERSION = 6;
+const int TIXML_PATCH_VERSION = 2;
+
+/*	Internal structure for tracking location of items
+	in the XML file.
+*/
+struct TiXmlCursor
+{
+	TiXmlCursor()		{ Clear(); }
+	void Clear()		{ row = col = -1; }
+
+	int row;	// 0 based.
+	int col;	// 0 based.
+};
+
+
+/**
+	Implements the interface to the "Visitor pattern" (see the Accept() method.)
+	If you call the Accept() method, it requires being passed a TiXmlVisitor
+	class to handle callbacks. For nodes that contain other nodes (Document, Element)
+	you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves
+	are simply called with Visit().
+
+	If you return 'true' from a Visit method, recursive parsing will continue. If you return
+	false, <b>no children of this node or its sibilings</b> will be Visited.
+
+	All flavors of Visit methods have a default implementation that returns 'true' (continue
+	visiting). You need to only override methods that are interesting to you.
+
+	Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting.
+
+	You should never change the document from a callback.
+
+	@sa TiXmlNode::Accept()
+*/
+class TiXmlVisitor
+{
+public:
+	virtual ~TiXmlVisitor() {}
+
+	/// Visit a document.
+	virtual bool VisitEnter( const TiXmlDocument& /*doc*/ )			{ return true; }
+	/// Visit a document.
+	virtual bool VisitExit( const TiXmlDocument& /*doc*/ )			{ return true; }
+
+	/// Visit an element.
+	virtual bool VisitEnter( const TiXmlElement& /*element*/, const TiXmlAttribute* /*firstAttribute*/ )	{ return true; }
+	/// Visit an element.
+	virtual bool VisitExit( const TiXmlElement& /*element*/ )		{ return true; }
+
+	/// Visit a declaration
+	virtual bool Visit( const TiXmlDeclaration& /*declaration*/ )	{ return true; }
+	/// Visit a text node
+	virtual bool Visit( const TiXmlText& /*text*/ )					{ return true; }
+	/// Visit a comment node
+	virtual bool Visit( const TiXmlComment& /*comment*/ )			{ return true; }
+	/// Visit an unknown node
+	virtual bool Visit( const TiXmlUnknown& /*unknown*/ )			{ return true; }
+};
+
+// Only used by Attribute::Query functions
+enum
+{
+	TIXML_SUCCESS,
+	TIXML_NO_ATTRIBUTE,
+	TIXML_WRONG_TYPE
+};
+
+
+// Used by the parsing routines.
+enum TiXmlEncoding
+{
+	TIXML_ENCODING_UNKNOWN,
+	TIXML_ENCODING_UTF8,
+	TIXML_ENCODING_LEGACY
+};
+
+const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN;
+
+/** TiXmlBase is a base class for every class in TinyXml.
+	It does little except to establish that TinyXml classes
+	can be printed and provide some utility functions.
+
+	In XML, the document and elements can contain
+	other elements and other types of nodes.
+
+	@verbatim
+	A Document can contain:	Element	(container or leaf)
+							Comment (leaf)
+							Unknown (leaf)
+							Declaration( leaf )
+
+	An Element can contain:	Element (container or leaf)
+							Text	(leaf)
+							Attributes (not on tree)
+							Comment (leaf)
+							Unknown (leaf)
+
+	A Decleration contains: Attributes (not on tree)
+	@endverbatim
+*/
+class TiXmlBase
+{
+	friend class TiXmlNode;
+	friend class TiXmlElement;
+	friend class TiXmlDocument;
+
+public:
+	TiXmlBase()	:	userData(0)		{}
+	virtual ~TiXmlBase()			{}
+
+	/**	All TinyXml classes can print themselves to a filestream
+		or the string class (TiXmlString in non-STL mode, std::string
+		in STL mode.) Either or both cfile and str can be null.
+
+		This is a formatted print, and will insert
+		tabs and newlines.
+
+		(For an unformatted stream, use the << operator.)
+	*/
+	virtual void Print( FILE* cfile, int depth ) const = 0;
+
+	/**	The world does not agree on whether white space should be kept or
+		not. In order to make everyone happy, these global, static functions
+		are provided to set whether or not TinyXml will condense all white space
+		into a single space or not. The default is to condense. Note changing this
+		value is not thread safe.
+	*/
+	static void SetCondenseWhiteSpace( bool condense )		{ condenseWhiteSpace = condense; }
+
+	/// Return the current white space setting.
+	static bool IsWhiteSpaceCondensed()						{ return condenseWhiteSpace; }
+
+	/** Return the position, in the original source file, of this node or attribute.
+		The row and column are 1-based. (That is the first row and first column is
+		1,1). If the returns values are 0 or less, then the parser does not have
+		a row and column value.
+
+		Generally, the row and column value will be set when the TiXmlDocument::Load(),
+		TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set
+		when the DOM was created from operator>>.
+
+		The values reflect the initial load. Once the DOM is modified programmatically
+		(by adding or changing nodes and attributes) the new values will NOT update to
+		reflect changes in the document.
+
+		There is a minor performance cost to computing the row and column. Computation
+		can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value.
+
+		@sa TiXmlDocument::SetTabSize()
+	*/
+	int Row() const			{ return location.row + 1; }
+	int Column() const		{ return location.col + 1; }	///< See Row()
+
+	void  SetUserData( void* user )			{ userData = user; }	///< Set a pointer to arbitrary user data.
+	void* GetUserData()						{ return userData; }	///< Get a pointer to arbitrary user data.
+	const void* GetUserData() const 		{ return userData; }	///< Get a pointer to arbitrary user data.
+
+	// Table that returs, for a given lead byte, the total number of bytes
+	// in the UTF-8 sequence.
+	static const int utf8ByteTable[256];
+
+	virtual const char* Parse(	const char* p,
+								TiXmlParsingData* data,
+								TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0;
+
+	/** Expands entities in a string. Note this should not contian the tag's '<', '>', etc,
+		or they will be transformed into entities!
+	*/
+	static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out );
+
+	enum
+	{
+		TIXML_NO_ERROR = 0,
+		TIXML_ERROR,
+		TIXML_ERROR_OPENING_FILE,
+		TIXML_ERROR_PARSING_ELEMENT,
+		TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME,
+		TIXML_ERROR_READING_ELEMENT_VALUE,
+		TIXML_ERROR_READING_ATTRIBUTES,
+		TIXML_ERROR_PARSING_EMPTY,
+		TIXML_ERROR_READING_END_TAG,
+		TIXML_ERROR_PARSING_UNKNOWN,
+		TIXML_ERROR_PARSING_COMMENT,
+		TIXML_ERROR_PARSING_DECLARATION,
+		TIXML_ERROR_DOCUMENT_EMPTY,
+		TIXML_ERROR_EMBEDDED_NULL,
+		TIXML_ERROR_PARSING_CDATA,
+		TIXML_ERROR_DOCUMENT_TOP_ONLY,
+
+		TIXML_ERROR_STRING_COUNT
+	};
+
+protected:
+
+	static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding );
+
+	inline static bool IsWhiteSpace( char c )
+	{
+		return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' );
+	}
+	inline static bool IsWhiteSpace( int c )
+	{
+		if ( c < 256 )
+			return IsWhiteSpace( (char) c );
+		return false;	// Again, only truly correct for English/Latin...but usually works.
+	}
+
+	#ifdef TIXML_USE_STL
+	static bool	StreamWhiteSpace( std::istream * in, TIXML_STRING * tag );
+	static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag );
+	#endif
+
+	/*	Reads an XML name into the string provided. Returns
+		a pointer just past the last character of the name,
+		or 0 if the function has an error.
+	*/
+	static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding );
+
+	/*	Reads text. Returns a pointer past the given end tag.
+		Wickedly complex options, but it keeps the (sensitive) code in one place.
+	*/
+	static const char* ReadText(	const char* in,				// where to start
+									TIXML_STRING* text,			// the string read
+									bool ignoreWhiteSpace,		// whether to keep the white space
+									const char* endTag,			// what ends this text
+									bool ignoreCase,			// whether to ignore case in the end tag
+									TiXmlEncoding encoding );	// the current encoding
+
+	// If an entity has been found, transform it into a character.
+	static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding );
+
+	// Get a character, while interpreting entities.
+	// The length can be from 0 to 4 bytes.
+	inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding )
+	{
+		assert( p );
+		if ( encoding == TIXML_ENCODING_UTF8 )
+		{
+			*length = utf8ByteTable[ *((const unsigned char*)p) ];
+			assert( *length >= 0 && *length < 5 );
+		}
+		else
+		{
+			*length = 1;
+		}
+
+		if ( *length == 1 )
+		{
+			if ( *p == '&' )
+				return GetEntity( p, _value, length, encoding );
+			*_value = *p;
+			return p+1;
+		}
+		else if ( *length )
+		{
+			//strncpy( _value, p, *length );	// lots of compilers don't like this function (unsafe),
+												// and the null terminator isn't needed
+			for( int i=0; p[i] && i<*length; ++i ) {
+				_value[i] = p[i];
+			}
+			return p + (*length);
+		}
+		else
+		{
+			// Not valid text.
+			return 0;
+		}
+	}
+
+	// Return true if the next characters in the stream are any of the endTag sequences.
+	// Ignore case only works for english, and should only be relied on when comparing
+	// to English words: StringEqual( p, "version", true ) is fine.
+	static bool StringEqual(	const char* p,
+								const char* endTag,
+								bool ignoreCase,
+								TiXmlEncoding encoding );
+
+	static const char* errorString[ TIXML_ERROR_STRING_COUNT ];
+
+	TiXmlCursor location;
+
+    /// Field containing a generic user pointer
+	void*			userData;
+
+	// None of these methods are reliable for any language except English.
+	// Good for approximation, not great for accuracy.
+	static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding );
+	static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding );
+	inline static int ToLower( int v, TiXmlEncoding encoding )
+	{
+		if ( encoding == TIXML_ENCODING_UTF8 )
+		{
+			if ( v < 128 ) return tolower( v );
+			return v;
+		}
+		else
+		{
+			return tolower( v );
+		}
+	}
+	static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length );
+
+private:
+	TiXmlBase( const TiXmlBase& );				// not implemented.
+	void operator=( const TiXmlBase& base );	// not allowed.
+
+	struct Entity
+	{
+		const char*     str;
+		unsigned int	strLength;
+		char		    chr;
+	};
+	enum
+	{
+		NUM_ENTITY = 5,
+		MAX_ENTITY_LENGTH = 6
+
+	};
+	static Entity entity[ NUM_ENTITY ];
+	static bool condenseWhiteSpace;
+};
+
+
+/** The parent class for everything in the Document Object Model.
+	(Except for attributes).
+	Nodes have siblings, a parent, and children. A node can be
+	in a document, or stand on its own. The type of a TiXmlNode
+	can be queried, and it can be cast to its more defined type.
+*/
+class TiXmlNode : public TiXmlBase
+{
+	friend class TiXmlDocument;
+	friend class TiXmlElement;
+
+public:
+	#ifdef TIXML_USE_STL
+
+	    /** An input stream operator, for every class. Tolerant of newlines and
+		    formatting, but doesn't expect them.
+	    */
+	    friend std::istream& operator >> (std::istream& in, TiXmlNode& base);
+
+	    /** An output stream operator, for every class. Note that this outputs
+		    without any newlines or formatting, as opposed to Print(), which
+		    includes tabs and new lines.
+
+		    The operator<< and operator>> are not completely symmetric. Writing
+		    a node to a stream is very well defined. You'll get a nice stream
+		    of output, without any extra whitespace or newlines.
+
+		    But reading is not as well defined. (As it always is.) If you create
+		    a TiXmlElement (for example) and read that from an input stream,
+		    the text needs to define an element or junk will result. This is
+		    true of all input streams, but it's worth keeping in mind.
+
+		    A TiXmlDocument will read nodes until it reads a root element, and
+			all the children of that root element.
+	    */
+	    friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base);
+
+		/// Appends the XML node or attribute to a std::string.
+		friend std::string& operator<< (std::string& out, const TiXmlNode& base );
+
+	#endif
+
+	/** The types of XML nodes supported by TinyXml. (All the
+			unsupported types are picked up by UNKNOWN.)
+	*/
+	enum NodeType
+	{
+		TINYXML_DOCUMENT,
+		TINYXML_ELEMENT,
+		TINYXML_COMMENT,
+		TINYXML_UNKNOWN,
+		TINYXML_TEXT,
+		TINYXML_DECLARATION,
+		TINYXML_TYPECOUNT
+	};
+
+	virtual ~TiXmlNode();
+
+	/** The meaning of 'value' changes for the specific type of
+		TiXmlNode.
+		@verbatim
+		Document:	filename of the xml file
+		Element:	name of the element
+		Comment:	the comment text
+		Unknown:	the tag contents
+		Text:		the text string
+		@endverbatim
+
+		The subclasses will wrap this function.
+	*/
+	const char *Value() const { return value.c_str (); }
+
+    #ifdef TIXML_USE_STL
+	/** Return Value() as a std::string. If you only use STL,
+	    this is more efficient than calling Value().
+		Only available in STL mode.
+	*/
+	const std::string& ValueStr() const { return value; }
+	#endif
+
+	const TIXML_STRING& ValueTStr() const { return value; }
+
+	/** Changes the value of the node. Defined as:
+		@verbatim
+		Document:	filename of the xml file
+		Element:	name of the element
+		Comment:	the comment text
+		Unknown:	the tag contents
+		Text:		the text string
+		@endverbatim
+	*/
+	void SetValue(const char * _value) { value = _value;}
+
+    #ifdef TIXML_USE_STL
+	/// STL std::string form.
+	void SetValue( const std::string& _value )	{ value = _value; }
+	#endif
+
+	/// Delete all the children of this node. Does not affect 'this'.
+	void Clear();
+
+	/// One step up the DOM.
+	TiXmlNode* Parent()							{ return parent; }
+	const TiXmlNode* Parent() const				{ return parent; }
+
+	const TiXmlNode* FirstChild()	const		{ return firstChild; }	///< The first child of this node. Will be null if there are no children.
+	TiXmlNode* FirstChild()						{ return firstChild; }
+	const TiXmlNode* FirstChild( const char * value ) const;			///< The first child of this node with the matching 'value'. Will be null if none found.
+	/// The first child of this node with the matching 'value'. Will be null if none found.
+	TiXmlNode* FirstChild( const char * _value ) {
+		// Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe)
+		// call the method, cast the return back to non-const.
+		return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value ));
+	}
+	const TiXmlNode* LastChild() const	{ return lastChild; }		/// The last child of this node. Will be null if there are no children.
+	TiXmlNode* LastChild()	{ return lastChild; }
+
+	const TiXmlNode* LastChild( const char * value ) const;			/// The last child of this node matching 'value'. Will be null if there are no children.
+	TiXmlNode* LastChild( const char * _value ) {
+		return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value ));
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlNode* FirstChild( const std::string& _value ) const	{	return FirstChild (_value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* FirstChild( const std::string& _value )				{	return FirstChild (_value.c_str ());	}	///< STL std::string form.
+	const TiXmlNode* LastChild( const std::string& _value ) const	{	return LastChild (_value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* LastChild( const std::string& _value )				{	return LastChild (_value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/** An alternate way to walk the children of a node.
+		One way to iterate over nodes is:
+		@verbatim
+			for( child = parent->FirstChild(); child; child = child->NextSibling() )
+		@endverbatim
+
+		IterateChildren does the same thing with the syntax:
+		@verbatim
+			child = 0;
+			while( child = parent->IterateChildren( child ) )
+		@endverbatim
+
+		IterateChildren takes the previous child as input and finds
+		the next one. If the previous child is null, it returns the
+		first. IterateChildren will return null when done.
+	*/
+	const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const;
+	TiXmlNode* IterateChildren( const TiXmlNode* previous ) {
+		return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) );
+	}
+
+	/// This flavor of IterateChildren searches for children with a particular 'value'
+	const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const;
+	TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) {
+		return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) );
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const	{	return IterateChildren (_value.c_str (), previous);	}	///< STL std::string form.
+	TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) {	return IterateChildren (_value.c_str (), previous);	}	///< STL std::string form.
+	#endif
+
+	/** Add a new node related to this. Adds a child past the LastChild.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* InsertEndChild( const TiXmlNode& addThis );
+
+
+	/** Add a new node related to this. Adds a child past the LastChild.
+
+		NOTE: the node to be added is passed by pointer, and will be
+		henceforth owned (and deleted) by tinyXml. This method is efficient
+		and avoids an extra copy, but should be used with care as it
+		uses a different memory model than the other insert functions.
+
+		@sa InsertEndChild
+	*/
+	TiXmlNode* LinkEndChild( TiXmlNode* addThis );
+
+	/** Add a new node related to this. Adds a child before the specified child.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis );
+
+	/** Add a new node related to this. Adds a child after the specified child.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* InsertAfterChild(  TiXmlNode* afterThis, const TiXmlNode& addThis );
+
+	/** Replace a child of this node.
+		Returns a pointer to the new object or NULL if an error occured.
+	*/
+	TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis );
+
+	/// Delete a child of this node.
+	bool RemoveChild( TiXmlNode* removeThis );
+
+	/// Navigate to a sibling node.
+	const TiXmlNode* PreviousSibling() const			{ return prev; }
+	TiXmlNode* PreviousSibling()						{ return prev; }
+
+	/// Navigate to a sibling node.
+	const TiXmlNode* PreviousSibling( const char * ) const;
+	TiXmlNode* PreviousSibling( const char *_prev ) {
+		return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) );
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlNode* PreviousSibling( const std::string& _value ) const	{	return PreviousSibling (_value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* PreviousSibling( const std::string& _value ) 			{	return PreviousSibling (_value.c_str ());	}	///< STL std::string form.
+	const TiXmlNode* NextSibling( const std::string& _value) const		{	return NextSibling (_value.c_str ());	}	///< STL std::string form.
+	TiXmlNode* NextSibling( const std::string& _value) 					{	return NextSibling (_value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/// Navigate to a sibling node.
+	const TiXmlNode* NextSibling() const				{ return next; }
+	TiXmlNode* NextSibling()							{ return next; }
+
+	/// Navigate to a sibling node with the given 'value'.
+	const TiXmlNode* NextSibling( const char * ) const;
+	TiXmlNode* NextSibling( const char* _next ) {
+		return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) );
+	}
+
+	/** Convenience function to get through elements.
+		Calls NextSibling and ToElement. Will skip all non-Element
+		nodes. Returns 0 if there is not another element.
+	*/
+	const TiXmlElement* NextSiblingElement() const;
+	TiXmlElement* NextSiblingElement() {
+		return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() );
+	}
+
+	/** Convenience function to get through elements.
+		Calls NextSibling and ToElement. Will skip all non-Element
+		nodes. Returns 0 if there is not another element.
+	*/
+	const TiXmlElement* NextSiblingElement( const char * ) const;
+	TiXmlElement* NextSiblingElement( const char *_next ) {
+		return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) );
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlElement* NextSiblingElement( const std::string& _value) const	{	return NextSiblingElement (_value.c_str ());	}	///< STL std::string form.
+	TiXmlElement* NextSiblingElement( const std::string& _value)				{	return NextSiblingElement (_value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/// Convenience function to get through elements.
+	const TiXmlElement* FirstChildElement()	const;
+	TiXmlElement* FirstChildElement() {
+		return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() );
+	}
+
+	/// Convenience function to get through elements.
+	const TiXmlElement* FirstChildElement( const char * _value ) const;
+	TiXmlElement* FirstChildElement( const char * _value ) {
+		return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) );
+	}
+
+    #ifdef TIXML_USE_STL
+	const TiXmlElement* FirstChildElement( const std::string& _value ) const	{	return FirstChildElement (_value.c_str ());	}	///< STL std::string form.
+	TiXmlElement* FirstChildElement( const std::string& _value )				{	return FirstChildElement (_value.c_str ());	}	///< STL std::string form.
+	#endif
+
+	/** Query the type (as an enumerated value, above) of this node.
+		The possible types are: TINYXML_DOCUMENT, TINYXML_ELEMENT, TINYXML_COMMENT,
+								TINYXML_UNKNOWN, TINYXML_TEXT, and TINYXML_DECLARATION.
+	*/
+	int Type() const	{ return type; }
+
+	/** Return a pointer to the Document this node lives in.
+		Returns null if not in a document.
+	*/
+	const TiXmlDocument* GetDocument() const;
+	TiXmlDocument* GetDocument() {
+		return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() );
+	}
+
+	/// Returns true if this node has no children.
+	bool NoChildren() const						{ return !firstChild; }
+
+	virtual const TiXmlDocument*    ToDocument()    const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlElement*     ToElement()     const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlComment*     ToComment()     const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlUnknown*     ToUnknown()     const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlText*        ToText()        const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual const TiXmlDeclaration* ToDeclaration() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+
+	virtual TiXmlDocument*          ToDocument()    { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlElement*           ToElement()	    { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlComment*           ToComment()     { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlUnknown*           ToUnknown()	    { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlText*	            ToText()        { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+	virtual TiXmlDeclaration*       ToDeclaration() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type.
+
+	/** Create an exact duplicate of this node and return it. The memory must be deleted
+		by the caller.
+	*/
+	virtual TiXmlNode* Clone() const = 0;
+
+	/** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the
+		XML tree will be conditionally visited and the host will be called back
+		via the TiXmlVisitor interface.
+
+		This is essentially a SAX interface for TinyXML. (Note however it doesn't re-parse
+		the XML for the callbacks, so the performance of TinyXML is unchanged by using this
+		interface versus any other.)
+
+		The interface has been based on ideas from:
+
+		- http://www.saxproject.org/
+		- http://c2.com/cgi/wiki?HierarchicalVisitorPattern
+
+		Which are both good references for "visiting".
+
+		An example of using Accept():
+		@verbatim
+		TiXmlPrinter printer;
+		tinyxmlDoc.Accept( &printer );
+		const char* xmlcstr = printer.CStr();
+		@endverbatim
+	*/
+	virtual bool Accept( TiXmlVisitor* visitor ) const = 0;
+
+protected:
+	TiXmlNode( NodeType _type );
+
+	// Copy to the allocated object. Shared functionality between Clone, Copy constructor,
+	// and the assignment operator.
+	void CopyTo( TiXmlNode* target ) const;
+
+	#ifdef TIXML_USE_STL
+	    // The real work of the input operator.
+	virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0;
+	#endif
+
+	// Figure out what is at *p, and parse it. Returns null if it is not an xml node.
+	TiXmlNode* Identify( const char* start, TiXmlEncoding encoding );
+
+	TiXmlNode*		parent;
+	NodeType		type;
+
+	TiXmlNode*		firstChild;
+	TiXmlNode*		lastChild;
+
+	TIXML_STRING	value;
+
+	TiXmlNode*		prev;
+	TiXmlNode*		next;
+
+private:
+	TiXmlNode( const TiXmlNode& );				// not implemented.
+	void operator=( const TiXmlNode& base );	// not allowed.
+};
+
+
+/** An attribute is a name-value pair. Elements have an arbitrary
+	number of attributes, each with a unique name.
+
+	@note The attributes are not TiXmlNodes, since they are not
+		  part of the tinyXML document object model. There are other
+		  suggested ways to look at this problem.
+*/
+class TiXmlAttribute : public TiXmlBase
+{
+	friend class TiXmlAttributeSet;
+
+public:
+	/// Construct an empty attribute.
+	TiXmlAttribute() : TiXmlBase()
+	{
+		document = 0;
+		prev = next = 0;
+	}
+
+	#ifdef TIXML_USE_STL
+	/// std::string constructor.
+	TiXmlAttribute( const std::string& _name, const std::string& _value )
+	{
+		name = _name;
+		value = _value;
+		document = 0;
+		prev = next = 0;
+	}
+	#endif
+
+	/// Construct an attribute with a name and value.
+	TiXmlAttribute( const char * _name, const char * _value )
+	{
+		name = _name;
+		value = _value;
+		document = 0;
+		prev = next = 0;
+	}
+
+	const char*		Name()  const		{ return name.c_str(); }		///< Return the name of this attribute.
+	const char*		Value() const		{ return value.c_str(); }		///< Return the value of this attribute.
+	#ifdef TIXML_USE_STL
+	const std::string& ValueStr() const	{ return value; }				///< Return the value of this attribute.
+	#endif
+	int				IntValue() const;									///< Return the value of this attribute, converted to an integer.
+	double			DoubleValue() const;								///< Return the value of this attribute, converted to a double.
+
+	// Get the tinyxml string representation
+	const TIXML_STRING& NameTStr() const { return name; }
+
+	/** QueryIntValue examines the value string. It is an alternative to the
+		IntValue() method with richer error checking.
+		If the value is an integer, it is stored in 'value' and
+		the call returns TIXML_SUCCESS. If it is not
+		an integer, it returns TIXML_WRONG_TYPE.
+
+		A specialized but useful call. Note that for success it returns 0,
+		which is the opposite of almost all other TinyXml calls.
+	*/
+	int QueryIntValue( int* _value ) const;
+	/// QueryDoubleValue examines the value string. See QueryIntValue().
+	int QueryDoubleValue( double* _value ) const;
+
+	void SetName( const char* _name )	{ name = _name; }				///< Set the name of this attribute.
+	void SetValue( const char* _value )	{ value = _value; }				///< Set the value.
+
+	void SetIntValue( int _value );										///< Set the value from an integer.
+	void SetDoubleValue( double _value );								///< Set the value from a double.
+
+    #ifdef TIXML_USE_STL
+	/// STL std::string form.
+	void SetName( const std::string& _name )	{ name = _name; }
+	/// STL std::string form.
+	void SetValue( const std::string& _value )	{ value = _value; }
+	#endif
+
+	/// Get the next sibling attribute in the DOM. Returns null at end.
+	const TiXmlAttribute* Next() const;
+	TiXmlAttribute* Next() {
+		return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() );
+	}
+
+	/// Get the previous sibling attribute in the DOM. Returns null at beginning.
+	const TiXmlAttribute* Previous() const;
+	TiXmlAttribute* Previous() {
+		return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() );
+	}
+
+	bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; }
+	bool operator<( const TiXmlAttribute& rhs )	 const { return name < rhs.name; }
+	bool operator>( const TiXmlAttribute& rhs )  const { return name > rhs.name; }
+
+	/*	Attribute parsing starts: first letter of the name
+						 returns: the next char after the value end quote
+	*/
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	// Prints this Attribute to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const {
+		Print( cfile, depth, 0 );
+	}
+	void Print( FILE* cfile, int depth, TIXML_STRING* str ) const;
+
+	// [internal use]
+	// Set the document pointer so the attribute can report errors.
+	void SetDocument( TiXmlDocument* doc )	{ document = doc; }
+
+private:
+	TiXmlAttribute( const TiXmlAttribute& );				// not implemented.
+	void operator=( const TiXmlAttribute& base );	// not allowed.
+
+	TiXmlDocument*	document;	// A pointer back to a document, for error reporting.
+	TIXML_STRING name;
+	TIXML_STRING value;
+	TiXmlAttribute*	prev;
+	TiXmlAttribute*	next;
+};
+
+
+/*	A class used to manage a group of attributes.
+	It is only used internally, both by the ELEMENT and the DECLARATION.
+
+	The set can be changed transparent to the Element and Declaration
+	classes that use it, but NOT transparent to the Attribute
+	which has to implement a next() and previous() method. Which makes
+	it a bit problematic and prevents the use of STL.
+
+	This version is implemented with circular lists because:
+		- I like circular lists
+		- it demonstrates some independence from the (typical) doubly linked list.
+*/
+class TiXmlAttributeSet
+{
+public:
+	TiXmlAttributeSet();
+	~TiXmlAttributeSet();
+
+	void Add( TiXmlAttribute* attribute );
+	void Remove( TiXmlAttribute* attribute );
+
+	const TiXmlAttribute* First()	const	{ return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; }
+	TiXmlAttribute* First()					{ return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; }
+	const TiXmlAttribute* Last() const		{ return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; }
+	TiXmlAttribute* Last()					{ return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; }
+
+	TiXmlAttribute*	Find( const char* _name ) const;
+	TiXmlAttribute* FindOrCreate( const char* _name );
+
+#	ifdef TIXML_USE_STL
+	TiXmlAttribute*	Find( const std::string& _name ) const;
+	TiXmlAttribute* FindOrCreate( const std::string& _name );
+#	endif
+
+
+private:
+	//*ME:	Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element),
+	//*ME:	this class must be also use a hidden/disabled copy-constructor !!!
+	TiXmlAttributeSet( const TiXmlAttributeSet& );	// not allowed
+	void operator=( const TiXmlAttributeSet& );	// not allowed (as TiXmlAttribute)
+
+	TiXmlAttribute sentinel;
+};
+
+
+/** The element is a container class. It has a value, the element name,
+	and can contain other elements, text, comments, and unknowns.
+	Elements also contain an arbitrary number of attributes.
+*/
+class TiXmlElement : public TiXmlNode
+{
+public:
+	/// Construct an element.
+	TiXmlElement (const char * in_value);
+
+	#ifdef TIXML_USE_STL
+	/// std::string constructor.
+	TiXmlElement( const std::string& _value );
+	#endif
+
+	TiXmlElement( const TiXmlElement& );
+
+	TiXmlElement& operator=( const TiXmlElement& base );
+
+	virtual ~TiXmlElement();
+
+	/** Given an attribute name, Attribute() returns the value
+		for the attribute of that name, or null if none exists.
+	*/
+	const char* Attribute( const char* name ) const;
+
+	/** Given an attribute name, Attribute() returns the value
+		for the attribute of that name, or null if none exists.
+		If the attribute exists and can be converted to an integer,
+		the integer value will be put in the return 'i', if 'i'
+		is non-null.
+	*/
+	const char* Attribute( const char* name, int* i ) const;
+
+	/** Given an attribute name, Attribute() returns the value
+		for the attribute of that name, or null if none exists.
+		If the attribute exists and can be converted to an double,
+		the double value will be put in the return 'd', if 'd'
+		is non-null.
+	*/
+	const char* Attribute( const char* name, double* d ) const;
+
+	/** QueryIntAttribute examines the attribute - it is an alternative to the
+		Attribute() method with richer error checking.
+		If the attribute is an integer, it is stored in 'value' and
+		the call returns TIXML_SUCCESS. If it is not
+		an integer, it returns TIXML_WRONG_TYPE. If the attribute
+		does not exist, then TIXML_NO_ATTRIBUTE is returned.
+	*/
+	int QueryIntAttribute( const char* name, int* _value ) const;
+	/// QueryUnsignedAttribute examines the attribute - see QueryIntAttribute().
+	int QueryUnsignedAttribute( const char* name, unsigned* _value ) const;
+	/** QueryBoolAttribute examines the attribute - see QueryIntAttribute().
+		Note that '1', 'true', or 'yes' are considered true, while '0', 'false'
+		and 'no' are considered false.
+	*/
+	int QueryBoolAttribute( const char* name, bool* _value ) const;
+	/// QueryDoubleAttribute examines the attribute - see QueryIntAttribute().
+	int QueryDoubleAttribute( const char* name, double* _value ) const;
+	/// QueryFloatAttribute examines the attribute - see QueryIntAttribute().
+	int QueryFloatAttribute( const char* name, float* _value ) const {
+		double d;
+		int result = QueryDoubleAttribute( name, &d );
+		if ( result == TIXML_SUCCESS ) {
+			*_value = (float)d;
+		}
+		return result;
+	}
+
+    #ifdef TIXML_USE_STL
+	/// QueryStringAttribute examines the attribute - see QueryIntAttribute().
+	int QueryStringAttribute( const char* name, std::string* _value ) const {
+		const char* cstr = Attribute( name );
+		if ( cstr ) {
+			*_value = std::string( cstr );
+			return TIXML_SUCCESS;
+		}
+		return TIXML_NO_ATTRIBUTE;
+	}
+
+	/** Template form of the attribute query which will try to read the
+		attribute into the specified type. Very easy, very powerful, but
+		be careful to make sure to call this with the correct type.
+
+		NOTE: This method doesn't work correctly for 'string' types that contain spaces.
+
+		@return TIXML_SUCCESS, TIXML_WRONG_TYPE, or TIXML_NO_ATTRIBUTE
+	*/
+	template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const
+	{
+		const TiXmlAttribute* node = attributeSet.Find( name );
+		if ( !node )
+			return TIXML_NO_ATTRIBUTE;
+
+		std::stringstream sstream( node->ValueStr() );
+		sstream >> *outValue;
+		if ( !sstream.fail() )
+			return TIXML_SUCCESS;
+		return TIXML_WRONG_TYPE;
+	}
+
+	int QueryValueAttribute( const std::string& name, std::string* outValue ) const
+	{
+		const TiXmlAttribute* node = attributeSet.Find( name );
+		if ( !node )
+			return TIXML_NO_ATTRIBUTE;
+		*outValue = node->ValueStr();
+		return TIXML_SUCCESS;
+	}
+	#endif
+
+	/** Sets an attribute of name to a given value. The attribute
+		will be created if it does not exist, or changed if it does.
+	*/
+	void SetAttribute( const char* name, const char * _value );
+
+    #ifdef TIXML_USE_STL
+	const std::string* Attribute( const std::string& name ) const;
+	const std::string* Attribute( const std::string& name, int* i ) const;
+	const std::string* Attribute( const std::string& name, double* d ) const;
+	int QueryIntAttribute( const std::string& name, int* _value ) const;
+	int QueryDoubleAttribute( const std::string& name, double* _value ) const;
+
+	/// STL std::string form.
+	void SetAttribute( const std::string& name, const std::string& _value );
+	///< STL std::string form.
+	void SetAttribute( const std::string& name, int _value );
+	///< STL std::string form.
+	void SetDoubleAttribute( const std::string& name, double value );
+	#endif
+
+	/** Sets an attribute of name to a given value. The attribute
+		will be created if it does not exist, or changed if it does.
+	*/
+	void SetAttribute( const char * name, int value );
+
+	/** Sets an attribute of name to a given value. The attribute
+		will be created if it does not exist, or changed if it does.
+	*/
+	void SetDoubleAttribute( const char * name, double value );
+
+	/** Deletes an attribute with the given name.
+	*/
+	void RemoveAttribute( const char * name );
+    #ifdef TIXML_USE_STL
+	void RemoveAttribute( const std::string& name )	{	RemoveAttribute (name.c_str ());	}	///< STL std::string form.
+	#endif
+
+	const TiXmlAttribute* FirstAttribute() const	{ return attributeSet.First(); }		///< Access the first attribute in this element.
+	TiXmlAttribute* FirstAttribute() 				{ return attributeSet.First(); }
+	const TiXmlAttribute* LastAttribute()	const 	{ return attributeSet.Last(); }		///< Access the last attribute in this element.
+	TiXmlAttribute* LastAttribute()					{ return attributeSet.Last(); }
+
+	/** Convenience function for easy access to the text inside an element. Although easy
+		and concise, GetText() is limited compared to getting the TiXmlText child
+		and accessing it directly.
+
+		If the first child of 'this' is a TiXmlText, the GetText()
+		returns the character string of the Text node, else null is returned.
+
+		This is a convenient method for getting the text of simple contained text:
+		@verbatim
+		<foo>This is text</foo>
+		const char* str = fooElement->GetText();
+		@endverbatim
+
+		'str' will be a pointer to "This is text".
+
+		Note that this function can be misleading. If the element foo was created from
+		this XML:
+		@verbatim
+		<foo><b>This is text</b></foo>
+		@endverbatim
+
+		then the value of str would be null. The first child node isn't a text node, it is
+		another element. From this XML:
+		@verbatim
+		<foo>This is <b>text</b></foo>
+		@endverbatim
+		GetText() will return "This is ".
+
+		WARNING: GetText() accesses a child node - don't become confused with the
+				 similarly named TiXmlHandle::Text() and TiXmlNode::ToText() which are
+				 safe type casts on the referenced node.
+	*/
+	const char* GetText() const;
+
+	/// Creates a new Element and returns it - the returned element is a copy.
+	virtual TiXmlNode* Clone() const;
+	// Print the Element to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const;
+
+	/*	Attribtue parsing starts: next char past '<'
+						 returns: next char past '>'
+	*/
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlElement*     ToElement()     const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlElement*           ToElement()	          { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children.
+	*/
+	virtual bool Accept( TiXmlVisitor* visitor ) const;
+
+protected:
+
+	void CopyTo( TiXmlElement* target ) const;
+	void ClearThis();	// like clear, but initializes 'this' object as well
+
+	// Used to be public [internal use]
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+	/*	[internal use]
+		Reads the "value" of the element -- another element, or text.
+		This should terminate with the current end tag.
+	*/
+	const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding );
+
+private:
+	TiXmlAttributeSet attributeSet;
+};
+
+
+/**	An XML comment.
+*/
+class TiXmlComment : public TiXmlNode
+{
+public:
+	/// Constructs an empty comment.
+	TiXmlComment() : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) {}
+	/// Construct a comment from text.
+	TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) {
+		SetValue( _value );
+	}
+	TiXmlComment( const TiXmlComment& );
+	TiXmlComment& operator=( const TiXmlComment& base );
+
+	virtual ~TiXmlComment()	{}
+
+	/// Returns a copy of this Comment.
+	virtual TiXmlNode* Clone() const;
+	// Write this Comment to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const;
+
+	/*	Attribtue parsing starts: at the ! of the !--
+						 returns: next char past '>'
+	*/
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlComment*  ToComment() const	{ return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual		  TiXmlComment*  ToComment()		{ return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children.
+	*/
+	virtual bool Accept( TiXmlVisitor* visitor ) const;
+
+protected:
+	void CopyTo( TiXmlComment* target ) const;
+
+	// used to be public
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+//	virtual void StreamOut( TIXML_OSTREAM * out ) const;
+
+private:
+
+};
+
+
+/** XML text. A text node can have 2 ways to output the next. "normal" output
+	and CDATA. It will default to the mode it was parsed from the XML file and
+	you generally want to leave it alone, but you can change the output mode with
+	SetCDATA() and query it with CDATA().
+*/
+class TiXmlText : public TiXmlNode
+{
+	friend class TiXmlElement;
+public:
+	/** Constructor for text element. By default, it is treated as
+		normal, encoded text. If you want it be output as a CDATA text
+		element, set the parameter _cdata to 'true'
+	*/
+	TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT)
+	{
+		SetValue( initValue );
+		cdata = false;
+	}
+	virtual ~TiXmlText() {}
+
+	#ifdef TIXML_USE_STL
+	/// Constructor.
+	TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT)
+	{
+		SetValue( initValue );
+		cdata = false;
+	}
+	#endif
+
+	TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TINYXML_TEXT )	{ copy.CopyTo( this ); }
+	TiXmlText& operator=( const TiXmlText& base )							 	{ base.CopyTo( this ); return *this; }
+
+	// Write this text object to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const;
+
+	/// Queries whether this represents text using a CDATA section.
+	bool CDATA() const				{ return cdata; }
+	/// Turns on or off a CDATA representation of text.
+	void SetCDATA( bool _cdata )	{ cdata = _cdata; }
+
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlText* ToText() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlText*       ToText()       { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children.
+	*/
+	virtual bool Accept( TiXmlVisitor* content ) const;
+
+protected :
+	///  [internal use] Creates a new Element and returns it.
+	virtual TiXmlNode* Clone() const;
+	void CopyTo( TiXmlText* target ) const;
+
+	bool Blank() const;	// returns true if all white space and new lines
+	// [internal use]
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+
+private:
+	bool cdata;			// true if this should be input and output as a CDATA style text element
+};
+
+
+/** In correct XML the declaration is the first entry in the file.
+	@verbatim
+		<?xml version="1.0" standalone="yes"?>
+	@endverbatim
+
+	TinyXml will happily read or write files without a declaration,
+	however. There are 3 possible attributes to the declaration:
+	version, encoding, and standalone.
+
+	Note: In this version of the code, the attributes are
+	handled as special cases, not generic attributes, simply
+	because there can only be at most 3 and they are always the same.
+*/
+class TiXmlDeclaration : public TiXmlNode
+{
+public:
+	/// Construct an empty declaration.
+	TiXmlDeclaration()   : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) {}
+
+#ifdef TIXML_USE_STL
+	/// Constructor.
+	TiXmlDeclaration(	const std::string& _version,
+						const std::string& _encoding,
+						const std::string& _standalone );
+#endif
+
+	/// Construct.
+	TiXmlDeclaration(	const char* _version,
+						const char* _encoding,
+						const char* _standalone );
+
+	TiXmlDeclaration( const TiXmlDeclaration& copy );
+	TiXmlDeclaration& operator=( const TiXmlDeclaration& copy );
+
+	virtual ~TiXmlDeclaration()	{}
+
+	/// Version. Will return an empty string if none was found.
+	const char *Version() const			{ return version.c_str (); }
+	/// Encoding. Will return an empty string if none was found.
+	const char *Encoding() const		{ return encoding.c_str (); }
+	/// Is this a standalone document?
+	const char *Standalone() const		{ return standalone.c_str (); }
+
+	/// Creates a copy of this Declaration and returns it.
+	virtual TiXmlNode* Clone() const;
+	// Print this declaration to a FILE stream.
+	virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const;
+	virtual void Print( FILE* cfile, int depth ) const {
+		Print( cfile, depth, 0 );
+	}
+
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlDeclaration* ToDeclaration() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlDeclaration*       ToDeclaration()       { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children.
+	*/
+	virtual bool Accept( TiXmlVisitor* visitor ) const;
+
+protected:
+	void CopyTo( TiXmlDeclaration* target ) const;
+	// used to be public
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+
+private:
+
+	TIXML_STRING version;
+	TIXML_STRING encoding;
+	TIXML_STRING standalone;
+};
+
+
+/** Any tag that tinyXml doesn't recognize is saved as an
+	unknown. It is a tag of text, but should not be modified.
+	It will be written back to the XML, unchanged, when the file
+	is saved.
+
+	DTD tags get thrown into TiXmlUnknowns.
+*/
+class TiXmlUnknown : public TiXmlNode
+{
+public:
+	TiXmlUnknown() : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN )	{}
+	virtual ~TiXmlUnknown() {}
+
+	TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN )		{ copy.CopyTo( this ); }
+	TiXmlUnknown& operator=( const TiXmlUnknown& copy )										{ copy.CopyTo( this ); return *this; }
+
+	/// Creates a copy of this Unknown and returns it.
+	virtual TiXmlNode* Clone() const;
+	// Print this Unknown to a FILE stream.
+	virtual void Print( FILE* cfile, int depth ) const;
+
+	virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding );
+
+	virtual const TiXmlUnknown*     ToUnknown()     const	{ return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlUnknown*           ToUnknown()				{ return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children.
+	*/
+	virtual bool Accept( TiXmlVisitor* content ) const;
+
+protected:
+	void CopyTo( TiXmlUnknown* target ) const;
+
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+
+private:
+
+};
+
+
+/** Always the top level node. A document binds together all the
+	XML pieces. It can be saved, loaded, and printed to the screen.
+	The 'value' of a document node is the xml file name.
+*/
+class TiXmlDocument : public TiXmlNode
+{
+public:
+	/// Create an empty document, that has no name.
+	TiXmlDocument();
+	/// Create a document with a name. The name of the document is also the filename of the xml.
+	TiXmlDocument( const char * documentName );
+
+	#ifdef TIXML_USE_STL
+	/// Constructor.
+	TiXmlDocument( const std::string& documentName );
+	#endif
+
+	TiXmlDocument( const TiXmlDocument& copy );
+	TiXmlDocument& operator=( const TiXmlDocument& copy );
+
+	virtual ~TiXmlDocument() {}
+
+	/** Load a file using the current document value.
+		Returns true if successful. Will delete any existing
+		document data before loading.
+	*/
+	bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
+	/// Save a file using the current document value. Returns true if successful.
+	bool SaveFile() const;
+	/// Load a file using the given filename. Returns true if successful.
+	bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
+	/// Save a file using the given filename. Returns true if successful.
+	bool SaveFile( const char * filename ) const;
+	/** Load a file using the given FILE*. Returns true if successful. Note that this method
+		doesn't stream - the entire object pointed at by the FILE*
+		will be interpreted as an XML file. TinyXML doesn't stream in XML from the current
+		file location. Streaming may be added in the future.
+	*/
+	bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
+	/// Save a file using the given FILE*. Returns true if successful.
+	bool SaveFile( FILE* ) const;
+
+	#ifdef TIXML_USE_STL
+	bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING )			///< STL std::string version.
+	{
+		return LoadFile( filename.c_str(), encoding );
+	}
+	bool SaveFile( const std::string& filename ) const		///< STL std::string version.
+	{
+		return SaveFile( filename.c_str() );
+	}
+	#endif
+
+	/** Parse the given null terminated block of xml data. Passing in an encoding to this
+		method (either TIXML_ENCODING_LEGACY or TIXML_ENCODING_UTF8 will force TinyXml
+		to use that encoding, regardless of what TinyXml might otherwise try to detect.
+	*/
+	virtual const char* Parse( const char* p, TiXmlParsingData* data = 0, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING );
+
+	/** Get the root element -- the only top level element -- of the document.
+		In well formed XML, there should only be one. TinyXml is tolerant of
+		multiple elements at the document level.
+	*/
+	const TiXmlElement* RootElement() const		{ return FirstChildElement(); }
+	TiXmlElement* RootElement()					{ return FirstChildElement(); }
+
+	/** If an error occurs, Error will be set to true. Also,
+		- The ErrorId() will contain the integer identifier of the error (not generally useful)
+		- The ErrorDesc() method will return the name of the error. (very useful)
+		- The ErrorRow() and ErrorCol() will return the location of the error (if known)
+	*/
+	bool Error() const						{ return error; }
+
+	/// Contains a textual (english) description of the error if one occurs.
+	const char * ErrorDesc() const	{ return errorDesc.c_str (); }
+
+	/** Generally, you probably want the error string ( ErrorDesc() ). But if you
+		prefer the ErrorId, this function will fetch it.
+	*/
+	int ErrorId()	const				{ return errorId; }
+
+	/** Returns the location (if known) of the error. The first column is column 1,
+		and the first row is row 1. A value of 0 means the row and column wasn't applicable
+		(memory errors, for example, have no row/column) or the parser lost the error. (An
+		error in the error reporting, in that case.)
+
+		@sa SetTabSize, Row, Column
+	*/
+	int ErrorRow() const	{ return errorLocation.row+1; }
+	int ErrorCol() const	{ return errorLocation.col+1; }	///< The column where the error occured. See ErrorRow()
+
+	/** SetTabSize() allows the error reporting functions (ErrorRow() and ErrorCol())
+		to report the correct values for row and column. It does not change the output
+		or input in any way.
+
+		By calling this method, with a tab size
+		greater than 0, the row and column of each node and attribute is stored
+		when the file is loaded. Very useful for tracking the DOM back in to
+		the source file.
+
+		The tab size is required for calculating the location of nodes. If not
+		set, the default of 4 is used. The tabsize is set per document. Setting
+		the tabsize to 0 disables row/column tracking.
+
+		Note that row and column tracking is not supported when using operator>>.
+
+		The tab size needs to be enabled before the parse or load. Correct usage:
+		@verbatim
+		TiXmlDocument doc;
+		doc.SetTabSize( 8 );
+		doc.Load( "myfile.xml" );
+		@endverbatim
+
+		@sa Row, Column
+	*/
+	void SetTabSize( int _tabsize )		{ tabsize = _tabsize; }
+
+	int TabSize() const	{ return tabsize; }
+
+	/** If you have handled the error, it can be reset with this call. The error
+		state is automatically cleared if you Parse a new XML block.
+	*/
+	void ClearError()						{	error = false;
+												errorId = 0;
+												errorDesc = "";
+												errorLocation.row = errorLocation.col = 0;
+												//errorLocation.last = 0;
+											}
+
+	/** Write the document to standard out using formatted printing ("pretty print"). */
+	void Print() const						{ Print( stdout, 0 ); }
+
+	/* Write the document to a string using formatted printing ("pretty print"). This
+		will allocate a character array (new char[]) and return it as a pointer. The
+		calling code pust call delete[] on the return char* to avoid a memory leak.
+	*/
+	//char* PrintToMemory() const;
+
+	/// Print this Document to a FILE stream.
+	virtual void Print( FILE* cfile, int depth = 0 ) const;
+	// [internal use]
+	void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding );
+
+	virtual const TiXmlDocument*    ToDocument()    const { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+	virtual TiXmlDocument*          ToDocument()          { return this; } ///< Cast to a more defined type. Will return null not of the requested type.
+
+	/** Walk the XML tree visiting this node and all of its children.
+	*/
+	virtual bool Accept( TiXmlVisitor* content ) const;
+
+protected :
+	// [internal use]
+	virtual TiXmlNode* Clone() const;
+	#ifdef TIXML_USE_STL
+	virtual void StreamIn( std::istream * in, TIXML_STRING * tag );
+	#endif
+
+private:
+	void CopyTo( TiXmlDocument* target ) const;
+
+	bool error;
+	int  errorId;
+	TIXML_STRING errorDesc;
+	int tabsize;
+	TiXmlCursor errorLocation;
+	bool useMicrosoftBOM;		// the UTF-8 BOM were found when read. Note this, and try to write.
+};
+
+
+/**
+	A TiXmlHandle is a class that wraps a node pointer with null checks; this is
+	an incredibly useful thing. Note that TiXmlHandle is not part of the TinyXml
+	DOM structure. It is a separate utility class.
+
+	Take an example:
+	@verbatim
+	<Document>
+		<Element attributeA = "valueA">
+			<Child attributeB = "value1" />
+			<Child attributeB = "value2" />
+		</Element>
+	<Document>
+	@endverbatim
+
+	Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very
+	easy to write a *lot* of code that looks like:
+
+	@verbatim
+	TiXmlElement* root = document.FirstChildElement( "Document" );
+	if ( root )
+	{
+		TiXmlElement* element = root->FirstChildElement( "Element" );
+		if ( element )
+		{
+			TiXmlElement* child = element->FirstChildElement( "Child" );
+			if ( child )
+			{
+				TiXmlElement* child2 = child->NextSiblingElement( "Child" );
+				if ( child2 )
+				{
+					// Finally do something useful.
+	@endverbatim
+
+	And that doesn't even cover "else" cases. TiXmlHandle addresses the verbosity
+	of such code. A TiXmlHandle checks for null	pointers so it is perfectly safe
+	and correct to use:
+
+	@verbatim
+	TiXmlHandle docHandle( &document );
+	TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement();
+	if ( child2 )
+	{
+		// do something useful
+	@endverbatim
+
+	Which is MUCH more concise and useful.
+
+	It is also safe to copy handles - internally they are nothing more than node pointers.
+	@verbatim
+	TiXmlHandle handleCopy = handle;
+	@endverbatim
+
+	What they should not be used for is iteration:
+
+	@verbatim
+	int i=0;
+	while ( true )
+	{
+		TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).ToElement();
+		if ( !child )
+			break;
+		// do something
+		++i;
+	}
+	@endverbatim
+
+	It seems reasonable, but it is in fact two embedded while loops. The Child method is
+	a linear walk to find the element, so this code would iterate much more than it needs
+	to. Instead, prefer:
+
+	@verbatim
+	TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).ToElement();
+
+	for( child; child; child=child->NextSiblingElement() )
+	{
+		// do something
+	}
+	@endverbatim
+*/
+class TiXmlHandle
+{
+public:
+	/// Create a handle from any node (at any depth of the tree.) This can be a null pointer.
+	TiXmlHandle( TiXmlNode* _node )					{ this->node = _node; }
+	/// Copy constructor
+	TiXmlHandle( const TiXmlHandle& ref )			{ this->node = ref.node; }
+	TiXmlHandle operator=( const TiXmlHandle& ref ) { if ( &ref != this ) this->node = ref.node; return *this; }
+
+	/// Return a handle to the first child node.
+	TiXmlHandle FirstChild() const;
+	/// Return a handle to the first child node with the given name.
+	TiXmlHandle FirstChild( const char * value ) const;
+	/// Return a handle to the first child element.
+	TiXmlHandle FirstChildElement() const;
+	/// Return a handle to the first child element with the given name.
+	TiXmlHandle FirstChildElement( const char * value ) const;
+
+	/** Return a handle to the "index" child with the given name.
+		The first child is 0, the second 1, etc.
+	*/
+	TiXmlHandle Child( const char* value, int index ) const;
+	/** Return a handle to the "index" child.
+		The first child is 0, the second 1, etc.
+	*/
+	TiXmlHandle Child( int index ) const;
+	/** Return a handle to the "index" child element with the given name.
+		The first child element is 0, the second 1, etc. Note that only TiXmlElements
+		are indexed: other types are not counted.
+	*/
+	TiXmlHandle ChildElement( const char* value, int index ) const;
+	/** Return a handle to the "index" child element.
+		The first child element is 0, the second 1, etc. Note that only TiXmlElements
+		are indexed: other types are not counted.
+	*/
+	TiXmlHandle ChildElement( int index ) const;
+
+	#ifdef TIXML_USE_STL
+	TiXmlHandle FirstChild( const std::string& _value ) const				{ return FirstChild( _value.c_str() ); }
+	TiXmlHandle FirstChildElement( const std::string& _value ) const		{ return FirstChildElement( _value.c_str() ); }
+
+	TiXmlHandle Child( const std::string& _value, int index ) const			{ return Child( _value.c_str(), index ); }
+	TiXmlHandle ChildElement( const std::string& _value, int index ) const	{ return ChildElement( _value.c_str(), index ); }
+	#endif
+
+	/** Return the handle as a TiXmlNode. This may return null.
+	*/
+	TiXmlNode* ToNode() const			{ return node; }
+	/** Return the handle as a TiXmlElement. This may return null.
+	*/
+	TiXmlElement* ToElement() const		{ return ( ( node && node->ToElement() ) ? node->ToElement() : 0 ); }
+	/**	Return the handle as a TiXmlText. This may return null.
+	*/
+	TiXmlText* ToText() const			{ return ( ( node && node->ToText() ) ? node->ToText() : 0 ); }
+	/** Return the handle as a TiXmlUnknown. This may return null.
+	*/
+	TiXmlUnknown* ToUnknown() const		{ return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : 0 ); }
+
+	/** @deprecated use ToNode.
+		Return the handle as a TiXmlNode. This may return null.
+	*/
+	TiXmlNode* Node() const			{ return ToNode(); }
+	/** @deprecated use ToElement.
+		Return the handle as a TiXmlElement. This may return null.
+	*/
+	TiXmlElement* Element() const	{ return ToElement(); }
+	/**	@deprecated use ToText()
+		Return the handle as a TiXmlText. This may return null.
+	*/
+	TiXmlText* Text() const			{ return ToText(); }
+	/** @deprecated use ToUnknown()
+		Return the handle as a TiXmlUnknown. This may return null.
+	*/
+	TiXmlUnknown* Unknown() const	{ return ToUnknown(); }
+
+private:
+	TiXmlNode* node;
+};
+
+
+/** Print to memory functionality. The TiXmlPrinter is useful when you need to:
+
+	-# Print to memory (especially in non-STL mode)
+	-# Control formatting (line endings, etc.)
+
+	When constructed, the TiXmlPrinter is in its default "pretty printing" mode.
+	Before calling Accept() you can call methods to control the printing
+	of the XML document. After TiXmlNode::Accept() is called, the printed document can
+	be accessed via the CStr(), Str(), and Size() methods.
+
+	TiXmlPrinter uses the Visitor API.
+	@verbatim
+	TiXmlPrinter printer;
+	printer.SetIndent( "\t" );
+
+	doc.Accept( &printer );
+	fprintf( stdout, "%s", printer.CStr() );
+	@endverbatim
+*/
+class TiXmlPrinter : public TiXmlVisitor
+{
+public:
+	TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ),
+					 buffer(), indent( "    " ), lineBreak( "\n" ) {}
+
+	virtual bool VisitEnter( const TiXmlDocument& doc );
+	virtual bool VisitExit( const TiXmlDocument& doc );
+
+	virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute );
+	virtual bool VisitExit( const TiXmlElement& element );
+
+	virtual bool Visit( const TiXmlDeclaration& declaration );
+	virtual bool Visit( const TiXmlText& text );
+	virtual bool Visit( const TiXmlComment& comment );
+	virtual bool Visit( const TiXmlUnknown& unknown );
+
+	/** Set the indent characters for printing. By default 4 spaces
+		but tab (\t) is also useful, or null/empty string for no indentation.
+	*/
+	void SetIndent( const char* _indent )			{ indent = _indent ? _indent : "" ; }
+	/// Query the indention string.
+	const char* Indent()							{ return indent.c_str(); }
+	/** Set the line breaking string. By default set to newline (\n).
+		Some operating systems prefer other characters, or can be
+		set to the null/empty string for no indenation.
+	*/
+	void SetLineBreak( const char* _lineBreak )		{ lineBreak = _lineBreak ? _lineBreak : ""; }
+	/// Query the current line breaking string.
+	const char* LineBreak()							{ return lineBreak.c_str(); }
+
+	/** Switch over to "stream printing" which is the most dense formatting without
+		linebreaks. Common when the XML is needed for network transmission.
+	*/
+	void SetStreamPrinting()						{ indent = "";
+													  lineBreak = "";
+													}
+	/// Return the result.
+	const char* CStr()								{ return buffer.c_str(); }
+	/// Return the length of the result string.
+	size_t Size()									{ return buffer.size(); }
+
+	#ifdef TIXML_USE_STL
+	/// Return the result.
+	const std::string& Str()						{ return buffer; }
+	#endif
+
+private:
+	void DoIndent()	{
+		for( int i=0; i<depth; ++i )
+			buffer += indent;
+	}
+	void DoLineBreak() {
+		buffer += lineBreak;
+	}
+
+	int depth;
+	bool simpleTextPrint;
+	TIXML_STRING buffer;
+	TIXML_STRING indent;
+	TIXML_STRING lineBreak;
+};
+
+
+#ifdef _MSC_VER
+#pragma warning( pop )
+#endif
+
+#endif
diff --git a/aixml/src/tinyxmlerror.cpp b/aixml/src/tinyxmlerror.cpp
new file mode 100644
index 00000000..538c21d0
--- /dev/null
+++ b/aixml/src/tinyxmlerror.cpp
@@ -0,0 +1,52 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied 
+warranty. In no event will the authors be held liable for any 
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any 
+purpose, including commercial applications, and to alter it and 
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+#include "tinyxml.h"
+
+// The goal of the seperate error file is to make the first
+// step towards localization. tinyxml (currently) only supports
+// english error messages, but the could now be translated.
+//
+// It also cleans up the code a bit.
+//
+
+const char* TiXmlBase::errorString[ TiXmlBase::TIXML_ERROR_STRING_COUNT ] =
+{
+	"No error",
+	"Error",
+	"Failed to open file",
+	"Error parsing Element.",
+	"Failed to read Element name",
+	"Error reading Element value.",
+	"Error reading Attributes.",
+	"Error: empty tag.",
+	"Error reading end tag.",
+	"Error parsing Unknown.",
+	"Error parsing Comment.",
+	"Error parsing Declaration.",
+	"Error document empty.",
+	"Error null (0) or unexpected EOF found in input stream.",
+	"Error parsing CDATA.",
+	"Error when TiXmlDocument added to document, because TiXmlDocument can only be at the root.",
+};
diff --git a/aixml/src/tinyxmlparser.cpp b/aixml/src/tinyxmlparser.cpp
new file mode 100644
index 00000000..1ff43171
--- /dev/null
+++ b/aixml/src/tinyxmlparser.cpp
@@ -0,0 +1,1635 @@
+/*
+www.sourceforge.net/projects/tinyxml
+Original code by Lee Thomason (www.grinninglizard.com)
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+*/
+
+#include "tinyxml.h"
+
+//#define DEBUG_PARSER
+#if defined( DEBUG_PARSER )
+#	if defined( DEBUG ) && defined( _MSC_VER )
+#		include <windows.h>
+#		define TIXML_LOG OutputDebugString
+#	else
+#		define TIXML_LOG printf
+#	endif
+#endif
+
+// Note tha "PutString" hardcodes the same list. This
+// is less flexible than it appears. Changing the entries
+// or order will break putstring.
+TiXmlBase::Entity TiXmlBase::entity[ TiXmlBase::NUM_ENTITY ] =
+{
+	{ "&amp;",  5, '&' },
+	{ "&lt;",   4, '<' },
+	{ "&gt;",   4, '>' },
+	{ "&quot;", 6, '\"' },
+	{ "&apos;", 6, '\'' }
+};
+
+// Bunch of unicode info at:
+//		http://www.unicode.org/faq/utf_bom.html
+// Including the basic of this table, which determines the #bytes in the
+// sequence from the lead byte. 1 placed for invalid sequences --
+// although the result will be junk, pass it through as much as possible.
+// Beware of the non-characters in UTF-8:
+//				ef bb bf (Microsoft "lead bytes")
+//				ef bf be
+//				ef bf bf
+
+const unsigned char TIXML_UTF_LEAD_0 = 0xefU;
+const unsigned char TIXML_UTF_LEAD_1 = 0xbbU;
+const unsigned char TIXML_UTF_LEAD_2 = 0xbfU;
+
+const int TiXmlBase::utf8ByteTable[256] =
+{
+	//	0	1	2	3	4	5	6	7	8	9	a	b	c	d	e	f
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x00
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x10
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x20
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x30
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x40
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x50
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x60
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x70	End of ASCII range
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x80 0x80 to 0xc1 invalid
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0x90
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0xa0
+		1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	// 0xb0
+		1,	1,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	// 0xc0 0xc2 to 0xdf 2 byte
+		2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	2,	// 0xd0
+		3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	3,	// 0xe0 0xe0 to 0xef 3 byte
+		4,	4,	4,	4,	4,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1,	1	// 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid
+};
+
+
+void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length )
+{
+	const unsigned long BYTE_MASK = 0xBF;
+	const unsigned long BYTE_MARK = 0x80;
+	const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };
+
+	if (input < 0x80)
+		*length = 1;
+	else if ( input < 0x800 )
+		*length = 2;
+	else if ( input < 0x10000 )
+		*length = 3;
+	else if ( input < 0x200000 )
+		*length = 4;
+	else
+		{ *length = 0; return; }	// This code won't covert this correctly anyway.
+
+	output += *length;
+
+	// Scary scary fall throughs.
+	switch (*length)
+	{
+		case 4:
+			--output;
+			*output = (char)((input | BYTE_MARK) & BYTE_MASK);
+			input >>= 6;
+		case 3:
+			--output;
+			*output = (char)((input | BYTE_MARK) & BYTE_MASK);
+			input >>= 6;
+		case 2:
+			--output;
+			*output = (char)((input | BYTE_MARK) & BYTE_MASK);
+			input >>= 6;
+		case 1:
+			--output;
+			*output = (char)(input | FIRST_BYTE_MARK[*length]);
+	}
+}
+
+
+/*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ )
+{
+	// This will only work for low-ascii, everything else is assumed to be a valid
+	// letter. I'm not sure this is the best approach, but it is quite tricky trying
+	// to figure out alhabetical vs. not across encoding. So take a very
+	// conservative approach.
+
+//	if ( encoding == TIXML_ENCODING_UTF8 )
+//	{
+		if ( anyByte < 127 )
+			return isalpha( anyByte );
+		else
+			return 1;	// What else to do? The unicode set is huge...get the english ones right.
+//	}
+//	else
+//	{
+//		return isalpha( anyByte );
+//	}
+}
+
+
+/*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ )
+{
+	// This will only work for low-ascii, everything else is assumed to be a valid
+	// letter. I'm not sure this is the best approach, but it is quite tricky trying
+	// to figure out alhabetical vs. not across encoding. So take a very
+	// conservative approach.
+
+//	if ( encoding == TIXML_ENCODING_UTF8 )
+//	{
+		if ( anyByte < 127 )
+			return isalnum( anyByte );
+		else
+			return 1;	// What else to do? The unicode set is huge...get the english ones right.
+//	}
+//	else
+//	{
+//		return isalnum( anyByte );
+//	}
+}
+
+
+class TiXmlParsingData
+{
+	friend class TiXmlDocument;
+  public:
+	void Stamp( const char* now, TiXmlEncoding encoding );
+
+	const TiXmlCursor& Cursor() const	{ return cursor; }
+
+  private:
+	// Only used by the document!
+	TiXmlParsingData( const char* start, int _tabsize, int row, int col )
+	{
+		assert( start );
+		stamp = start;
+		tabsize = _tabsize;
+		cursor.row = row;
+		cursor.col = col;
+	}
+
+	TiXmlCursor		cursor;
+	const char*		stamp;
+	int				tabsize;
+};
+
+
+void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding )
+{
+	assert( now );
+
+	// Do nothing if the tabsize is 0.
+	if ( tabsize < 1 )
+	{
+		return;
+	}
+
+	// Get the current row, column.
+	int row = cursor.row;
+	int col = cursor.col;
+	const char* p = stamp;
+	assert( p );
+
+	while ( p < now )
+	{
+		// Treat p as unsigned, so we have a happy compiler.
+		const unsigned char* pU = (const unsigned char*)p;
+
+		// Code contributed by Fletcher Dunn: (modified by lee)
+		switch (*pU) {
+			case 0:
+				// We *should* never get here, but in case we do, don't
+				// advance past the terminating null character, ever
+				return;
+
+			case '\r':
+				// bump down to the next line
+				++row;
+				col = 0;
+				// Eat the character
+				++p;
+
+				// Check for \r\n sequence, and treat this as a single character
+				if (*p == '\n') {
+					++p;
+				}
+				break;
+
+			case '\n':
+				// bump down to the next line
+				++row;
+				col = 0;
+
+				// Eat the character
+				++p;
+
+				// Check for \n\r sequence, and treat this as a single
+				// character.  (Yes, this bizarre thing does occur still
+				// on some arcane platforms...)
+				if (*p == '\r') {
+					++p;
+				}
+				break;
+
+			case '\t':
+				// Eat the character
+				++p;
+
+				// Skip to next tab stop
+				col = (col / tabsize + 1) * tabsize;
+				break;
+
+			case TIXML_UTF_LEAD_0:
+				if ( encoding == TIXML_ENCODING_UTF8 )
+				{
+					if ( *(p+1) && *(p+2) )
+					{
+						// In these cases, don't advance the column. These are
+						// 0-width spaces.
+						if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 )
+							p += 3;
+						else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU )
+							p += 3;
+						else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU )
+							p += 3;
+						else
+							{ p +=3; ++col; }	// A normal character.
+					}
+				}
+				else
+				{
+					++p;
+					++col;
+				}
+				break;
+
+			default:
+				if ( encoding == TIXML_ENCODING_UTF8 )
+				{
+					// Eat the 1 to 4 byte utf8 character.
+					int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)];
+					if ( step == 0 )
+						step = 1;		// Error case from bad encoding, but handle gracefully.
+					p += step;
+
+					// Just advance one column, of course.
+					++col;
+				}
+				else
+				{
+					++p;
+					++col;
+				}
+				break;
+		}
+	}
+	cursor.row = row;
+	cursor.col = col;
+	assert( cursor.row >= -1 );
+	assert( cursor.col >= -1 );
+	stamp = p;
+	assert( stamp );
+}
+
+
+const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding )
+{
+	if ( !p || !*p )
+	{
+		return 0;
+	}
+	if ( encoding == TIXML_ENCODING_UTF8 )
+	{
+		while ( *p )
+		{
+			const unsigned char* pU = (const unsigned char*)p;
+
+			// Skip the stupid Microsoft UTF-8 Byte order marks
+			if (	*(pU+0)==TIXML_UTF_LEAD_0
+				 && *(pU+1)==TIXML_UTF_LEAD_1
+				 && *(pU+2)==TIXML_UTF_LEAD_2 )
+			{
+				p += 3;
+				continue;
+			}
+			else if(*(pU+0)==TIXML_UTF_LEAD_0
+				 && *(pU+1)==0xbfU
+				 && *(pU+2)==0xbeU )
+			{
+				p += 3;
+				continue;
+			}
+			else if(*(pU+0)==TIXML_UTF_LEAD_0
+				 && *(pU+1)==0xbfU
+				 && *(pU+2)==0xbfU )
+			{
+				p += 3;
+				continue;
+			}
+
+			if ( IsWhiteSpace( *p ) )		// Still using old rules for white space.
+				++p;
+			else
+				break;
+		}
+	}
+	else
+	{
+		while ( *p && IsWhiteSpace( *p ) )
+			++p;
+	}
+
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag )
+{
+	for( ;; )
+	{
+		if ( !in->good() ) return false;
+
+		int c = in->peek();
+		// At this scope, we can't get to a document. So fail silently.
+		if ( !IsWhiteSpace( c ) || c <= 0 )
+			return true;
+
+		*tag += (char) in->get();
+	}
+}
+
+/*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag )
+{
+	//assert( character > 0 && character < 128 );	// else it won't work in utf-8
+	while ( in->good() )
+	{
+		int c = in->peek();
+		if ( c == character )
+			return true;
+		if ( c <= 0 )		// Silent failure: can't get document at this scope
+			return false;
+
+		in->get();
+		*tag += (char) c;
+	}
+	return false;
+}
+#endif
+
+// One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The
+// "assign" optimization removes over 10% of the execution time.
+//
+const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding )
+{
+	// Oddly, not supported on some comilers,
+	//name->clear();
+	// So use this:
+	*name = "";
+	assert( p );
+
+	// Names start with letters or underscores.
+	// Of course, in unicode, tinyxml has no idea what a letter *is*. The
+	// algorithm is generous.
+	//
+	// After that, they can be letters, underscores, numbers,
+	// hyphens, or colons. (Colons are valid ony for namespaces,
+	// but tinyxml can't tell namespaces from names.)
+	if (    p && *p
+		 && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) )
+	{
+		const char* start = p;
+		while(		p && *p
+				&&	(		IsAlphaNum( (unsigned char ) *p, encoding )
+						 || *p == '_'
+						 || *p == '-'
+						 || *p == '.'
+						 || *p == ':' ) )
+		{
+			//(*name) += *p; // expensive
+			++p;
+		}
+		if ( p-start > 0 ) {
+			name->assign( start, p-start );
+		}
+		return p;
+	}
+	return 0;
+}
+
+const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding )
+{
+	// Presume an entity, and pull it out.
+    TIXML_STRING ent;
+	int i;
+	*length = 0;
+
+	if ( *(p+1) && *(p+1) == '#' && *(p+2) )
+	{
+		unsigned long ucs = 0;
+        std::ptrdiff_t delta = 0;
+		unsigned mult = 1;
+
+		if ( *(p+2) == 'x' )
+		{
+			// Hexadecimal.
+			if ( !*(p+3) ) return 0;
+
+			const char* q = p+3;
+			q = strchr( q, ';' );
+
+			if ( !q || !*q ) return 0;
+
+			delta = q-p;
+			--q;
+
+			while ( *q != 'x' )
+			{
+				if ( *q >= '0' && *q <= '9' )
+					ucs += mult * (*q - '0');
+				else if ( *q >= 'a' && *q <= 'f' )
+					ucs += mult * (*q - 'a' + 10);
+				else if ( *q >= 'A' && *q <= 'F' )
+					ucs += mult * (*q - 'A' + 10 );
+				else
+					return 0;
+				mult *= 16;
+				--q;
+			}
+		}
+		else
+		{
+			// Decimal.
+			if ( !*(p+2) ) return 0;
+
+			const char* q = p+2;
+			q = strchr( q, ';' );
+
+			if ( !q || !*q ) return 0;
+
+			delta = q-p;
+			--q;
+
+			while ( *q != '#' )
+			{
+				if ( *q >= '0' && *q <= '9' )
+					ucs += mult * (*q - '0');
+				else
+					return 0;
+				mult *= 10;
+				--q;
+			}
+		}
+		if ( encoding == TIXML_ENCODING_UTF8 )
+		{
+			// convert the UCS to UTF-8
+			ConvertUTF32ToUTF8( ucs, value, length );
+		}
+		else
+		{
+			*value = (char)ucs;
+			*length = 1;
+		}
+		return p + delta + 1;
+	}
+
+	// Now try to match it.
+	for( i=0; i<NUM_ENTITY; ++i )
+	{
+		if ( strncmp( entity[i].str, p, entity[i].strLength ) == 0 )
+		{
+			assert( strlen( entity[i].str ) == entity[i].strLength );
+			*value = entity[i].chr;
+			*length = 1;
+			return ( p + entity[i].strLength );
+		}
+	}
+
+	// So it wasn't an entity, its unrecognized, or something like that.
+	*value = *p;	// Don't put back the last one, since we return it!
+	//*length = 1;	// Leave unrecognized entities - this doesn't really work.
+					// Just writes strange XML.
+	return p+1;
+}
+
+
+bool TiXmlBase::StringEqual( const char* p,
+							 const char* tag,
+							 bool ignoreCase,
+							 TiXmlEncoding encoding )
+{
+	assert( p );
+	assert( tag );
+	if ( !p || !*p )
+	{
+		assert( 0 );
+		return false;
+	}
+
+	const char* q = p;
+
+	if ( ignoreCase )
+	{
+		while ( *q && *tag && ToLower( *q, encoding ) == ToLower( *tag, encoding ) )
+		{
+			++q;
+			++tag;
+		}
+
+		if ( *tag == 0 )
+			return true;
+	}
+	else
+	{
+		while ( *q && *tag && *q == *tag )
+		{
+			++q;
+			++tag;
+		}
+
+		if ( *tag == 0 )		// Have we found the end of the tag, and everything equal?
+			return true;
+	}
+	return false;
+}
+
+const char* TiXmlBase::ReadText(	const char* p,
+									TIXML_STRING * text,
+									bool trimWhiteSpace,
+									const char* endTag,
+									bool caseInsensitive,
+									TiXmlEncoding encoding )
+{
+    *text = "";
+	if (    !trimWhiteSpace			// certain tags always keep whitespace
+		 || !condenseWhiteSpace )	// if true, whitespace is always kept
+	{
+		// Keep all the white space.
+		while (	   p && *p
+				&& !StringEqual( p, endTag, caseInsensitive, encoding )
+			  )
+		{
+			int len;
+			char cArr[4] = { 0, 0, 0, 0 };
+			p = GetChar( p, cArr, &len, encoding );
+			text->append( cArr, len );
+		}
+	}
+	else
+	{
+		bool whitespace = false;
+
+		// Remove leading white space:
+		p = SkipWhiteSpace( p, encoding );
+		while (	   p && *p
+				&& !StringEqual( p, endTag, caseInsensitive, encoding ) )
+		{
+			if ( *p == '\r' || *p == '\n' )
+			{
+				whitespace = true;
+				++p;
+			}
+			else if ( IsWhiteSpace( *p ) )
+			{
+				whitespace = true;
+				++p;
+			}
+			else
+			{
+				// If we've found whitespace, add it before the
+				// new character. Any whitespace just becomes a space.
+				if ( whitespace )
+				{
+					(*text) += ' ';
+					whitespace = false;
+				}
+				int len;
+				char cArr[4] = { 0, 0, 0, 0 };
+				p = GetChar( p, cArr, &len, encoding );
+				if ( len == 1 )
+					(*text) += cArr[0];	// more efficient
+				else
+					text->append( cArr, len );
+			}
+		}
+	}
+	if ( p && *p )
+		p += strlen( endTag );
+	return ( p && *p ) ? p : 0;
+}
+
+#ifdef TIXML_USE_STL
+
+void TiXmlDocument::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	// The basic issue with a document is that we don't know what we're
+	// streaming. Read something presumed to be a tag (and hope), then
+	// identify it, and call the appropriate stream method on the tag.
+	//
+	// This "pre-streaming" will never read the closing ">" so the
+	// sub-tag can orient itself.
+
+	if ( !StreamTo( in, '<', tag ) )
+	{
+		SetError( TIXML_ERROR_PARSING_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return;
+	}
+
+	while ( in->good() )
+	{
+		int tagIndex = (int) tag->length();
+		while ( in->good() && in->peek() != '>' )
+		{
+			int c = in->get();
+			if ( c <= 0 )
+			{
+				SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+				break;
+			}
+			(*tag) += (char) c;
+		}
+
+		if ( in->good() )
+		{
+			// We now have something we presume to be a node of
+			// some sort. Identify it, and call the node to
+			// continue streaming.
+			TiXmlNode* node = Identify( tag->c_str() + tagIndex, TIXML_DEFAULT_ENCODING );
+
+			if ( node )
+			{
+				node->StreamIn( in, tag );
+				bool isElement = node->ToElement() != 0;
+				delete node;
+				node = 0;
+
+				// If this is the root element, we're done. Parsing will be
+				// done by the >> operator.
+				if ( isElement )
+				{
+					return;
+				}
+			}
+			else
+			{
+				SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN );
+				return;
+			}
+		}
+	}
+	// We should have returned sooner.
+	SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN );
+}
+
+#endif
+
+const char* TiXmlDocument::Parse( const char* p, TiXmlParsingData* prevData, TiXmlEncoding encoding )
+{
+	ClearError();
+
+	// Parse away, at the document level. Since a document
+	// contains nothing but other tags, most of what happens
+	// here is skipping white space.
+	if ( !p || !*p )
+	{
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	// Note that, for a document, this needs to come
+	// before the while space skip, so that parsing
+	// starts from the pointer we are given.
+	location.Clear();
+	if ( prevData )
+	{
+		location.row = prevData->cursor.row;
+		location.col = prevData->cursor.col;
+	}
+	else
+	{
+		location.row = 0;
+		location.col = 0;
+	}
+	TiXmlParsingData data( p, TabSize(), location.row, location.col );
+	location = data.Cursor();
+
+	if ( encoding == TIXML_ENCODING_UNKNOWN )
+	{
+		// Check for the Microsoft UTF-8 lead bytes.
+		const unsigned char* pU = (const unsigned char*)p;
+		if (	*(pU+0) && *(pU+0) == TIXML_UTF_LEAD_0
+			 && *(pU+1) && *(pU+1) == TIXML_UTF_LEAD_1
+			 && *(pU+2) && *(pU+2) == TIXML_UTF_LEAD_2 )
+		{
+			encoding = TIXML_ENCODING_UTF8;
+			useMicrosoftBOM = true;
+		}
+	}
+
+    p = SkipWhiteSpace( p, encoding );
+	if ( !p )
+	{
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN );
+		return 0;
+	}
+
+	while ( p && *p )
+	{
+		TiXmlNode* node = Identify( p, encoding );
+		if ( node )
+		{
+			p = node->Parse( p, &data, encoding );
+			LinkEndChild( node );
+		}
+		else
+		{
+			break;
+		}
+
+		// Did we get encoding info?
+		if (    encoding == TIXML_ENCODING_UNKNOWN
+			 && node->ToDeclaration() )
+		{
+			TiXmlDeclaration* dec = node->ToDeclaration();
+			const char* enc = dec->Encoding();
+			assert( enc );
+
+			if ( *enc == 0 )
+				encoding = TIXML_ENCODING_UTF8;
+			else if ( StringEqual( enc, "UTF-8", true, TIXML_ENCODING_UNKNOWN ) )
+				encoding = TIXML_ENCODING_UTF8;
+			else if ( StringEqual( enc, "UTF8", true, TIXML_ENCODING_UNKNOWN ) )
+				encoding = TIXML_ENCODING_UTF8;	// incorrect, but be nice
+			else
+				encoding = TIXML_ENCODING_LEGACY;
+		}
+
+		p = SkipWhiteSpace( p, encoding );
+	}
+
+	// Was this empty?
+	if ( !firstChild ) {
+		SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, encoding );
+		return 0;
+	}
+
+	// All is well.
+	return p;
+}
+
+void TiXmlDocument::SetError( int err, const char* pError, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	// The first error in a chain is more accurate - don't set again!
+	if ( error )
+		return;
+
+	assert( err > 0 && err < TIXML_ERROR_STRING_COUNT );
+	error   = true;
+	errorId = err;
+	errorDesc = errorString[ errorId ];
+
+	errorLocation.Clear();
+	if ( pError && data )
+	{
+		data->Stamp( pError, encoding );
+		errorLocation = data->Cursor();
+	}
+}
+
+
+TiXmlNode* TiXmlNode::Identify( const char* p, TiXmlEncoding encoding )
+{
+	TiXmlNode* returnNode = 0;
+
+	p = SkipWhiteSpace( p, encoding );
+	if( !p || !*p || *p != '<' )
+	{
+		return 0;
+	}
+
+	p = SkipWhiteSpace( p, encoding );
+
+	if ( !p || !*p )
+	{
+		return 0;
+	}
+
+	// What is this thing?
+	// - Elements start with a letter or underscore, but xml is reserved.
+	// - Comments: <!--
+	// - Decleration: <?xml
+	// - Everthing else is unknown to tinyxml.
+	//
+
+	const char* xmlHeader = { "<?xml" };
+	const char* commentHeader = { "<!--" };
+	const char* dtdHeader = { "<!" };
+	const char* cdataHeader = { "<![CDATA[" };
+
+	if ( StringEqual( p, xmlHeader, true, encoding ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Declaration\n" );
+		#endif
+		returnNode = new TiXmlDeclaration();
+	}
+	else if ( StringEqual( p, commentHeader, false, encoding ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Comment\n" );
+		#endif
+		returnNode = new TiXmlComment();
+	}
+	else if ( StringEqual( p, cdataHeader, false, encoding ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing CDATA\n" );
+		#endif
+		TiXmlText* text = new TiXmlText( "" );
+		text->SetCDATA( true );
+		returnNode = text;
+	}
+	else if ( StringEqual( p, dtdHeader, false, encoding ) )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Unknown(1)\n" );
+		#endif
+		returnNode = new TiXmlUnknown();
+	}
+	else if (    IsAlpha( *(p+1), encoding )
+			  || *(p+1) == '_' )
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Element\n" );
+		#endif
+		returnNode = new TiXmlElement( "" );
+	}
+	else
+	{
+		#ifdef DEBUG_PARSER
+			TIXML_LOG( "XML parsing Unknown(2)\n" );
+		#endif
+		returnNode = new TiXmlUnknown();
+	}
+
+	if ( returnNode )
+	{
+		// Set the parent, so it can report errors
+		returnNode->parent = this;
+	}
+	return returnNode;
+}
+
+#ifdef TIXML_USE_STL
+
+void TiXmlElement::StreamIn (std::istream * in, TIXML_STRING * tag)
+{
+	// We're called with some amount of pre-parsing. That is, some of "this"
+	// element is in "tag". Go ahead and stream to the closing ">"
+	while( in->good() )
+	{
+		int c = in->get();
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+		(*tag) += (char) c ;
+
+		if ( c == '>' )
+			break;
+	}
+
+	if ( tag->length() < 3 ) return;
+
+	// Okay...if we are a "/>" tag, then we're done. We've read a complete tag.
+	// If not, identify and stream.
+
+	if (    tag->at( tag->length() - 1 ) == '>'
+		 && tag->at( tag->length() - 2 ) == '/' )
+	{
+		// All good!
+		return;
+	}
+	else if ( tag->at( tag->length() - 1 ) == '>' )
+	{
+		// There is more. Could be:
+		//		text
+		//		cdata text (which looks like another node)
+		//		closing tag
+		//		another node.
+		for ( ;; )
+		{
+			StreamWhiteSpace( in, tag );
+
+			// Do we have text?
+			if ( in->good() && in->peek() != '<' )
+			{
+				// Yep, text.
+				TiXmlText text( "" );
+				text.StreamIn( in, tag );
+
+				// What follows text is a closing tag or another node.
+				// Go around again and figure it out.
+				continue;
+			}
+
+			// We now have either a closing tag...or another node.
+			// We should be at a "<", regardless.
+			if ( !in->good() ) return;
+			assert( in->peek() == '<' );
+			int tagIndex = (int) tag->length();
+
+			bool closingTag = false;
+			bool firstCharFound = false;
+
+			for( ;; )
+			{
+				if ( !in->good() )
+					return;
+
+				int c = in->peek();
+				if ( c <= 0 )
+				{
+					TiXmlDocument* document = GetDocument();
+					if ( document )
+						document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+					return;
+				}
+
+				if ( c == '>' )
+					break;
+
+				*tag += (char) c;
+				in->get();
+
+				// Early out if we find the CDATA id.
+				if ( c == '[' && tag->size() >= 9 )
+				{
+					size_t len = tag->size();
+					const char* start = tag->c_str() + len - 9;
+					if ( strcmp( start, "<![CDATA[" ) == 0 ) {
+						assert( !closingTag );
+						break;
+					}
+				}
+
+				if ( !firstCharFound && c != '<' && !IsWhiteSpace( c ) )
+				{
+					firstCharFound = true;
+					if ( c == '/' )
+						closingTag = true;
+				}
+			}
+			// If it was a closing tag, then read in the closing '>' to clean up the input stream.
+			// If it was not, the streaming will be done by the tag.
+			if ( closingTag )
+			{
+				if ( !in->good() )
+					return;
+
+				int c = in->get();
+				if ( c <= 0 )
+				{
+					TiXmlDocument* document = GetDocument();
+					if ( document )
+						document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+					return;
+				}
+				assert( c == '>' );
+				*tag += (char) c;
+
+				// We are done, once we've found our closing tag.
+				return;
+			}
+			else
+			{
+				// If not a closing tag, id it, and stream.
+				const char* tagloc = tag->c_str() + tagIndex;
+				TiXmlNode* node = Identify( tagloc, TIXML_DEFAULT_ENCODING );
+				if ( !node )
+					return;
+				node->StreamIn( in, tag );
+				delete node;
+				node = 0;
+
+				// No return: go around from the beginning: text, closing tag, or node.
+			}
+		}
+	}
+}
+#endif
+
+const char* TiXmlElement::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	p = SkipWhiteSpace( p, encoding );
+	TiXmlDocument* document = GetDocument();
+
+	if ( !p || !*p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT, 0, 0, encoding );
+		return 0;
+	}
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+
+	if ( *p != '<' )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT, p, data, encoding );
+		return 0;
+	}
+
+	p = SkipWhiteSpace( p+1, encoding );
+
+	// Read the name.
+	const char* pErr = p;
+
+    p = ReadName( p, &value, encoding );
+	if ( !p || !*p )
+	{
+		if ( document )	document->SetError( TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, pErr, data, encoding );
+		return 0;
+	}
+
+    TIXML_STRING endTag ("</");
+	endTag += value;
+
+	// Check for and read attributes. Also look for an empty
+	// tag or an end tag.
+	while ( p && *p )
+	{
+		pErr = p;
+		p = SkipWhiteSpace( p, encoding );
+		if ( !p || !*p )
+		{
+			if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding );
+			return 0;
+		}
+		if ( *p == '/' )
+		{
+			++p;
+			// Empty tag.
+			if ( *p  != '>' )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_PARSING_EMPTY, p, data, encoding );
+				return 0;
+			}
+			return (p+1);
+		}
+		else if ( *p == '>' )
+		{
+			// Done with attributes (if there were any.)
+			// Read the value -- which can include other
+			// elements -- read the end tag, and return.
+			++p;
+			p = ReadValue( p, data, encoding );		// Note this is an Element method, and will set the error if one happens.
+			if ( !p || !*p ) {
+				// We were looking for the end tag, but found nothing.
+				// Fix for [ 1663758 ] Failure to report error on bad XML
+				if ( document ) document->SetError( TIXML_ERROR_READING_END_TAG, p, data, encoding );
+				return 0;
+			}
+
+			// We should find the end tag now
+			// note that:
+			// </foo > and
+			// </foo>
+			// are both valid end tags.
+			if ( StringEqual( p, endTag.c_str(), false, encoding ) )
+			{
+				p += endTag.length();
+				p = SkipWhiteSpace( p, encoding );
+				if ( p && *p && *p == '>' ) {
+					++p;
+					return p;
+				}
+				if ( document ) document->SetError( TIXML_ERROR_READING_END_TAG, p, data, encoding );
+				return 0;
+			}
+			else
+			{
+				if ( document ) document->SetError( TIXML_ERROR_READING_END_TAG, p, data, encoding );
+				return 0;
+			}
+		}
+		else
+		{
+			// Try to read an attribute:
+			TiXmlAttribute* attrib = new TiXmlAttribute();
+			if ( !attrib )
+			{
+				return 0;
+			}
+
+			attrib->SetDocument( document );
+			pErr = p;
+			p = attrib->Parse( p, data, encoding );
+
+			if ( !p || !*p )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT, pErr, data, encoding );
+				delete attrib;
+				return 0;
+			}
+
+			// Handle the strange case of double attributes:
+			#ifdef TIXML_USE_STL
+			TiXmlAttribute* node = attributeSet.Find( attrib->NameTStr() );
+			#else
+			TiXmlAttribute* node = attributeSet.Find( attrib->Name() );
+			#endif
+			if ( node )
+			{
+				if ( document ) document->SetError( TIXML_ERROR_PARSING_ELEMENT, pErr, data, encoding );
+				delete attrib;
+				return 0;
+			}
+
+			attributeSet.Add( attrib );
+		}
+	}
+	return p;
+}
+
+
+const char* TiXmlElement::ReadValue( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	TiXmlDocument* document = GetDocument();
+
+	// Read in text and elements in any order.
+	const char* pWithWhiteSpace = p;
+	p = SkipWhiteSpace( p, encoding );
+
+	while ( p && *p )
+	{
+		if ( *p != '<' )
+		{
+			// Take what we have, make a text element.
+			TiXmlText* textNode = new TiXmlText( "" );
+
+			if ( !textNode )
+			{
+			    return 0;
+			}
+
+			if ( TiXmlBase::IsWhiteSpaceCondensed() )
+			{
+				p = textNode->Parse( p, data, encoding );
+			}
+			else
+			{
+				// Special case: we want to keep the white space
+				// so that leading spaces aren't removed.
+				p = textNode->Parse( pWithWhiteSpace, data, encoding );
+			}
+
+			if ( !textNode->Blank() )
+				LinkEndChild( textNode );
+			else
+				delete textNode;
+		}
+		else
+		{
+			// We hit a '<'
+			// Have we hit a new element or an end tag? This could also be
+			// a TiXmlText in the "CDATA" style.
+			if ( StringEqual( p, "</", false, encoding ) )
+			{
+				return p;
+			}
+			else
+			{
+				TiXmlNode* node = Identify( p, encoding );
+				if ( node )
+				{
+					p = node->Parse( p, data, encoding );
+					LinkEndChild( node );
+				}
+				else
+				{
+					return 0;
+				}
+			}
+		}
+		pWithWhiteSpace = p;
+		p = SkipWhiteSpace( p, encoding );
+	}
+
+	if ( !p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ELEMENT_VALUE, 0, 0, encoding );
+	}
+	return p;
+}
+
+
+#ifdef TIXML_USE_STL
+void TiXmlUnknown::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->get();
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+		(*tag) += (char) c;
+
+		if ( c == '>' )
+		{
+			// All is well.
+			return;
+		}
+	}
+}
+#endif
+
+
+const char* TiXmlUnknown::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	TiXmlDocument* document = GetDocument();
+	p = SkipWhiteSpace( p, encoding );
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+	if ( !p || !*p || *p != '<' )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_UNKNOWN, p, data, encoding );
+		return 0;
+	}
+	++p;
+    value = "";
+
+	while ( p && *p && *p != '>' )
+	{
+		value += *p;
+		++p;
+	}
+
+	if ( !p )
+	{
+		if ( document )
+			document->SetError( TIXML_ERROR_PARSING_UNKNOWN, 0, 0, encoding );
+	}
+	if ( p && *p == '>' )
+		return p+1;
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+void TiXmlComment::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->get();
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+
+		(*tag) += (char) c;
+
+		if ( c == '>'
+			 && tag->at( tag->length() - 2 ) == '-'
+			 && tag->at( tag->length() - 3 ) == '-' )
+		{
+			// All is well.
+			return;
+		}
+	}
+}
+#endif
+
+
+const char* TiXmlComment::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	TiXmlDocument* document = GetDocument();
+	value = "";
+
+	p = SkipWhiteSpace( p, encoding );
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+	const char* startTag = "<!--";
+	const char* endTag   = "-->";
+
+	if ( !StringEqual( p, startTag, false, encoding ) )
+	{
+		if ( document )
+			document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding );
+		return 0;
+	}
+	p += strlen( startTag );
+
+	// [ 1475201 ] TinyXML parses entities in comments
+	// Oops - ReadText doesn't work, because we don't want to parse the entities.
+	// p = ReadText( p, &value, false, endTag, false, encoding );
+	//
+	// from the XML spec:
+	/*
+	 [Definition: Comments may appear anywhere in a document outside other markup; in addition,
+	              they may appear within the document type declaration at places allowed by the grammar.
+				  They are not part of the document's character data; an XML processor MAY, but need not,
+				  make it possible for an application to retrieve the text of comments. For compatibility,
+				  the string "--" (double-hyphen) MUST NOT occur within comments.] Parameter entity
+				  references MUST NOT be recognized within comments.
+
+				  An example of a comment:
+
+				  <!-- declarations for <head> & <body> -->
+	*/
+
+    value = "";
+	// Keep all the white space.
+	while (	p && *p && !StringEqual( p, endTag, false, encoding ) )
+	{
+		value.append( p, 1 );
+		++p;
+	}
+	if ( p && *p )
+		p += strlen( endTag );
+
+	return p;
+}
+
+
+const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	p = SkipWhiteSpace( p, encoding );
+	if ( !p || !*p ) return 0;
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+	// Read the name, the '=' and the value.
+	const char* pErr = p;
+	p = ReadName( p, &name, encoding );
+	if ( !p || !*p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding );
+		return 0;
+	}
+	p = SkipWhiteSpace( p, encoding );
+	if ( !p || !*p || *p != '=' )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
+		return 0;
+	}
+
+	++p;	// skip '='
+	p = SkipWhiteSpace( p, encoding );
+	if ( !p || !*p )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
+		return 0;
+	}
+
+	const char* end;
+	const char SINGLE_QUOTE = '\'';
+	const char DOUBLE_QUOTE = '\"';
+
+	if ( *p == SINGLE_QUOTE )
+	{
+		++p;
+		end = "\'";		// single quote in string
+		p = ReadText( p, &value, false, end, false, encoding );
+	}
+	else if ( *p == DOUBLE_QUOTE )
+	{
+		++p;
+		end = "\"";		// double quote in string
+		p = ReadText( p, &value, false, end, false, encoding );
+	}
+	else
+	{
+		// All attribute values should be in single or double quotes.
+		// But this is such a common error that the parser will try
+		// its best, even without them.
+		value = "";
+		while (    p && *p											// existence
+				&& !IsWhiteSpace( *p )								// whitespace
+				&& *p != '/' && *p != '>' )							// tag end
+		{
+			if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) {
+				// [ 1451649 ] Attribute values with trailing quotes not handled correctly
+				// We did not have an opening quote but seem to have a
+				// closing one. Give up and throw an error.
+				if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding );
+				return 0;
+			}
+			value += *p;
+			++p;
+		}
+	}
+	return p;
+}
+
+#ifdef TIXML_USE_STL
+void TiXmlText::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->peek();
+		if ( !cdata && (c == '<' ) )
+		{
+			return;
+		}
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+
+		(*tag) += (char) c;
+		in->get();	// "commits" the peek made above
+
+		if ( cdata && c == '>' && tag->size() >= 3 ) {
+			size_t len = tag->size();
+			if ( (*tag)[len-2] == ']' && (*tag)[len-3] == ']' ) {
+				// terminator of cdata.
+				return;
+			}
+		}
+	}
+}
+#endif
+
+const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding )
+{
+	value = "";
+	TiXmlDocument* document = GetDocument();
+
+	if ( data )
+	{
+		data->Stamp( p, encoding );
+		location = data->Cursor();
+	}
+
+	const char* const startTag = "<![CDATA[";
+	const char* const endTag   = "]]>";
+
+	if ( cdata || StringEqual( p, startTag, false, encoding ) )
+	{
+		cdata = true;
+
+		if ( !StringEqual( p, startTag, false, encoding ) )
+		{
+			if ( document )
+				document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding );
+			return 0;
+		}
+		p += strlen( startTag );
+
+		// Keep all the white space, ignore the encoding, etc.
+		while (	   p && *p
+				&& !StringEqual( p, endTag, false, encoding )
+			  )
+		{
+			value += *p;
+			++p;
+		}
+
+		TIXML_STRING dummy;
+		p = ReadText( p, &dummy, false, endTag, false, encoding );
+		return p;
+	}
+	else
+	{
+		bool ignoreWhite = true;
+
+		const char* end = "<";
+		p = ReadText( p, &value, ignoreWhite, end, false, encoding );
+		if ( p && *p )
+			return p-1;	// don't truncate the '<'
+		return 0;
+	}
+}
+
+#ifdef TIXML_USE_STL
+void TiXmlDeclaration::StreamIn( std::istream * in, TIXML_STRING * tag )
+{
+	while ( in->good() )
+	{
+		int c = in->get();
+		if ( c <= 0 )
+		{
+			TiXmlDocument* document = GetDocument();
+			if ( document )
+				document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN );
+			return;
+		}
+		(*tag) += (char) c;
+
+		if ( c == '>' )
+		{
+			// All is well.
+			return;
+		}
+	}
+}
+#endif
+
+const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding )
+{
+	p = SkipWhiteSpace( p, _encoding );
+	// Find the beginning, find the end, and look for
+	// the stuff in-between.
+	TiXmlDocument* document = GetDocument();
+	if ( !p || !*p || !StringEqual( p, "<?xml", true, _encoding ) )
+	{
+		if ( document ) document->SetError( TIXML_ERROR_PARSING_DECLARATION, 0, 0, _encoding );
+		return 0;
+	}
+	if ( data )
+	{
+		data->Stamp( p, _encoding );
+		location = data->Cursor();
+	}
+	p += 5;
+
+	version = "";
+	encoding = "";
+	standalone = "";
+
+	while ( p && *p )
+	{
+		if ( *p == '>' )
+		{
+			++p;
+			return p;
+		}
+
+		p = SkipWhiteSpace( p, _encoding );
+		if ( StringEqual( p, "version", true, _encoding ) )
+		{
+			TiXmlAttribute attrib;
+			p = attrib.Parse( p, data, _encoding );
+			version = attrib.Value();
+		}
+		else if ( StringEqual( p, "encoding", true, _encoding ) )
+		{
+			TiXmlAttribute attrib;
+			p = attrib.Parse( p, data, _encoding );
+			encoding = attrib.Value();
+		}
+		else if ( StringEqual( p, "standalone", true, _encoding ) )
+		{
+			TiXmlAttribute attrib;
+			p = attrib.Parse( p, data, _encoding );
+			standalone = attrib.Value();
+		}
+		else
+		{
+			// Read over whatever it is.
+			while( p && *p && *p != '>' && !IsWhiteSpace( *p ) )
+				++p;
+		}
+	}
+	return 0;
+}
+
+bool TiXmlText::Blank() const
+{
+	for ( unsigned i=0; i<value.length(); i++ )
+		if ( !IsWhiteSpace( value[i] ) )
+			return false;
+	return true;
+}
+
diff --git a/aixml/test/CMakeLists.txt b/aixml/test/CMakeLists.txt
new file mode 100644
index 00000000..5c546164
--- /dev/null
+++ b/aixml/test/CMakeLists.txt
@@ -0,0 +1,51 @@
+# Convert the module sources to a path found by CMake
+list(TRANSFORM LIBRARY_SOURCES PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/../ OUTPUT_VARIABLE TEST_SOURCES)
+
+# ==============================================
+# Add the test executable
+#
+# *** IMPORTANT ***
+# -> Change *.cpp files according to the tests
+# ==============================================
+add_executable(test_${LIBRARY_NAME}
+    test_aixml.cpp
+    ${TEST_SOURCES}
+)
+
+# Link the test executable against UNICADO libs and gtest
+target_link_libraries( test_${LIBRARY_NAME}
+    PRIVATE
+        runtimeInfo
+        standardFiles
+        GTest::gtest_main
+)
+
+# Set compile definitions for the test executable
+target_compile_options( test_${LIBRARY_NAME} PRIVATE "-w") # Skip warnings
+
+# The the original source folder as includes, to that the test can access the
+# original source files
+target_include_directories( test_${LIBRARY_NAME}
+    PRIVATE
+        ${CMAKE_CURRENT_SOURCE_DIR}/../src/
+		${CMAKE_CURRENT_SOURCE_DIR}/../include/
+)
+
+# Build the test runner into the current directory
+set_target_properties( test_${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+
+# Add a custom target to run the tests with cmake
+add_custom_target(runtest_${LIBRARY_NAME}
+        # COMMAND CTEST_OUTPUT_ON_FAILURE=1 GTEST_COLOR=1
+        COMMAND test_${LIBRARY_NAME}
+        DEPENDS test_${LIBRARY_NAME})
+
+# *optional* Add the test executable to ctest
+# gtest_discover_tests(test_${LIBRARY_NAME})
+
+# Set compile options according to operating system
+if( WIN32 )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS;BUILD_AIXML_DLL")
+elseif( UNIX )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "BUILD_AIXML_SO")
+endif()
diff --git a/aixml/test/stubs/endnode.xml b/aixml/test/stubs/endnode.xml
new file mode 100644
index 00000000..0bf2818e
--- /dev/null
+++ b/aixml/test/stubs/endnode.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" ?>
+<root>
+    <bool description="bool value">
+        <value>true</value>
+    </bool>
+    <double description="double value">
+        <value>0.5</value>
+        <unit>1</unit>
+        <lower_boundary>0.0</lower_boundary>
+        <upper_boundary>20.0</upper_boundary>
+    </double>
+    <faildouble description="failed value">
+        <value>25.0</value>
+        <unit>1</unit>
+        <lower_boundary>0.0</lower_boundary>
+        <upper_boundary>20.0</upper_boundary>
+    </faildouble>
+</root>
diff --git a/aixml/test/stubs/simple.xml b/aixml/test/stubs/simple.xml
new file mode 100644
index 00000000..484727e7
--- /dev/null
+++ b/aixml/test/stubs/simple.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" ?>
+<root>
+    <child>1</child>
+</root>
diff --git a/aixml/test/test_aixml.cpp b/aixml/test/test_aixml.cpp
new file mode 100644
index 00000000..557deffb
--- /dev/null
+++ b/aixml/test/test_aixml.cpp
@@ -0,0 +1,1031 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <aixml/endnode.h>
+#include <aixml/node.h>
+#include <gtest/gtest.h>
+
+/* == Directives == */
+using std::literals::string_literals::operator""s;
+
+/* === Fixtures === */
+
+/**
+ * @class SimpleFile
+ * @brief Test fixture which provides a simple xml file.
+ */
+class SimpleFile : public ::testing::Test {
+ protected:
+  void SetUp() override {
+    /* Check if the file exists */
+    if (!std::filesystem::exists(file)) {
+      FAIL() << "File " << file << " does not exist.";
+    }
+  }
+  const std::filesystem::path file{"../../../aixml/test/stubs/simple.xml"};
+};
+
+/**
+ * @class SimpleFile
+ * @brief Test fixture which provides a simple xml file.
+ */
+class EndnodeFile : public ::testing::Test {
+ protected:
+  void SetUp() override {
+    /* Check if the file exists */
+    if (!std::filesystem::exists(file)) {
+      FAIL() << "File " << file << " does not exist.";
+    }
+  }
+  const std::filesystem::path file{"../../../aixml/test/stubs/endnode.xml"};
+};
+
+/* === Tests === */
+/* Test using the at() operator for a previously defined node
+ * Tested function from node.h: node& at(const std::string& s, int depth =
+ * std::numeric_limits<int>::max()) const; Expecting equality of a set value for
+ * the node entry
+ */
+TEST(testNodeAtAccessOperator, accessOfExistingNode) {
+  node testNode("root");
+  std::cout << testNode.getName() << std::endl;
+  testNode.appendChild("child1");
+  testNode.at("child1") = 5;
+  int child1_testVal = testNode.at("child1");
+  EXPECT_EQ(child1_testVal, 5);
+}
+
+/* Test using the at() operator for a non existing node
+ * Tested function from node.h: node& at(const std::string& s, int depth =
+ * std::numeric_limits<int>::max()) const; Expect to throw an error of any kind
+ */
+
+/* Test using the [] operator for a non existing node
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expect no throw if element is found correctly
+ */
+TEST(testNodeAtAccessOperator, accessFindWithoutID) {
+  node testNode("/");
+  testNode.appendChild("quark");
+  node *mynode = testNode.find("quark");
+  EXPECT_NO_THROW(testNode.find("quark"));
+  EXPECT_EQ(0, mynode->getName().compare("quark"));
+}
+
+/* Test using the [] operator for a non existing node
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting, that the node but intended ID set is wrong
+ */
+TEST(testNodeAtAccessOperator, accessFindWithIDSetIncorrect) {
+  node testNode("/");
+  testNode.appendChild("quark");
+  testNode.setAttrib("ID", "0");
+  EXPECT_ANY_THROW(testNode.find("quark@0"));
+}
+
+/* Test using the [] operator for a non existing node
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting, that the node and ID set is correct
+ */
+TEST(testNodeAtAccessOperator, accessFindWithIDSetCorrect) {
+  node testNode("/");
+  testNode.appendChild("quark").setAttrib("ID", "0");
+  EXPECT_NO_THROW(testNode.find("quark@0"));
+}
+/* Test using the [] operator for a previously defined node
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting equality of a set value for the node entry
+ */
+TEST(testNodeBracketAccessOperator, accessOfExistingNode) {
+  const std::string name = "root";
+  node testNode(name, true);
+  testNode.appendChild("child1", true);
+  testNode.at("child1") = 5;
+  int child1_testVal = testNode["child1"s];
+  EXPECT_EQ(child1_testVal, 5);
+}
+
+/* Test using the [] operator for a non existing node
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting, that the node is created and its value is set to 0.0
+ */
+TEST(testNodeBracketAccessOperator, accessOfNonExistingNode) {
+  node testNode("root");
+  testNode["root/child2"s] = 2;
+  int child2_testVal = testNode["root/child2"s];
+  EXPECT_EQ(child2_testVal, 2);
+}
+
+/* Test using the [] operator for a non existing node with id
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting, that the node is created and its value is set to 0.0
+ */
+TEST(testNodeBracketAccessOperator, accessOfNonExistingNodeWithID) {
+  node testNode("root");
+  testNode["child2@0"s] = 2;
+  std::string id = testNode.at("child2@0").getStringAttrib("ID");
+  EXPECT_EQ(id, "0");
+  int expected_val = 2;
+  int is_val = testNode["child2@0"s];
+  EXPECT_EQ(expected_val, is_val);
+}
+
+/* Test using the [] operator for a non existing node with id
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting, that the node fails to create ID 1 with value 2
+ * Cant create nodes while lower id's does not exist
+ */
+TEST(testNodeBracketAccessOperator, accessOfHigherIDsWithoutlowerIDexistence) {
+  node testNode("root");
+  EXPECT_ANY_THROW(testNode["child2@1"s] = 2);
+}
+
+/* Test using the [] operator for a non existing node with id
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting, that the node fails to create ID 1 with value 2
+ * Cant create nodes while lower id's does not exist
+ */
+TEST(testNodeBracketAccessOperator, accessOfNonExistingNodeMultipleElements) {
+  node testNode("root");
+  testNode["root/child2"s] = 2;
+  int child2_testVal = testNode["root/child2"s];
+  EXPECT_EQ(child2_testVal, 2);
+
+  /* Insert another node at root level */
+  testNode["root/child3"s] = 3;
+  EXPECT_EQ(static_cast<double>(testNode.at("child3")), 3);
+}
+
+/* Test using the [] operator for a non existing node with id
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting, that the node set ID correct and assigned value is
+ * set correctly
+ */
+TEST(testNodeBracketAccessOperator, accessOfNonExistingNodeWithIDonMultipleStages) {
+  node testNode("root");
+  testNode["child@0/what/keks/bla@0"s] = 5;
+
+  std::string id = testNode.at("child@0").getStringAttrib("ID");
+  EXPECT_NE(id, "1");
+  EXPECT_EQ(id, "0");
+
+  int is_val = testNode.at("child@0/what/keks/bla@0");
+  int expected_val = 5;
+  EXPECT_EQ(expected_val, is_val);
+}
+
+/* Test using the [] operator for a non existing node with id
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting, that the node cant be set to any ID if first
+ * id is not existent
+ */
+TEST(testNodeBracketAccessOpertaor, noOverwriteNonIDNode) {
+  node testNode("root");
+  testNode["root/child/newchild"s] = 3.5;
+  EXPECT_ANY_THROW(testNode["root/child@0/newchild"s] = 2.1);
+  EXPECT_ANY_THROW(testNode["root/child@1/newchild"s] = 2.2);
+}
+
+/* Test using the [] operator for a non existing node with id
+ * Tested function from node.h: node& operator[](std::string s)
+ * Expecting, that values are set correct to nodes with different
+ * id's
+ */
+TEST(testNodeBracketAccessOpertaor, accessOfNonExistingNodeWithMultipleIDs) {
+  node testNode("root");
+  testNode["child@0/newchild"s] = 3.5;
+  testNode["child@1/newchild"s] = 2.1;
+
+  double is_val = testNode["child@0/newchild"s];
+  double expected_val = 3.5;
+
+  EXPECT_EQ(expected_val, is_val);
+
+  expected_val = 2.1;
+  is_val = testNode["child@1/newchild"s];
+  EXPECT_EQ(expected_val, is_val);
+
+  testNode["child@1/newchild/child@0"s] = 5;
+  int int_is_val = testNode["child@1/newchild/child@0"s];
+  int int_expected_val = 5;
+  EXPECT_EQ(int_expected_val, int_is_val);
+}
+
+/*
+ * Test opening an xml file and returning a shared pointer to the root node.
+ */
+TEST_F(SimpleFile, openWithSharedPointer) {
+  /* Create shared node */
+  std::shared_ptr<node> testNode;
+
+  /* Open the file which should not throw */
+  try {
+    testNode = aixml::openDocument(file);
+  } catch (...) {
+    FAIL() << "Opening the file did throw an exception!";
+  }
+
+  /* The shared pointer should be unique */
+  EXPECT_EQ(testNode.use_count(), 1);
+  EXPECT_TRUE(testNode.unique());
+
+  /* The shared node should contain valid data */
+  EXPECT_EQ(testNode->name, file.string());
+  ASSERT_TRUE(testNode->find("root/child"));
+  EXPECT_EQ(static_cast<int>(testNode->at("root/child")), 1);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting true for value 0
+ */
+TEST(testIsBooleanFunc, returnTrueFor0) {
+  std::string boolToTest = "0";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting true for value 1
+ */
+TEST(testIsBooleanFunc, returnTrueFor1) {
+  std::string boolToTest = "1";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting true for value true
+ */
+TEST(testIsBooleanFunc, returnTrueFortrue) {
+  std::string boolToTest = "true";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting true for value True
+ */
+TEST(testIsBooleanFunc, returnTrueForTrue) {
+  std::string boolToTest = "True";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting true for value TRUE
+ */
+TEST(testIsBooleanFunc, returnTrueForTRUE) {
+  std::string boolToTest = "TRUE";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting true for value false
+ */
+TEST(testIsBooleanFunc, returnTrueForfalse) {
+  std::string boolToTest = "false";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting true for value False
+ */
+TEST(testIsBooleanFunc, returnTrueForFalse) {
+  std::string boolToTest = "False";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting true for value FALSE
+ */
+TEST(testIsBooleanFunc, returnTrueForFALSE) {
+  std::string boolToTest = "FALSE";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string on
+ */
+TEST(testIsBooleanFunc, returnTrueForStringon) {
+  std::string boolToTest = "on";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string On
+ */
+TEST(testIsBooleanFunc, returnTrueForStringOn) {
+  std::string boolToTest = "On";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string ON
+ */
+TEST(testIsBooleanFunc, returnTrueForStringON) {
+  std::string boolToTest = "ON";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string off
+ */
+TEST(testIsBooleanFunc, returnTrueForStringoff) {
+  std::string boolToTest = "off";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string Off
+ */
+TEST(testIsBooleanFunc, returnTrueForStringOff) {
+  std::string boolToTest = "Off";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string OFF
+ */
+TEST(testIsBooleanFunc, returnTrueForStringOFF) {
+  std::string boolToTest = "OFF";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_TRUE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string a
+ */
+TEST(testIsBooleanFunc, returnFalseForStringa) {
+  std::string boolToTest = "a";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_FALSE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string hallo
+ */
+TEST(testIsBooleanFunc, returnFalseForStringhallo) {
+  std::string boolToTest = "hallo";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_FALSE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string 2
+ */
+TEST(testIsBooleanFunc, returnFalseForString2) {
+  std::string boolToTest = "2";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_FALSE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string !
+ */
+TEST(testIsBooleanFunc, returnFalseForStringExclamationMark) {
+  std::string boolToTest = "!";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_FALSE(stringEvaluation);
+}
+
+/* Test using the isBoolean function to evaluate a string expression whether it is a boolean or not
+ * Tested function from functions.h: bool isBoolean(const std::string &aValue);
+ * Expecting False for value string Tru
+ */
+TEST(testIsBooleanFunc, returnFalseForTru) {
+  std::string boolToTest = "Tru";
+  bool stringEvaluation = isBoolean(boolToTest);
+  EXPECT_FALSE(stringEvaluation);
+}
+
+/* Test the getBoolAttrib function to return a true boolean for an added attribute true of type boolean*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeTrueIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  testNode.at("child1").addAttrib("Boolean Attribute", true);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, true);
+}
+
+/* Test the getBoolAttrib function to return a false boolean for an added attribute false of type boolean*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeFalseIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  testNode.at("child1").addAttrib("Boolean Attribute", false);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, false);
+}
+
+/* Test the getBoolAttrib function to return a true boolean for an added attribute "True" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringTrueIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "True";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, true);
+}
+
+/* Test the getBoolAttrib function to return a true boolean for an added attribute "true" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringtrueIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "true";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, true);
+}
+
+/* Test the getBoolAttrib function to return a true boolean for an added attribute "TRUE" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringTRUEIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "TRUE";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, true);
+}
+
+/* Test the getBoolAttrib function to return a false boolean for an added attribute "false" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringfalseIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "false";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, false);
+}
+
+/* Test the getBoolAttrib function to return a false boolean for an added attribute "False" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringFalseIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "False";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, false);
+}
+
+/* Test the getBoolAttrib function to return a false boolean for an added attribute "FALSE" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringFALSEIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "FALSE";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, false);
+}
+
+/* Test the getBoolAttrib function to return a true boolean for an added attribute 1 of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeString1IsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "1";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, true);
+}
+
+/* Test the getBoolAttrib function to return a false boolean for an added attribute "0" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeString0IsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "0";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, false);
+}
+
+/* Test the getBoolAttrib function to return a true boolean for an added attribute "on" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringonIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "on";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, true);
+}
+
+/* Test the getBoolAttrib function to return a true boolean for an added attribute "On" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringOnIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "On";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, true);
+}
+
+/* Test the getBoolAttrib function to return a true boolean for an added attribute "ON" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringONIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "ON";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, true);
+}
+
+/* Test the getBoolAttrib function to return a false boolean for an added attribute "off" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringoffIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "off";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, false);
+}
+
+/* Test the getBoolAttrib function to return a false boolean for an added attribute "Off" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringOffIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "Off";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, false);
+}
+
+/* Test the getBoolAttrib function to return a false boolean for an added attribute "OFF" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringOFFIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "OFF";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  bool accessBoolAttribute = testNode.at("child1").getBoolAttrib("Boolean Attribute");
+  EXPECT_EQ(accessBoolAttribute, false);
+}
+
+/* Test the getBoolAttrib function to throw an error for an added attribute "Hallo" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringHalloIsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "Hallo";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  EXPECT_ANY_THROW(testNode.at("child1").getBoolAttrib("Boolean Attribute"));
+}
+
+/* Test the getBoolAttrib function to throw an error for an added attribute "-1" of type string*/
+TEST(testGetBoolAttrib, testIfSetBooleanAttributeStringMinus1IsValid) {
+  node testNode("root");
+  testNode.appendChild("child1");
+  std::string testExpression = "-1";
+  testNode.at("child1").addAttrib("Boolean Attribute", testExpression);
+  EXPECT_ANY_THROW(testNode.at("child1").getBoolAttrib("Boolean Attribute"));
+}
+
+/* Test appendChildren() function with a vector of strings*/
+TEST(testAppendChildren, testIfChildrenCanBeAppendedAsVectorOfStrings) {
+  node testNode("root");
+  std::vector<std::string> children = {"child1", "child2", "child3"};
+  testNode.appendChildren(children, true);
+  try {
+    testNode.at("child1");
+  } catch (...) {
+    FAIL() << "child1 was not appended - or could not be accessed";
+  }
+  try {
+    testNode.at("child2");
+  } catch (...) {
+    FAIL() << "child2 was not appended - or could not be accessed";
+  }
+  try {
+    testNode.at("child3");
+  } catch (...) {
+    FAIL() << "child3 was not appended - or could not be accessed";
+  }
+}
+
+/* Test appendChildren() function with a vector of strings and initialize one of the children*/
+TEST(testAppendChildren, testIfChildrenCanBeAppendedAsVectorOfStringsAndInitialized) {
+  node testNode("root");
+  std::vector<std::string> children = {"child1", "child2", "child3"};
+  testNode.appendChildren(children, true);
+  try {
+    testNode.at("child1") = 1;
+  } catch (...) {
+    FAIL() << "child1 was not appended - or could not be accessed";
+  }
+  int child1NodeVal = testNode.at("child1");
+  EXPECT_EQ(child1NodeVal, 1);
+}
+
+/* Test appendChildren() function with a vector of node* */
+TEST(testAppendChildren, testIfChildrenCanBeAppendedAsVectorOfNodePt) {
+  node testNode("root");
+  node *childPt1 = new node("childPt1", true);
+  node *childPt2 = new node("childPt2", true);
+  node *childPt3 = new node("childPt3", true);
+  std::vector<node *> children;
+  children.push_back(childPt1);
+  children.push_back(childPt2);
+  children.push_back(childPt3);
+  testNode.appendChildren(children);
+  try {
+    testNode.at("childPt1");
+  } catch (...) {
+    FAIL() << "childPt1 was not appended - or could not be accessed";
+  }
+  try {
+    testNode.at("childPt2");
+  } catch (...) {
+    FAIL() << "childPt2 was not appended - or could not be accessed";
+  }
+  try {
+    testNode.at("childPt3");
+  } catch (...) {
+    FAIL() << "childPt3 was not appended - or could not be accessed";
+  }
+}
+
+/* Test appendChildren() function with a vector of node* and initialize a child node */
+TEST(testAppendChildren, testIfChildrenCanBeAppendedAsVectorOfNodePtAndInitialized) {
+  node testNode("root");
+  node *childPt1 = new node("childPt1", true);
+  std::vector<node *> children;
+  children.push_back(childPt1);
+  testNode.appendChildren(children);
+  try {
+    testNode.at("childPt1") = 1;
+  } catch (...) {
+    FAIL() << "childPt1 was not appended - or could not be accessed";
+  }
+  int child1NodeVal = testNode.at("childPt1");
+  EXPECT_EQ(child1NodeVal, 1);
+}
+
+/* Test appendChildren() function with a vector of node references */
+TEST(testAppendChildren, testIfChildrenCanBeAppendedAsVectorOfNodeReferences) {
+  node testNode("root");
+  node child1("child1", true);
+  node child2("child2", true);
+  node child3("child3", true);
+  std::vector<node> children;
+  children.push_back(child1);
+  children.push_back(child2);
+  children.push_back(child3);
+  testNode.appendChildren(children);
+  try {
+    testNode.at("child1");
+  } catch (...) {
+    FAIL() << "child1 was not appended - or could not be accessed";
+  }
+  try {
+    testNode.at("child2");
+  } catch (...) {
+    FAIL() << "child2 was not appended - or could not be accessed";
+  }
+  try {
+    testNode.at("child3");
+  } catch (...) {
+    FAIL() << "child3 was not appended - or could not be accessed";
+  }
+}
+
+/* Test appendChildren() function with a vector of references and initialize a child node */
+TEST(testAppendChildren, testIfChildrenCanBeAppendedAsVectorOfNodeReferenceAndInitialized) {
+  node testNode("root");
+  node child1("child1", true);
+  std::vector<node> children;
+  children.push_back(child1);
+  testNode.appendChildren(children);
+  try {
+    testNode.at("child1") = 1;
+  } catch (...) {
+    FAIL() << "child1 was not appended - or could not be accessed";
+  }
+  int child1NodeVal = testNode.at("child1");
+  EXPECT_EQ(child1NodeVal, 1);
+}
+
+TEST(testEndnodeDouble, testEndnodeUpdate) {
+  node testNode("root");
+  Endnode<double> foo("root/foo", "description of foo");
+  foo.update(testNode);
+  EXPECT_NO_THROW(testNode.at("foo/value"));
+  EXPECT_NO_THROW(testNode.at("foo/unit"));
+  EXPECT_NO_THROW(testNode.at("foo/lower_boundary"));
+  EXPECT_NO_THROW(testNode.at("foo/upper_boundary"));
+}
+
+TEST(testEndnodeDouble, testEndnodeDefaultValues) {
+  node testNode("root");
+  Endnode<double> foo("foo", "description of foo");
+  foo.update(testNode);
+  foo.read(testNode);
+
+  EXPECT_NEAR(0.0, foo.value(), ACCURACY_MEDIUM);
+  EXPECT_EQ(foo.unit().compare("1"), 0);
+  EXPECT_NEAR(std::numeric_limits<double>::lowest(), foo.lower_boundary(), ACCURACY_MEDIUM);
+  EXPECT_NEAR(std::numeric_limits<double>::max(), foo.upper_boundary(), ACCURACY_MEDIUM);
+}
+
+TEST(testEndnodeDouble, testEndnodeSetValues) {
+  node testNode("root");
+  Endnode<double> foo("foo", "description of foo");
+  foo.set_value(5.0);
+  foo.set_unit("m");
+  foo.set_lower_boundary(-5.0);
+  foo.set_upper_boundary(10.0);
+  foo.update(testNode);
+  foo.read(testNode);
+
+  EXPECT_NEAR(5.0, foo.value(), ACCURACY_LOW);
+  EXPECT_EQ(foo.unit().compare("m"), 0);
+  EXPECT_NEAR(-5.0, foo.lower_boundary(), ACCURACY_MEDIUM);
+  EXPECT_NEAR(10.0, foo.upper_boundary(), ACCURACY_MEDIUM);
+}
+
+TEST(testEndnodeDouble, testEndnodeCheckUnitFail) {
+  node testNode("root");
+  Endnode<double> foo("foo", "description of foo");
+  EXPECT_THROW(foo.set_unit("olf"), std::invalid_argument);
+}
+
+TEST(testEndnodeDouble, testEndnodeCheckUnitSuccess) {
+  node testNode("root");
+  Endnode<double> foo("foo", "description of foo");
+  EXPECT_NO_THROW(foo.set_unit("m"));
+}
+
+TEST(testEndnodeDouble, testEndnodeCheckBoundariesTrue) {
+  myRuntimeInfo = new runtimeInfo(0, 0, "logfile.log", "test_aixml");
+  node testNode("root");
+  Endnode<double> foo("foo", "description of foo");
+  foo.set_value(5.1);
+  foo.set_unit("m");
+  foo.set_lower_boundary(5.1);
+  foo.set_upper_boundary(10.0);
+  foo.update(testNode);
+  foo.read(testNode);
+
+  EXPECT_NEAR(5.1, foo.lower_boundary(), ACCURACY_MEDIUM);
+  EXPECT_NEAR(10.0, foo.upper_boundary(), ACCURACY_MEDIUM);
+  EXPECT_NO_THROW(foo.check_boundaries());
+
+  delete myRuntimeInfo;
+}
+
+TEST(testEndnodeDouble, testEndnodeCheckBoundariesFalse) {
+  myRuntimeInfo = new runtimeInfo(0, 0, "logfile.log", "test_aixml");
+  node testNode("root");
+  Endnode<double> foo("foo", "description of foo");
+  foo.set_value(5.1);
+  foo.set_unit("m");
+  foo.set_lower_boundary(5.1001);
+  foo.set_upper_boundary(10.0);
+  EXPECT_NEAR(5.1001, foo.lower_boundary(), ACCURACY_MEDIUM);
+  EXPECT_NEAR(10.0, foo.upper_boundary(), ACCURACY_MEDIUM);
+  EXPECT_THROW(foo.update(testNode), std::out_of_range);
+
+  delete myRuntimeInfo;
+}
+
+TEST(testEndnodeString, testEndnodeUpdate) {
+  node testNode("root");
+  Endnode<std::string> foo("foo", "description of foo");
+  foo.update(testNode);
+  EXPECT_NO_THROW(testNode.at("foo/value"));
+  EXPECT_THROW(testNode.at("foo/unit"), std::string);
+  EXPECT_THROW(testNode.at("foo/lower_boundary"), std::string);
+  EXPECT_THROW(testNode.at("foo/upper_boundary"), std::string);
+}
+
+TEST(testEndnodeString, testEndnodeDefaultValues) {
+  node testNode("root");
+  Endnode<std::string> foo("foo", "description of foo");
+  foo.update(testNode);
+  foo.read(testNode);
+  EXPECT_EQ(foo.value().compare(""), 0);
+}
+
+TEST(testEndnodeBool, testEndnodeDefaultValues) {
+  node testNode("root");
+  Endnode<bool> foo("foo", "description of foo");
+  foo.update(testNode);
+  EXPECT_TRUE(foo.value());
+}
+
+TEST(testEndnodeBool, testEndnodeCheckWriteInXmlTrue) {
+  node testNode("root");
+  Endnode<bool> foo("foo", "description of foo");
+  foo.update(testNode);
+
+  EXPECT_TRUE(foo.value());
+  std::string expect_value = testNode.at("foo/value");
+
+  EXPECT_EQ(expect_value.compare("true"), 0);
+}
+
+TEST(testEndnodeBool, testEndnodeCheckWriteInXmlFalse) {
+  node testNode("root");
+  Endnode<bool> foo("foo", "description of foo");
+  foo.set_value(false);
+  foo.update(testNode);
+
+  EXPECT_FALSE(foo.value());
+  std::string expect_value = testNode.at("foo/value");
+
+  EXPECT_EQ(expect_value.compare("false"), 0);
+}
+
+TEST(EndnodeOperator, addOperator) {
+  /* Create shared node */
+  Endnode<double> foo("foo", "myfoo", 0.5);
+  foo += 1.0;
+
+  EXPECT_DOUBLE_EQ(1.5, foo.value());
+}
+
+TEST(EndnodeOperator, subtractOperator) {
+  /* Create shared node */
+  Endnode<double> foo("foo", "myfoo", 0.5);
+  foo -= 1.0;
+
+  EXPECT_DOUBLE_EQ(-0.5, foo.value());
+}
+
+TEST(EndnodeOperator, multiplyOperator) {
+  /* Create shared node */
+  Endnode<double> foo("foo", "myfoo", 0.5);
+  foo *= 3.0;
+
+  EXPECT_DOUBLE_EQ(1.5, foo.value());
+}
+
+TEST(EndnodeOperator, divideOperator) {
+  /* Create shared node */
+  Endnode<double> foo("foo", "myfoo", 0.5);
+  foo /= 0.25;
+
+  EXPECT_DOUBLE_EQ(2.0, foo.value());
+}
+
+TEST(EndnodeAdditional, unitMethodSet) {
+  Endnode<double> foo("foo", "myfoo", 5.0, "kg", 0.5, 6.0);
+
+  EXPECT_EQ(foo.unit().compare("kg"), 0);
+  foo.set_unit("s");
+  EXPECT_EQ(foo.unit().compare("s"), 0);
+}
+
+TEST(EndnodeAdditional, unitMethodThrow) {
+  Endnode<double> foo("foo", "myfoo", 5.0, "kg", 0.5, 6.0);
+
+  EXPECT_THROW(foo.set_unit("mm"), std::invalid_argument);
+}
+
+TEST_F(EndnodeFile, testEndnodeReadBoolFromXml) {
+  /* Create shared node */
+  std::shared_ptr<node> testNode;
+
+  /* Open the file which should not throw */
+  try {
+    testNode = aixml::openDocument(file);
+  } catch (...) {
+    FAIL() << "Opening the file did throw an exception!";
+  }
+
+  EndnodeReadOnly<bool> foo("bool");
+  foo.read(*testNode.get());
+  EXPECT_TRUE(foo.value());
+}
+
+TEST_F(EndnodeFile, testEndnodeRuntimeInfoUninitialized) {
+  /* Create shared node */
+  std::shared_ptr<node> testNode;
+
+  /* Open the file which should not throw */
+  try {
+    testNode = aixml::openDocument(file);
+  } catch (...) {
+    FAIL() << "Opening the file did throw an exception!";
+  }
+
+  /* Set myRuntimeInfo to nullptr */
+  myRuntimeInfo = nullptr;
+  EndnodeReadOnly<bool> foo("foobar");
+  Endnode<bool> bar("barfoo", "");
+
+  /* Read from file -> should fail with message */
+  foo.read(*testNode.get());
+  bar.read(*testNode.get());
+
+  EXPECT_EQ(myRuntimeInfo, nullptr);
+  /* Restore myRuntimeInfo pointer */
+
+  /* If tests does not lead to segmentation fault -> successful */
+}
+
+TEST_F(EndnodeFile, testEndnodeRuntimeInfoInitialized) {
+  /* Create shared node */
+  std::shared_ptr<node> testNode;
+  myRuntimeInfo = new runtimeInfo(0, 0, "logfile.log", "test_aixml");
+  /* Open the file which should not throw */
+  try {
+    testNode = aixml::openDocument(file);
+  } catch (...) {
+    FAIL() << "Opening the file did throw an exception!";
+  }
+  EndnodeReadOnly<bool> foo("foobar");
+  Endnode<bool> bar("barfoo", "");
+  /* Read from file -> should fail with message via runtimeinfo */
+  foo.read(*testNode.get());
+  bar.read(*testNode.get());
+  EXPECT_NE(myRuntimeInfo, nullptr);
+  /* If tests does not lead to segmentation fault -> successful */
+  delete myRuntimeInfo;
+}
+
+TEST_F(EndnodeFile, boundaryCheckFailure) {
+  /* Create shared node */
+  std::shared_ptr<node> testNode;
+
+  /* Open the file which should not throw */
+  try {
+    testNode = aixml::openDocument(file);
+  } catch (...) {
+    FAIL() << "Opening the file did throw an exception!";
+  }
+
+  Endnode<double> foo("foo","myfoo",-0.5,"1",0.0,1.0);
+  EXPECT_THROW(foo.update(*testNode.get()),std::out_of_range);
+}
+
+
+TEST_F(EndnodeFile, boundaryCheckReadFailure) {
+  /* Create shared node */
+  std::shared_ptr<node> testNode;
+
+  /* Open the file which should not throw */
+  try {
+    testNode = aixml::openDocument(file); 
+  } catch (...) {
+    FAIL() << "Opening the file did throw an exception!";
+  }
+
+  Endnode<double> foo("faildouble","new description");
+  EXPECT_THROW(foo.read(*testNode.get()), std::out_of_range);
+}
+
+
+TEST_F(EndnodeFile, boundaryCheckReadOnlyFailure) {
+  /* Create shared node */
+  std::shared_ptr<node> testNode;
+
+  /* Open the file which should not throw */
+  try {
+    testNode = aixml::openDocument(file);
+  } catch (...) {
+    FAIL() << "Opening the file did throw an exception!";
+  }
+
+  EndnodeReadOnly<double> foo("faildouble");
+  EXPECT_THROW(foo.read(*testNode.get()), std::out_of_range);
+}
\ No newline at end of file
diff --git a/atmosphere/CMakeLists.txt b/atmosphere/CMakeLists.txt
new file mode 100644
index 00000000..6a43d385
--- /dev/null
+++ b/atmosphere/CMakeLists.txt
@@ -0,0 +1,41 @@
+# Set the library name
+set( LIBRARY_NAME atmosphere )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+src/atmosphere.cpp
+resources.rc
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_ATMOSPHERE_SHARED" PUBLIC "IMPORT_ATMOSPHERE_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Add the unitConversion include directory as a private interface to resolve
+# the circular dependency between the two libraries
+target_include_directories( ${LIBRARY_NAME} PRIVATE ../unitConversion/include )
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/atmosphere/include/atmosphere/atmosphere.h b/atmosphere/include/atmosphere/atmosphere.h
new file mode 100644
index 00000000..e7759992
--- /dev/null
+++ b/atmosphere/include/atmosphere/atmosphere.h
@@ -0,0 +1,185 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef ATMOSPHERE_ATMOSPHERE_H_
+#define ATMOSPHERE_ATMOSPHERE_H_
+
+#include <unitConversion/constants.h>
+#include <cmath>
+
+#ifdef BUILD_ATMOSPHERE_SHARED
+    #ifdef _WIN32
+        #define ATMOSPHEREDLLEXPORT __declspec(dllexport)
+    #else
+        #define ATMOSPHEREDLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_ATMOSPHERE_SHARED)
+    #ifdef _WIN32
+        #define ATMOSPHEREDLLEXPORT __declspec(dllimport)
+    #else
+        #define ATMOSPHEREDLLEXPORT
+    #endif
+#else
+    #define ATMOSPHEREDLLEXPORT
+#endif
+
+/** \brief Class for the description of the atmosphere
+ */
+class ATMOSPHEREDLLEXPORT atmosphere {
+ public:
+    atmosphere(); /**< Constructor */
+    virtual ~atmosphere(); /**< Destructor */
+
+    /* Member functions */
+    /** \brief function sets values for temperature, pressure and density at sea level as well as the altitude of tropopause
+    *   \details the values at sea level are adapted to the given reference values (pressure level is kept constant to ISA Standard Pressure)
+    *   \param h_ref reference altitude [m]
+    *   \param T_ref reference temperature at reference altitude [K]
+    *   \param p_ref reference pressure at reference altitude [N/m^2]
+    */
+    void setAtmosphere(const double& h_ref, const double& T_ref, const double& p_ref);
+
+    inline double getTemperature(const double& h) const;
+    inline double getTemperatureISA(const double& h) const;
+    inline double getDensity(const double& h) const;
+    inline double getPressure(const double& h) const;
+    inline double getPressureISA(const double& h) const;
+    inline double getSpeedOfSound(const double& h) const;
+    inline double getSpeedOfSoundISA(const double& h) const;
+    /** \brief function returns the dynamic viscosity
+    *   \param h altitude in meter
+    *   \return dynamicViscosity [kg/(m*s)]
+    */
+    inline double getViscosity(const double& h) const;
+    inline double temperatureRatio(const double& h) const;
+    inline double densityRatio(const double& h) const;
+    inline double pressureRatio(const double& h) const;
+
+    /** \brief function calculates the density height
+    *   \details function returns current altitude in accordance to a given density
+    *   \param density current density [kg/m^3]
+    *   \return double: altitude where the current density is given [m]
+    */
+    double getAltitudeAtDensity(const double& density) const;
+    /** \brief function calculates the pressure height
+    *   \details function returns current altitude in accordance to a given pressure ratio
+    *   \param pressureRatio current pressure ratio [-]
+    *   \return double: altitude where the current pressure ratio is given [m]
+    */
+    double getAltitudeAtPressureRatio(const double& pressureRatio) const;
+
+
+    /* Calculated values */
+    double h_trop; /**< Altitude of tropopause [m] */
+    double delta_h; /**< Correction of altitude for local altimeter settings (in Germany below 5000 ft, else ISA Standard and FL) [m] */
+    double rho_0; /**< Density at sea level [kg/m^3] */
+    double T_0; /**< Temperature at sea level [K] */
+    double p_0; /**< Pressure at sea level [N/m^2] */
+
+ private:
+    /* Constants */
+    static const double h_tropopause_ref; /**< Reference height of tropopause (11 km) [m] */
+    static const double T_tropopause_ref; /**< Temperature of tropopause in 11 km [K] */
+    static const double TemperatureGradient; /**< Temperature gradient with altitude (valid until tropopause) */
+
+    /**
+        h1(km)      h2(km)     dT/dh (K/km)  Source: http://www.pdas.com/coesa.html
+            0          11         -6.5
+            11         20          0.0
+            20         32          1.0
+            32         47          2.8
+            47         51          0.0
+            51         71         -2.8
+            71         84.852     -2.0
+    **/
+};
+
+/* Implementation of inline functions */
+inline double atmosphere::getTemperature(const double& h) const {
+    return (h < this->h_trop) ? this->T_0+this->TemperatureGradient*h : this->T_tropopause_ref;
+}
+
+inline double atmosphere::getTemperatureISA(const double& h) const {
+    return (h < this->h_trop) ? ISA_TEMPERATURE+this->TemperatureGradient*h : this->T_tropopause_ref;
+}
+
+inline double atmosphere::getDensity(const double& h) const {
+    return (h < this->h_trop) ?
+           this->rho_0*pow(1+(this->TemperatureGradient*h/this->T_0), (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient-1)) :
+           this->rho_0*pow(this->T_tropopause_ref/this->T_0, (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient-1))*exp(
+               -G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->T_tropopause_ref*(h-this->h_trop));
+}
+
+inline double atmosphere::getPressure(const double& h) const {
+    return (h < this->h_trop) ?
+           this->p_0*pow(1+(this->TemperatureGradient*h/this->T_0), (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient)) :
+           this->p_0*pow(this->T_tropopause_ref/this->T_0, (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient))*exp(
+               -G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->T_tropopause_ref*(h-this->h_trop));
+}
+
+inline double atmosphere::getPressureISA(const double& h) const {
+    return (h < this->h_trop) ?
+           ISA_PRESSURE*pow(1+(this->TemperatureGradient*h/ISA_TEMPERATURE), (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient)) :
+           ISA_PRESSURE*pow(this->T_tropopause_ref/ISA_TEMPERATURE,
+                            (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient))*exp(-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->T_tropopause_ref*(h-this->h_trop));
+}
+
+inline double atmosphere::getSpeedOfSound(const double& h) const {
+    return (h < this->h_trop) ?
+           sqrt((this->T_0+(TemperatureGradient*h))*ISENTROPIC_EXPONENT_DRY_AIR*SPECIFIC_GAS_CONSTANT_DRY_AIR) :
+           sqrt(this->T_tropopause_ref*ISENTROPIC_EXPONENT_DRY_AIR*SPECIFIC_GAS_CONSTANT_DRY_AIR);
+}
+
+inline double atmosphere::getSpeedOfSoundISA(const double& h) const {
+    return (h < 11000.) ?
+           sqrt((ISA_TEMPERATURE+(TemperatureGradient*h))*ISENTROPIC_EXPONENT_DRY_AIR*SPECIFIC_GAS_CONSTANT_DRY_AIR) :
+           sqrt(this->T_tropopause_ref*ISENTROPIC_EXPONENT_DRY_AIR*SPECIFIC_GAS_CONSTANT_DRY_AIR);
+}
+
+inline double atmosphere::getViscosity(const double& h) const {
+    double beta(DYNAMIC_VISCOSITY_SEALEVEL*(STANDARD_TEMPERATURE+SUTHERLAND_CONSTANT_DRY_AIR)/pow(STANDARD_TEMPERATURE, 1.5));
+    double T(this->T_0+this->TemperatureGradient*h);
+
+    return (h < this->h_trop) ?
+           beta * pow(T, 1.5)/(T+SUTHERLAND_CONSTANT_DRY_AIR) :
+           beta * pow(T_tropopause_ref, 1.5)/(T_tropopause_ref+SUTHERLAND_CONSTANT_DRY_AIR);
+}
+
+inline double atmosphere::temperatureRatio(const double& h) const {
+    return (h < this->h_trop) ? 1+(TemperatureGradient*h/this->T_0) : this->T_tropopause_ref/this->T_0;
+}
+
+inline double atmosphere::densityRatio(const double& h) const {
+    return (h < this->h_trop) ?
+           pow(1+(this->TemperatureGradient*h/this->T_0), (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient-1)) :
+           pow(this->T_tropopause_ref/this->T_0, (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient-1)) *
+            exp(-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->T_tropopause_ref * (h-this->h_trop));
+}
+
+inline double atmosphere::pressureRatio(const double& h) const {
+    return (h < this->h_trop) ?
+           pow(1+(this->TemperatureGradient*h/this->T_0), (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient)) :
+           pow(this->T_tropopause_ref/this->T_0, (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient)) *
+           exp(-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->T_tropopause_ref * (h-this->h_trop));
+}
+
+#endif // ATMOSPHERE_ATMOSPHERE_H_
diff --git a/atmosphere/resources.rc b/atmosphere/resources.rc
new file mode 100644
index 00000000..716780e6
--- /dev/null
+++ b/atmosphere/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "atmosphere\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "atmosphere.dll\0"
+            VALUE "ProductName",        "atmosphere\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/atmosphere/src/atmosphere.cpp b/atmosphere/src/atmosphere.cpp
new file mode 100644
index 00000000..f8c9f1d4
--- /dev/null
+++ b/atmosphere/src/atmosphere.cpp
@@ -0,0 +1,68 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "atmosphere/atmosphere.h"
+
+const double atmosphere::TemperatureGradient(-0.0065);//[K/m]
+const double atmosphere::h_tropopause_ref(11000.);//[m]
+const double atmosphere::T_tropopause_ref(ISA_TEMPERATURE+atmosphere::TemperatureGradient * atmosphere::h_tropopause_ref);//[K]
+
+atmosphere::atmosphere() {
+    T_0 = ISA_TEMPERATURE;
+    p_0 = ISA_PRESSURE;
+    rho_0 = ISA_DENSITY;
+    h_trop = this->h_tropopause_ref;
+    delta_h = 0.;
+}
+
+atmosphere::~atmosphere() {
+}
+
+void atmosphere::setAtmosphere(const double& h_ref, const double& T_ref, const double& p_ref) { // cppcheck-suppress unusedFunction
+    /* Calculate values for temperature and density at sea level and altitude of tropopause */
+    this->T_0 = T_ref - this->TemperatureGradient*h_ref;
+    this->p_0 = ISA_PRESSURE; //Pressure profile is always referenced to ISA STANDARD PRESSURE
+    this->rho_0 = ISA_DENSITY*ISA_TEMPERATURE/this->T_0;
+    this->h_trop = this->h_tropopause_ref-(this->T_0-ISA_TEMPERATURE)/this->TemperatureGradient;
+    this->delta_h = (-this->getTemperatureISA(h_ref)/this->TemperatureGradient)*(1-pow(p_ref/this->getPressure(h_ref),
+                    -(SPECIFIC_GAS_CONSTANT_DRY_AIR*this->TemperatureGradient/G_FORCE)));//
+}
+
+double atmosphere::getAltitudeAtDensity(const double& density) const { // cppcheck-suppress unusedFunction
+    if ( density > this->getDensity(this->h_trop) ) { //Below tropopause
+        return this->T_0/this->TemperatureGradient*(pow((density/this->rho_0), 1/(-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient-1))-1);
+    } else {
+        return log(density/(this->rho_0*pow(this->T_tropopause_ref/this->T_0,
+                                            (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient-1)))) /
+               (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->T_tropopause_ref)+this->h_trop;
+    }
+}
+
+double atmosphere::getAltitudeAtPressureRatio(const double& pressureRatio) const { // cppcheck-suppress unusedFunction
+    if ( pressureRatio > this->pressureRatio(this->h_trop) ) { //Below tropopause
+        return this->T_0/this->TemperatureGradient*(pow(pressureRatio, 1/(-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient))-1);
+    } else {
+        return log(pressureRatio/pow(this->T_tropopause_ref/this->T_0,
+                                     (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->TemperatureGradient))) /
+               (-G_FORCE/SPECIFIC_GAS_CONSTANT_DRY_AIR/this->T_tropopause_ref)+this->h_trop;
+    }
+}
diff --git a/blackboxTest/CMakeLists.txt b/blackboxTest/CMakeLists.txt
new file mode 100644
index 00000000..ded13dd8
--- /dev/null
+++ b/blackboxTest/CMakeLists.txt
@@ -0,0 +1,45 @@
+# Set name of executable
+set(LIBRARY_NAME blackboxTest)
+
+
+# Include googletest if it is not already included
+if(NOT TARGET GTest::gtest)
+    message(STATUS "[${LIBRARY_NAME}] -> Including googletest since it is needed by the blackbox test library.")
+    # Download and unpack googletest at configure time
+    include(FetchContent)
+    FetchContent_Declare(googletest
+    GIT_REPOSITORY https://github.com/google/googletest.git
+    GIT_TAG v1.13.0
+    )
+    # For Windows: Prevent overriding the parent project's compiler/linker settings
+    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+    FetchContent_MakeAvailable(googletest)
+endif()
+
+# Add the library
+# -> Has to be static, because not all implementations are provided here
+add_library(${LIBRARY_NAME} INTERFACE)
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Add the library include directories
+target_include_directories(${LIBRARY_NAME}
+    INTERFACE
+        ${CMAKE_CURRENT_SOURCE_DIR}/include
+)
+
+# Link the runtime libraries -> Use the actual needed libraries
+# GTest is public, so the derived tests see its headers
+target_link_libraries(${LIBRARY_NAME}
+    INTERFACE
+        runtimeInfo
+        standardFiles
+        aixml
+        moduleBasics
+        GTest::gtest
+)
+
+# Add the export rules
+export(TARGETS gtest ${LIBRARY_NAME}
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/blackboxTest/include/blackboxTest/module_test.h b/blackboxTest/include/blackboxTest/module_test.h
new file mode 100644
index 00000000..435cc729
--- /dev/null
+++ b/blackboxTest/include/blackboxTest/module_test.h
@@ -0,0 +1,530 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+
+/**
+ * @brief The blackbox test structure for the module.
+ * @details
+ * This is a header only file that provides the blackbox test structure for the module.
+ * You just have to provide a main function which call the run_module_tests function
+ * with your module type as template parameter. Since all modules derive from
+ * the moduleBasics Module class, this framework know how to execute them.
+ *
+ * Since this module class does not allow to directly inject XML files, this framework
+ * creates a temporary working directory and copies the original XML files there.
+ * Those files are modified for each test case and the module is executed with the
+ * modified files. The expectations are then checked against the modified files.
+ * After all tests are run, the temporary working directory is deleted.
+ *
+ * A possible implementation for your module could look like this:
+ * @code {.cpp}
+ * // Includes
+ * #include "path-to/toolinfo.h"
+ * #include "path-to/your-module.h"
+ * #include <blackboxTest/module_test.h>
+ *
+ * // Main to execute the blackbox tests
+ * int main(int argc, char *argv[]) {
+ *    return run_module_tests<YourModule>(argc, argv);
+ * }
+ *
+ * @endcode
+ *
+ * The test cases are defined in a XML file, which is expected to be called *test_cases.xml* and
+ * to be located in the *test* folder of your module.
+ * The structure of the XML file is as follows:
+ * @code {.xml}
+ * <?xml version="1.0" encoding="UTF-8"?>
+ * <test_suites>
+ *   <test_suite name="aircraft-name">
+ *       <test name="test-name">
+ *           <parameter>
+ *               <path>can be a path starting with 'aircraft_exchange_file' or 'module_configuration_file'</path>
+ *               <value>new-value</value>
+ *           </parameter>
+ *           <expect type="EQ">
+ *               <path>aircraft_exchange_file/path/to/check</path>
+ *               <value>expected-value</value>
+ *           </expect>
+ *       </test>
+ *    </test_suite>
+ * </test_suites>
+ * @endcode
+ *
+ * You can have as many test suites, tests and expectations as you like, BUT there can only be one
+ * parameter per test case! After all, the tests are meant to check the expected behavior of the module
+ * when this input parameter is varied. The expectations are checked against the modified aircraft file.
+ * You have to provide multiple test cases if you want to check multiple parameters.
+ * The general convention is to use one test suite per aircraft and one test per parameter. At least
+ * this framework assumes, that the base aircraft is the same for each test within one test suite.
+ *
+ * @attention Make sure that "toolinfo.h" is included BEFORE this file!
+ */
+#ifndef BLACKBOXTEST_INCLUDE_BLACKBOXTEST_MODULE_TEST_H_
+#define BLACKBOXTEST_INCLUDE_BLACKBOXTEST_MODULE_TEST_H_
+
+/* === Includes === */
+#include <aixml/node.h>
+#include <algorithm>
+#include <array>
+#include <filesystem>
+#include <functional>
+#include <gtest/gtest.h>
+#include <iostream>
+#include <memory>
+#include <moduleBasics/module.h>
+#include <ranges>
+#include <string>
+#include <string_view>
+#include <utility>
+
+/* Define the expected folder structure and filenames */
+constexpr std::string_view test_case_file = "test/test_cases.xml";         /**< Where to find the test case file. */
+constexpr std::string_view temp_folder_name = "unicado_module_test_";      /**< The name of the temporary working directory. */
+constexpr std::string_view aircraft_original = "aircraft_original.xml";    /**< The original aircraft file. */
+constexpr std::string_view aircraft_modified = "aircraft_modified.xml";    /**< The modified aircraft file. */
+constexpr std::string_view config_original = "configuration_original.xml"; /**< The original configuration file. */
+constexpr std::string_view config_modified = "configuration_modified.xml"; /**< The modified configuration file. */
+
+/* Define the some behavioral options */
+constexpr std::string_view console_mode = "mode_0"; /**< Override the console output mode with this mode. */
+
+/** Define the folder structure needed for a aircraft */
+constexpr std::array folder_structure = {
+    "aero_data",
+    "airfoil_data",
+    "engine_data",
+    "geometry_data"};
+
+/* === Functions === */
+/**
+ * @brief Template function to apply an expectation to a value.
+ *
+ * @tparam ValueType The type of the value to compare.
+ * @tparam CompareFunc The type of the comparison function.
+ * @param path The node path of the current value which is tested.
+ * @param expected The expected value.
+ * @param actual The actual value.
+ * @param compare The comparison function to use for the expectation.
+ * @param compare_name The name of the comparison function.
+ */
+template <typename ValueType, typename CompareFunc>
+void apply_expectation(
+    const std::string_view &path,
+    const ValueType &expected,
+    const ValueType &actual,
+    const CompareFunc &compare,
+    const std::string_view &compare_name)
+{
+    /* Check whether the expectation is met */
+    if (!compare(expected, actual))
+    {
+        /* Print the error message when the expectation is not met */
+        GTEST_NONFATAL_FAILURE_("**********************************")
+            << "Expected:\n"
+            << "Path: " << path << "\n"
+            << "to be " << compare_name << ": " << expected << "\n"
+            << "but it was: " << actual << "\n"
+            << "**********************************";
+    }
+}
+
+/**
+ * @brief Check whether the data in the aircraft XML meets the expectation.
+ *
+ * @param aircraft The aircraft XML data.
+ * @param expectation The expectation to check.
+ */
+void check_expectation(const std::shared_ptr<node> aircraft, const node *expectation)
+{
+    /* Get the node path to check */
+    const std::string path(expectation->at("path"));
+
+    /* Get the expectation to apply => as lower case to be more robust */
+    const std::string type(expectation->getStringAttrib("type"));
+    std::string type_lower_case{type};
+    std::transform(type.begin(), type.end(), type_lower_case.begin(), ::tolower);
+
+    /* Get the comparison function and name of the expectation */
+    const double expected = expectation->at("value");
+    const double actual = aircraft->at(path);
+    if (type_lower_case == "eq")
+    {
+        apply_expectation(path, expected, actual, std::greater<double>{}, "equal to");
+    }
+    else if (type_lower_case == "lt")
+    {
+        apply_expectation(path, expected, actual, std::less<double>{}, "less than");
+    }
+    else if (type_lower_case == "le")
+    {
+        apply_expectation(path, expected, actual, std::less_equal<double>{}, "less than or equal to");
+    }
+    else if (type_lower_case == "gt")
+    {
+        apply_expectation(path, expected, actual, std::greater<double>{}, "greater than");
+    }
+    else if (type_lower_case == "ge")
+    {
+        apply_expectation(path, expected, actual, std::greater_equal<double>{}, "greater than or equal to");
+    }
+    else if (type_lower_case == "near")
+    {
+        /* Use a lambda to provide the NEAR comparison */
+        auto compare = [expectation, &path](double expected, double actual) -> bool
+        {
+            /* Get the defined accuracy */
+            double accuracy{1e-6};
+            if (expectation->hasAttrib("accuracy"))
+            {
+                accuracy = expectation->getDoubleAttrib("accuracy");
+            }
+            else if (expectation->hasAttrib("relative"))
+            {
+                accuracy = expectation->getDoubleAttrib("relative");
+                if (std::abs(expected) > 1e-6) {
+                    accuracy *= expected;
+                } else {
+                    std::cout << "Warning: Expected value is close to zero."
+                    "=> Using absolute accuracy for the following test:\n"
+                    << path << " => near " << expected << std::endl;
+                }
+            }
+            else
+            {
+                std::cout << "Warning: No 'accuracy' or 'relative' attribute given for 'NEAR' expectation."
+                    "=> Assuming 1e-6 as accuracy for the following test:\n"
+                    << path << " => near " << expected << std::endl;
+            }
+
+            /* Check the expectation */
+            return std::abs(expected - actual) < std::abs(accuracy);
+        };
+        apply_expectation(path, expected, actual, compare, "near");
+    }
+    else if (type_lower_case == "streq")
+    {
+        apply_expectation(
+            path,
+            static_cast<std::string>(expectation->at("value")),
+            static_cast<std::string>(aircraft->at(path)),
+            std::equal_to<std::string>{},
+            "equal to");
+    }
+    else
+    {
+        throw std::invalid_argument("Unknown expectation type: " + std::string{type});
+    }
+}
+
+/* === Classes === */
+/**
+ * @brief Module fixture base class for all module tests.
+ * This class provides the temporary working directory and the standard paths for the
+ * original and modified aircraft and configuration files.
+ */
+class ModuleFixture : public ::testing::Test
+{
+  public:
+    /**
+     * @brief Set the Up Test Suite by creating the temporary working
+     * directory and copying the original files.
+     */
+    static void SetUpTestSuite()
+    {
+        /* Create the temporary working directory for this test suite */
+        ModuleFixture::working_directory = std::filesystem::temp_directory_path() / (std::string{temp_folder_name} + TOOL_NAME);
+        std::filesystem::create_directory(ModuleFixture::working_directory);
+
+        /* Populate the standard paths for all tests of this test suite */
+        ModuleFixture::aircraft_path = ModuleFixture::working_directory / aircraft_original;
+        ModuleFixture::aircraft_under_test = ModuleFixture::working_directory / aircraft_modified;
+        ModuleFixture::configuration_path = ModuleFixture::working_directory / config_original;
+        ModuleFixture::configuration_under_test = ModuleFixture::working_directory / config_modified;
+
+        /* Copy the original aircraft and configuration files to the working directory */
+        std::filesystem::path local_configuration = std::filesystem::current_path() / (std::string{TOOL_NAME} + "_conf.xml");
+        std::filesystem::copy(local_configuration, ModuleFixture::configuration_path);
+
+        /* Read the base aircraft for this suite from the configuration and copy it */
+        auto configuration = aixml::openDocument(ModuleFixture::configuration_path);
+        std::filesystem::path base_aircraft{std::string(configuration->at("control_settings/aircraft_exchange_file_directory/value"))};
+        std::string aircraft_name(configuration->at("control_settings/aircraft_exchange_file_name/value"));
+        std::filesystem::copy(base_aircraft / aircraft_name, ModuleFixture::aircraft_path);
+
+        /* Copy the folder structure */
+        std::for_each(
+            folder_structure.begin(),
+            folder_structure.end(),
+            [&base_aircraft](const std::string &folder)
+            {
+                std::filesystem::copy(base_aircraft / folder, ModuleFixture::working_directory / folder, std::filesystem::copy_options::recursive);
+            });
+    }
+
+    /**
+     * @brief Tear Down Test Suite by removing the temporary working directory.
+     */
+    static void TearDownTestSuite()
+    {
+        /* Clean up the working directory after the suite is finished */
+        if (std::filesystem::exists(ModuleFixture::working_directory))
+        {
+            std::filesystem::remove_all(ModuleFixture::working_directory);
+        }
+    }
+
+    /**
+     * @brief Set up the test by providing a clean copy of the configuration and aircraft files.
+     */
+    void SetUp() override
+    {
+        /* Provide a clean copy for the configuration under test */
+        std::filesystem::copy(
+            ModuleFixture::configuration_path, ModuleFixture::configuration_under_test,
+            std::filesystem::copy_options::overwrite_existing);
+
+        /* Provide a clean copy for the aircraft under test */
+        std::filesystem::copy(
+            ModuleFixture::aircraft_path, ModuleFixture::aircraft_under_test,
+            std::filesystem::copy_options::overwrite_existing);
+    }
+
+    /**
+     * @brief Tear Down the test by removing the modified files.
+     */
+    void TearDown() override
+    {
+        /* Clean up the modified files */
+        if (std::filesystem::exists(ModuleFixture::aircraft_under_test))
+        {
+            std::filesystem::remove(ModuleFixture::aircraft_under_test);
+        }
+        if (std::filesystem::exists(ModuleFixture::configuration_under_test))
+        {
+            std::filesystem::remove(ModuleFixture::configuration_under_test);
+        }
+    }
+
+    /* Standard paths for each test suite */
+    inline static std::filesystem::path working_directory;        /**< The working directory for the module tests */
+    inline static std::filesystem::path aircraft_path;            /**< The original unchanged aircraft xml file */
+    inline static std::filesystem::path aircraft_under_test;      /**< The modified aircraft xml file */
+    inline static std::filesystem::path configuration_path;       /**< The original unchanged configuration xml file */
+    inline static std::filesystem::path configuration_under_test; /**< The modified configuration xml file */
+};
+
+/**
+ * @brief Module test class for all module tests.
+ * This class provides the test body for the module tests.
+ * It creates a clean copy of the input files and modifies them for each test case.
+ * The module under test is then executed and the expectations are checked against the result.
+ */
+template <typename ModuleType>
+class ModuleTest : public ModuleFixture
+{
+  public:
+    /**
+     * @brief Construct a new Module Test object.
+     *
+     * @param testnode The test node from the test case file.
+     */
+    explicit ModuleTest(const node *testnode) : testnode(testnode) {}
+
+    /**
+     * @brief Execute the test body.
+     */
+    void TestBody() override
+    {
+        /* Check whether this test should be skipped */
+        if (testnode->hasAttrib("skip"))
+        {
+            GTEST_SKIP() << testnode->getStringAttrib("skip");
+        }
+
+        /* === Perform test === */
+        this->execute_module_under_test();
+        this->check_output_data();
+    }
+
+  private:
+    /**
+     * @brief Set up the test by providing a clean copy of the configuration and aircraft files
+     * and then modify the files for the test case.
+     */
+    void SetUp() override
+    {
+        /* Call the base setup which provides a clean copy of the input files */
+        ModuleFixture::SetUp();
+
+        /* Load the configuration and aircraft under test */
+        auto configuration = aixml::openDocument(ModuleFixture::configuration_under_test);
+        auto aircraft = aixml::openDocument(ModuleFixture::aircraft_under_test);
+
+        /* Update the aircraft xml path in the configuration */
+        configuration->at("control_settings/aircraft_exchange_file_name/value") =
+            ModuleFixture::aircraft_under_test.filename().string();
+        configuration->at("control_settings/aircraft_exchange_file_directory/value") =
+            ModuleFixture::aircraft_under_test.parent_path().string() + "/";
+
+        /* Turn off irrelevant output */
+        configuration->at("control_settings/console_output/value") = std::string{console_mode};
+        configuration->at("control_settings/log_file_output/value") = "mode_0";
+        configuration->at("control_settings/plot_output/enable/value") = "0";
+        configuration->at("control_settings/report_output/value") = "0";
+        configuration->at("control_settings/tex_report/value") = "0";
+        configuration->at("control_settings/write_info_files/value") = "0";
+
+        /* Set the input data for the module under test */
+        std::string test_parameter(this->testnode->at("parameter/path"));
+        std::string test_value(this->testnode->at("parameter/value"));
+        if (test_parameter.starts_with("aircraft"))
+        {
+            aircraft->at(test_parameter) = test_value;
+        }
+        else if (test_parameter.starts_with("module"))
+        {
+            configuration->at(test_parameter) = test_value;
+        }
+        else
+        {
+            FAIL() << "Unknown parameter path: " << test_parameter;
+        }
+
+        /* Save the modified files again */
+        aixml::saveDocument(*configuration, 5);
+        aixml::saveDocument(*aircraft, 5);
+    }
+
+    /**
+     * @brief Execute the module under test.
+     */
+    void execute_module_under_test()
+    {
+        try
+        {
+            /* Create and run the module under test */
+            std::unique_ptr<Module> module =
+                std::make_unique<ModuleType>(
+                    TOOL_NAME, TOOL_VERSION, this->configuration_under_test);
+            module->execute();
+        }
+        /*
+         * Catch the string errors from UNICADO.
+         * Errors based on std::exception are
+         * handled by Googletest itself.
+         */
+        catch (const std::string &err)
+        {
+            FAIL() << "Error: " << err;
+        }
+    }
+
+    /**
+     * @brief Check the output data of the module under test.
+     */
+    void check_output_data()
+    {
+        /* Load the result */
+        auto aircraft = aixml::openDocument(ModuleFixture::aircraft_under_test);
+
+        /* Check all the expectations */
+        auto expectations = this->testnode->getVector("expect");
+        std::ranges::for_each(
+            expectations,
+            [aircraft](const node *expectation)
+            { check_expectation(aircraft, expectation); });
+    }
+
+    /* === Test Properties */
+    const node *testnode; /**< The test node from the test case file */
+};
+
+/**
+ * @brief Register all tests from the test case file.
+ *
+ * @tparam ModuleType The module type to test.
+ * @param test_nodes The test nodes from the test case file.
+ */
+template <typename ModuleType>
+void register_all_test(const std::shared_ptr<node> test_nodes)
+{
+    /* Loop through all test suites */
+    auto test_suites = test_nodes->getVector("test_suites/test_suite");
+    for (const node *test_suite : test_suites)
+    {
+        /* Get the name and tests for this test suite */
+        const std::string suite_name = test_suite->getStringAttrib("name");
+        auto test_cases = test_suite->getVector("test");
+
+        /* Loop through all test cases */
+        for (const node *test_case : test_cases)
+        {
+            /*
+             * Register the test as per Googletest doc:
+             * http://google.github.io/googletest/advanced.html#registering-tests-programmatically
+             */
+            auto test_name = test_case->getStringAttrib("name");
+            ::testing::RegisterTest(
+                suite_name.c_str(), test_name.c_str(), nullptr, nullptr,
+                TOOL_NAME, 0,
+                [test_case]() -> ModuleFixture *
+                { return new ModuleTest<ModuleType>(test_case); }); // <- Googletest takes ownership of the pointer!
+        }
+    }
+}
+
+/**
+ * @brief Run all module tests.
+ * Call this function from the main function of your blackbox test
+ * it will handle all the test execution and return the exit code.
+ *
+ * @tparam ModuleType The module type to test.
+ * @param argc The number of command line arguments.
+ * @param argv The command line arguments.
+ * @return int The exit code of the test suite.
+ */
+template <typename ModuleType>
+    requires std::derived_from<ModuleType, Module>
+int run_module_tests(int argc, char **argv)
+{
+    try
+    {
+        /* Init Googletest */
+        ::testing::InitGoogleTest(&argc, argv);
+
+        /* Read the test_case file and register all tests */
+        auto test_nodes = aixml::openDocument(std::filesystem::path(test_case_file));
+        register_all_test<ModuleType>(test_nodes);
+
+        /* Run all tests */
+        return RUN_ALL_TESTS();
+    }
+    /* Catch string errors from UNICADO */
+    catch (const std::string &e)
+    {
+        std::cerr << "Error: " << e << std::endl;
+        return EXIT_FAILURE;
+    }
+}
+
+#endif // BLACKBOXTEST_INCLUDE_BLACKBOXTEST_MODULE_TEST_H_
diff --git a/coordinateSystemConversion/CMakeLists.txt b/coordinateSystemConversion/CMakeLists.txt
new file mode 100644
index 00000000..80933ac3
--- /dev/null
+++ b/coordinateSystemConversion/CMakeLists.txt
@@ -0,0 +1,72 @@
+# Set the library name
+set( LIBRARY_NAME coordinateSystemConversion )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/coordinateSystemConversionConf.cpp
+    resources.rc
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_COORDINATESYSTEMCONVERSTION_SHARED" PUBLIC "IMPORT_COORDINATESYSTEMCONVERSTION_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Find required packages
+find_package(CGAL 5.6 REQUIRED )
+
+# Link against dependent libraries
+target_link_libraries( ${LIBRARY_NAME} 
+    PUBLIC
+        CGAL::CGAL
+)
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
+
+# === Add python bindings ===
+pybind11_add_module( py11${LIBRARY_NAME}
+    src/coordinateSystemConversionConf.cpp
+    src/py_coordinate_system_conversion.cpp
+)
+
+target_include_directories(py11${LIBRARY_NAME} PUBLIC include)
+set_target_properties(coordinateSystemConversion PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
+target_link_libraries(py11${LIBRARY_NAME} PRIVATE CGAL::CGAL)
+
+# On Windows the Python Debug builds are not properly supported -> warn about this
+if(MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug")
+    message(WARNING "\n[${PROJECT_NAME}] -> Building Python binding of ${LIBRARY_NAME} in Debug Mode on Windows. This is not properly supported!")
+endif()
+
+# Set the output directory for the python binding -> Use generator expressions to force multi-generator output to the same location
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pycoordinatesystemconversion/pycoordinatesystemconversion$<0:>) # .dll for Windows
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pycoordinatesystemconversion/pycoordinatesystemconversion$<0:>) # .so for Unix
+
+# Add the package to the package list for exporting the target
+# and propagate the resulting list back to the parent scope
+list( APPEND PYTHON_TARGETS ${CMAKE_CURRENT_LIST_DIR}/pycoordinatesystemconversion)
+set( PYTHON_TARGETS ${PYTHON_TARGETS} PARENT_SCOPE )
+
+install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pycoordinatesystemconversion DESTINATION lib)
\ No newline at end of file
diff --git a/coordinateSystemConversion/include/coordinateSystemConversion/coordinateBase.h b/coordinateSystemConversion/include/coordinateSystemConversion/coordinateBase.h
new file mode 100644
index 00000000..a8bb0a4f
--- /dev/null
+++ b/coordinateSystemConversion/include/coordinateSystemConversion/coordinateBase.h
@@ -0,0 +1,33 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef COORDINATESYSTEMCONVERSION_COORDINATEBASE_H_
+#define COORDINATESYSTEMCONVERSION_COORDINATEBASE_H_
+
+enum coordinateBase
+{
+	AIRCRAFTDESIGN,
+    CGAL_COORD,
+	AIRCRAFTDYNAMICS
+};
+
+#endif // COORDINATESYSTEMCONVERSION_COORDINATEBASE_H_
\ No newline at end of file
diff --git a/coordinateSystemConversion/include/coordinateSystemConversion/coordinateSystemConversionConf.h b/coordinateSystemConversion/include/coordinateSystemConversion/coordinateSystemConversionConf.h
new file mode 100644
index 00000000..581b1324
--- /dev/null
+++ b/coordinateSystemConversion/include/coordinateSystemConversion/coordinateSystemConversionConf.h
@@ -0,0 +1,165 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef COORDINATESYSTEMCONVERSION_COORDINATESYSTEMCONVERSIONCONF_H_
+#define COORDINATESYSTEMCONVERSION_COORDINATESYSTEMCONVERSIONCONF_H_
+
+#include <cmath>
+#include <CGAL/Simple_cartesian.h>
+#include "coordinateBase.h"
+#include <vector>
+#include <numbers>
+
+namespace SimpleConversion
+{
+    using Kernel = CGAL::Simple_cartesian<double>;
+
+    struct Element3D {
+        
+        Element3D() = default;
+
+        Kernel::Aff_transformation_3 tensor3D = Kernel::Aff_transformation_3(
+            0, 0, 0,
+            0, 0, 0,
+            0, 0, 0);
+
+        Kernel::Point_3 point3D = Kernel::Point_3(0, 0, 0);
+
+        /* Initialize the element*/
+        Element3D(
+            const double xx, const double xy, const double xz, 
+            const double yx, const double yy, const double yz, 
+            const double zx, const double zy, const double zz)
+        {
+            /* The element can contain a tensor or a point/direction */
+            tensor3D = Kernel::Aff_transformation_3(xx, xy, xz, yx, yy, yz, zx, zy, zz);
+            point3D = Kernel::Point_3(xx, yy, zz);
+        };
+
+        Element3D(const double x, const double y, const double z)
+        {
+            tensor3D = Kernel::Aff_transformation_3(
+                x, 0.0, 0.0,
+                0.0, y, 0.0,
+                0.0, 0.0, z);
+            point3D = Kernel::Point_3(x, y, z);
+        };
+
+        virtual ~Element3D() = default;
+
+        /* Getter functions */
+        [[nodiscard]] auto xx() const noexcept -> const double { return  tensor3D.m(0, 0); }
+        [[nodiscard]] auto xy() const noexcept -> const double { return  tensor3D.m(0, 1); }
+        [[nodiscard]] auto xz() const noexcept -> const double { return  tensor3D.m(0, 2); }
+        [[nodiscard]] auto yx() const noexcept -> const double { return  tensor3D.m(1, 0); }
+        [[nodiscard]] auto yy() const noexcept -> const double { return  tensor3D.m(1, 1); }
+        [[nodiscard]] auto yz() const noexcept -> const double { return  tensor3D.m(1, 2); }
+        [[nodiscard]] auto zx() const noexcept -> const double { return  tensor3D.m(2, 0); }
+        [[nodiscard]] auto zy() const noexcept -> const double { return  tensor3D.m(2, 1); }
+        [[nodiscard]] auto zz() const noexcept -> const double { return  tensor3D.m(2, 2); }
+        [[nodiscard]] auto x() const noexcept -> const double& { return  point3D.x(); }
+        [[nodiscard]] auto y() const noexcept -> const double& { return  point3D.y(); }
+        [[nodiscard]] auto z() const noexcept -> const double& { return  point3D.z(); }
+
+        /* Conversion from CGAL Coordinate System to AC Coordinate System */
+        auto CGAL2AC() {
+            Kernel::Aff_transformation_3 rotate_x = Kernel::Aff_transformation_3(
+                1, 0, 0,
+                0, std::cos(-std::numbers::pi / 2.0), -std::sin(-std::numbers::pi / 2.0),
+                0, std::sin(-std::numbers::pi / 2.0), std::cos(-std::numbers::pi / 2.0));
+
+            Kernel::Aff_transformation_3 rotate_z = Kernel::Aff_transformation_3(
+                std::cos(-std::numbers::pi / 2.0), -std::sin(-std::numbers::pi / 2.0), 0,
+                std::sin(-std::numbers::pi / 2.0), std::cos(-std::numbers::pi / 2.0), 0,
+                0, 0, 1);
+
+            Kernel::Aff_transformation_3 transform_matrix = rotate_x * rotate_z;
+
+            Kernel::Aff_transformation_3 transposed_transform_matrix = Kernel::Aff_transformation_3(
+                transform_matrix.m(0, 0), transform_matrix.m(1, 0), transform_matrix.m(2, 0),
+                transform_matrix.m(0, 1), transform_matrix.m(1, 1), transform_matrix.m(2, 1),
+                transform_matrix.m(0, 2), transform_matrix.m(1, 2), transform_matrix.m(2, 2));
+
+            tensor3D = transform_matrix * tensor3D * transposed_transform_matrix;
+            point3D = transform_matrix(point3D);
+        };
+
+        /* Conversion from AC Coordinate System to CGAL Coordinate System */
+        auto AC2CGAL() {
+            Kernel::Aff_transformation_3 rotate_x = Kernel::Aff_transformation_3(
+                1, 0, 0,
+                0, std::cos(-std::numbers::pi / 2.0), -std::sin(-std::numbers::pi / 2.0),
+                0, std::sin(-std::numbers::pi / 2.0), std::cos(-std::numbers::pi / 2.0));
+
+            Kernel::Aff_transformation_3 rotate_z = Kernel::Aff_transformation_3(
+                std::cos(-std::numbers::pi / 2.0), -std::sin(-std::numbers::pi / 2.0), 0,
+                std::sin(-std::numbers::pi / 2.0), std::cos(-std::numbers::pi / 2.0), 0,
+                0, 0, 1);
+
+            Kernel::Aff_transformation_3 transform_matrix = rotate_x * rotate_z;
+
+            transform_matrix = transform_matrix.inverse();
+
+            Kernel::Aff_transformation_3 transposed_transform_matrix = Kernel::Aff_transformation_3(
+                transform_matrix.m(0, 0), transform_matrix.m(1, 0), transform_matrix.m(2, 0),
+                transform_matrix.m(0, 1), transform_matrix.m(1, 1), transform_matrix.m(2, 1),
+                transform_matrix.m(0, 2), transform_matrix.m(1, 2), transform_matrix.m(2, 2));
+
+            tensor3D = transform_matrix * tensor3D * transposed_transform_matrix;
+            point3D = transform_matrix(point3D);
+        };
+
+        /* Conversion from using specific angles */
+        auto CS12CS2(const double theta_x, const double theta_y, const double theta_z) {
+            Kernel::Aff_transformation_3 rotate_x = Kernel::Aff_transformation_3(
+                1, 0, 0,
+                0, std::cos(theta_x * std::numbers::pi / 180), -std::sin(theta_x * std::numbers::pi / 180),
+                0, std::sin(theta_x * std::numbers::pi / 180), std::cos(theta_x * std::numbers::pi / 180));
+
+            Kernel::Aff_transformation_3 rotate_y = Kernel::Aff_transformation_3(
+                std::cos(theta_y * std::numbers::pi / 180), 0, std::sin(theta_y * std::numbers::pi / 180),
+                0, 1, 0,
+                -std::sin(theta_y * std::numbers::pi / 180), 0, std::cos(theta_y * std::numbers::pi / 180));
+
+            Kernel::Aff_transformation_3 rotate_z = Kernel::Aff_transformation_3(
+                std::cos(theta_z * std::numbers::pi / 180), -std::sin(theta_z * std::numbers::pi / 180), 0,
+                std::sin(theta_z * std::numbers::pi / 180), std::cos(theta_z * std::numbers::pi / 180), 0,
+                0, 0, 1);
+
+            Kernel::Aff_transformation_3 transform_matrix = rotate_x * rotate_y * rotate_z;
+
+            Kernel::Aff_transformation_3 transposed_transform_matrix = Kernel::Aff_transformation_3(
+                transform_matrix.m(0, 0), transform_matrix.m(1, 0), transform_matrix.m(2, 0),
+                transform_matrix.m(0, 1), transform_matrix.m(1, 1), transform_matrix.m(2, 1),
+                transform_matrix.m(0, 2), transform_matrix.m(1, 2), transform_matrix.m(2, 2));
+
+            tensor3D = transform_matrix * tensor3D * transposed_transform_matrix;
+            point3D = transform_matrix(point3D);
+        };
+    };
+
+    //auto CGAL2AC(const std::vector<double> &element3D) -> std::vector<double>;
+
+    //auto AC2CGAL(const std::vector<double> &element3D) -> std::vector<double>;
+}
+
+#endif // COORDINATESYSTEMCONVERSION_COORDINATESYSTEMCONVERSIONCONF_H_
\ No newline at end of file
diff --git a/coordinateSystemConversion/pycoordinatesystemconversion/pycoordinatesystemconversion/__init__.py b/coordinateSystemConversion/pycoordinatesystemconversion/pycoordinatesystemconversion/__init__.py
new file mode 100644
index 00000000..9b67d439
--- /dev/null
+++ b/coordinateSystemConversion/pycoordinatesystemconversion/pycoordinatesystemconversion/__init__.py
@@ -0,0 +1,30 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+"""Python package of the coordinateSystemConversion C++ library.
+
+    Imports the pre-build binary and exposes its interface.
+"""
+# Package information
+__version__ = "0.5.0"
+__author__ = "Meric Taneri, meric.taneri@tum.de"
+
+# Import the binary and expose all members
+from .py11coordinateSystemConversion import *
diff --git a/coordinateSystemConversion/pycoordinatesystemconversion/pyproject.toml b/coordinateSystemConversion/pycoordinatesystemconversion/pyproject.toml
new file mode 100644
index 00000000..b58a4c71
--- /dev/null
+++ b/coordinateSystemConversion/pycoordinatesystemconversion/pyproject.toml
@@ -0,0 +1,18 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[tool.setuptools.package-data]
+pycoordinatesystemconversion = ["*.so", "*.dll", "*.pyd"]
+
+[project]
+name = "pycoordinatesystemconversion"
+version = "1.0.1"
+description = "Python binding of the pycoordinatesystemconversion C++ library of UNICADO"
+requires-python = ">=3.10"
+authors = [
+    {name = "Meric Taneri", email = "meric.taneri@tum.de"},
+]
+classifiers = [
+"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
+]
diff --git a/coordinateSystemConversion/readMe.txt b/coordinateSystemConversion/readMe.txt
new file mode 100644
index 00000000..fc331bdc
--- /dev/null
+++ b/coordinateSystemConversion/readMe.txt
@@ -0,0 +1,8 @@
+***** READ-ME zur Verwendung der UnitConversion *****
+
+1) Kopieren des Ordners unitConversion in den Source-Ordner des zu bearbeitenden Moduls (mit Au�nahme "testUnitConversion.cpp", die nur Testzwecken dient)
+2) Hinzufuegen der neuen Header-Dateien zum jeweiligen Modul in der CodeBlocks-Projektdatei <myModule>.cbp (rechte Maustaste auf Modulnamen im Editorbaum von CodeBlocks und dann "Add Files")
+3) ggf. Hinzufuegen der Aerodynamik-Klassen, falls diese noch nicht vorhanden sind (Ordner ISA), da diese beim Umwandeln einiger Einheiten benoetigt werden
+4) Unter Project->Build Options->Search Directory->Compiler die Ordner ISA und unitConversion hinzufuegen
+5) Ersetzen aller hardgecodeter Umrechnungen unter Verwendung der Befehle der UnitConversion
+6) Ausfuehren von micadoCheck
\ No newline at end of file
diff --git a/coordinateSystemConversion/resources.rc b/coordinateSystemConversion/resources.rc
new file mode 100644
index 00000000..6360da05
--- /dev/null
+++ b/coordinateSystemConversion/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "coordinateSystemConversion\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "coordinateSystemConversion.dll\0"
+            VALUE "ProductName",        "coordinateSystemConversion\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/coordinateSystemConversion/src/coordinateSystemConversionConf.cpp b/coordinateSystemConversion/src/coordinateSystemConversionConf.cpp
new file mode 100644
index 00000000..ae361a08
--- /dev/null
+++ b/coordinateSystemConversion/src/coordinateSystemConversionConf.cpp
@@ -0,0 +1,69 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <cmath>
+#include <CGAL/Simple_cartesian.h>
+#include <vector>
+#include <numbers>
+#include "coordinateSystemConversion/coordinateBase.h"
+
+
+//namespace SimpleConversion
+//{
+//    using Kernel = CGAL::Simple_cartesian<double>;
+//
+//    auto CGAL2AC(const std::vector<double> &element3D) -> std::vector<double> 
+//    {
+//        Kernel::Aff_transformation_3 rotate_x = Kernel::Aff_transformation_3(
+//            1, 0, 0,
+//            0, std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0),
+//            0, std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0));
+//
+//        Kernel::Aff_transformation_3 rotate_z = Kernel::Aff_transformation_3(
+//            std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0), 0,
+//            std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0), 0,
+//            0, 0, 1);
+//
+//        Kernel::Aff_transformation_3 transform = rotate_x * rotate_z;
+//
+//        return transform(element3D);    
+//    }
+//
+//    auto AC2CGAL(const std::vector<double> &element3D) -> std::vector<double>
+//    {
+//        Kernel::Aff_transformation_3 rotate_x = Kernel::Aff_transformation_3(
+//            1, 0, 0,
+//            0, std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0),
+//            0, std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0));
+//
+//        Kernel::Aff_transformation_3 rotate_z = Kernel::Aff_transformation_3(
+//            std::cos(std::numbers::pi / 2.0), -std::sin(std::numbers::pi / 2.0), 0,
+//            std::sin(std::numbers::pi / 2.0), std::cos(std::numbers::pi / 2.0), 0,
+//            0, 0, 1);
+//
+//        Kernel::Aff_transformation_3 transform = rotate_x * rotate_z;
+//
+//        transform = transform.inverse();
+//
+//        return transform(element3D);
+//    }
+//}
\ No newline at end of file
diff --git a/coordinateSystemConversion/src/py_coordinate_system_conversion.cpp b/coordinateSystemConversion/src/py_coordinate_system_conversion.cpp
new file mode 100644
index 00000000..ff3ac593
--- /dev/null
+++ b/coordinateSystemConversion/src/py_coordinate_system_conversion.cpp
@@ -0,0 +1,127 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <pybind11/pybind11.h>
+#include <pybind11/operators.h>
+#include <pybind11/stl.h>
+#include <pybind11/stl/filesystem.h>
+#include <pybind11/numpy.h>
+#include <vector>
+#include "coordinateSystemConversion/coordinateBase.h"
+#include "coordinateSystemConversion/coordinateSystemConversionConf.h"
+
+namespace py = pybind11;
+
+/* === Python bindings === */
+
+//PYBIND11_MODULE(py11coordinateSystemConversion, m)
+//{
+//    namespace csc = CoordinateSystemConversion;
+//
+//    m.doc() = "Python bindings for coordinateSystemConversion";
+//
+//    m.def("convertCoordinateSystem",
+//        &csc::convertCoordinateSystem,
+//        py::arg("from") = coordinateBase(),
+//        py::arg("to") = coordinateBase(),
+//        py::arg("element3D") = std::vector<double>());
+//
+//    m.def("convertCoordinateSystem3D",
+//        &csc::convertCoordinateSystem3D,
+//        py::arg("from") = coordinateBase(),
+//        py::arg("to"),
+//        py::arg("element3D") = std::vector<double>());
+//        
+//    m.def("convertAircraftDesign",
+//        &csc::convertAircraftDesign,
+//        py::arg("to") = coordinateBase(),
+//        py::arg("element3D") = std::vector<double>());
+//        
+//    m.def("convertCGAL",
+//        &csc::convertCGAL,
+//        py::arg("to") = coordinateBase(),
+//        py::arg("element3D") = std::vector<double>());
+//        
+//    m.def("convertAircraftDynamics",
+//        &csc::convertAircraftDynamics,
+//        py::arg("to") = coordinateBase(),
+//        py::arg("element3D") = std::vector<double>());
+//        
+//    m.def("ACDesign_to_CGAL",
+//        &csc::ACDesign_to_CGAL,
+//        py::arg("element3D") = std::vector<double>());
+//        
+//    m.def("ACDesign_to_ACDynamics",
+//        &csc::ACDesign_to_ACDynamics,
+//        py::arg("element3D") = std::vector<double>());
+//        
+//    m.def("CGAL_to_ACDynamics",
+//        &csc::CGAL_to_ACDynamics,
+//        py::arg("element3D") = std::vector<double>());
+//        
+//    m.def("CGAL_to_ACDesign",
+//        &csc::CGAL_to_ACDesign,
+//        py::arg("element3D") = std::vector<double>());
+//        
+//    m.def("ACDynamics_to_CGAL",
+//        &csc::ACDynamics_to_CGAL,
+//        py::arg("element3D") = std::vector<double>());
+//
+//    m.def("ACDynamics_to_ACDesign", 
+//        &csc::ACDynamics_to_ACDesign,
+//        py::arg("element3D") = std::vector<double>());
+//}
+
+PYBIND11_MODULE(py11coordinateSystemConversion, m)
+{
+    namespace sc = SimpleConversion;
+
+    m.doc() = "Python bindings for simple coordinate system conversion";
+
+    py::class_ <sc::Element3D>(m, "Element3D")
+        .def(py::init<>())
+        .def(py::init<double, double, double, double, double, double, double, double, double>(),
+            py::arg("xx"), py::arg("xy"), py::arg("xz"),
+            py::arg("yx"), py::arg("yy"), py::arg("yz"),
+            py::arg("zx"), py::arg("zy"), py::arg("zz"))
+        .def(py::init<double, double, double>(),
+            py::arg("x"), py::arg("y"), py::arg("z"))
+        .def_readwrite("tensord3D", &sc::Element3D::tensor3D, "3D tensor of the element")
+        .def_readwrite("point3D", &sc::Element3D::point3D, "3D point of the element")
+        .def("xx", &sc::Element3D::xx, "The xx-component of the matrix.")
+        .def("xy", &sc::Element3D::xy, "The xy-component of the matrix.")
+        .def("xz", &sc::Element3D::xz, "The xz-component of the matrix.")
+        .def("yx", &sc::Element3D::yx, "The yx-component of the matrix.")
+        .def("yy", &sc::Element3D::yy, "The yy-component of the matrix.")
+        .def("yz", &sc::Element3D::yz, "The yz-component of the matrix.")
+        .def("zx", &sc::Element3D::zx, "The zx-component of the matrix.")
+        .def("zy", &sc::Element3D::zy, "The zy-component of the matrix.")
+        .def("zz", &sc::Element3D::zz, "The zz-component of the matrix.")
+        .def("x", &sc::Element3D::x, "The x-component of the matrix.")
+        .def("y", &sc::Element3D::y, "The y-component of the matrix.")
+        .def("z", &sc::Element3D::z, "The z-component of the matrix.")
+        .def("CGAL2AC", &sc::Element3D::CGAL2AC, "Convert matrix from CGAL Coordinate system to AC Coordinate system.")
+        .def("AC2CGAL", &sc::Element3D::AC2CGAL, "Convert matrix from AC Coordinate system to CGAL Coordinate system.")
+        .def("CS12CS2", &sc::Element3D::CS12CS2,
+            py::arg("theta_x"), py::arg("theta_y"), py::arg("theta_z"),
+            "Convert matrix from Coordinate System 1 to Coordinate System 2 using a 123 transform.");
+}
\ No newline at end of file
diff --git a/energyCarriers/CMakeLists.txt b/energyCarriers/CMakeLists.txt
new file mode 100644
index 00000000..e10912d6
--- /dev/null
+++ b/energyCarriers/CMakeLists.txt
@@ -0,0 +1,71 @@
+# Set the library name
+set( LIBRARY_NAME energyCarriers )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/energyCarriers.cpp
+    resources.rc
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_ENERGYCARRIERS_SHARED" PUBLIC "IMPORT_ENERGYCARRIERS_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Link against dependent libraries
+target_link_libraries( ${LIBRARY_NAME} 
+)
+
+if( BUILD_UNITTEST)
+    add_subdirectory(test)
+endif()
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
+
+# === Add python bindings ===
+pybind11_add_module( py11${LIBRARY_NAME}
+    src/energyCarriers.cpp
+    src/py_energyCarriers.cpp
+)
+
+target_include_directories(py11${LIBRARY_NAME} PUBLIC include)
+set_target_properties(energyCarriers PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
+target_link_libraries(py11${LIBRARY_NAME})
+
+# On Windows the Python Debug builds are not properly supported -> warn about this
+if(MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug")
+    message(WARNING "\n[${PROJECT_NAME}] -> Building Python binding of ${LIBRARY_NAME} in Debug Mode on Windows. This is not properly supported!")
+endif()
+
+# Set the output directory for the python binding -> Use generator expressions to force multi-generator output to the same location
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyenergycarriers/pyenergycarriers$<0:>) # .dll for Windows
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyenergycarriers/pyenergycarriers$<0:>) # .so for Unix
+
+# Add the package to the package list for exporting the target
+# and propagate the resulting list back to the parent scope
+list( APPEND PYTHON_TARGETS ${CMAKE_CURRENT_LIST_DIR}/pyenergycarriers)
+set( PYTHON_TARGETS ${PYTHON_TARGETS} PARENT_SCOPE )
+
+install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyenergycarriers DESTINATION lib)
\ No newline at end of file
diff --git a/energyCarriers/include/energyCarriers/energyCarriers.h b/energyCarriers/include/energyCarriers/energyCarriers.h
new file mode 100644
index 00000000..530e9c7e
--- /dev/null
+++ b/energyCarriers/include/energyCarriers/energyCarriers.h
@@ -0,0 +1,54 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef ENERGYCARRIERS_INCLUDE_ENERGYCARRIERS_H_
+#define ENERGYCARRIERS_INCLUDE_ENERGYCARRIERS_H_
+
+#include <string>
+/**
+ * @class EnergyCarrier
+ * @brief Class to access energy carrier specific parameter.
+ * @details The aircraft xml specifies the energy carrier type and density.
+ * Additional parameter such as the gravimetric energy density and emission indices
+ * are constant for each energy carrier type. The volumetric energy density is
+ * scaled acc to the density.
+ * 
+ * NOTE: To construct the object, define energy carrier type and density by using the
+ * getter in the moduleBasics/runtimeIO.h ! 
+ */
+class EnergyCarrier {
+ public:
+    const std::string type;                   /* Energy carrier type (e.g., "kerosene") */
+    const double density;                     /* Density [kg/m^3] */
+    const double gravimetric_energy_density;  /* Gravimetric energy density [J/kg] */
+    const double volumetric_energy_density;   /* Volumetric energy density [J/m^3] */
+    const double emission_index_CO2;          /* Emission index of CO2 [kg/kg] */
+    const double emission_index_H2O;          /* Emission index of H2O [kg/kg] */
+    const double emission_index_SO2;          /* Emission index of SO2 [kg/kg] */
+    const double emission_index_SO4;          /* Emission index of SO4 [kg/kg] */
+    const double emission_index_soot;         /* Emission index of soot [kg/kg] */
+
+    /* Constructor with type and density */
+    EnergyCarrier(const std::string& type, double density);
+};
+
+#endif  // ENERGYCARRIERS_INCLUDE_ENERGYCARRIERS_H_
diff --git a/energyCarriers/pyenergycarriers/pyenergycarriers/__init__.py b/energyCarriers/pyenergycarriers/pyenergycarriers/__init__.py
new file mode 100644
index 00000000..3609c49e
--- /dev/null
+++ b/energyCarriers/pyenergycarriers/pyenergycarriers/__init__.py
@@ -0,0 +1,30 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+"""Python package of the energyCarriers C++ library.
+
+    Imports the pre-build binary and exposes its interface.
+"""
+# Package information
+__version__ = "0.5.0"
+__author__ = "Kristina Mazur, kristina.mazur@tum.de"
+
+# Import the binary and expose all members
+from .py11energyCarriers import *
diff --git a/energyCarriers/pyenergycarriers/pyproject.toml b/energyCarriers/pyenergycarriers/pyproject.toml
new file mode 100644
index 00000000..0acf121d
--- /dev/null
+++ b/energyCarriers/pyenergycarriers/pyproject.toml
@@ -0,0 +1,18 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[tool.setuptools.package-data]
+pyenergycarriers = ["*.so", "*.dll", "*.pyd"]
+
+[project]
+name = "pyenergycarriers"
+version = "1.0.0"
+description = "Python binding of the energyCarriers C++ library of UNICADO"
+requires-python = ">=3.10"
+authors = [
+    {name = "Kristina Mazur", email = "kristina.mazur@tum.de"},
+]
+classifiers = [
+"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
+]
diff --git a/energyCarriers/resources.rc b/energyCarriers/resources.rc
new file mode 100644
index 00000000..4318f6e3
--- /dev/null
+++ b/energyCarriers/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "energyCarriers\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "energyCarriers.dll\0"
+            VALUE "ProductName",        "energyCarriers\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/energyCarriers/src/energyCarriers.cpp b/energyCarriers/src/energyCarriers.cpp
new file mode 100644
index 00000000..1517267f
--- /dev/null
+++ b/energyCarriers/src/energyCarriers.cpp
@@ -0,0 +1,90 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "energyCarriers/energyCarriers.h"
+#include <stdexcept>
+#include <map>
+
+/* 
+ * @brief Maps energy carrier types (std::string) to gravimetric energy densities (double [J/kg]).
+ */
+const std::map<std::string, double> gravimetric_energy_densities = {
+    {"kerosene", 43100000.},
+    {"liquid_hydrogen", 120000000.}
+};
+
+/* 
+ * @brief Map energy carrier types (std::string) to CO2 emission indices (double [kg/kg]).
+ */
+const std::map<std::string, double> emission_indices_CO2 = {
+    {"kerosene", 3.149},
+    {"liquid_hydrogen", 0.0}
+};
+
+/*
+ * @brief Map energy carrier types (std::string) to H2O emission indices (double [kg/kg]).
+ */
+const std::map<std::string, double> emission_indices_H2O = {
+    {"kerosene", 1.2},
+    {"liquid_hydrogen", 8.94}
+};
+
+/*
+ * @brief Map energy carrier types (std::string) to SO2 emission indices (double [kg/kg]).
+ */
+const std::map<std::string, double> emission_indices_SO2 = {
+    {"kerosene", 0.84e-3},
+    {"liquid_hydrogen", 0.0}
+};
+
+/*
+ * @brief Map energy carrier types (std::string) to SO4 emission indices (double [kg/kg]).
+ */
+const std::map<std::string, double> emission_indices_SO4 = {
+    {"kerosene", 2e-4},
+    {"liquid_hydrogen", 0.0}
+};
+
+/*
+ * @brief Map energy carrier types (std::string) to soot emission indices (double [kg/kg]).
+ */
+const std::map<std::string, double> emission_indices_soot = {
+    {"kerosene", 0.025e-3},
+    {"liquid_hydrogen", 0.0}
+};
+
+/*
+ * @brief Constructor for EnergyCarrier class.
+ * @param type Energy carrier type (e.g., "kerosene").
+ * @param density Density [kg/m^3].
+ */
+EnergyCarrier::EnergyCarrier(const std::string& type, double density)
+    : type(type),
+    density(density),
+    gravimetric_energy_density(gravimetric_energy_densities.at(type)),
+    volumetric_energy_density(density * gravimetric_energy_densities.at(type)),
+    emission_index_CO2(emission_indices_CO2.at(type)),
+    emission_index_H2O(emission_indices_H2O.at(type)),
+    emission_index_SO2(emission_indices_SO2.at(type)),
+    emission_index_SO4(emission_indices_SO4.at(type)),
+    emission_index_soot(emission_indices_soot.at(type)) {
+}
diff --git a/energyCarriers/src/py_energyCarriers.cpp b/energyCarriers/src/py_energyCarriers.cpp
new file mode 100644
index 00000000..75353cb9
--- /dev/null
+++ b/energyCarriers/src/py_energyCarriers.cpp
@@ -0,0 +1,61 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+#include "energyCarriers/energyCarriers.h"
+
+namespace py = pybind11;
+
+/* === Python bindings === */
+/**
+ * @brief Python bindings for the EnergyCarrier C++ library.
+ */
+PYBIND11_MODULE(py11energyCarriers, m) {
+    // Set module docstring
+    m.doc() = "Python bindings for the EnergyCarrier C++ library";
+
+    // Bind the EnergyCarrier class
+    py::class_<EnergyCarrier>(m, "EnergyCarrier")
+        .def(py::init<const std::string&, double>(),
+             py::arg("type"), py::arg("density"),
+             "Constructor for EnergyCarrier class. Requires fuel type and density.")
+
+        // Bind public attributes
+        .def_readonly("type", &EnergyCarrier::type, "The energy carrier type (e.g., 'kerosene').")
+        .def_readonly("density", &EnergyCarrier::density, "The density of the energy carrier in kg/m^3.")
+        .def_readonly("gravimetric_energy_density", &EnergyCarrier::gravimetric_energy_density,
+                      "The gravimetric energy density of the energy carrier in J/kg.")
+        .def_readonly("volumetric_energy_density", &EnergyCarrier::volumetric_energy_density,
+                      "The volumetric energy density of the energy carrier in J/m^3.")
+        .def_readonly("emission_index_CO2", &EnergyCarrier::emission_index_CO2,
+                      "The CO2 emission index of the energy carrier in kg/kg.")
+        .def_readonly("emission_index_H2O", &EnergyCarrier::emission_index_H2O,
+                      "The H2O emission index of the energy carrier in kg/kg.")
+        .def_readonly("emission_index_SO2", &EnergyCarrier::emission_index_SO2,
+                      "The SO2 emission index of the energy carrier in kg/kg.")
+        .def_readonly("emission_index_SO4", &EnergyCarrier::emission_index_SO4,
+                      "The SO4 emission index of the energy carrier in kg/kg.")
+        .def_readonly("emission_index_soot", &EnergyCarrier::emission_index_soot,
+                      "The soot emission index of the energy carrier in kg/kg.");
+}
diff --git a/energyCarriers/test/CMakeLists.txt b/energyCarriers/test/CMakeLists.txt
new file mode 100644
index 00000000..a8f361b9
--- /dev/null
+++ b/energyCarriers/test/CMakeLists.txt
@@ -0,0 +1,49 @@
+# Convert the module sources to a path found by CMake
+list(TRANSFORM LIBRARY_SOURCES PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/../ OUTPUT_VARIABLE TEST_SOURCES)
+
+# ==============================================
+# Add the test executable
+#
+# *** IMPORTANT ***
+# -> Change *.cpp files according to the tests
+# ==============================================
+add_executable(test_${LIBRARY_NAME}
+    test_energyCarriers.cpp
+    ${TEST_SOURCES}
+)
+
+# Link the test executable against UNICADO libs and gtest
+target_link_libraries( test_${LIBRARY_NAME}
+    PRIVATE
+        GTest::gtest_main
+)
+
+# Set compile definitions for the test executable
+target_compile_options( test_${LIBRARY_NAME} PRIVATE "-w") # Skip warnings
+
+# The the original source folder as includes, to that the test can access the
+# original source files
+target_include_directories( test_${LIBRARY_NAME}
+    PRIVATE
+        ${CMAKE_CURRENT_SOURCE_DIR}/../src/
+		${CMAKE_CURRENT_SOURCE_DIR}/../include/
+)
+
+# Build the test runner into the current directory
+set_target_properties( test_${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+
+# Add a custom target to run the tests with cmake
+add_custom_target(runtest_${LIBRARY_NAME}
+        # COMMAND CTEST_OUTPUT_ON_FAILURE=1 GTEST_COLOR=1
+        COMMAND test_${LIBRARY_NAME}
+        DEPENDS test_${LIBRARY_NAME})
+
+# *optional* Add the test executable to ctest
+# gtest_discover_tests(test_${LIBRARY_NAME})
+
+# Set compile options according to operating system
+if( WIN32 )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS;BUILD_ENERGYCARRIERS_DLL")
+elseif( UNIX )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "BUILD_ENERGYCARRIERS_SO")
+endif()
diff --git a/energyCarriers/test/test_energyCarriers.cpp b/energyCarriers/test/test_energyCarriers.cpp
new file mode 100644
index 00000000..cb8e09f4
--- /dev/null
+++ b/energyCarriers/test/test_energyCarriers.cpp
@@ -0,0 +1,80 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "energyCarriers/energyCarriers.h"
+#include <gtest/gtest.h>
+#include <stdexcept>
+
+// Test for valid input "kerosene"
+TEST(EnergyCarrierTest, ValidKerosene) {
+    EnergyCarrier carrier("kerosene", 800.0);  // Density of kerosene ~800 kg/m^3
+    EXPECT_EQ(carrier.type, "kerosene");
+    EXPECT_DOUBLE_EQ(carrier.density, 800.0);
+    EXPECT_DOUBLE_EQ(carrier.gravimetric_energy_density, 43100000.0);
+    EXPECT_DOUBLE_EQ(carrier.volumetric_energy_density, 800.0 * 43100000.0);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_CO2, 3.149);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_H2O, 1.2);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_SO2, 0.84e-3);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_SO4, 2e-4);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_soot, 0.025e-3);
+}
+
+// Test for valid input "liquid_hydrogen"
+TEST(EnergyCarrierTest, ValidHydrogen) {
+    EnergyCarrier carrier("liquid_hydrogen", 70.0);  // Density of liquid_hydrogen ~70 kg/m^3
+    EXPECT_EQ(carrier.type, "liquid_hydrogen");
+    EXPECT_DOUBLE_EQ(carrier.density, 70.0);
+    EXPECT_DOUBLE_EQ(carrier.gravimetric_energy_density, 120000000.0);
+    EXPECT_DOUBLE_EQ(carrier.volumetric_energy_density, 70.0 * 120000000.0);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_CO2, 0.0);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_H2O, 8.94);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_SO2, 0.0);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_SO4, 0.0);
+    EXPECT_DOUBLE_EQ(carrier.emission_index_soot, 0.0);
+}
+
+// Test for invalid input type
+TEST(EnergyCarrierTest, InvalidType) {
+    EXPECT_THROW(
+        {
+            EnergyCarrier carrier("unknown", 500.0);
+        },
+        std::out_of_range);
+}
+
+// Test for zero density
+TEST(EnergyCarrierTest, ZeroDensity) {
+    EnergyCarrier carrier("kerosene", 0.0);
+    EXPECT_EQ(carrier.volumetric_energy_density, 0.0);
+}
+
+// Test for negative density
+TEST(EnergyCarrierTest, NegativeDensity) {
+    EnergyCarrier carrier("kerosene", -10.0);
+    EXPECT_EQ(carrier.volumetric_energy_density, -10.0 * 43100000.0);
+}
+
+// Main entry point for Google Test
+int main(int argc, char **argv) {
+    ::testing::InitGoogleTest(&argc, argv);
+    return RUN_ALL_TESTS();
+}
diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt
new file mode 100644
index 00000000..8761c075
--- /dev/null
+++ b/engine/CMakeLists.txt
@@ -0,0 +1,59 @@
+# Set the library name
+set( LIBRARY_NAME engine )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/engine.cpp
+    src/engine_data.cpp
+    src/engine_deck.cpp
+    src/SI_units.cpp
+    src/parser/csv.cpp
+    resources.rc
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_ENGINE_SHARED" PUBLIC "IMPORT_ENGINE_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Link against dependent libraries
+find_package(Boost REQUIRED)
+target_link_libraries( ${LIBRARY_NAME} 
+    PUBLIC
+        Boost::boost    
+    PRIVATE
+        aixml
+        unitConversion
+        runtimeInfo 
+        standardFiles
+        atmosphere
+)
+
+# Add the tests if enabled
+if(BUILD_UNITTEST)
+    add_subdirectory(test)
+endif()
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/engine/include/engine/engine.h b/engine/include/engine/engine.h
new file mode 100644
index 00000000..fa1ee06f
--- /dev/null
+++ b/engine/include/engine/engine.h
@@ -0,0 +1,593 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef ENGINE_ENGINE_H_
+#define ENGINE_ENGINE_H_
+
+/* === Includes === */
+#include "../engine/engine_data.h"
+#include <atmosphere/atmosphere.h>
+#include <string>
+#include <string_view>
+
+#ifdef BUILD_ENGINE_SHARED
+#ifdef _WIN32
+#define ENGINEDLLEXPORT __declspec(dllexport)
+#else
+#define ENGINEDLLEXPORT __attribute__((visibility("default")))
+#endif
+#elif defined(IMPORT_ENGINE_SHARED)
+#ifdef _WIN32
+#define ENGINEDLLEXPORT __declspec(dllimport)
+#else
+#define ENGINEDLLEXPORT
+#endif
+#else
+#define ENGINEDLLEXPORT
+#endif
+
+
+/**
+ * @enum LTO emission types
+ * @brief Contains the four different emission types in the LTO cycle.
+ * @param HC // unburned hydrocarbons
+ * @param CO // carbon monoxide
+ * @param NOx // nitrogen oxides
+ * @param SN // smoke number
+ */
+enum class EngineEmissions : unsigned int
+{
+  HC, // emission in [kg_emission/kg_fuel]
+  CO, // emission in [kg_emission/kg_fuel]
+  NOx, // emission in [kg_emission/kg_fuel]
+  SN // emission in [kg_emission/kg_fuel]
+};
+
+/**
+ * @enum EngineStages
+ * @brief Contains the engine stages
+ * @param St2 // First compressor inlet
+ * @param St3 // Last compressor exit, cold side heat exchanger inlet
+ * @param St4 // Burner exit
+ * @param St5 // Low-pressure turbine exit after addition of cooling air
+ * @param St13 // Outer stream fan exit
+ * @param St22 // Low pressure compressor inlet
+ * @param St25 // High-pressure compressor inlet
+ * @param St45 // Intermediate turbine stator exit
+ * @param St18 // Bypass nozzle throat
+ * @param St8 // Nozzle throat
+ */
+enum class EngineStage : unsigned int
+{
+  St2, 
+  St3,
+  St4,
+  St5,
+  St13,
+  St22,
+  St25,
+  St45,
+  St18,
+  St8
+};
+
+/**
+ * @enum engine stage properties
+ * @brief Contains properties of the stages of an engine
+ * @param FuelToAirRatio // ratio of fuel to air
+ * @param MachNumber // mach number
+ * @param TotalPressure // total pressure 
+ * @param TotalTemperature // total temperature
+ * @param StaticTemperature // static temperature
+ * @param MassFlow // mass flow
+ */
+enum class StageProperties : unsigned int
+{
+  FuelToAirRatio, // ratio in [-]
+  MachNumber, // speed ratio in [-]
+  TotalPressure, // pressure in [Pa]
+  TotalTemperature, // temperature in [K]
+  StaticTemperature, // temperature in [K]
+  MassFlow // massflow in [kg/s]
+};
+
+/** @class Engine
+ *   @brief Class to get access to engine parameters
+ */
+class ENGINEDLLEXPORT Engine
+{
+public:
+  /* === Constructor and Destructor === */
+  /**
+   * @brief Construct a new Engine object.
+   * It is enough to pass the path to the engine directory.
+   * The engine data XML file is then automatically loaded.
+   *
+   * @param engine_directory The path to the engine directory.
+   */
+  explicit Engine(const std::filesystem::path &engine_directory);
+
+  /**
+   * @brief Construct a new Engine object with a
+   * thrust scale factor.
+   *
+   * @param engine_directory The path to the engine directory.
+   * @param scale_factor The thrust scaling to apply to this engine.
+   */
+  Engine(const std::filesystem::path &engine_directory, double scale_factor);
+
+  /* === Default Constructors and Assignment Operators */
+  Engine(const Engine &other) = default;
+  auto operator=(const Engine &other) -> Engine & = default;
+  Engine(Engine &&other) = default;
+  auto operator=(Engine &&other) -> Engine & = default;
+  ~Engine() = default;
+
+  /* === Getters === */
+  /**
+  * @brief Get the data from the unscaled engine as defined
+  * in the engine data XML file.
+  * @note The unscaled engine data is not affected by the
+  * current operating point!
+  *
+  * @return const EngineData& The unscaled engine data.
+  */
+  [[nodiscard]] auto get_unscaled_engine() const -> const EngineData &;
+
+  /**
+  * @brief Get the thrust scale factor of the engine.
+  * @return double [-] The scale factor of the thrust.
+  */
+  [[nodiscard]] auto get_scale_factor() const -> double;
+
+  /**
+  * @brief Get the engine dimension with the applied scaling.
+  * @details The dimensions are scaled as follows:
+  * - The cross section dimensions are scaled with the square root of the scale factor.
+  * - The length is scaled by scale_factor^0.4 \cite Raymer p.285 Eq. 10.1
+  * @return Dimensions [m] The scaled dimensions (height, width, length, diameter)
+  * of the engine.
+  */
+  [[nodiscard]] auto get_engine_dimensions() const -> Dimensions;
+
+  /**
+  * @brief Get the current operating point of the engine.
+  *
+  * @return OperatingPoint The current operating point.
+  */
+  [[nodiscard]] auto get_operating_point() -> OperatingPoint;
+  
+   /**
+    * @brief Get the thrust lapse at specific operating point with maximum thrust
+    * 
+    * @param atm: Current atmospheric conditions
+    * @param mach: mach_number number at the operating condition [-]
+    * @param thrust_rating: Current rating [takeoff, maximum_continuous, climb, cruise, idle]
+    * @param altitude: Current flight altitude [m]
+    */
+   
+   double get_thrust_lapse(const std::string &thrust_rating, const atmosphere& atm, double mach, double altitude);
+  /**
+  * @brief Get the number of the same engine type for the aircraft
+  *
+  * @return int [-] for number of the same engine.
+  */
+  [[nodiscard]] auto get_same_engine_type_quantity() -> int;
+
+  /* === Setters === */
+  /**
+  * @brief Set a new operating point of the engine.
+  *
+  * @param op The new operating point.
+  */
+  void set_operating_point(const OperatingPoint &op);
+
+  /**
+  * @brief Set the number of the same engine type for the aircraft
+  *
+  * @param same_engine_type_quantity: [-] for number of the same engine
+  */
+  void set_same_engine_type_quantity(int16_t same_engine_type_quantity);
+
+  /**
+  * @brief Sets the correction factors for N1, temperature and mass flow
+  *
+  * @param N_correction_ The correction for the spool speed
+  * @param W_correction_ The correction for the mass flow
+  * @param T_correction_ The correction for the temperature
+  **/
+ void set_correction_factors(const OperatingPoint &op, const atmosphere& atm);
+
+  /**
+  * @brief Checks if the given offtakes are within limits
+  *
+  **/
+ void check_offtake_boundaries(const OperatingPoint &op, double bleed_air_offtake, double shaft_power_offtake);
+
+  /**
+  * @brief Get the engines low pressure spool speed in percent of MCT using offtakes.
+  *
+  * @param flight_level: Current flight level [m]
+  * @param mach_number: Current mach_number number [-]
+  * @param atm: Current atmospheric conditions
+  * @param derate: Value between 1.0 and 0.1 to artificially throttle the engine [-]
+  * @param thrust_rating: Current rating [takeoff, maximum_continuous, climb, cruise, idle]
+  * @param bleed_air_offtake: Current bleed air offtake [kg/s]
+  * @param shaft_power_offtake: Current shaft power offtake [W]
+  */
+  void calculate_N1_with_penalties(const double &flight_level, 
+      const double &mach_number, 
+      const atmosphere &atm, 
+      const double &derate, 
+      const std::string &thrust_rating, 
+      double bleed_air_offtake, 
+      double shaft_power_offtake);
+
+  /**
+  * @brief Get the low pressure shaft spool speed using a thrust limit and penalties.
+  *
+  * @param flight_level: Current flight level [m]
+  * @param mach_number: Current mach_number number [-]
+  * @param atm: Current atmospheric conditions
+  * @param derate: Value between 1.0 and 0.1 to artificially throttle the engine [-]
+  * @param thrust_rating: Current rating [takeoff, maximum_continuous, climb, cruise, idle]
+  * @param bleed_air_offtake: Current bleed air offtake [kg/s]
+  * @param shaft_power_offtake: Current shaft power offtake [W]
+  * @param thrust_limit: Aircraft thrust limitation. The resulting thrust is not allowed to exceed the thrust_limit, except if thrust_limit is lower than the thrust at the lowest possible shaft speed. [N]
+  */
+  void calculate_N1_with_thrustlimit(const double &flight_level, 
+      const double &mach_number, 
+      const atmosphere &atm, 
+      const double &derate, 
+      const std::string &thrust_rating, 
+      double bleed_air_offtake, 
+      double shaft_power_offtake, 
+      double thrustLimit);
+
+  /* === Access the deck data === */
+  
+  /**
+  * @brief Get the scaled engine thrust at the current operating point for the aircraft 
+  * @return double [N] The thrust of the engine.
+  */
+  [[nodiscard]] auto get_thrust_aircraft() -> double;
+
+    /**
+  * @brief Get the scaled engine thrust at the current operating point for the engine
+  * @return double [N] The thrust of the engine.
+  */
+  [[nodiscard]] auto get_thrust() -> double;
+
+  /**
+  * @brief Get the scaled fuel flow at the current operating point
+  * @return fuelDeck.getVal fuel flow [kg/s] depending on the variables above
+  */
+  [[nodiscard]] auto get_aircraft_fuelflow() -> double;
+
+  /**
+  * @brief Get the scaled fuel flow at the current operating point
+  * @return fuelDeck.getVal fuel flow [kg/s] depending on the variables above
+  */
+  [[nodiscard]] auto get_fuelflow() -> double;
+
+  /**
+  * @brief Returns the temperature of the core engine mass flow at the low-pressure turbine outlet
+  * @return The temperature of the core engine mass flow at the low-pressure turbine outlet [K]
+  */
+  [[nodiscard]] auto get_engine_EGT() -> double;
+
+  /**
+  * @brief Returns the engine pressure ratio
+  * @return The engine pressure ratio [-]
+  */
+  [[nodiscard]] auto get_engine_EPR() -> double;
+
+  /**
+  * @brief Returns the overall pressure ratio
+  * @return The overall pressure ratio [-]
+  */
+  [[nodiscard]] auto get_engine_OPR() -> double;
+
+  /**
+  * @brief NOx emission index with severity factor
+  * @return NOx emission index [kg_emission/kg_fuel]
+  */
+  [[nodiscard]] auto get_engine_NOx_emission_index() -> double;
+
+  /**
+  * @brief Function to get the LTO emission index for the emission type & phase of the LTO cycle 
+  * @return double [kg_emission/kg_fuel]
+  */
+  [[nodiscard]] auto get_LTO_emission_index(const LTOPhases LTO_cycle, 
+      const EngineEmissions emission) -> double;
+
+  /**
+  * @brief Gets the scaled fuel flow for the LTO phase
+  * @return double fuelflow [kg/s]
+  */
+  [[nodiscard]] auto get_LTO_fuelflow(const LTOPhases LTO_cycle) -> double;
+
+  /**
+  * @brief Gets the maximum shaft power that can be taken from one engine.
+  * @return double power offtake [W]
+  */
+  [[nodiscard]] auto get_max_shaft_power_offtake_engine() -> double;
+
+  /**
+  * @brief Gets the maximum possible bleed air offtake of the engine at current operating point
+  * @return double [kg/s]
+  */
+  [[nodiscard]] auto get_max_bleed_offtake_at_current_operating_point() -> double;
+
+    /**
+  * @brief Gets the scaled dry mass of the engine 
+  * @return double [kg/s]
+  */
+  [[nodiscard]] auto get_dry_mass() -> double;
+
+  /**
+  * @brief Gets the chosen physical property of the engine at the chosen stage of the engine.
+  * @return double Various units
+  */
+  [[nodiscard]] auto get_physical_properties_stage(const StageProperties stage_property, 
+      const EngineStage engine_stage) -> double;
+
+  /**
+  * @brief Gets the scaled SLST.
+  * @return double [N]
+  */
+  [[nodiscard]] auto get_scaled_SLST() -> double;
+
+
+
+private:
+  /* === Properties === */
+  EngineData engine_data_;  // [-] EngineData object to get access to engine parameters
+  OperatingPoint op_;       // [-] The current operating point of the engine
+  std::string enginetype_;  // [-] the type of the engine
+  double scale_factor_;     // [-] Scale the engine data to achieve a scaled thrust output
+  int number_of_engines_;   // [-] Number of engines of this engine type installed on aircraft
+
+  /* Values for correction */
+  double N_correction_;                     // factor for speed correction (s. SA Braun) */
+  double W_correction_;                     // factor for mass flow correction (s. SA Braun, Gl.:3.3) */
+  double T_correction_;                     // factor for thrust correction (s. SA Braun) */
+  double N_shaft_offtake_bleed_correction_;
+  double W_fuel_shaft_offtake_bleed_correction_;
+  double temperature_shaft_offtake_bleed_correction_;
+  bool is_derate_increased_;
+  double N_upper_limit_;
+  double N_lower_limit_;
+  double thrust_correction_bleed_;
+
+  /* Constants for the calculation process */
+  double N1_step_;
+  
+  /* Limits */
+  double WF_to_P3_min_;                     // Minimum relative WF/P3 (Idle)
+  double WF_to_P3_max_TO_;                  // Maximum relative WF/P3 (Over-temperature) maximum take-off rating
+  double WF_to_P3_max_MCT_;                 // Maximum relative WF/P3 (Over-temperature) maximum continuous thrust rating
+  double max_temperature_TO_;               // Maximum allowed temperature of core mass flow at certain station (either TIT (T45) or EGT (T49) for take-off rating [K]
+  double max_temperature_continuous_thrust_; // Maximum allowed temperature of core mass flow at certain station (either TIT (T45) or EGT (T49) for maximum continuous thrust rating [K]
+  double N2_max_;                           // Relative upper limit of high pressure shaft speed (user defined) [-]
+  double max_power_TO_;                           // Maximum shaft power of turboprop engine during take-off (for 5 minutes) [W]
+  double max_power_continuous_thrust_;             // Maximum continuous shaft power of turboprop engine [W]
+  double N_fraction_climb_rating_;
+  double N_fraction_cruise_rating_;
+  double max_relative_bleed;                // [-]
+  double max_shaft_power_extraction_;       // [W]
+  double unscaled_SLST_;                    // Unscaled sea level static thrust of engine from engine data
+  double dry_mass_;                        // The dry weight of the engine [kg]
+
+  /* deck names */
+  std::string thrustdeck; 
+  std::string fuelflow; 
+  std::string core_mass_flow; 
+  std::string overall_mass_flow;
+  std::string sNOx; 
+  std::string fraction_fuelflow_to_p3;
+  std::string temperature_limit_deck;
+  std::string N_limit_deck;
+
+
+  /* internal functions */
+
+  /**
+  * @brief Combustion chamber factor NOx Severity Parameter in engine.xml
+  * @return double [-] NOx factor
+  */
+  [[nodiscard]] auto get_engine_severity_parameter() -> double;
+
+  /**
+  * @brief Gets N1 to converged value
+  * @return double N1 value [-]
+  */
+  [[nodiscard]] auto converge_value(const OperatingPoint &op, double goal_value, double iteration_step, std::string deckvalue) -> double;
+  
+
+  /**
+  * @brief Calculates the value of a symmetric bi-quadratic polynom
+  * @return polynom value
+  */
+  double calculate_polynom(const double coeffs[], const double x, const double y);
+
+  /**
+  * @brief Calculates the correction factor based on the penalty given 
+  * @return correction factor
+  */
+  double correctionNBleed(const double &mach_number, const double &rel_corrected_thrust);
+   /**
+  * @brief Calculates the correction factor based on the penalty given 
+  * @return correction factor
+  */
+  double correctionNPshaft(const double &mach_number, const double &rel_corrected_thrust);
+   /**
+  * @brief Calculates the correction factor based on the penalty given 
+  * @return correction factor
+  */
+  double correctionFuelBleed(const double &mach_number, const double &rel_corrected_thrust);
+   /**
+  * @brief Calculates the correction factor based on the penalty given 
+  * @return correction factor
+  */
+  double correctionFuelPshaft(const double &mach_number, const double &rel_corrected_thrust);
+   /**
+  * @brief Calculates the correction factor based on the penalty given 
+  * @return correction factor
+  */
+  double correctionTemperatureBleed(const double &mach_number, const double &rel_corrected_thrust);
+   /**
+  * @brief Calculates the correction factor based on the penalty given 
+  * @return correction factor
+  */
+  double correctionTemperaturePshaft(const double &mach_number, const double &rel_corrected_thrust);
+
+  void set_lower_N1_limit();
+  void set_upper_N1_limit(const std::string &thrust_rating);
+  void set_upper_N1_limit_temperature(const std::string &thrust_rating);
+  void set_upper_N1_limit_with_overall_fuelflow_pressure_ratio(const std::string &thrust_rating);
+  void set_upper_N1_limit_high_pressure_spool_speed(const std::string &thrust_rating);
+  void set_upper_N1_limit_power(const std::string &thrust_rating);
+  void set_N1_to_rating(const std::string &thrust_rating, const double &derate);
+  void calculate_offtake_correction(const atmosphere &atm, 
+      const double &bleed_air_offtake, 
+      const double &shaft_power_offtake);
+};
+
+#endif // ENGINE_ENGINE_H_
+
+/*    GasTurb Nomenclatur
+--------------------------------------------------------------
+       A           area
+       alt         altitude
+       amb         ambient
+       ax          axial
+       Bld         bleed
+       BPR         bypass ratio
+       corr        corrected
+       C           constant value, coefficient
+       C           compressor
+       CFG         thrust coefficient
+       Cl          cooling
+       d           diameter
+       dH          enthalpy difference
+       dp          design point
+       DC          pressure distortion coefficient
+       DT          temperature distortion coefficient
+       f           factor
+       f           fuel
+       far         fuel-air-ratio
+       F           thrust
+       FN          net thrust
+       FG          gross thrust
+       h           enthalpy
+       H           high-pressure spool
+       HdlBld      handling bleed
+       HPC         high-pressure compressor
+       HPT         high-pressure turbine
+       i           inner
+       IPC         intermediate-pressure compressor (booster)
+       L           low-pressure spool
+       Lk          leakage
+       LPC         low-pressure compressor (fan)
+       LPT         low-pressure turbine
+       M           Mach number
+       N           spool speed
+       NGV         nozzle guide vane (of a turbine)
+       o           outer
+       P           total pressure
+       prop        propulsion
+       PW          shaft power
+       R           gas constant
+       rel         relative
+       RH          reheat (afterburner)
+       RNI         Reynolds number index
+       s           static
+       S NOx       NOx severity parameter (used for NOx emission estimates)
+       SD          shaft, delivered
+       SFC         specific fuel consumption
+       t           (blade) tip
+       t           time
+       T           total temperature
+       TRQ         torque
+       U           blade (tip) velocity
+       V           velocity
+       W           mass flow
+       XN          relative spool speed
+        Omega       Burner loading
+        e34         Burner Efficiency
+        W2Rstd      Corr Engine mass flow
+
+       Stations:
+      -------------------------
+
+       0         ambient
+       1         aircraft-engine interface
+       2         first compressor inlet
+
+
+       21        inner stream fan exit
+       13        outer stream fan exit
+       16        bypass exit
+       161        cold side mixer inlet
+       163        cold side mixing plane
+       18        bypass nozzle throat
+
+
+       24        intermediate compressor exit
+       25        high-pressure compressor inlet
+
+
+       3         last compressor exit, cold side heat exchanger inlet
+       31        burner inlet
+       35        cold side heat exchanger exit
+
+       4         burner exit
+       41        first turbine stator exit = rotor inlet
+
+               two spool engines:
+
+       43        high-pressure turbine exit before addition of cooling air
+       44        high-pressure turbine exit after addition of cooling air
+       45        low-pressure turbine inlet
+       49        low-pressure turbine exit before addition of cooling air
+
+               three spool engines:
+
+       42        high-pressure turbine exit before addition of cooling air
+       43        high-pressure turbine exit after addition of cooling air
+       44        intermediate turbine inlet
+       45        intermediate turbine stator exit
+       46        intermediate turbine exit before addition of cooling air
+       47        intermediate turbine exit after addition of cooling air
+       48        low-pressure turbine inlet
+       49        low-pressure turbine exit before addition of cooling air
+       5         low-pressure turbine exit after addition of cooling air
+       6         jet pipe inlet, reheat entry for turbojet, hot side heat exchanger inlet
+       61        hot side mixer inlet
+       63        hot side mixing plane
+       64        mixed flow, reheat entry
+       7         reheat exit, hot side heat exchanger exit
+       8         nozzle throat
+       9         nozzle exit (convergent-divergent nozzle only)
+
+*/
\ No newline at end of file
diff --git a/engine/include/engine/engine_data.h b/engine/include/engine/engine_data.h
new file mode 100644
index 00000000..79f54e0c
--- /dev/null
+++ b/engine/include/engine/engine_data.h
@@ -0,0 +1,387 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef INCLUDE_ENGINE_ENGINE_DATA_H_
+#define INCLUDE_ENGINE_ENGINE_DATA_H_
+
+/* === Includes === */
+#include "engine_deck.h"
+#include <aixml/node.h>
+#include <array>
+#include <memory>
+#include <string>
+#include <unordered_map>
+
+#ifdef BUILD_ENGINE_SHARED
+#ifdef _WIN32
+#define ENGINEDLLEXPORT __declspec(dllexport)
+#else
+#define ENGINEDLLEXPORT __attribute__((visibility("default")))
+#endif
+#elif defined(IMPORT_ENGINE_SHARED)
+#ifdef _WIN32
+#define ENGINEDLLEXPORT __declspec(dllimport)
+#else
+#define ENGINEDLLEXPORT
+#endif
+#else
+#define ENGINEDLLEXPORT
+#endif
+
+/* === Classes === */
+
+/**
+ * @struct Dimensions
+ * @brief Contains the dimensions of the engine.
+ * @param height [m] The height of the engine.
+ * @param width [m] The width of the engine.
+ * @param length [m] The length of the engine.
+ * @param diameter [m] The diameter of the propulsor (fan/propeller) of the engine.
+ */
+struct Dimensions
+{
+    double height{0.0};   /** [m] The height of the engine */
+    double width{0.0};    /** [m] The width of the engine */
+    double length{0.0};   /** [m] The length of the engine */
+    double diameter{0.0}; /** [m] The diameter of the propulsor (fan/propeller) of the engine */
+};
+
+/**
+ * @enum LTO phases
+ * @brief Contains the four different Landing and Take-Off Cylce (LTO) stages.
+ * @param takeoff // takeoff power/thrust setting for the LTO cycle
+ * @param climb // climb power/thrust setting for the LTO cycle
+ * @param approach // approach power/thrust setting for the LTO cycle
+ * @param taxi // taxi power/thrust setting for the LTO cycle
+ */
+enum class LTOPhases : unsigned int
+{
+  takeoff, 
+  climb,
+  approach,
+  taxi
+};
+
+class ENGINEDLLEXPORT EngineData
+{
+  public:
+    /* === Constructors === */
+    /**
+     * @brief Construct a new Engine Data object
+     * @note This will parse **ALL** the deck values.
+     *
+     * @param engine_xml The XML data of the engine.
+     */
+    explicit EngineData(const std::shared_ptr<node> &engine_xml);
+
+    /**
+     * @brief Construct a new Engine Data object
+     * @note This will not parse the deck values immediately
+     * when `lazy_load_deck` is set to true. Otherwise, all
+     * deck values are parsed immediately.
+     *
+     * @param engine_xml The XML data of the engine.
+     * @param lazy_load_deck If true, the deck values are only parsed when requested.
+     */
+    explicit EngineData(const std::shared_ptr<node> &engine_xml, const bool lazy_load_deck);
+
+    /* === Default Constructors and Assignment Operators */
+    EngineData(const EngineData &other) = default;
+    auto operator=(const EngineData &other) -> EngineData & = default;
+    EngineData(EngineData &&other) = default;
+    auto operator=(EngineData &&other) -> EngineData & = default;
+    ~EngineData() = default;
+
+    /* === Getters === */
+    /**
+     * @brief The design operating point of the engine.
+     *
+     * @return OperatingPoint [-, m, -] The design operating point.
+     */
+    [[nodiscard]] auto design_point() const -> OperatingPoint;
+
+    /**
+     * @brief The design thrust of the engine.
+     *
+     * @return double The design thrust [N].
+     */
+    [[nodiscard]] auto design_thrust() const -> double;
+
+    /**
+     * @brief The dimensions of the engine.
+     * @note The diameter refers to either the fan or the propeller.
+     * This function selects the larger of the two values of the
+     * engine XML assuming that one is set to zero.
+     *
+     * @return Dimensions [m, m, m, m] The dimensions (height, width, length, diameter_propulsor)
+     * of the engine.
+     */
+    [[nodiscard]] auto dimensions() const -> Dimensions;
+
+    /**
+     * @brief The dry mass of the engine.
+     *
+     * @return double [kg] The dry mass.
+     */
+    [[nodiscard]] auto dry_mass() const -> double;
+
+    /**
+     * @brief The maximum continuous thrust (MCT) of the engine
+     * measured at sea level and Mach = 0.
+     *
+     * @return double The Maximum Continuous Thrust [N].
+     */
+    [[nodiscard]] auto MCT() const -> double;
+
+    /**
+     * @brief Get the name of the engine.
+     * @details The name is defined by the filename
+     * of the engine XML file, which also should
+     * correspond to the name of the engine directory.
+     *
+     * @return std::string The name of the engine.
+     */
+    [[nodiscard]] auto name() const -> std::string;
+
+    /**
+     * @brief The static thrust (SLST) of the engine measured
+     * at sea level and Mach = 0.
+     *
+     * @return double The Sea Level Static Thrust [N].
+     */
+    [[nodiscard]] auto SLST() const -> double;
+
+    /**
+     * @brief Minimum fraction of fuel flow and p3 to prevent flame-out
+     *
+     * @return double fuelflow/P3 [-].
+     */
+    [[nodiscard]] auto fuelflow_to_p3_ratio() const -> double;
+
+    /**
+     * @brief Maximum ratio of fuel flow to flow pressure after compression in take-off rating
+     *
+     * @return double ratio fuelflow/P3 [-].
+     */
+    [[nodiscard]] auto fuelflow_to_P3max_ratio_at_MTO() const -> double;
+
+    /**
+     * @brief Maximum ratio of fuel flow to flow pressure after compression in maximum continious rating.
+     *
+     * @return double ratio fuelflow/P3 [-].
+     */
+    [[nodiscard]] auto fuelflow_to_P3max_at_MCT() const -> double;
+
+    /**
+     * @brief Temperature limit at turbine exit (T49 or T5). Calculated by returning UnscaledSLST at TO-rating and ambient conditions at FlatRatingTemp_MTO
+     *
+     * @return double maximum turbine exit temperature during take-off [K].
+     */
+    [[nodiscard]] auto max_temperature_MTO() const -> double;
+
+    /**
+     * @brief Temperature limit at turbine exit (T49 or T5). Calculated by returning Maximum Continuous Thrust at MCT-rating and ambient conditions at FlatRatingTemp_MCT
+     *
+     * @return double maximum turbine exit temperature for continous thrut [K].
+     */
+    [[nodiscard]] auto max_temperature_MCT() const -> double;
+
+    /**
+     * @brief Maximum relative rotational speed for high pressure rotor - Limit in TCDS
+     *
+     * @return double maximum relative rotational speed for high pressure rotor [-].
+     */
+    [[nodiscard]] auto max_N2() const -> double;
+
+    /**
+     * @brief Maximum bleed air extraction of the engine for aircraft onboard systems as a fraction of core mass flow
+     *
+     * @return double maximum relative bleed based on core mass flow [-]
+     */
+    [[nodiscard]] auto max_relative_bleed() const -> double;
+
+    /**
+     * @brief Maximum shaft power extraction of the engine for aircraft onboard systems
+     *
+     * @return double maximum possible shaft power extraction [W].
+     */
+    [[nodiscard]] auto max_shaft_power_extraction() const -> double;
+
+    /**
+     * @brief Fraction of N_Climb/N_MCT; calculated such that N_Climb is about 0.9*N1 at SL, Ma=0, and ISA conditions
+     *
+     * @return double ratio of spool speed in climb to spool spped at MCT [-].
+     */
+    [[nodiscard]] auto fraction_N_to_climbrating() const -> double;
+
+    /**
+     * @brief Fraction of N_Cruise/N_MCT; calculated such that Cruise thrust is met at design point (cf. EngineDesignCondition)
+     *
+     * @return double ratio of spool speed in cruise to spool spped at MCT [-].
+     */
+    [[nodiscard]] auto fraction_N_to_cruiserating() const -> double;
+
+    /**
+     * @brief Unscaled Flat-Rated static thrust of the deck
+     *
+     * @return double unscaled SLST [N].
+     */
+    [[nodiscard]] auto unscaled_SLST() const -> double;
+
+    /**
+     * @brief Fuel flow according to the LTO cycle in the given LTO phase scaled using the scale factor.
+     *
+     * @return double fuelflow [kg/s].
+     */
+    [[nodiscard]] auto LTO_fuel_flow(const LTOPhases LTO_phase) const -> double;
+
+    /**
+     * @brief Emission of unburned hydrocarbons according to the LTO cycle.
+     *
+     * @return double HC [kg/kgFuel].
+     */
+    [[nodiscard]] auto LTO_emission_HC(const LTOPhases LTO_phase) const -> double;
+
+    /**
+     * @brief Emission of carbon monoxide according to the LTO cycle.
+     *
+     * @return double CO [kg/kgFuel].
+     */
+    [[nodiscard]] auto LTO_emission_CO(const LTOPhases LTO_phase) const -> double;
+
+    /**
+     * @brief Emission of nitrogen oxides according to the LTO cycle.
+     *
+     * @return double NOx [kg/kgFuel].
+     */
+    [[nodiscard]] auto LTO_emission_NOx(const LTOPhases LTO_phase) const -> double;
+
+    /**
+     * @brief Emission of smoke number according to the LTO cycle.
+     *
+     * @return double SN [-].
+     */
+    [[nodiscard]] auto LTO_emission_SN(const LTOPhases LTO_phase) const -> double;
+
+    /**
+     * @brief TODO: Tobi/Katrin: add description
+     *
+     * @return TODO: Tobi/Katrin: add description [?].
+     */
+    [[nodiscard]] auto get_NOx_severity_parameter() const -> double;
+
+    /**
+     * @brief Get the value of a deck at the specified operating point.
+     * @note The deck values have to be parsed before this const function is called!
+     *
+     * @param deck_value The name of the deck value.
+     * @param op_point The current operating point of the engine.
+     * @return double The value of the deck at the specified operating point.
+     * The unit of the value is the same as the unit of the deck value.
+     */
+    [[nodiscard]] auto get_deck_value(const std::string &deck_value, const OperatingPoint op_point) const -> double;
+
+    /**
+     * @brief Get the value of a deck at the specified operating point.
+     * @note The deck values are lazy parsed on this non-const version of the function.
+     *
+     * @param deck_value The name of the deck value.
+     * @param op_point The current operating point of the engine.
+     * @return double The value of the deck at the specified operating point.
+     * The unit of the value is the same as the unit of the deck value.
+     */
+    [[nodiscard]] auto get_deck_value(const std::string &deck_value, const OperatingPoint op_point) -> double;
+
+    /**
+     * @brief Get the minimal possible oparting point of the deck value.
+     *
+     * @param deck_value The name of the deck value.
+     * @return OperatingPoint The lowest possible N, Ma & FL for this deck value
+     */
+    [[nodiscard]] auto get_lower_operating_point(const std::string &value_name) -> OperatingPoint;
+
+    /**
+     * @brief Get the maximal possible oparting point of the deck value.
+     *
+     * @param deck_value The name of the deck value.
+     * @return OperatingPoint The highest possible N, Ma & FL for this deck value
+     */
+    [[nodiscard]] auto get_upper_operating_point(const std::string &value_name) -> OperatingPoint;
+
+    
+
+  private:
+    /* === Member functions === */
+    /**
+     * @brief Template function to get a value from the XML file.
+     * The path to the value is extracted from the paths_ map.
+     * @note A default constructed value is returned if the node
+     * was not found.
+     *
+     * @tparam T The value type of the extracted value.
+     * @param map_name The name of the value in the paths_ map.
+     * @return T The extracted value.
+     */
+    template <typename T>
+    [[nodiscard]] auto get_value(const std::string &map_name) const -> T
+    {
+        /* Find the node in the xml data */
+        node *const value = this->xml_->find(this->paths_.at(map_name));
+
+        /* Return the value if the node was found */
+        return value != nullptr ? T{*value} : T{};
+    }
+
+    /**
+     * @brief Extract the unit of a value from the XML file.
+     * The path to the value is extracted from the paths_ map.
+     * @note An empty string is returned if the node unit was not found.
+     *
+     * @param map_name The name of the value in the paths_ map.
+     * @return std::string The extracted unit if existing. Empty string otherwise.
+     */
+    [[nodiscard]] auto get_unit(const std::string &map_name) const -> std::string;
+
+    /**
+     * @brief Parse the deck value provided by a CSV file.
+     *
+     * @param file The path to the CSV file.
+     */
+    void parse_deck(const std::filesystem::path &file);
+
+    /**
+     * @brief Parse the deck values provided by CSV files in
+     * the current engine directory.
+     * @note The CSV files must be named after the deck values.
+     *
+     * @return bool True if the parsing was successful.
+     */
+    auto parse_decks() -> bool;
+
+    /* === Member variables === */
+    std::unordered_map<std::string, DeckValue> deck_values_;
+    std::unordered_map<std::string, std::string> paths_;
+    std::shared_ptr<node> xml_;
+};
+
+#endif // INCLUDE_ENGINE_ENGINE_DATA_H_
+
diff --git a/engine/include/engine/engine_deck.h b/engine/include/engine/engine_deck.h
new file mode 100644
index 00000000..cb82648d
--- /dev/null
+++ b/engine/include/engine/engine_deck.h
@@ -0,0 +1,164 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef ENGINE_ENGINE_DECK_H_
+#define ENGINE_ENGINE_DECK_H_
+
+/* === Includes === */
+#include <boost/multi_array.hpp>
+#include <filesystem>
+#include <string>
+#include <vector>
+
+#ifdef BUILD_ENGINE_SHARED
+#ifdef _WIN32
+#define ENGINEDLLEXPORT __declspec(dllexport)
+#else
+#define ENGINEDLLEXPORT __attribute__((visibility("default")))
+#endif
+#elif defined(IMPORT_ENGINE_SHARED)
+#ifdef _WIN32
+#define ENGINEDLLEXPORT __declspec(dllimport)
+#else
+#define ENGINEDLLEXPORT
+#endif
+#else
+#define ENGINEDLLEXPORT
+#endif
+
+/* === Classes === */
+
+/**
+ * @struct OperatingPoint
+ * @brief Contains all relevant data of the operating point.
+ * @param N [-] The engine speed compared to nominal speed.
+ * @param altitude [m] The flight altitude.
+ * @param Mach [-] The Mach number.
+ */
+struct OperatingPoint
+{
+    double N{0.0};        /** [-] Engine speed compared to nominal speed. */
+    double altitude{0.0}; /** [m] Flight altitude */
+    double Mach{0.0};     /** [-] Mach number */
+};
+
+/**
+ * @struct DeckData
+ * @brief Contains all relevant data of the deck value.
+ * @attention This can be a large data structure! So,
+ * avoid copying it and prefer to pass it by reference.
+ */
+struct DeckData
+{
+    std::string name{"unknown"};            /** The name of the deck */
+    std::vector<double> FL{};               /** [m] The vector of flight levels */
+    std::vector<double> Mach{};             /** [-] The Mach numbers */
+    std::vector<double> N{};                /** [-] The engine speed compared to nominal speed */
+    boost::multi_array<double, 3> values{}; /** The raw data of the deck value */
+
+    /**
+     * @brief Parse the CSV file and return the deck value.
+     *
+     * @param file_name The file name of the CSV file.
+     * @param delimiter The delimiter of the CSV file. Default is ";"
+     * @return DeckData The parsed deck value.
+     * @throws std::runtime_error If the file could not be opened or is not a valid CSV file.
+     */
+    [[nodiscard]] ENGINEDLLEXPORT static auto from_csv(
+        const std::filesystem::path &file_name, char delimiter = ';') -> DeckData;
+};
+
+class ENGINEDLLEXPORT DeckValue
+{
+  public:
+    DeckValue(const DeckData &data) : data_(std::move(data)) { }
+
+    /**
+     * @brief Get the value of the deck at the given operating point.
+     * Performs a linear interpolation of the deck value at the given operating point.
+     *
+     * @param operating_point The operating point of the engine.
+     * @return double The value of the deck at the given operating point.
+     * @throws std::out_of_range If the operating point is outside of the deck value range.
+     */
+    [[nodiscard]] auto get_value_at(const OperatingPoint &operating_point) const -> double;
+
+    /**
+     * @brief Get the minimum deck value for N1, Mach and Altitude
+     *
+     * @return OperatingPoint the minimal possible operating point.
+     */
+    [[nodiscard]] auto lower_boundary() const -> OperatingPoint;
+
+    /**
+     * @brief Get the max deck value for N1, Mach and Altitude
+     *
+     * @return OperatingPoint the maximal possible operating point.
+     */
+    [[nodiscard]] auto upper_boundary() const -> OperatingPoint;
+
+
+  private:
+    /**
+     * @brief Check whether the operating point is within the range
+     * of the underlying deckdata.
+     *
+     * @param operating_point The operating point of the engine.
+     * @return true If the operating point is within a valid range.
+     */
+    [[nodiscard]] auto is_within_range(const OperatingPoint &operating_point) const -> bool;
+
+    /* === Properties === */
+    DeckData data_; /** The deck value data */
+};
+
+///** \brief Class for the description of the engineDeck
+// */
+//class ENGINEDLLEXPORT EngineDeck
+//{
+//  public:
+//    /* Member functions */
+//    //double getVal(double *FL_mom, double *Mach_mom, double *N_mom, const bool &checkValidValues, const bool &changeSpoolSpeed = true) const;
+//    /* Constructor and destructor */
+//    explicit EngineDeck(const std::string &filename);
+//    EngineDeck();
+//
+//    virtual ~EngineDeck();
+//
+//  private:
+//    /* Member functions */
+//    std::vector<std::vector<std::vector<double>>> dtensor(const int &n, const int &m, const int &p);
+//    /* Member variables */
+//    double FL_min;
+//    double FL_max;
+//    double Mach_min;
+//    double Mach_max;
+//    double N_min;
+//    double N_max;
+//    std::vector<std::vector<std::vector<double>>> values;
+//    std::vector<double> FL;
+//    std::vector<double> Mach;
+//    std::vector<double> N;
+//    std::string aName;
+//};
+
+#endif // ENGINE_ENGINE_DECK_H_
diff --git a/engine/resources.rc b/engine/resources.rc
new file mode 100644
index 00000000..25302ae1
--- /dev/null
+++ b/engine/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "engine\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "engine.dll\0"
+            VALUE "ProductName",        "engine\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/engine/src/SI_units.cpp b/engine/src/SI_units.cpp
new file mode 100644
index 00000000..68aec97e
--- /dev/null
+++ b/engine/src/SI_units.cpp
@@ -0,0 +1,129 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "SI_units.h"
+#include <iostream>
+#include <unitConversion/unitConversion.h>
+
+/* === Functions === */
+namespace SI
+{
+    auto force(const double value, const std::string_view unit) -> double
+    {
+        /* Return when unit is already the preferred one */
+        if (unit == "N") {
+            return value;
+        }
+
+        /* Convert to the preferred unit */
+        double factor{1.0};
+        if (unit == "kN") {
+            factor = 1000.0;
+        }
+        else
+        {
+            std::cerr << "Unknown unit '" << unit << "' for force. Assuming [N].\n";
+        }
+        return factor * value;
+    }
+
+    auto length(const double value, const std::string_view unit) -> double
+    {
+        /* Return when unit is already the preferred one */
+        if (unit == "m") {
+            return value;
+        }
+
+        /* Convert to the preferred unit */
+        double factor{1.0};
+        if (unit == "ft") {
+            factor = convertLength(FOOT, METER, 1.0);
+        }
+        else
+        {
+            std::cerr << "Unknown unit '" << unit << "' for length. Assuming [m].\n";
+        }
+        return factor * value;
+    }
+
+    auto mass(const double value, const std::string_view unit) -> double
+    {
+        /* Return when unit is already the preferred one */
+        if (unit == "kg") {
+            return value;
+        }
+
+        /* Convert to the preferred unit */
+        double factor{1.0};
+        if (unit == "lbs") {
+            factor = convertMass(POUND, GRAM, 1) / 1000; // convert to kg
+        }
+        else
+        {
+            std::cerr << "Unknown unit '" << unit << "' for mass. Assuming [kg].\n";
+        }
+        return factor * value;
+    }
+
+    auto temperature(const double value, const std::string_view unit) -> double
+    {
+        /* Return when unit is already the preferred one */
+        if (unit == "K") {
+            return value;
+        }
+
+        /* Convert to the preferred unit */
+        double factor{1.0};
+        if (unit == "C") {
+            factor = convertTemperature(CELCIUS, KELVIN, 1); // convert to K
+        }
+        else if (unit == "F")
+        {
+            factor = convertTemperature(FAHRENHEIT, KELVIN, 1); // convert to K
+        }
+        else
+        {
+            std::cerr << "Unknown unit '" << unit << "' for temperature. Assuming [K].\n";
+        }
+        return factor * value;
+    }
+
+    auto power(const double value, const std::string_view unit) -> double
+    {
+        /* Return when unit is already the preferred one */
+        if (unit == "W") {
+            return value;
+        }
+
+        /* Convert to the preferred unit */
+        double factor{1.0};
+        if (unit == "kW") {
+            factor = 1000; // convert to W
+        }
+        else
+        {
+            std::cerr << "Unknown unit '" << unit << "' for temperature. Assuming [K].\n";
+        }
+        return factor * value;
+    }
+} // namespace SI
+
diff --git a/engine/src/SI_units.h b/engine/src/SI_units.h
new file mode 100644
index 00000000..fd28b29d
--- /dev/null
+++ b/engine/src/SI_units.h
@@ -0,0 +1,92 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef SRC_SI_UNITS_H_
+#define SRC_SI_UNITS_H_
+
+/* === Includes === */
+#include <string_view>
+
+/* === Functions === */
+namespace SI {
+    /**
+     * @brief Convert a force value to the preferred SI unit [N].
+     * Valid input units are:
+     * - [N]
+     * - [kN]
+     * 
+     * @param value The value to convert.
+     * @param unit The unit of the value.
+     * @return double The converted value in the preferred unit.
+     */
+    auto force(const double value, const std::string_view unit) -> double;
+
+    /**
+     * @brief Convert a length value to the preferred SI unit [m].
+     * Valid input units are:
+     * - [m]
+     * - [ft]
+     * 
+     * @param value The value to convert.
+     * @param unit The unit of the value.
+     * @return double The converted value in the preferred unit.
+     */
+    auto length(const double value, const std::string_view unit) -> double;
+
+    /**
+     * @brief Convert a mass value to the preferred SI unit [kg].
+     * Valid input units are:
+     * - [kg]
+     * - [lbs]
+     * 
+     * @param value The value to convert.
+     * @param unit The unit of the value.
+     * @return double The converted value in the preferred unit.
+     */
+    auto mass(const double value, const std::string_view unit) -> double;
+
+    /**
+     * @brief Convert a temperature value to the preferred SI unit [K].
+     * Valid input units are:
+     * - [K]
+     * - [C]
+     * - [F]
+     * @param value The value to convert.
+     * @param unit The unit of the value.
+     * @return double The converted value in the preferred unit.
+     */
+    auto temperature(const double value, const std::string_view unit) -> double;
+
+    /**
+     * @brief Convert a power value to the preferred SI unit [W].
+     * Valid input units are:
+     * - [kW]
+     *
+     * @param value The value to convert.
+     * @param unit The unit of the value.
+     * @return double The converted value in the preferred unit.
+     */
+    auto power(const double value, const std::string_view unit) -> double;
+}; // namespace SI
+
+#endif  // SRC_SI_UNITS_H_
+
diff --git a/engine/src/engine.cpp b/engine/src/engine.cpp
new file mode 100644
index 00000000..c805d8ee
--- /dev/null
+++ b/engine/src/engine.cpp
@@ -0,0 +1,841 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "engine/engine.h"
+#include <aixml/node.h>
+#include <standardFiles/functions.h>
+#include <runtimeInfo/runtimeInfo.h>
+#include <cmath>
+#include "SI_units.h"
+
+/* === Constructors === */
+Engine::Engine(const std::filesystem::path &engine_directory)
+    :
+    engine_data_{
+          aixml::openDocument(
+              engine_directory / (engine_directory.filename().string() + ".xml"))},
+    op_{this->engine_data_.design_point()},
+    enginetype_{"turbofan"},    // TODO(Oli): needs to be read from engine.xml (V3) in the future
+    scale_factor_{1.0},
+    number_of_engines_{1},
+    N_correction_{1.0},
+    W_correction_{1.0},
+    T_correction_{1.0},
+    N_shaft_offtake_bleed_correction_{1.0},
+    W_fuel_shaft_offtake_bleed_correction_{1.0},
+    temperature_shaft_offtake_bleed_correction_{1.0},
+    is_derate_increased_{false},
+    N_upper_limit_{NAN},
+    N_lower_limit_{NAN},
+    thrust_correction_bleed_{1.0},
+    // Constants for the calculation process
+    N1_step_{0.005},
+
+    // Engine Limits
+    WF_to_P3_min_{engine_data_.fuelflow_to_p3_ratio()},
+    WF_to_P3_max_TO_{engine_data_.fuelflow_to_P3max_ratio_at_MTO()},
+    WF_to_P3_max_MCT_{engine_data_.fuelflow_to_P3max_at_MCT()},
+    max_temperature_TO_{engine_data_.max_temperature_MTO()},
+    max_temperature_continuous_thrust_{engine_data_.max_temperature_MCT()},
+    N2_max_{engine_data_.max_N2()},
+    max_power_TO_{0.0},    // TODO(Oli): is only non zero value, if turboprop
+    max_power_continuous_thrust_{0.0},    // TODO(Oli): is only non zero value, if turboprop
+    N_fraction_climb_rating_{engine_data_.fraction_N_to_climbrating()},
+    N_fraction_cruise_rating_{engine_data_.fraction_N_to_cruiserating()},
+    max_relative_bleed{engine_data_.max_relative_bleed()},
+    max_shaft_power_extraction_{engine_data_.max_shaft_power_extraction()},
+    unscaled_SLST_{engine_data_.unscaled_SLST()},
+    dry_mass_{engine_data_.dry_mass()},
+
+    // Engine deck names
+    thrustdeck{engine_data_.name() + "_FN"},            //thrust
+    fuelflow{engine_data_.name()+"_WF"},                //fuel flow
+    core_mass_flow{engine_data_.name()+"_W25"},         //core mass flow
+    overall_mass_flow{engine_data_.name()+"_St2_W"},         //Overall mass flow
+    sNOx{engine_data_.name()+"_sNOx"},                  //severity NOX parameter
+    fraction_fuelflow_to_p3{engine_data_.name()+"_WFqP3"}, // Ratio of fuel flow to P3
+    temperature_limit_deck{engine_data_.name()+"_St5_T"},  //temperature limit
+    //temperature_limit_deck{engine_data_.get_get_temperature_limit_deck_name()},
+    N_limit_deck{engine_data_.name()+"_XN_HPC"}         // rel values of N2
+{
+}
+
+Engine::Engine(const std::filesystem::path &engine_directory, const double scale_factor)
+: Engine{engine_directory}
+{
+    this->scale_factor_ = scale_factor;
+}
+
+// === Getters ===
+auto Engine::get_unscaled_engine() const -> const EngineData &
+{
+    return this->engine_data_;
+}
+
+auto Engine::get_scale_factor() const -> double
+{
+    return this->scale_factor_;
+}
+
+auto Engine::get_engine_dimensions() const -> Dimensions
+{
+    // The dimensions as defined in the XML file
+    auto dimensions_unscaled = this->engine_data_.dimensions();
+    // Scale the dimensions using the thrust scaling.
+    // => The cross-section parameters are
+    return {
+        dimensions_unscaled.height * std::pow(this->scale_factor_, 0.5),
+        dimensions_unscaled.width * std::pow(this->scale_factor_, 0.5),
+        dimensions_unscaled.length * std::pow(this->scale_factor_, 0.4),
+        dimensions_unscaled.diameter * std::pow(this->scale_factor_, 0.5)
+    };
+}
+
+double Engine::get_thrust_lapse(const std::string &thrust_rating, const atmosphere& atm, double mach, double altitude)
+{
+    // Calculate the SLST via the lib and for no penalties
+    this->calculate_N1_with_penalties(0,
+                                      0,
+                                      atm,
+                                      1,
+                                      thrust_rating,
+                                      0,
+                                      0);
+    // Set the base thrust
+    double base_thrust = get_thrust();
+    // Calculate the thrust at the given condition  
+    this->calculate_N1_with_penalties(altitude,
+                                      mach,
+                                      atm,
+                                      1,
+                                      thrust_rating,
+                                      0,
+                                      0);
+    double operating_thrust = get_thrust();
+    // Output is the ratio of the thrusts
+    return operating_thrust/base_thrust;
+}
+
+auto Engine::get_operating_point() -> OperatingPoint
+{
+    this->op_.N *= this->N_correction_ * this->N_shaft_offtake_bleed_correction_;
+    return this->op_;
+}
+
+auto Engine::get_same_engine_type_quantity() -> int
+{
+    return this->number_of_engines_;
+}
+
+// === Setters ===
+void Engine::set_operating_point(const OperatingPoint &op)
+{
+    this->op_ = op;
+}
+
+void Engine::set_same_engine_type_quantity(int16_t same_engine_type_quantity)
+{
+    if (same_engine_type_quantity < 0) {
+        std::cout << "WARNING: ";
+        std::cout << "'" << same_engine_type_quantity << "' number of engines not possible. ";
+        std::cout << "Assuming '+" << same_engine_type_quantity * (-1) << "' number of engines instead." << std::endl;
+        same_engine_type_quantity = same_engine_type_quantity * (-1);
+    }
+    this->number_of_engines_ = same_engine_type_quantity;
+}
+
+void Engine::set_correction_factors(const OperatingPoint &op, const atmosphere& atm)
+{
+    // Calculate correction values for N1, mass flow, and Temperature
+    double temp = atm.getTemperature(this->op_.altitude);
+    double tempISA = atm.getTemperatureISA(this->op_.altitude);
+    double pressure = atm.getPressure(this->op_.altitude);
+    double pressureISA = atm.getPressureISA(this->op_.altitude);
+
+    N_correction_ = sqrt(temp / tempISA);
+    W_correction_ = sqrt(tempISA / temp) * (pressure / pressureISA);
+    T_correction_ = temp / tempISA;
+}
+
+void Engine::calculate_N1_with_penalties(const double& flight_level,
+                                         const double& mach_number,
+                                         const atmosphere& atm,
+                                         const double& derate,
+                                         const std::string& thrust_rating,
+                                         double bleed_air_offtake,
+                                         double shaft_power_offtake)
+{
+    // Set environmental values
+    this->op_.altitude = flight_level;
+    this->op_.Mach = mach_number;
+    shaft_power_offtake /= this->number_of_engines_;
+    bleed_air_offtake /= this->number_of_engines_;
+    this-> set_correction_factors(op_, atm);
+    // Calculate operating limits (Idle N1) w.r.t. operating point
+    this->set_lower_N1_limit();
+    double residualNmom(1.);
+    double itCounter(0.);
+    while (residualNmom > ACCURACY_HIGH) {    // Converge N_mom to 1e-10
+        double currentNmom(this->op_.N);
+        // Calculate operating limits (Max N1) w.r.t. operating point, temperature and overall compression ratio limits
+        // --> Initially without correction of bleed air and shaft power extractions
+        this->set_upper_N1_limit(thrust_rating);
+        // Set current low pressure shaft speed (N_mom) w.r.t Lower-/Upper-Limit and thrust rating
+        this->set_N1_to_rating(thrust_rating, derate);
+        // Calculate corrections for N1 due to bleed & shaft power-offtakes
+        this->calculate_offtake_correction(atm, bleed_air_offtake, shaft_power_offtake);
+        // Calculate operating limits (Max N1) w.r.t. operating point, temperature and overall compression ratio limits
+        // --> Now WITH correction of bleed air and shaft power extractions
+        this->set_upper_N1_limit(thrust_rating);
+        // Set current low pressure shaft speed (N_mom) w.r.t Lower-/Upper-Limit and thrust rating
+        this->set_N1_to_rating(thrust_rating, derate);
+        residualNmom = (fabs(currentNmom - this->op_.N) / currentNmom);
+        if (itCounter > 500) {
+            if (residualNmom > ACCURACY_MEDIUM) {
+                std::stringstream errMsg;
+                errMsg << "Could not find low pressure shaft speed N1 for current rating: ";
+                errMsg << thrust_rating << std::endl;
+                errMsg << "N1(current): " << this->op_.N << "; ";
+                errMsg << "N1(last): " << currentNmom << "; ";
+                errMsg << "N1(upperLimit): " << this->N_upper_limit_;
+                throwError(__FILE__, __func__, __LINE__, errMsg.str());
+            } else {
+                break;
+            }
+        }
+        ++itCounter;
+    }
+    if (is_derate_increased_) {
+        is_derate_increased_ = false;
+        throw 1;
+    }
+}
+
+void Engine::check_offtake_boundaries(const OperatingPoint &op, double bleedAir, double shaftPower)
+{
+    double coreMassFlow{engine_data_.get_deck_value(core_mass_flow, this->op_) * scale_factor_ / this->W_correction_};
+    double relBleed{1.06 * bleedAir / coreMassFlow};
+    if (relBleed > this->get_max_bleed_offtake_at_current_operating_point()) {
+        std::stringstream errMsg;
+        errMsg << "Relative bleed air extraction (" << relBleed << ") too large. ";
+        errMsg << "Max. allowed extraction is " << this->max_relative_bleed << "." << std::endl;
+        errMsg << "Altitude: " << this->op_.altitude << " m; ";
+        errMsg << "Mach: " << this->op_.Mach << "; ";
+        errMsg << "N1: " << this->op_.N;
+        throwError(__FILE__, __func__, __LINE__, errMsg.str());
+    }
+    if (shaftPower > get_max_shaft_power_offtake_engine()) {
+        throwError(__FILE__, __func__, __LINE__, "Shaft power extraction too large!");
+    }
+}
+
+auto Engine::converge_value(const OperatingPoint &op,
+                            double goal_value,
+                            double iteration_step,
+                            std::string deckvalue) -> double
+{
+    // Initialize variables for interpolation
+    const int MAX_ITERATIONS{50};   // Assuming a max iteration count of 50 as value should be reached
+    double delta, x1, x2, y1, y2, y, x_new;
+    bool value_should_increase{false};
+    int iterationcount{0};
+    double step = iteration_step;
+
+    // Helper lambda to fetch thrust or deck value
+    auto get_thrust_or_deck_value = [&]() -> double {
+        return (deckvalue == "_FN") ? get_thrust() :
+            this->engine_data_.get_deck_value(engine_data_.name() + deckvalue, this->op_);
+    };
+
+    // Only go through loop if the delta is there
+    double value_at_op = get_thrust_or_deck_value();
+    delta = std::abs((goal_value-value_at_op)/value_at_op);
+    // Loop to get to a convergence
+    while (delta > ACCURACY_MEDIUM) {
+        x1 = get_thrust_or_deck_value();
+        y1 = op_.N;
+        value_should_increase = (x1 < goal_value);
+        // Initialize variable for iteration to be + or - step
+        y2 = value_should_increase ? (op.N + step) : (op.N - step);
+        // Check that the operating point is within the limits. Operating points must allow goal value
+        op_.N = std::clamp(y2, this->N_lower_limit_, this->N_upper_limit_);
+        // get linear interpolation to be on the point where we expect the value
+        x2 = get_thrust_or_deck_value();
+        // Interpolate
+        y = y1 + ((y2 - y1) / (x2 - x1)) * (goal_value - x1);
+        this->op_.N = y;
+        // check if it is close enough otherwise set the limit for the new interpolation and do it again
+        op_.N = std::clamp(y, this->N_lower_limit_, this->N_upper_limit_);
+        x_new = get_thrust_or_deck_value();
+        // Calculate delta
+        delta = std::abs((x_new-goal_value)/goal_value);
+        // Set new boundaries
+        step /= 2.0;
+        // Handel iteration boundaries
+        if (++iterationcount > MAX_ITERATIONS) {
+            std::cout << "Cannot converge to N1" << std::endl;
+            throw 1;
+        }
+        if (y >= N_upper_limit_) {
+            std::cout << "Reached upper limit: " << N_upper_limit_ << std::endl;
+            op_.N = N_upper_limit_;
+            break;
+        }
+        if (y <= N_lower_limit_) {
+            std::cout << "Reached lower limit: " << N_lower_limit_ << std::endl;
+            op_.N = N_lower_limit_;
+            break;
+        }
+    }
+    return op_.N;
+}
+
+void Engine::calculate_N1_with_thrustlimit(const double& flight_level,
+                                           const double& mach_number,
+                                           const atmosphere& atm,
+                                           const double& derate,
+                                           const std::string& thrust_rating,
+                                           double bleed_air_offtake,
+                                           double shaft_power_offtake,
+                                           double thrust_limit) {
+    // Set engine rating
+    this->calculate_N1_with_penalties(flight_level,
+                                      mach_number,
+                                      atm,
+                                      derate,
+                                      thrust_rating,
+                                      bleed_air_offtake,
+                                      shaft_power_offtake);
+    // Set thrust limit
+    thrust_limit /= this->number_of_engines_;
+    this->calculate_offtake_correction(atm, bleed_air_offtake, shaft_power_offtake);
+
+    // Engine deck names
+    double thrust_at_currentN1_tmp = get_thrust();
+    while (thrust_limit > thrust_at_currentN1_tmp)
+    {
+        this->op_.N += N1_step_;
+        if (this->op_.N > this->N_upper_limit_) {
+            this->op_.N = this->N_upper_limit_;
+            // If upper limit is reached it makes no sense to continue while loop here
+            // Throw error so mission can deal with it. It knows what to do with these numbers
+            double thrust_at_max_N1_tmp = get_thrust();
+            if (thrust_limit > thrust_at_max_N1_tmp) {
+                // std::cout << "Engine unable to deliver the required thrust. Max thrust:" << thrust_at_max_N1_tmp << "N" << std::endl;
+                throw 2;    // Mission knows what to do with that
+                }
+            }
+        thrust_at_currentN1_tmp = get_thrust();
+    }
+
+    while (thrust_limit < thrust_at_currentN1_tmp)
+    {
+        this->op_.N -= N1_step_;
+        if (this->op_.N < this->N_lower_limit_) {
+            this->op_.N = this->N_lower_limit_;
+            // If lower limit is reached it makes no sense to continue while loop here
+            // Throw error so mission can deal with it. It knows what to do with these numbers
+            double thrust_at_min_N1_tmp = get_thrust();    // get the thrust at the lowest possible shaft speed [N]
+            if (thrust_limit < thrust_at_min_N1_tmp) {
+                throw 3;    // Mission knows what to do with that
+            }
+        }
+        thrust_at_currentN1_tmp = get_thrust();
+    }
+    op_.N = this-> converge_value(op_, thrust_limit, N1_step_, "_FN");
+
+        // Calculate corrections for N_mom due to bleed & shaft power-offtakes
+        shaft_power_offtake /= this->number_of_engines_;
+        bleed_air_offtake /= this->number_of_engines_;
+        this->calculate_offtake_correction(atm, bleed_air_offtake, shaft_power_offtake);
+
+    if (is_derate_increased_) {
+        is_derate_increased_ = false;
+        throw 1;
+    }
+}
+
+// === Access deck values ===
+auto Engine::get_thrust_aircraft() -> double
+{
+    // Get the deck value and scale it directly with the thrust scale factor
+    return SI::force(this->engine_data_.get_deck_value(thrustdeck, this->op_), "kN") *
+        this->scale_factor_ *
+        this->number_of_engines_ *
+        thrust_correction_bleed_;
+}
+
+auto Engine::get_thrust() -> double
+{
+    // Get the deck value and scale it directly with the thrust scale factor
+    return SI::force(this->engine_data_.get_deck_value(thrustdeck, this->op_), "kN") *
+        this->scale_factor_; //  * thrust_correction_bleed_;
+}
+
+auto Engine::get_aircraft_fuelflow() -> double
+{
+    // Get the deck value and scale it directly with the thrust scale factor, since TSFC stays constant
+    return this->engine_data_.get_deck_value(fuelflow, this->op_) *
+      this->W_fuel_shaft_offtake_bleed_correction_ *
+      this->scale_factor_;
+}
+
+auto Engine::get_fuelflow() -> double
+{
+    // Get the deck value and scale it directly with the thrust scale factor, since TSFC stays constant
+    return this->engine_data_.get_deck_value(fuelflow, this->op_) *
+      this->W_fuel_shaft_offtake_bleed_correction_ *
+      this->scale_factor_;
+}
+
+auto Engine::get_engine_EGT() -> double
+{
+    return this->engine_data_.get_deck_value("St5_temperature", this->op_) * T_correction_ * temperature_shaft_offtake_bleed_correction_;    // TODO(Tobi): check .csv name
+}
+
+auto Engine::get_engine_EPR() -> double
+{
+    return this->engine_data_.get_deck_value("EPR", this->op_);    // TODO(Tobi): check .csv name;
+}
+
+auto Engine::get_engine_OPR() -> double
+{
+    return this->engine_data_.get_deck_value("OPR", this->op_);    // TODO(Tobi): check .csv name;
+}
+
+auto Engine::get_engine_NOx_emission_index() -> double
+{
+    // Factor 1000 due to GasTurb deck being in g/kg. 
+    // TODO(Tobi): Check .csv name
+    return this->engine_data_.get_deck_value(sNOx, this->op_) * get_engine_severity_parameter() * 1000;
+}
+
+auto Engine::get_LTO_emission_index(const LTOPhases LTO_cycle, const EngineEmissions emission) -> double
+{
+    switch (emission)
+    {
+    case EngineEmissions::HC :
+        return this->engine_data_.LTO_emission_HC(LTO_cycle);
+    case EngineEmissions::CO :
+        return this->engine_data_.LTO_emission_CO(LTO_cycle);
+    case EngineEmissions::NOx :
+        return this->engine_data_.LTO_emission_NOx(LTO_cycle);
+    case EngineEmissions::SN :
+        return this->engine_data_.LTO_emission_SN(LTO_cycle);
+    default:
+        return 0.0;
+    }
+}
+
+auto Engine::get_LTO_fuelflow(const LTOPhases LTO_cycle) -> double
+{
+    // The LTO fuel flow is now scaled with the scale factor according to the scaling of the engine fuel flow
+    return this->engine_data_.LTO_fuel_flow(LTO_cycle) *
+    this->scale_factor_;
+}
+
+auto Engine::get_max_shaft_power_offtake_engine() -> double
+{
+    // the maximal allowed shaft power extraction scales linearly with the scale factor
+    return this->max_shaft_power_extraction_ * scale_factor_;
+}
+
+auto Engine::get_max_bleed_offtake_at_current_operating_point() -> double
+{
+    // the maximal allowed bleed air offtake scales linearly with the thrust_scale_factor
+    return this->max_relative_bleed * engine_data_.get_deck_value(core_mass_flow, this->op_) * scale_factor_;
+}
+
+auto Engine::get_dry_mass() -> double 
+{
+    // get the scaled dry mass of the engine according to Raymer p. 284 
+    return this->dry_mass_ * pow(scale_factor_,1.1); 
+}
+
+auto Engine::get_physical_properties_stage(const StageProperties stage_property,
+      const EngineStage engine_stage) -> double
+      {
+        // convert the input nums into two temporary strings to concatenate them later
+        std::string tmp_string_stage_property{};
+        std::string tmp_string_engine_stage{};
+
+        // convert enums to strings.
+        switch (stage_property)
+        {
+        case StageProperties::FuelToAirRatio: tmp_string_stage_property = "fa"; break;
+        case StageProperties::MachNumber: tmp_string_stage_property = "Mn"; break;
+        case StageProperties::TotalPressure: tmp_string_stage_property = "P"; break;
+        case StageProperties::TotalTemperature: tmp_string_stage_property = "T"; break;
+        case StageProperties::StaticTemperature: tmp_string_stage_property = "Ts"; break;
+        case StageProperties::MassFlow: tmp_string_stage_property = "W"; break;
+        default:
+            std::cout << "Unknown engine stage property." << std::endl;
+            return 0.0;
+        }
+
+        switch (engine_stage)
+        {
+        case EngineStage::St2 : tmp_string_engine_stage = "_St2_"; break;
+        case EngineStage::St3 : tmp_string_engine_stage = "_St3_"; break;
+        case EngineStage::St4 : tmp_string_engine_stage = "_St4_"; break;
+        case EngineStage::St5 : tmp_string_engine_stage = "_St5_"; break;
+        case EngineStage::St13: tmp_string_engine_stage = "_St13_"; break;
+        case EngineStage::St22: tmp_string_engine_stage = "_St22_"; break;
+        case EngineStage::St25: tmp_string_engine_stage = "_St25_"; break;
+        case EngineStage::St45: tmp_string_engine_stage = "_St45_"; break;
+        case EngineStage::St18: tmp_string_engine_stage = "_St18_"; break;
+        case EngineStage::St8 : tmp_string_engine_stage = "_St8_"; break;
+        default:
+            std::cout << "Unknown engine stage." << std::endl;
+            return 0.0;
+        }
+
+        // concatenate the tmp string tho match the .cvs name
+        return engine_data_.get_deck_value(engine_data_.name() + tmp_string_engine_stage + tmp_string_stage_property,
+                                           op_);
+      }
+
+// === PRIVATE FUNCTIONS ===
+auto Engine::get_engine_severity_parameter() -> double
+{
+    return engine_data_.get_NOx_severity_parameter();
+}
+
+auto Engine::get_scaled_SLST() -> double
+{
+    return SI::force(this->unscaled_SLST_, "kN") * this->scale_factor_;
+}
+
+void Engine::set_lower_N1_limit() {
+    // Estimation of ground/flight idle
+    // FADEC sets minimum fuel flow to prevent flame-out (WF/P3)
+    // Set lower N1 limit to minimum required fuel
+    // (first converged N1 in fuel flow deck for current altitude and Mach number)
+    this->N_lower_limit_ = op_.N = engine_data_.get_lower_operating_point(fuelflow).N;
+    // N_lower_limit_ is increased from min value in deck that shows all valid operating points to first valid value
+    while (engine_data_.get_deck_value(fuelflow, this->op_) < 0)
+    {
+        op_.N += N1_step_;
+        this->N_lower_limit_ = op_.N;    // update the N_lower_limit_ variable
+    }
+    while (engine_data_.get_deck_value(thrustdeck, this->op_) < 0)
+    {
+        op_.N += N1_step_; 
+        this->N_lower_limit_ = op_.N; // update the N_lower_limit_ variable
+    }
+    // Initialize check variables
+    // Check flameout limit deck (WFqP3) if flameout danger is true
+    // and ratio of fuelflow to combustion chamber inlet is below limit.
+    // In this case N1 is increased
+    while (this->engine_data_.get_deck_value(fraction_fuelflow_to_p3, this->op_) < this->WF_to_P3_min_) {
+        op_.N += N1_step_;
+        this->N_lower_limit_ = op_.N;    // update N_lower_limit_ variable
+        if (this->N_lower_limit_ > this->N_upper_limit_) {
+            throwError(__FILE__, __func__, __LINE__, "Idle in WFToP3-limit deck not found.");
+        }
+    }
+}
+
+void Engine::set_upper_N1_limit(const std::string &thrust_rating) {
+    // Estimation of upper N1 value
+    // FADEC sets maximum fuel flow to prevent over temperatures as a limit of temperatures, pressures, HP spool speed
+    // Set upper N1 limit to maximum required fuel
+    // (last converged N1 in fuel flow deck for current altitude and Mach number)
+    this->N_upper_limit_ = op_.N = engine_data_.get_upper_operating_point(fuelflow).N;    // Reset upper N1 limit
+    // N_upper_limit_ is decreased from max value in valid operating point deck to first valid value
+    while (engine_data_.get_deck_value(fuelflow, this->op_) < 0)
+    {
+        this->op_.N -= N1_step_;
+        this->N_upper_limit_ = this->op_.N;    // update the N_upper_limit_ variable
+    }
+    // Temperature limit
+    this->set_upper_N1_limit_temperature(thrust_rating);
+    // FuelFlow/Pressure limit
+    this->set_upper_N1_limit_with_overall_fuelflow_pressure_ratio(thrust_rating);
+    // HP Spool speed limit
+    this->set_upper_N1_limit_high_pressure_spool_speed(thrust_rating);
+    // Power limit
+    if (this->enginetype_ == "prop") {
+        this->set_upper_N1_limit_power(thrust_rating);
+    }
+}
+
+void Engine::calculate_offtake_correction(const atmosphere& atm, const double& bleedAir, const double& shaftPower) {
+    // The factors for correction were done according to the CF6 installation manual.
+    // Range of values: Mach: 0-0.95; Relative corrected thirst: 0.2-1
+    // create temporary operating point to feed into the function
+    this->check_offtake_boundaries(op_, bleedAir, shaftPower);
+    double coreMassFlow{engine_data_.get_deck_value(core_mass_flow, this->op_) * scale_factor_ / this->W_correction_}; 
+    double overall_mass_flow_{engine_data_.get_deck_value(overall_mass_flow, this->op_) * scale_factor_ / this->W_correction_};
+    double relBleed{1.06 * bleedAir / coreMassFlow};
+    thrust_correction_bleed_ = 1 - (2 * ( bleedAir / overall_mass_flow_)); // Ray p. 488
+    // Constants and Intermediate Variables
+    const double tempAtAltitude = atm.getTemperature(this->op_.altitude);
+    const double tempISA = atm.getTemperatureISA(0.0);
+    const double pressureAtAltitude = atm.getPressure(this->op_.altitude);
+    const double pressureISA = atm.getPressureISA(0.0);
+
+    // Calculate correction factors
+    // Statistical fit from student thesis.
+    // Paul Pross 2009 "Entwicklung einer Methode zur Dimensionierung von Flugantrieben im Flugzeugvorentwurf"
+    double referenceMaxShaftPower{((0.27 * get_scaled_SLST() / 1000) + 5.0) * 1000};
+    double relCorrectedShaftPower{shaftPower /
+                                  sqrt(tempAtAltitude / tempISA) /
+                                  (pressureAtAltitude / pressureISA) /
+                                  referenceMaxShaftPower};
+    double relCorrectedThrust{std::min(1.0, ((get_thrust()) /
+                                            (pressureAtAltitude / pressureISA)) / get_scaled_SLST())};
+    
+    // Calculate the correction using the adapted bspline
+    N_shaft_offtake_bleed_correction_ = 1.0 -
+      correctionNBleed(this->op_.Mach, relCorrectedThrust) * relBleed -
+      correctionNPshaft(this->op_.Mach, relCorrectedThrust) * relCorrectedShaftPower;
+    N_shaft_offtake_bleed_correction_ = std::max(1.0, N_shaft_offtake_bleed_correction_); // TODO(Tobi): Do we still need htis comment? // Fix to not let it crash when only shaft power is extruded - minimum value possible was 0.9985
+
+    W_fuel_shaft_offtake_bleed_correction_ = 1.0 -
+      correctionFuelBleed(this->op_.Mach, relCorrectedThrust) * relBleed -
+      correctionFuelPshaft(this->op_.Mach, relCorrectedThrust) * relCorrectedShaftPower;
+
+    temperature_shaft_offtake_bleed_correction_ = 1.0 +
+      correctionTemperatureBleed(this->op_.Mach, relCorrectedThrust) * relBleed +
+      correctionTemperaturePshaft(this->op_.Mach, relCorrectedThrust) * relCorrectedShaftPower;
+}
+
+void Engine::set_N1_to_rating(const std::string& thrustRating, const double& derate) {
+    if (derate > 1.0 || derate < 0.1) {
+        std::stringstream errorMessage;
+        errorMessage << "Invalid range!" << std::endl;
+        errorMessage << "Derate factor ";
+        errorMessage << derate << " (0.1 < X < 1.0 is allowed)" << std::endl;
+        errorMessage << "Abort program!" << std::endl;
+        throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+    }
+    if (thrustRating == "takeoff" || thrustRating == "maximum_continuous") {
+        this->op_.N = std::max(this->N_upper_limit_ * derate, this->N_lower_limit_);
+        // std::stringstream errMsg;    // TODO(Oli): this should be a INFO
+        // errMsg << "N_mom (TO/MaxCont): " << this->op_.N << std::endl;
+        // throwError(__FILE__, __func__, __LINE__, errMsg.str());
+        if (this->op_.N > this->N_upper_limit_ * derate) {
+            this->is_derate_increased_ = true;
+        }
+    } else if (thrustRating == "climb") {
+        this->op_.N = std::max(this->N_upper_limit_ * this->N_fraction_climb_rating_ * derate,
+                               this->N_lower_limit_);
+        // std::stringstream errMsg;    // TODO(Oli): this should be a INFO
+        // errMsg << "N_mom (Climb): " << this->op_.N << std::endl;
+        // throwError(__FILE__, __func__, __LINE__, errMsg.str());
+        if (this->op_.N > this->N_upper_limit_ * this->N_fraction_climb_rating_ * derate) {
+            this->is_derate_increased_ = true;
+        }
+    } else if (thrustRating == "cruise") {
+        this->op_.N = std::max(this->N_upper_limit_ * this->N_fraction_cruise_rating_ * derate,
+                               this->N_lower_limit_);
+        // std::stringstream errMsg;    // TODO(Oli): this should be a INFO
+        // errMsg << "N_mom (Cruise): " << this->op_.N << std::endl;
+        // throwError(__FILE__, __func__, __LINE__, errMsg.str());
+        if (this->op_.N > this->N_upper_limit_ * this->N_fraction_cruise_rating_ * derate) {
+            this->is_derate_increased_ = true;
+        }
+    } else if (thrustRating == "idle") {
+        this->op_.N = this->N_lower_limit_;
+        // std::stringstream errMsg;    // TODO(Oli): this should be a INFO
+        // errMsg << "N_mom (Idle): " << this->op_.N << std::endl;
+        // throwError(__FILE__, __func__, __LINE__, errMsg.str());
+        if (derate < 1.0) {
+            this->is_derate_increased_ = true;
+        }
+    } else {
+        std::stringstream errorMessage{};
+        errorMessage << "Rating: " << thrustRating << " not known! Abort program!" << std::endl;
+        throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+    }
+}
+
+void Engine::set_upper_N1_limit_temperature(const std::string &thrust_rating) {
+    // Temperature limit for corrected temperature! flat-rated
+    double TempLimit = (thrust_rating == "takeoff")
+                   ? this->max_temperature_TO_
+                   : this->max_temperature_continuous_thrust_;
+    this->op_.N = this->N_upper_limit_;
+    // N_upper_limit_ is decreased from max value in fuel deck to first valid value
+    while (engine_data_.get_deck_value(temperature_limit_deck, this->op_) *
+           this->T_correction_ *
+           this->temperature_shaft_offtake_bleed_correction_ > TempLimit) {
+        this->op_.N -= N1_step_;
+        this->N_upper_limit_ = this->op_.N;    // update the N_upper_limit_ variable
+        if (this->N_upper_limit_ < N_lower_limit_) {
+            std::stringstream errorMessage{};
+            errorMessage << "Engine N1 speed below idle speed by temp-limit! ";
+            errorMessage << "Impossible operating point." << std::endl;
+            throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+        }
+    }
+}
+
+void Engine::set_upper_N1_limit_with_overall_fuelflow_pressure_ratio(const std::string &thrust_rating) {
+    // FuelFlow/Pressure ratio limit
+    double maximumPressureRatio = (thrust_rating == "takeoff")
+                              ? this->WF_to_P3_max_TO_
+                              : this->WF_to_P3_max_MCT_;
+    this->op_.N = this->N_upper_limit_;
+    // N_upper_limit_ is decreased from max value in fuel deck to first valid value
+    while (engine_data_.get_deck_value(fraction_fuelflow_to_p3, op_) > maximumPressureRatio) {
+        op_.N -= N1_step_;
+        this->N_upper_limit_ = this->op_.N;    // update N_upper_limit_ variable
+        if (this->N_upper_limit_ < this->N_lower_limit_) {
+            std::stringstream errorMessage{};
+            errorMessage << "Engine N1 speed below idle speed by compression-limit! ";
+            errorMessage << "Impossible operating point." << std::endl;
+            throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+        }
+    }
+}
+
+void Engine::set_upper_N1_limit_high_pressure_spool_speed(const std::string &thrust_rating) {
+    this->op_.N = this->N_upper_limit_;
+    // N_upper_limit_ is decreased from max value in fuel deck to first valid value
+    while (engine_data_.get_deck_value(N_limit_deck, this->op_) > this->N2_max_) {
+        this->op_.N -= N1_step_;
+        this->N_upper_limit_ = this->op_.N;    // Update N_upper_limit_ variable
+        if (this->N_lower_limit_ > this->N_upper_limit_) {
+            std::stringstream errorMessage{};
+            errorMessage << "NupperLimit is below NlowerLimit. ";
+            errorMessage << "No valid operation point." << std::endl;
+            throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+        }
+    }
+}
+
+void Engine::set_upper_N1_limit_power(const std::string &thrust_rating) {
+    // Set power limit
+    double powerLimit = (thrust_rating == "takeoff")
+                    ? this->max_power_TO_
+                    : this->max_power_continuous_thrust_;
+    // create temporary operating point to feed into the function
+    op_.N = this->N_upper_limit_;
+    // N_upper_limit_ is decreased from max value in fuel deck to first valid value
+    while (engine_data_.get_deck_value(fuelflow, op_) *
+           this->T_correction_ *
+           this->temperature_shaft_offtake_bleed_correction_ > powerLimit) {
+        op_.N -= N1_step_;
+        this->N_upper_limit_ = op_.N;    // update N_upper_limit_ variable
+        if (this->N_upper_limit_ < N_lower_limit_) {
+            std::stringstream errorMessage{};
+            errorMessage << "Engine N1 speed below idle speed by power-limit! ";
+            errorMessage << "Impossible operating point." << std::endl;
+            throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+        }
+    }
+}
+
+double Engine::calculate_polynom(const double coeffs[], const double x, const double y) {
+    // Calculate the polynomial value using a bi-quadratic symmetric approach
+    const double correction_factor = 
+                         coeffs[0] +
+                         coeffs[1] * x +
+                         coeffs[2] * y +
+                         coeffs[3] * x * x +
+                         coeffs[4] * x * y +
+                         coeffs[5] * y * y +
+                         coeffs[6] * x * x * x +
+                         coeffs[7] * x * x * y +
+                         coeffs[8] * x * y * y +
+                         coeffs[9] * y * y * y +
+                         coeffs[10] * x * x * x * x +
+                         coeffs[11] * x * x * x * y +
+                         coeffs[12] * x * x * y * y +
+                         coeffs[13] * x * y * y * y +
+                         coeffs[14] * y * y * y * y;
+         return correction_factor;
+}
+
+// Correction for shaft power offtake
+double Engine::correctionNPshaft(const double& Mach, const double& relCorrectedThrust) {
+    // Coefficients for the polynomial model based on a regression 
+    double coeffs[] = {
+        -8.31692668889181e-05,	0.000383140099801511,	0.00227319600772912,	-0.000176657994605840,	-0.00471618256285559,
+        -0.00138076435912756,	3.48611110081685e-09,	0.00220819792267324,	0.00267411558816458,	-2.24192601196653e-09,
+        -1.54536538694497e-09,	-1.81953666270857e-09,	-0.00107973284690613,	9.96622650499607e-11,	1.11182396189105e-09
+    };
+
+    return this->calculate_polynom(coeffs, relCorrectedThrust, Mach);
+}
+
+// Fuel correction
+double Engine::correctionFuelPshaft(const double& Mach, const double& relCorrectedThrust) {
+   // Coefficients for the polynomial model based on a regression 
+    double coeffs[] = {
+        0.0309718362077493,	-0.0599702637683423,	-0.0370829165209619,	0.0300515165960587,	0.0603807421071228,
+        0.0144666441444089,	-2.11134251209117e-09,	-0.0266894766231007,	-0.0127903940847991,	2.15927023829018e-09,
+        2.13274413987745e-09, 5.48382591709232e-09,	0.00107304658738337,	1.24437717675390e-09,	-1.04034385729637e-09
+    };
+
+    return this->calculate_polynom(coeffs, relCorrectedThrust, Mach);
+}
+
+// Temperature Correction
+double Engine::correctionTemperaturePshaft(const double& Mach, const double& relCorrectedThrust) {
+    // Coefficients for the polynomial model based on a regression 
+    double coeffs[] = {
+        0.0309718362077493,	-0.0599702637683423, -0.0370829165209619,	0.0300515165960587,	0.0603807421071228,
+   	    0.0144666441444089,	-2.11134251209117e-09,	-0.0266894766231007,	-0.0127903940847991,	2.15927023829018e-09,
+        2.13274413987745e-09,	-5.48382591709232e-09,	0.00107304658738337,	1.24437717675390e-09, -1.04034385729637e-09
+    };
+
+    return this->calculate_polynom(coeffs, relCorrectedThrust, Mach);
+}
+
+// Correction for spool speed due to bleed air
+double Engine::correctionNBleed(const double& Mach, const double& relCorrectedThrust) {
+    // Coefficients for the polynomial model based on a regression 
+    double coeffs[] = {
+        -0.0243533170897740,	0.0216467267229328,	    -0.141694321704478,	-0.0713989405375088, 0.425637647707458,
+        0.0745660202730429,	    5.13941893190816e-09,   -0.617641501133532,	-0.401082822726307,	-3.05944936645471e-09,
+        -2.32232190108554e-09,	-3.74633322233831e-10,	0.626050000913035,	1.06626580328299e-09,	1.65647059080228e-09
+    };
+
+    return this->calculate_polynom(coeffs, relCorrectedThrust, Mach);
+}
+
+// Correction for fuel flow
+double Engine::correctionFuelBleed(const double& Mach, const double& relCorrectedThrust) {
+    // Coefficients for the polynomial model based on a regression 
+    double coeffs[] = {
+       -2.06366228619814, 0.769847774981191, -0.357598736559579, -0.368851502212470, 1.62403220433678,
+       -0.248890043582220, -9.38687038611999e-09, -1.45412806188745, -0.354588867666351, -4.50946724478958e-09,
+       4.74563104811297e-09, 6.12516308073055e-11, 0.579120839303474, 1.11789642943655e-09, 1.89344285483325e-09
+    };
+
+    return this->calculate_polynom(coeffs, relCorrectedThrust, Mach);
+}
+
+// Temperature correction
+double Engine::correctionTemperatureBleed(const double& Mach, const double& relCorrectedThrust) {
+    // Coefficients for the polynomial model based on a regression
+    double coeffs[] = {
+        1.39153085298236, -0.502857981817937, 0.0988635530151397, 0.445617614551110, -0.445485483721538,
+        -0.187193041316873, 1.74339556331964e-09, 0.673617823006167, 0.586640295078888, -8.95656368284025e-10,
+        -6.78274442809335e-10, -2.64486207224415e-09, -0.676418234172954, -2.43471913547178e-09, 1.21904183283406e-09 
+    };
+
+    return this->calculate_polynom(coeffs, relCorrectedThrust, Mach);
+}
\ No newline at end of file
diff --git a/engine/src/engine_data.cpp b/engine/src/engine_data.cpp
new file mode 100644
index 00000000..05d009ed
--- /dev/null
+++ b/engine/src/engine_data.cpp
@@ -0,0 +1,506 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "engine/engine_data.h"
+#include "SI_units.h"
+#include <algorithm>
+#include <exception>
+#include <filesystem>
+#include <iostream>
+#include <ranges>
+
+/* === XML Interface === */
+namespace xmlv2
+{
+    auto create_paths_map() -> std::unordered_map<std::string, std::string>
+    {
+        std::unordered_map<std::string, std::string> paths;
+        paths.emplace("design_altitude", "EngineDesignCondition/flightAltitude");
+        paths.emplace("design_Mach", "EngineDesignCondition/flightMachNumber");
+        paths.emplace("design_thrust", "EngineDesignCondition/thrust");
+        paths.emplace("diameter_fan", "Geometry/jetSpecific/FanDiameter");
+        paths.emplace("diameter_propeller", "Geometry/propSpecific/PropDiameter");
+        paths.emplace("dry_mass", "MassProperties/Dry_mass");
+        paths.emplace("height_engine", "Geometry/OuterDimensions/h_Engine");
+        paths.emplace("length_engine", "Geometry/OuterDimensions/l_Engine");
+        paths.emplace("MCT", "EngineDesignCondition/MCT");
+        paths.emplace("SLST", "EngineDesignCondition/SLST");
+        paths.emplace("width_engine", "Geometry/OuterDimensions/w_Engine");
+        paths.emplace("WF_to_P3_min", "Deck/WFToP3min");
+        paths.emplace("WF_to_P3_max_at_MTO", "Deck/WFToP3max_MTO");
+        paths.emplace("WF_to_P3_max_at_MCT", "Deck/WFToP3max_MCT");
+        paths.emplace("max_temperature_MTO", "Deck/TempMax_MTO");
+        paths.emplace("max_temperature_MCT", "Deck/TempMax_MCT");
+        paths.emplace("max_N2", "Deck/N2max");
+        paths.emplace("max_relative_bleed", "Deck/RelBleedMax");
+        paths.emplace("max_shaft_power_extration", "Deck/ShaftPowerExtractionMax");
+        paths.emplace("fraction_N_to_climbrating", "Deck/NfractionClimbRating");
+        paths.emplace("fraction_N_to_cruiserating", "Deck/NfractionCruiseRating");
+        paths.emplace("unscaled_SLST", "Deck/UnscaledSLST");
+        paths.emplace("LTO_fuel_flow_taxi", "ICAOEngineData/LTOFuelFlow/Taxi");
+        paths.emplace("LTO_fuel_flow_takeoff", "ICAOEngineData/LTOFuelFlow/Takeoff");
+        paths.emplace("LTO_fuel_flow_climbout", "ICAOEngineData/LTOFuelFlow/ClimbOut");
+        paths.emplace("LTO_fuel_flow_approach", "ICAOEngineData/LTOFuelFlow/Approach");
+        paths.emplace("LTO_emissions_HC_taxi", "ICAOEngineData/LTOEmissions/HCFactor/Taxi");
+        paths.emplace("LTO_emissions_HC_takeoff", "ICAOEngineData/LTOEmissions/HCFactor/Takeoff");
+        paths.emplace("LTO_emissions_HC_climbout", "ICAOEngineData/LTOEmissions/HCFactor/ClimbOut");
+        paths.emplace("LTO_emissions_HC_approach", "ICAOEngineData/LTOEmissions/HCFactor/Approach");
+        paths.emplace("LTO_emissions_CO_taxi", "ICAOEngineData/LTOEmissions/COFactor/Taxi");
+        paths.emplace("LTO_emissions_CO_takeoff", "ICAOEngineData/LTOEmissions/COFactor/Takeoff");
+        paths.emplace("LTO_emissions_CO_climbout", "ICAOEngineData/LTOEmissions/COFactor/ClimbOut");
+        paths.emplace("LTO_emissions_CO_approach", "ICAOEngineData/LTOEmissions/COFactor/Approach");
+        paths.emplace("LTO_emissions_NOx_taxi", "ICAOEngineData/LTOEmissions/NOxFactor/Taxi");
+        paths.emplace("LTO_emissions_NOx_takeoff", "ICAOEngineData/LTOEmissions/NOxFactor/Takeoff");
+        paths.emplace("LTO_emissions_NOx_climbout", "ICAOEngineData/LTOEmissions/NOxFactor/ClimbOut");
+        paths.emplace("LTO_emissions_NOx_approach", "ICAOEngineData/LTOEmissions/NOxFactor/Approach");
+        paths.emplace("LTO_emissions_SN_taxi", "ICAOEngineData/LTOEmissions/SNFactor/Taxi");
+        paths.emplace("LTO_emissions_SN_takeoff", "ICAOEngineData/LTOEmissions/SNFactor/Takeoff");
+        paths.emplace("LTO_emissions_SN_climbout", "ICAOEngineData/LTOEmissions/SNFactor/ClimbOut");
+        paths.emplace("LTO_emissions_SN_approach", "ICAOEngineData/LTOEmissions/SNFactor/Approach");
+        paths.emplace("severity_parameter_NOx", "EmissionFactors/NOxFactor");
+        // paths.emplace("severity_parameter_CO2", "EmissionFactors/CO2Factor");
+        // paths.emplace("severity_parameter_H2O", "EmissionFactors/H2OFactor");
+        // paths.emplace("severity_parameter_SO2", "EmissionFactors/SO2Factor");
+        // paths.emplace("severity_parameter_SO4", "EmissionFactors/SO4Factor");
+        // paths.emplace("severity_parameter_Soot", "EmissionFactors/SootFactor");
+        return paths;
+    }
+} // namespace xmlv2
+
+EngineData::EngineData(const std::shared_ptr<node> &engine_xml)
+    : EngineData{engine_xml, false}
+{
+}
+
+EngineData::EngineData(const std::shared_ptr<node> &engine_xml, const bool lazy_load_deck)
+    : xml_{engine_xml}
+{
+    /* Create the map to the node paths */
+    this->paths_ = xmlv2::create_paths_map();
+
+    /* Parse the engine decks if not lazy loaded */
+    if (!lazy_load_deck)
+    {
+        if (!this->parse_decks())
+        {
+            std::cerr << "Error while parsing the engine decks.\n";
+        }
+    }
+}
+
+auto EngineData::design_point() const -> OperatingPoint
+{
+    /* Return the design point */
+    return {
+        1.0,
+        SI::length(this->get_value<double>("design_altitude"), this->get_unit("design_altitude")),
+        this->get_value<double>("design_Mach")};
+}
+
+auto EngineData::design_thrust() const -> double
+{
+    /* Return the value in [N] */
+    const std::string map_name = "design_thrust";
+    return SI::force(this->get_value<double>(map_name), this->get_unit(map_name));
+}
+
+auto EngineData::dimensions() const -> Dimensions
+{
+    /* Read both fan and propeller diameter and decide which is valid */
+    const double diameter_fan = SI::length(this->get_value<double>("diameter_fan"), this->get_unit("diameter_fan"));
+    const double diameter_propeller = SI::length(this->get_value<double>("diameter_propeller"), this->get_unit("diameter_propeller"));
+
+    /* Return the dimensions in [m] */
+    return {
+        SI::length(this->get_value<double>("height_engine"), this->get_unit("height_engine")),
+        SI::length(this->get_value<double>("width_engine"), this->get_unit("width_engine")),
+        SI::length(this->get_value<double>("length_engine"), this->get_unit("length_engine")),
+        std::max({diameter_fan, diameter_propeller})};
+}
+
+auto EngineData::dry_mass() const -> double
+{
+    /* Return the value in [kg] */
+    const std::string map_name = "dry_mass";
+    return SI::mass(this->get_value<double>(map_name), this->get_unit(map_name));
+}
+
+auto EngineData::MCT() const -> double
+{
+    /* Return the value in [N] */
+    const std::string map_name = "MCT";
+    return SI::force(this->get_value<double>(map_name), this->get_unit(map_name));
+}
+
+auto EngineData::name() const -> std::string
+{
+    std::filesystem::path path_xml = this->xml_->getFullPath();
+    return path_xml.stem().string();
+}
+
+auto EngineData::SLST() const -> double
+{
+    /* Return the value in [N] */
+    const std::string map_name = "SLST";
+    return SI::force(this->get_value<double>(map_name), this->get_unit(map_name));
+}
+
+auto EngineData::fuelflow_to_p3_ratio() const -> double
+{
+    /* Return the value in [-] */
+    const std::string map_name = "WF_to_P3_min";
+    return this->get_value<double>(map_name);
+}
+
+auto EngineData::fuelflow_to_P3max_ratio_at_MTO() const -> double
+{
+    /* Return the value in [-] */
+    const std::string map_name = "WF_to_P3_max_at_MTO";
+    return this->get_value<double>(map_name);
+}
+
+auto EngineData::fuelflow_to_P3max_at_MCT() const -> double
+{
+    /* Return the value in [-] */
+    const std::string map_name = "WF_to_P3_max_at_MCT";
+    return this->get_value<double>(map_name);
+}
+
+auto EngineData::max_temperature_MTO() const -> double
+{
+    /* Return the value in [K] */
+    const std::string map_name = "max_temperature_MTO";
+    return SI::temperature(this->get_value<double>(map_name), this->get_unit(map_name));
+}
+
+auto EngineData::max_temperature_MCT() const -> double
+{
+    /* Return the value in [K] */
+    const std::string map_name = "max_temperature_MCT";
+    return SI::temperature(this->get_value<double>(map_name), this->get_unit(map_name));
+}
+
+auto EngineData::max_N2() const -> double
+{
+    /* Return the value in [-] */
+    const std::string map_name = "max_N2";
+    return this->get_value<double>(map_name);
+}
+
+auto EngineData::max_relative_bleed() const -> double
+{
+    /* Return the value in [-] */
+    const std::string map_name = "max_relative_bleed";
+    return this->get_value<double>(map_name);
+}
+
+auto EngineData::max_shaft_power_extraction() const -> double
+{
+    /* Return the value in [W] */
+    const std::string map_name = "max_shaft_power_extration";
+    return SI::power(this->get_value<double>(map_name), this->get_unit(map_name));
+}
+
+auto EngineData::fraction_N_to_climbrating() const -> double
+{
+    /* Return the value in [-] */
+    const std::string map_name = "fraction_N_to_climbrating";
+    return this->get_value<double>(map_name);
+}
+
+auto EngineData::fraction_N_to_cruiserating() const -> double
+{
+    /* Return the value in [-] */
+    const std::string map_name = "fraction_N_to_cruiserating";
+    return this->get_value<double>(map_name);
+}
+
+auto EngineData::unscaled_SLST() const -> double
+{
+    /* Return the value in [-] */
+    const std::string map_name = "unscaled_SLST";
+    return this->get_value<double>(map_name);
+}
+
+auto EngineData::LTO_fuel_flow(const LTOPhases LTO_phase) const -> double
+{
+    /* Return emission index in [kg/s] */
+    std::string map_name{};
+
+    switch (LTO_phase) {
+    case LTOPhases::taxi :
+        map_name = "LTO_fuel_flow_taxi";
+        return this->get_value<double>(map_name);
+    case LTOPhases::takeoff :
+        map_name = "LTO_fuel_flow_takeoff";
+        return this->get_value<double>(map_name);
+    case LTOPhases::climb :
+        map_name = "LTO_fuel_flow_climbout";
+        return this->get_value<double>(map_name);
+    case LTOPhases::approach :
+        map_name = "LTO_fuel_flow_approach";
+        return this->get_value<double>(map_name);
+    default:
+        std::cout << "Unknown LTO phase." << std::endl;
+        return 0.0;
+    }
+}
+
+auto EngineData::LTO_emission_HC(const LTOPhases LTO_phase) const -> double
+{
+    /* Return value in [kg/kgFuel] */
+    std::string map_name{};
+
+    switch (LTO_phase) {
+    case LTOPhases::taxi :
+        map_name = "LTO_emissions_HC_taxi";
+        return this->get_value<double>(map_name);
+    case LTOPhases::takeoff :
+        map_name = "LTO_emissions_HC_takeoff";
+        return this->get_value<double>(map_name);
+    case LTOPhases::climb :
+        map_name = "LTO_emissions_HC_climbout";
+        return this->get_value<double>(map_name);
+    case LTOPhases::approach :
+        map_name = "LTO_emissions_HC_approach";
+        return this->get_value<double>(map_name);
+    default:
+        std::cout << "Unknown LTO phase." << std::endl;
+        return 0.0;
+    }
+}
+
+auto EngineData::LTO_emission_CO(const LTOPhases LTO_phase) const -> double
+{
+    /* Return value in [kg/kgFuel] */
+    std::string map_name{};
+
+    switch (LTO_phase) {
+    case LTOPhases::taxi :
+        map_name = "LTO_emissions_CO_taxi";
+        return this->get_value<double>(map_name);
+    case LTOPhases::takeoff :
+        map_name = "LTO_emissions_CO_takeoff";
+        return this->get_value<double>(map_name);
+    case LTOPhases::climb :
+        map_name = "LTO_emissions_CO_climbout";
+        return this->get_value<double>(map_name);
+    case LTOPhases::approach :
+        map_name = "LTO_emissions_CO_approach";
+        return this->get_value<double>(map_name);
+    default:
+        std::cout << "Unknown LTO phase." << std::endl;
+        return 0.0;
+    }
+}
+
+auto EngineData::LTO_emission_NOx(const LTOPhases LTO_phase) const -> double
+{
+    /* Return value in [kg/kgFuel] */
+    std::string map_name{};
+
+    switch (LTO_phase) {
+    case LTOPhases::taxi :
+        map_name = "LTO_emissions_NOx_taxi";
+        return this->get_value<double>(map_name);
+    case LTOPhases::takeoff :
+        map_name = "LTO_emissions_NOx_takeoff";
+        return this->get_value<double>(map_name);
+    case LTOPhases::climb :
+        map_name = "LTO_emissions_NOx_climbout";
+        return this->get_value<double>(map_name);
+    case LTOPhases::approach :
+        map_name = "LTO_emissions_NOx_approach";
+        return this->get_value<double>(map_name);
+    default:
+        std::cout << "Unknown LTO phase." << std::endl;
+        return 0.0;
+    }
+}
+
+auto EngineData::LTO_emission_SN(const LTOPhases LTO_phase) const -> double
+{
+    /* Return value in [kg/kgFuel] */
+    std::string map_name{};
+
+    switch (LTO_phase) {
+    case LTOPhases::taxi :
+        map_name = "LTO_emissions_SN_taxi";
+        return this->get_value<double>(map_name);
+    case LTOPhases::takeoff :
+        map_name = "LTO_emissions_SN_takeoff";
+        return this->get_value<double>(map_name);
+    case LTOPhases::climb :
+        map_name = "LTO_emissions_SN_climbout";
+        return this->get_value<double>(map_name);
+    case LTOPhases::approach :
+        map_name = "LTO_emissions_SN_approach";
+        return this->get_value<double>(map_name);
+    default:
+        std::cout << "Unknown LTO phase." << std::endl;
+        return 0.0;
+    }
+}
+
+auto EngineData::get_NOx_severity_parameter() const -> double
+{
+    const std::string map_name = "severity_parameter_NOx";
+    return this->get_value<double>(map_name);
+}
+
+auto EngineData::get_unit(const std::string &map_name) const -> std::string
+{
+    /* Find the node in the xml data */
+    node *const value = this->xml_->find(this->paths_.at(map_name));
+
+    /* Nullptr check */
+    if (value == nullptr)
+    {
+        return {};
+    }
+
+    /* Find the unit */
+    std::string unit{};
+    if (value->hasAttrib("Unit"))
+    {
+        /* XML v2 format */
+        unit = value->getStringAttrib("Unit");
+    }
+    else if (value->find("unit") != nullptr)
+    {
+        /* XML v3 format */
+        unit = static_cast<std::string>(value->at("unit"));
+    }
+
+    /* Return the value if the node was found */
+    return unit;
+}
+
+auto EngineData::get_deck_value(const std::string &value_name, const OperatingPoint op_point) const -> double
+{
+    /* Check whether the value is provided by the engine deck */
+    if (!this->deck_values_.contains(value_name))
+    {
+        throw std::out_of_range(
+            "The specified deck value '" + value_name + "' is not available.\n"
+                                                        "You called the 'const' version of this function, which cannot lazy load the deck values.\n"
+                                                        "So either the deck value was not parsed at construction or the deck value does not exist.");
+    }
+
+    /* Get the deck value */
+    return this->deck_values_.at(value_name).get_value_at(op_point);
+}
+
+auto EngineData::get_deck_value(const std::string &value_name, const OperatingPoint op_point) -> double
+{
+    /* Check whether the value has to be lazy loaded */
+    if (!this->deck_values_.contains(value_name))
+    {
+        /* Get the current directory where the engine xml is read from */
+        std::filesystem::path path_xml = this->xml_->name;
+        try
+        {
+            /* Parse the deck */
+            this->parse_deck(path_xml.parent_path() / (value_name + ".csv"));
+        }
+        catch (std::exception &e)
+        {
+            std::cerr << "Error while parsing the engine deck: " << e.what() << '\n';
+        }
+    }
+
+    /* Get the deck value */
+    return this->deck_values_.at(value_name).get_value_at(op_point);
+}
+
+auto EngineData::get_lower_operating_point(const std::string &value_name) -> OperatingPoint
+{
+     /* Check whether the value is provided by the engine deck */
+    if (!this->deck_values_.contains(value_name))
+    {
+        throw std::out_of_range(
+            "The specified deck value '" + value_name + "' in '"+ __func__ + "' is not available.\n");
+
+        // std::stringstream errMsg;
+        // errMsg << "Hello test Error." << std::endl;
+        // throwError(__FILE__, __func__, __LINE__, errMsg.str());
+    }
+
+    /* Get the deck value */
+    return this->deck_values_.at(value_name).lower_boundary();
+}
+
+auto EngineData::get_upper_operating_point(const std::string &value_name) -> OperatingPoint
+{
+     /* Check whether the value is provided by the engine deck */
+    if (!this->deck_values_.contains(value_name))
+    {
+        throw std::out_of_range(
+            "The specified deck value '" + value_name + "' in '"+ __func__ + "' is not available.\n");
+
+        // std::stringstream errMsg;
+        // errMsg << "Hello test Error." << std::endl;
+        // throwError(__FILE__, __func__, __LINE__, errMsg.str());
+    }
+
+    /* Get the deck value */
+    return this->deck_values_.at(value_name).upper_boundary();
+}
+
+void EngineData::parse_deck(const std::filesystem::path &file)
+{
+    /* Add the deck to the map */
+    this->deck_values_.emplace(file.stem().string(), DeckValue{DeckData::from_csv(file)});
+}
+
+auto EngineData::parse_decks() -> bool
+{
+    /* The return flag */
+    bool success{false};
+
+    /* Get the current directory where the engine xml is read from */
+    std::filesystem::path path_xml = this->xml_->name;
+    path_xml = path_xml.parent_path().make_preferred();
+    if (std::filesystem::exists(path_xml))
+        path_xml = std::filesystem::absolute(path_xml);
+    else
+        path_xml = std::filesystem::current_path();
+
+    try
+    {
+        /* Iterate over all CSV files in the directory */
+        std::ranges::for_each((std::filesystem::directory_iterator{path_xml} |
+                               std::views::filter([](const auto &entry)
+                                                  { return entry.path().extension() == ".csv"; })),
+                              [this](const auto &entry)
+                              { this->parse_deck(entry.path()); });
+
+        /* This was successful */
+        success = true;
+    }
+    catch (std::exception &e)
+    {
+        std::cerr << "Error while parsing the engine decks: " << e.what() << '\n';
+    }
+
+    return success;
+}
diff --git a/engine/src/engine_deck.cpp b/engine/src/engine_deck.cpp
new file mode 100644
index 00000000..6a2042d1
--- /dev/null
+++ b/engine/src/engine_deck.cpp
@@ -0,0 +1,556 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "engine/engine_deck.h"
+#include <algorithm>
+#include <boost/multi_array.hpp>
+#include <cmath>
+#include <ranges>
+#include <runtimeInfo/runtimeInfo.h>
+#include <standardFiles/functions.h>
+#include <unitConversion/constants.h>
+
+/* === Functions === */
+auto DeckValue::is_within_range(const OperatingPoint &operating_point) const -> bool
+{
+    /* Check the three components */
+    const bool N_within_range = operating_point.N >= data_.N.back() && operating_point.N <= data_.N.front();
+    const bool Mach_within_range = operating_point.Mach >= data_.Mach.front() && operating_point.Mach <= data_.Mach.back();
+    const bool FL_within_range = operating_point.altitude >= data_.FL.front() && operating_point.altitude <= data_.FL.back();
+
+    /* Return the result */
+    return (N_within_range && Mach_within_range && FL_within_range);
+}
+
+auto DeckValue::get_value_at(const OperatingPoint &operating_point) const -> double
+{
+    /* Check whether input is within the range of the deck value */
+    if (!this->is_within_range(operating_point))
+    {
+        throw std::out_of_range("The operating point is out of range.");
+    }
+
+    /* Get the iterators of the data closest to the given operating point */
+    const auto N_bound = std::ranges::lower_bound(data_.N, operating_point.N, std::greater{}); // The N values are in reverse order
+    const auto N1 = N_bound == data_.N.cbegin() ? N_bound + 1 : N_bound;
+    const auto N0 = N1 - 1;
+    const auto Mach_bound = std::ranges::lower_bound(data_.Mach, operating_point.Mach);
+    const auto Mach1 = Mach_bound == data_.Mach.cbegin() ? Mach_bound + 1 : Mach_bound;
+    const auto Mach0 = Mach1 - 1;
+    const auto FL_bound = std::ranges::lower_bound(data_.FL, operating_point.altitude);
+    const auto FL1 = FL_bound == data_.FL.cbegin() ? FL_bound + 1 : FL_bound;
+    const auto FL0 = FL1 - 1;
+
+    /* Get the indices of the data in the value array */
+    const auto index_N0 = std::distance(data_.N.cbegin(), N0);
+    const auto index_N1 = index_N0 + 1;
+    const auto index_Mach0 = std::distance(data_.Mach.cbegin(), Mach0);
+    const auto index_Mach1 = index_Mach0 + 1;
+    const auto index_FL0 = std::distance(data_.FL.cbegin(), FL0);
+    const auto index_FL1 = index_FL0 + 1;
+
+    /* Get the interpolation factors */
+    const auto factor_N = (operating_point.N - *N0) / (*N1 - *N0);
+    const auto factor_Mach = (operating_point.Mach - *Mach0) / (*Mach1 - *Mach0);
+    const auto factor_FL = (operating_point.altitude - *FL0) / (*FL1 - *FL0);
+
+    /* Get the corner values for the interpolation from the value data
+     * => The index_range is a half-open range, meaning the last index
+     * is not included in the result, therefore the range end is n+1.
+     */
+    using range = boost::multi_array_types::index_range;
+    const auto boundary_indices =
+        boost::indices[range(index_N0, index_N1 + 1)]
+                      [range(index_FL0, index_FL1 + 1)]
+                      [range(index_Mach0, index_Mach1 + 1)];
+    const auto corner_points = data_.values[boundary_indices];
+
+    /* === Trilinear interpolation === */
+    /* Interpolate the N dimension */
+    boost::multi_array<double, 2> N_interpolated(boost::extents[2][2]);
+    for (std::size_t i = 0; i < 2; ++i)
+    {
+        for (std::size_t j = 0; j < 2; ++j)
+        {
+            N_interpolated[i][j] = corner_points[0][i][j] * (1 - factor_N) + corner_points[1][i][j] * factor_N;
+        }
+    }
+
+    /* Interpolate the FL dimension */
+    boost::multi_array<double, 1> FL_interpolated(boost::extents[2]);
+    for (std::size_t i = 0; i < 2; ++i)
+    {
+        FL_interpolated[i] = N_interpolated[0][i] * (1 - factor_FL) + N_interpolated[1][i] * factor_FL;
+    }
+
+    /* Interpolate the Mach dimension */
+    const auto value = FL_interpolated[0] * (1 - factor_Mach) + FL_interpolated[1] * factor_Mach;
+
+    /* Return the result */
+    return value;
+}
+
+auto DeckValue::lower_boundary() const -> OperatingPoint
+{
+    OperatingPoint minimal_op{};
+
+    minimal_op.N = data_.N.back();
+    minimal_op.Mach = data_.Mach.front();
+    minimal_op.altitude = data_.FL.front();
+
+    return minimal_op;
+}
+
+auto DeckValue::upper_boundary() const -> OperatingPoint
+{
+    OperatingPoint maximal_op{};
+
+    maximal_op.N = data_.N.front();
+    maximal_op.Mach = data_.Mach.back();
+    maximal_op.altitude = data_.FL.back();
+
+    return maximal_op;
+}
+
+//EngineDeck::EngineDeck(const std::string &filename)
+//    : aName(filename)
+//{
+//    // myRuntimeInfo->debug << "Deck: "<< aName << std::endl;
+//    /** Engine Performance Deck anlegen **/
+//    std::string buffer;
+//    std::ifstream is(aName.c_str());
+//    if (!is)
+//    {
+//        myRuntimeInfo->debug << "Could not find deck: " << filename << std::endl;
+//        *this = EngineDeck();
+//    }
+//    else
+//    {
+//        std::string row;
+//        std::string delim = ";";
+//        int i(0);
+//        int j(0);
+//        int k(0);
+//        int n(0);
+//        int m(0);
+//        int p(0);
+//        while (getline(is, row))
+//        {
+//            std::string::size_type lastPos = row.find_first_not_of(delim, 0); // Skip delimiters at beginning.
+//            std::string::size_type pos = row.find_first_of(delim, lastPos);   // Find first "non-delimiter".
+//            while (std::string::npos != pos || std::string::npos != lastPos)
+//            {
+//                buffer = row.substr(lastPos, pos - lastPos);
+//                if (isalpha(buffer.c_str()[0]))
+//                {
+//                    buffer = "0"; // Ungueltige Werte mit Nullen besetzen
+//                }
+//                if (j == 0 && atof(buffer.c_str()) < 12 && atof(buffer.c_str()) > 0)
+//                {
+//                    N.push_back(atof(buffer.c_str()));
+//                    k++; // Tabellenzaehler hochsetzen
+//                }
+//                if (i == 0)
+//                {
+//                    if (j > 0)
+//                    {
+//                        Mach.push_back(atof(buffer.c_str()));
+//                    }
+//                }
+//                else
+//                {
+//                    if (j == 0 && k == 1)
+//                    {
+//                        FL.push_back(atof(buffer.c_str()));
+//                    }
+//                }
+//                lastPos = row.find_first_not_of(delim, pos);
+//                pos = row.find_first_of(delim, lastPos);
+//                j++; // Spalte weiterzaehlen
+//            }
+//            i++;   // Zeile weiterzaehlen
+//            j = 0; // Zaehler an Spaltenanfang
+//        }
+//        /** Maximal- und Minimalwerte speichern **/
+//        FL_min = *min_element(FL.begin(), FL.end());
+//        FL_max = *max_element(FL.begin(), FL.end());
+//        Mach_min = *min_element(Mach.begin(), Mach.end());
+//        Mach_max = *max_element(Mach.begin(), Mach.end());
+//        N_min = *min_element(N.begin(), N.end());
+//        N_max = *max_element(N.begin(), N.end());
+//        /** Nun die eigentlichen Werte abholen **/
+//        n = FL.size();
+//        m = Mach.size();
+//        p = N.size();
+//        //        myRuntimeInfo->debug << n <<" x "<<m<<" x "<<p<< std::endl;
+//        values = dtensor(n, m, p);
+//        is.clear();
+//        is.seekg(std::ios::beg);
+//        is.setf(std::ios::skipws);
+//        is.precision(10);
+//        i = 0;
+//        j = 0;
+//        k = 0;
+//        while (getline(is, row))
+//        {
+//            if (i == n + 1)
+//            {
+//                i = 0;
+//                k++;
+//            }
+//            if (k == p)
+//                break;
+//            std::string::size_type delimPos1(0);                                    // Zeiger an der Anfang.
+//            std::string::size_type delimPos2 = row.find_first_of(delim, delimPos1); // Find first "Delimiter".
+//            while (std::string::npos != delimPos1 && std::string::npos != delimPos2)
+//            {
+//                buffer = row.substr(delimPos1, delimPos2 - delimPos1);
+//                if (isalpha(buffer.c_str()[0]))
+//                {
+//                    buffer = "0"; // Ungueltige Werte mit Nullen besetzen
+//                }
+//                if (i > 0 && j > 0)
+//                {
+//                    values[i - 1][j - 1][k] = atof(buffer.c_str());
+//                }
+//                delimPos1 = row.find_first_not_of(delim, delimPos2);
+//                delimPos2 = row.find_first_of(delim, delimPos1);
+//                j++; // Spalte weiterzaehlen
+//            }
+//            i++;   // Zeile weiterzaehlen
+//            j = 0; // Zaehler an Spaltenanfang
+//        }
+//    }
+//    is.close();
+//    // cout << "check" << std::endl;
+//}
+//
+//EngineDeck::EngineDeck() : FL_min(0),
+//                           FL_max(0),
+//                           Mach_min(0),
+//                           Mach_max(0),
+//                           N_min(0),
+//                           N_max(0),
+//                           aName("")
+//{
+//    values = dtensor(0, 0, 0);
+//}
+//
+//EngineDeck::~EngineDeck()
+//{
+//}
+//
+//double EngineDeck::getVal(double *FL_mom, double *Mach_mom, double *N_mom, const bool &checkValidValues, const bool &changeSpoolSpeed) const
+//{
+//    if (aName == "")
+//        return NAN;
+//    /* Interpolation im Raume */
+//    int pos[3][2] = {{0}};               // Stellen fuer das Interpolieren
+//    double hebel[3] = {0};               // Interpolationshebel
+//    std::vector<double> VTemp;           // std::vector of deltas between all values in deck file and passed values
+//    VTemp.reserve(1000);                 // minimize reallocations of the std::vector to save time
+//    std::vector<double>::iterator itMin; // iterator pointing to the smallest delta
+//    size_t foundPos(0);                  // position of the smallest delta at std::vector
+//    // if passed values are higher/lower than available values in deck file, take the maximum/minimum values
+//    if (*FL_mom < *min_element(this->FL.begin(), this->FL.end()))
+//        *FL_mom = *min_element(this->FL.begin(), this->FL.end());
+//    if (*FL_mom > *max_element(this->FL.begin(), this->FL.end()))
+//        *FL_mom = *max_element(this->FL.begin(), this->FL.end());
+//    if (*Mach_mom < *min_element(this->Mach.begin(), this->Mach.end()))
+//        *Mach_mom = *min_element(this->Mach.begin(), this->Mach.end());
+//    if (*Mach_mom > *max_element(this->Mach.begin(), this->Mach.end()))
+//        *Mach_mom = *max_element(this->Mach.begin(), this->Mach.end());
+//    if (std::isnan(*N_mom) || *N_mom < *min_element(this->N.begin(), N.end()))
+//        *N_mom = *min_element(this->N.begin(), this->N.end());
+//    if (*N_mom > *max_element(this->N.begin(), N.end()))
+//        *N_mom = *max_element(this->N.begin(), this->N.end());
+//    /** FL Interpolationsstellen **/
+//    for (unsigned int i(0); i < this->FL.size(); i++)
+//        VTemp.push_back(fabs(this->FL.at(i) - *FL_mom)); // push back deltas into Vtemp
+//    itMin = min_element(VTemp.begin(), VTemp.end());     // find smallest delta
+//    foundPos = static_cast<size_t>(itMin - VTemp.begin());
+//    // cout<<"Pos: " << foundPos << std::endl;
+//    if (foundPos == 0)
+//    { // first position chosen
+//        pos[0][0] = foundPos;
+//        pos[0][1] = foundPos + 1;
+//    }
+//    else if (foundPos < this->FL.size() - 1 && inRange(this->FL.at(foundPos), this->FL.at(foundPos + 1), *FL_mom))
+//    {
+//        pos[0][0] = foundPos;
+//        pos[0][1] = foundPos + 1;
+//    }
+//    else
+//    { // no bigger data available or delta smaller than the closest value
+//        pos[0][0] = foundPos - 1;
+//        pos[0][1] = foundPos;
+//    }
+//    VTemp.clear();
+//    /** Mach Interpolationsstellen **/
+//    for (unsigned int i(0); i < this->Mach.size(); i++)
+//        VTemp.push_back(fabs(this->Mach.at(i) - *Mach_mom));
+//    itMin = min_element(VTemp.begin(), VTemp.end());
+//    foundPos = static_cast<size_t>(itMin - VTemp.begin());
+//    // cout<<"Pos: " << foundPos << std::endl;
+//    if (foundPos == 0)
+//    {
+//        pos[1][0] = foundPos;
+//        pos[1][1] = foundPos + 1;
+//    }
+//    else if (foundPos < this->Mach.size() - 1 && inRange(this->Mach.at(foundPos), this->Mach.at(foundPos + 1), *Mach_mom))
+//    {
+//        pos[1][0] = foundPos;
+//        pos[1][1] = foundPos + 1;
+//    }
+//    else
+//    {
+//        pos[1][0] = foundPos - 1;
+//        pos[1][1] = foundPos;
+//    }
+//    VTemp.clear();
+//    /** Schalter fuer Sonderfaelle **/
+//    bool interpolSucceded(false);
+//    bool extrapolate(false);
+//    bool changeInterpolatePos(false);
+//    // bool repaired(false);
+//    int tries(0);
+//    double val(0);
+//    /** Interpolation des Wertes aus Deck **/
+//    do
+//    {
+//        /** N Interpolationsstellen **/
+//        VTemp.clear();
+//        for (unsigned int i(0); i < this->N.size(); i++)
+//            VTemp.push_back(fabs(this->N.at(i) - *N_mom)); //
+//        itMin = min_element(VTemp.begin(), VTemp.end());
+//        foundPos = static_cast<size_t>(itMin - VTemp.begin());
+//        if (changeSpoolSpeed && (extrapolate || changeInterpolatePos))
+//        {
+//            // if interpolation or extrapolation needed and most critical value=-9999, then increase LPC in order to find a more stable engine region
+//            bool validFound = false;
+//            bool highestSpoolSpeedReached = false;
+//            bool lowestSpoolSpeedReached = false;
+//            unsigned int it = 0;
+//            do
+//            {
+//                pos[2][0] = foundPos;
+//                pos[2][1] = foundPos;
+//                if (this->values[pos[0][0]][pos[1][1]][foundPos] != -9999 && this->values[pos[0][0]][pos[1][0]][foundPos] != -9999 && this->values[pos[0][1]][pos[1][1]][foundPos] != -9999 && this->values[pos[0][1]][pos[1][0]][foundPos] != -9999)
+//                { // most critical position. Why? LPC small, high Mach number and low altitude
+//                    validFound = true;
+//                }
+//                else
+//                {
+//                    if (foundPos == 0)
+//                    {
+//                        highestSpoolSpeedReached = true;
+//                    }
+//                    if (foundPos == this->N.size() - 1)
+//                    {
+//                        lowestSpoolSpeedReached = true;
+//                    }
+//                    if (highestSpoolSpeedReached == false)
+//                    {
+//                        foundPos--; // increase LPC speed in order to find more stable engine data
+//                    }
+//                    else if (lowestSpoolSpeedReached == false)
+//                    {
+//                        foundPos++; // decrease spool speed in order to find more stable engine data (low altitudes, high Mach number)
+//                    }
+//                    else
+//                    {
+//                        std::stringstream errorMessage;
+//                        errorMessage << "No valid values found in EngineDeck::getVal for: " << std::endl;
+//                        errorMessage << "*FL_mom: " << *FL_mom << std::endl;
+//                        errorMessage << "*Mach_mom: " << *Mach_mom << std::endl;
+//                        errorMessage << "*N_mom: " << *N_mom << std::endl;
+//                        errorMessage << "Abort program." << std::endl;
+//                        throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+//                    }
+//                    it++;
+//                }
+//            } while (!validFound && (foundPos > 1) && ((this->N.at(foundPos) - *N_mom) < 0.2) && it < this->N.size()); // maximum allowable LPC speed 20%
+//            *N_mom = this->N.at(foundPos);
+//        }
+//        else if (extrapolate || changeInterpolatePos)
+//        {
+//            pos[2][0] = foundPos - 1;
+//            pos[2][1] = foundPos;
+//        }
+//        /*else if (changeInterpolatePos)
+//        {
+//            pos[2][0] = foundPos;
+//            pos[2][1] = foundPos+1;//
+//        }*/
+//        // foundPos+1; changed this because at lower LPC speeds the possibility to find valid values is lower
+//        else
+//        { // different to altitude and Mach number because N is sorted descendent
+//            if (foundPos == 0)
+//            {
+//                pos[2][0] = foundPos + 1;
+//                pos[2][1] = foundPos;
+//            }
+//            else if (foundPos < this->N.size() - 1 &&
+//                     inRange(this->N.at(foundPos + 1), this->N.at(foundPos), *N_mom))
+//            {
+//                pos[2][0] = foundPos + 1;
+//                pos[2][1] = foundPos;
+//            }
+//            else
+//            {
+//                pos[2][0] = foundPos;
+//                pos[2][1] = foundPos - 1;
+//            }
+//        }
+//        /** Hebel bestimmen **/
+//        /** Reihenfolge: FL, Mach, N **/
+//        hebel[0] = (*FL_mom - this->FL.at(pos[0][0])) / (this->FL.at(pos[0][1]) - this->FL.at(pos[0][0]));
+//        hebel[1] = (*Mach_mom - this->Mach.at(pos[1][0])) / (this->Mach.at(pos[1][1]) - this->Mach.at(pos[1][0]));
+//        hebel[2] = (*N_mom - this->N.at(pos[2][0])) / (this->N.at(pos[2][1]) - this->N.at(pos[2][0]));
+//        /** Sonderfall keine Interpolation zwischen N1 noetig **/
+//        if (checkValidValues)
+//        {
+//            if (fabs(*N_mom - this->N.at(pos[2][0])) < ACCURACY_MEDIUM)
+//            {
+//                pos[2][1] = pos[2][0];
+//                hebel[2] = 0.;
+//            }
+//            else if (fabs(*N_mom - this->N.at(pos[2][1])) < ACCURACY_MEDIUM)
+//            {
+//                pos[2][0] = pos[2][1];
+//                hebel[2] = 0.;
+//            }
+//        }
+//        /** Interpolieren **/
+//        double v1 = this->values[pos[0][0]][pos[1][0]][pos[2][0]]; // lower N1, lower altitude, lower mach
+//        double v2 = this->values[pos[0][0]][pos[1][0]][pos[2][1]]; // higher N1, lower altitude, lower mach
+//        double v3 = this->values[pos[0][1]][pos[1][0]][pos[2][0]]; // lower N1, higher altitude, lower mach
+//        double v4 = this->values[pos[0][1]][pos[1][0]][pos[2][1]]; // higher N1, higher altitude, lower mach
+//        double v5 = this->values[pos[0][0]][pos[1][1]][pos[2][0]]; // lower N1, lower altitude, higher mach
+//        double v6 = this->values[pos[0][0]][pos[1][1]][pos[2][1]]; // higher N1, lower altitude, higher mach
+//        double v7 = this->values[pos[0][1]][pos[1][1]][pos[2][0]]; // lower N1, higher altitude, higher mach
+//        double v8 = this->values[pos[0][1]][pos[1][1]][pos[2][1]]; // higher N1, higher altitude, higher mach
+//        /** Schalter fuer ungueltige Eintraege setzen **/
+//        bool invalidValueInFstPos = (v1 == -9999. || v3 == -9999. || v5 == -9999. || v7 == -9999.); // invalid values for initial LPC speed
+//        bool invalidValueInScdPos = (v2 == -9999. || v4 == -9999. || v6 == -9999. || v8 == -9999.); // invalid values for final LPC speed
+//        /** Fallunterscheidung fuer Interpolation **/
+//        if (checkValidValues)
+//        {
+//            if (invalidValueInFstPos && invalidValueInScdPos && !changeSpoolSpeed)
+//            { // only if increaseLpcSpeed is false
+//                myRuntimeInfo->err << "Error with interpolation in engine decks. At least 1 invalid value in both N1 decks!" << std::endl;
+//                myRuntimeInfo->err << "Deckname: " << this->aName << std::endl;
+//                myRuntimeInfo->err << "N1_1 = " << N.at(pos[2][0]) << ", N1_2 = " << N.at(pos[2][1]) << std::endl;
+//                myRuntimeInfo->err << "Target values for interpolation: Alt=" << *FL_mom << " m, Ma=" << *Mach_mom << ", N1=" << *N_mom << std::endl;
+//                myRuntimeInfo->err << "Values at all grid points: " << v1 << " | " << v2 << " | " << v3 << " | " << v4 << " | "
+//                                   << v5 << " | " << v6 << " | " << v7 << " | " << v8 << std::endl;
+//                throwError(__FILE__, __func__, __LINE__, "Invalid interpolation value in engine deck. Abort program!");
+//            }
+//            else if (invalidValueInFstPos && invalidValueInScdPos && changeSpoolSpeed)
+//            {
+//                myRuntimeInfo->debug << "Change Spool speed due to invalid interpolation values..." << std::endl;
+//                changeInterpolatePos = true;
+//            }
+//            else if (!invalidValueInFstPos && invalidValueInScdPos)
+//            {
+//                myRuntimeInfo->debug << "Extrapolation in engine deck ..." << std::endl;
+//                extrapolate = true;
+//            }
+//            else if (invalidValueInFstPos && !invalidValueInScdPos)
+//            {
+//                myRuntimeInfo->debug << "Extended interpolation in engine deck ..." << std::endl;
+//                changeInterpolatePos = true;
+//            }
+//            else
+//            { // success
+//                if (extrapolate)
+//                {
+//                    myRuntimeInfo->debug << "... succeeded" << std::endl;
+//                    extrapolate = false;
+//                    // repaired = true;
+//                }
+//                if (changeInterpolatePos)
+//                {
+//                    myRuntimeInfo->debug << "... succeeded" << std::endl;
+//                    changeInterpolatePos = false;
+//                    // repaired = true;
+//                }
+//                interpolSucceded = true;
+//            }
+//        }
+//        else
+//        {
+//            interpolSucceded = true;
+//        }
+//        /** Interpolation **/
+//        val = ((v1 + hebel[2] * (v2 - v1)) + hebel[1] * ((v5 + hebel[2] * (v6 - v5)) - (v1 + hebel[2] * (v2 - v1)))) +
+//              hebel[0] * (((v3 + hebel[2] * (v4 - v3)) + hebel[1] * ((v7 + hebel[2] * (v8 - v7)) - (v3 + hebel[2] * (v4 - v3)))) -
+//                          ((v1 + hebel[2] * (v2 - v1)) + hebel[1] * ((v5 + hebel[2] * (v6 - v5)) - (v1 + hebel[2] * (v2 - v1)))));
+//        //        myRuntimeInfo->debug << "**** INTERPOLATION: ****" << std::endl;
+//        //        myRuntimeInfo->debug << "    - v1:    " << v1 << std::endl;
+//        //        myRuntimeInfo->debug << "    - v2:    " << v2 << std::endl;
+//        //        myRuntimeInfo->debug << "    - v3:    " << v3 << std::endl;
+//        //        myRuntimeInfo->debug << "    - v4:    " << v4 << std::endl;
+//        //        myRuntimeInfo->debug << "    - v5:    " << v5 << std::endl;
+//        //        myRuntimeInfo->debug << "    - v6:    " << v6 << std::endl;
+//        //        myRuntimeInfo->debug << "    - v7:    " << v7 << std::endl;
+//        //        myRuntimeInfo->debug << "    - v8:    " << v8 << std::endl;
+//        //        myRuntimeInfo->debug << "--------------------"<< std::endl;
+//        //        myRuntimeInfo->debug << "    - val:    " << val << std::endl;
+//        //        myRuntimeInfo->debug << "**** INTERPOLATION end ****" << std::endl;
+//        /** Abfangen, ob Extrapolation oder erweiterte Interpolation evtl. fehlgeschlagen ist **/
+//        tries++;
+//        if (tries > 4)
+//        {
+//            std::stringstream errorMessage;
+//            errorMessage << "Error with interpolation in engine decks. Too many trials for special case treatment!" << std::endl;
+//            errorMessage << "Deckname: " << this->aName << std::endl;
+//            errorMessage << "N1_1 = " << N.at(pos[2][0]) << ", N1_2 = " << N.at(pos[2][1]) << std::endl;
+//            errorMessage << "Target values for interpolation: Alt=" << *FL_mom << " m, Ma=" << *Mach_mom << ", N1=" << *N_mom << std::endl;
+//            errorMessage << "Values at all grid points: " << v1 << " | " << v2 << " | " << v3 << " | " << v4 << " | " << v5 << " | " << v6 << " | " << v7 << " | " << v8
+//                         << std::endl;
+//            errorMessage << "Temp. interpolation value: " << val << std::endl;
+//            errorMessage << "Switch extrapolation: " << ((extrapolate) ? "enabled" : "disabled") << std::endl;
+//            errorMessage << "Switch extended interpolation: " << ((changeInterpolatePos) ? "enabled" : "disabled") << std::endl;
+//            errorMessage << "Abort program!" << std::endl;
+//            throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+//        }
+//    } while (!interpolSucceded);
+//    return val;
+//}
+//
+//std::vector<std::vector<std::vector<double>>> EngineDeck::dtensor(const int &n, const int &m, const int &p)
+//{
+//    /** n: zeilen, m: spalten, p: tiefen **/
+//    // allocation
+//    std::vector<std::vector<std::vector<double>>> theValueMatrix;
+//    theValueMatrix.resize(n);
+//    for (std::vector<std::vector<double>> &aValueMatrix : theValueMatrix)
+//    {
+//        aValueMatrix.resize(m);
+//        for (std::vector<double> &aVector : aValueMatrix)
+//        {
+//            aVector.resize(p);
+//        }
+//    }
+//    return theValueMatrix;
+//}
diff --git a/engine/src/parser/csv.cpp b/engine/src/parser/csv.cpp
new file mode 100644
index 00000000..c5650cef
--- /dev/null
+++ b/engine/src/parser/csv.cpp
@@ -0,0 +1,269 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "engine/engine_deck.h"
+#include <algorithm>
+#include <array>
+#include <boost/multi_array.hpp>
+#include <exception>
+#include <fstream>
+#include <iterator>
+#include <string>
+#include <utility>
+#include <vector>
+
+/* === Typedefs === */
+using Row = std::pair<double, std::vector<double>>;
+
+/* === CSV Parser === */
+/**
+ * @class Parser
+ * @brief Parses the CSV file and returns the row values.
+ * @attention This parser does not check for escaped delimiters
+ * or other special cases. It is a simple parser for the
+ * specific CSV format used in the engine deck values and designed
+ * to be as fast as possible.
+ */
+class Parser
+{
+  public:
+    /**
+     * @brief Construct a new Parser object
+     *
+     * @param delimiter The delimiter of the CSV file
+     */
+    explicit Parser(const char delimiter) : delimiter_{delimiter} {};
+
+    /**
+     * @brief Parse the first value of the given line.
+     *
+     * @param line The line to parse
+     * @return double The parsed first value
+     */
+    auto get_first_token(const std::string &line) const -> double
+    {
+        // Get the iterator the first delimiter
+        auto token_start = std::size_t{0};
+        auto token_end = line.find_first_of(this->delimiter_, token_start);
+
+        // Parse the first value
+        return std::stod(line.substr(token_start, token_end - token_start));
+    }
+
+    /**
+     * @brief Parse the row values of the given line.
+     * @attention This function dynamically allocates memory
+     * for the resulting row values!
+     *
+     * @param line The line to parse
+     * @return Row The parsed row values
+     */
+    auto get_row(const std::string &line) const -> Row
+    {
+        // Get the iterator the first delimiter
+        auto token_start = std::size_t{0};
+        auto token_end = line.find_first_of(this->delimiter_, token_start);
+
+        // Parse the first value
+        const double first = std::stod(line.substr(token_start, token_end - token_start));
+
+        // Parse the remaining values
+        std::vector<double> values;
+        token_start = token_end + 1;
+        token_end = line.find_first_of(this->delimiter_, token_start);
+        while (token_end != std::string::npos)
+        {
+            const double value = std::stod(line.substr(token_start, token_end - token_start));
+            values.emplace_back(value);
+            token_start = token_end + 1;
+            token_end = line.find_first_of(this->delimiter_, token_start);
+        }
+
+        // Return the parsed row
+        return {first, values};
+    }
+
+    /**
+     * @brief Parse the row values of the given line.
+     * This function takes the row to be updated as
+     * an input value to skip memory allocation once
+     * the row size is known to improve speed.
+     * @attention The second element of the row must be
+     * initialized with the correct size before calling
+     * this function!
+     *
+     * @param line The line to parse
+     * @param row The row data to be updated.
+     */
+    void get_row(const std::string &line, Row *row) const
+    {
+        // Get the iterator the first delimiter
+        auto token_start = std::size_t{0};
+        auto token_end = line.find_first_of(this->delimiter_, token_start);
+
+        // Parse the first value
+        (*row).first = std::stod(line.substr(token_start, token_end - token_start));
+
+        // Parse the remaining values
+        std::size_t index = 0;
+        token_start = token_end + 1;
+        token_end = line.find_first_of(this->delimiter_, token_start);
+        while (token_end != std::string::npos)
+        {
+            const double value = std::stod(line.substr(token_start, token_end - token_start));
+            (*row).second.at(index++) = value;
+            token_start = token_end + 1;
+            token_end = line.find_first_of(this->delimiter_, token_start);
+        }
+    }
+
+  private:
+    char delimiter_; /** The delimiter for the csv data. */
+};
+
+auto DeckData::from_csv(
+    const std::filesystem::path &file_name,
+    const char delimiter) -> DeckData
+{
+    /* Open the file stream if its a csv file */
+    if (file_name.extension() != ".csv")
+    {
+        throw std::runtime_error("The file is not a CSV file: " + file_name.string());
+    }
+
+    /* Open in binary mode to be a bit faster */
+    std::ifstream file(file_name, std::ios::binary);
+    std::ios::sync_with_stdio(false); // Get every bit of performance
+
+    /* Check if the file is open */
+    if (!file.is_open())
+    {
+        throw std::runtime_error("Could not open file: " + file_name.string());
+    }
+
+    /* Create the iterator to read the file lines */
+    std::istream_iterator<std::string> line(file);
+
+    /* Create the tokenizer with the custom delimiter */
+    Parser parser(delimiter);
+
+    /* Create the data containers */
+    std::vector<double> N{};
+    std::vector<double> FL{};
+    std::vector<double> Mach{};
+
+    /*
+     * Parse the first line which defines
+     * the length of the Mach vector and
+     * the first N value.
+     */
+    auto row = parser.get_row(*line);
+    N.emplace_back(row.first);
+    std::copy(
+        row.second.begin(),
+        row.second.end(),
+        std::back_inserter(Mach));
+
+    /* Parse the FL values */
+    while (++line != std::istream_iterator<std::string>{})
+    {
+        /* Parse the row */
+        parser.get_row(*line, &row);
+
+        /* Loop until the Mach line is reached again */
+        const bool is_Mach_line = std::equal(
+            row.second.begin(),
+            row.second.end(),
+            Mach.begin());
+
+        if (is_Mach_line)
+        {
+            /* Append the N value */
+            N.emplace_back(row.first);
+
+            /* Break the loop */
+            break;
+        }
+
+        /* Append the FL Vector until it is complete */
+        FL.emplace_back(row.first);
+    }
+
+    /* Keep on parsing the N values */
+    std::size_t table_count{0};
+    while (++line != std::istream_iterator<std::string>{})
+    {
+        /* Only parse the lines which contains N values */
+        if (table_count++ == FL.size())
+        {
+            /* Append the N Vector until it is complete */
+            N.emplace_back(parser.get_first_token(*line));
+
+            /* Reset the count */
+            table_count = 0;
+        }
+    }
+
+    /* Resize the value array to fit the data */
+    boost::multi_array<double, 3> values{boost::extents[N.size()][FL.size()][Mach.size()]};
+
+    /* Index to access the first two dimensions of the value array */
+    std::array index = {std::size_t{0}, std::size_t{0}};
+
+    /* Reset the line iterator */
+    file.clear();
+    file.seekg(0);
+    line = std::istream_iterator<std::string>{file};
+
+    /* Parse the data values now */
+    table_count = 0;
+    while (++line != std::istream_iterator<std::string>{})
+    {
+        /* Check if the current line has value data or is a Mach line */
+        if (table_count++ < FL.size())
+        {
+            /* Parse the row */
+            parser.get_row(*line, &row);
+
+            /* Copy the data to the value array at the current N and FL position */
+            std::copy(
+                row.second.begin(),
+                row.second.end(),
+                values[index[0]][index[1]].begin());
+
+            /* Increment the index of the FL dimension */
+            ++index[1];
+        }
+        else
+        {
+            /* Go to next table page */
+            ++index[0];
+            index[1] = 0;
+            table_count = 0;
+        }
+    }
+    file.close();
+
+    /* Create the deck data */
+    return DeckData{
+        file_name.stem().string(), FL, Mach, N, values}; // Return value optimization (RVO) should be applied here
+}
diff --git a/engine/test/CMakeLists.txt b/engine/test/CMakeLists.txt
new file mode 100644
index 00000000..ca616dd4
--- /dev/null
+++ b/engine/test/CMakeLists.txt
@@ -0,0 +1,60 @@
+# Convert the module sources to a path found by CMake
+list(TRANSFORM LIBRARY_SOURCES PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/../ OUTPUT_VARIABLE TEST_SOURCES)
+
+# ==============================================
+# Add the test executable
+#
+# *** IMPORTANT ***
+# -> Change *.cpp files according to the tests
+# ==============================================
+add_executable(test_${LIBRARY_NAME}
+    ${TEST_SOURCES}
+    test_engine_data.cpp
+    test_engine_deck.cpp
+    test_engine.cpp
+)
+
+# Link the test executable against UNICADO libs and gtest
+target_link_libraries( test_${LIBRARY_NAME}
+    PRIVATE
+        UnicadoLibs::atmosphere
+        UnicadoLibs::aixml
+        UnicadoLibs::runtimeInfo
+        UnicadoLibs::standardFiles
+        UnicadoLibs::unitConversion
+        GTest::gtest_main
+        Boost::boost
+)
+
+# Set compile definitions for the test executable
+target_compile_options( test_${LIBRARY_NAME} PRIVATE "-w") # Skip warnings
+
+# Set a define where the tests can find the test stubs
+target_compile_definitions( test_${LIBRARY_NAME} PRIVATE CMAKE_TEST_STUBS_DIR="${CMAKE_CURRENT_LIST_DIR}/stubs/")
+
+# The the original source folder as includes, to that the test can access the
+# original source files
+target_include_directories( test_${LIBRARY_NAME}
+    PRIVATE
+        ${CMAKE_CURRENT_LIST_DIR}/../src/
+		${CMAKE_CURRENT_LIST_DIR}/../include/
+)
+
+# Build the test runner into the current directory
+set_target_properties( test_${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+
+# Add a custom target to run the tests with cmake
+add_custom_target(runtest_${LIBRARY_NAME}
+        # COMMAND CTEST_OUTPUT_ON_FAILURE=1 GTEST_COLOR=1
+        COMMAND test_${LIBRARY_NAME} --gtest_color=yes
+        DEPENDS test_${LIBRARY_NAME})
+
+# *optional* Add the test executable to ctest
+# gtest_discover_tests(test_${LIBRARY_NAME})
+
+# Set compile options according to operating system
+if( WIN32 )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS;BUILD_AIXML_DLL")
+elseif( UNIX )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "BUILD_AIXML_SO")
+endif()
diff --git a/engine/test/stubs/V2527-A5/N_limit.csv b/engine/test/stubs/V2527-A5/N_limit.csv
new file mode 100644
index 00000000..fb95633d
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/N_limit.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.085;1.0852;1.0855;1.0861;1.0869;1.0881;1.0895;1.0913;1.0934;1.0957;1.0986;1.1016;1.1049;1.1084;1.1123;1.1164;1.1207;1.1253;1.1299;1.1347;
+500;1.082;1.0821;1.0825;1.083;1.0839;1.085;1.0864;1.0881;1.0901;1.0924;1.0952;1.0981;1.1014;1.1049;1.1087;1.1128;1.1172;1.1218;1.1264;1.1313;
+1000;1.0789;1.079;1.0794;1.08;1.0808;1.0819;1.0833;1.085;1.0869;1.0892;1.0917;1.0947;1.0979;1.1014;1.1052;1.1093;1.1136;1.1181;1.1229;1.1278;
+1500;1.0757;1.0759;1.0762;1.0768;1.0777;1.0789;1.0802;1.0819;1.0838;1.086;1.0886;1.0914;1.0945;1.0979;1.1017;1.1057;1.11;1.1145;1.1193;1.1242;
+2000;1.0725;1.0726;1.073;1.0736;1.0745;1.0757;1.0771;1.0788;1.0807;1.0829;1.0854;1.0881;1.0911;1.0944;1.0981;1.1021;1.1063;1.1108;1.1156;1.1206;
+2500;1.0691;1.0692;1.0696;1.0703;1.0712;1.0724;1.0739;1.0756;1.0776;1.0798;1.0822;1.085;1.0879;1.0911;1.0946;1.0985;1.1027;1.1071;1.1118;1.1168;
+3000;1.0655;1.0656;1.0661;1.0668;1.0678;1.069;1.0705;1.0723;1.0743;1.0766;1.079;1.0818;1.0847;1.0878;1.0912;1.095;1.0991;1.1035;1.1081;1.113;
+3500;1.0618;1.062;1.0624;1.0631;1.0641;1.0654;1.067;1.0689;1.071;1.0733;1.0758;1.0786;1.0815;1.0846;1.0879;1.0915;1.0955;1.0998;1.1044;1.1092;
+4000;1.058;1.0582;1.0586;1.0594;1.0604;1.0617;1.0634;1.0653;1.0674;1.0698;1.0724;1.0753;1.0782;1.0813;1.0846;1.0882;1.092;1.0962;1.1007;1.1055;
+4500;1.0542;1.0544;1.0549;1.0556;1.0567;1.058;1.0596;1.0615;1.0637;1.0662;1.069;1.0718;1.0748;1.078;1.0813;1.0848;1.0886;1.0926;1.0971;1.1018;
+5000;1.0504;1.0506;1.0511;1.0519;1.0529;1.0543;1.0559;1.0578;1.06;1.0624;1.0653;1.0682;1.0714;1.0746;1.078;1.0815;1.0852;1.0892;1.0934;1.098;
+5500;1.0466;1.0467;1.0472;1.048;1.049;1.0504;1.0521;1.0541;1.0563;1.0588;1.0616;1.0645;1.0677;1.0711;1.0745;1.0781;1.0818;1.0857;1.0899;1.0943;
+6000;1.0427;1.0427;1.0431;1.0439;1.045;1.0464;1.0482;1.0502;1.0525;1.055;1.0579;1.0609;1.0641;1.0674;1.0709;1.0746;1.0784;1.0823;1.0864;1.0907;
+6500;1.0386;1.0387;1.0392;1.0398;1.0409;1.0423;1.0441;1.0462;1.0485;1.0512;1.054;1.0571;1.0603;1.0638;1.0674;1.0711;1.0749;1.0788;1.0829;1.0871;
+7000;1.0348;1.035;1.0354;1.0361;1.0372;1.0385;1.0399;1.042;1.0444;1.0471;1.05;1.0531;1.0565;1.06;1.0637;1.0675;1.0714;1.0753;1.0794;1.0836;
+7500;1.0311;1.0312;1.0316;1.0323;1.0334;1.0347;1.0363;1.0381;1.0402;1.0429;1.0459;1.0491;1.0524;1.056;1.0598;1.0637;1.0677;1.0718;1.0759;1.0801;
+8000;1.0273;1.0273;1.0278;1.0285;1.0295;1.0308;1.0324;1.0343;1.0364;1.0389;1.0416;1.0449;1.0483;1.052;1.0558;1.0598;1.0639;1.0682;1.0724;1.0766;
+8500;1.0235;1.0235;1.0239;1.0246;1.0256;1.027;1.0285;1.0304;1.0325;1.035;1.0377;1.0406;1.0441;1.0478;1.0517;1.0558;1.06;1.0643;1.0687;1.0731;
+9000;1.0191;1.0192;1.0197;1.0204;1.0215;1.0228;1.0245;1.0264;1.0286;1.031;1.0338;1.0367;1.0399;1.0435;1.0475;1.0517;1.0559;1.0603;1.0648;1.0694;
+9500;1.0146;1.0148;1.0153;1.0161;1.0171;1.0185;1.0202;1.0221;1.0244;1.0269;1.0297;1.0327;1.0359;1.0393;1.0431;1.0474;1.0517;1.0562;1.0608;1.0654;
+10000;1.0104;1.0106;1.011;1.0118;1.0128;1.0141;1.0158;1.0178;1.0201;1.0226;1.0254;1.0284;1.0317;1.0353;1.0389;1.0429;1.0474;1.052;1.0567;1.0614;
+10500;1.0062;1.0063;1.0068;1.0075;1.0085;1.0098;1.0114;1.0133;1.0156;1.0182;1.021;1.024;1.0273;1.0309;1.0347;1.0387;1.0428;1.0476;1.0524;1.0572;
+11000;1.0019;1.002;1.0025;1.0032;1.0042;1.0055;1.0071;1.009;1.0111;1.0137;1.0165;1.0196;1.0229;1.0264;1.0302;1.0342;1.0385;1.0429;1.0479;1.0529;
+11500;1.0021;1.0023;1.0027;1.0034;1.0045;1.0058;1.0074;1.0092;1.0114;1.0138;1.0167;1.0198;1.0231;1.0267;1.0304;1.0345;1.0387;1.0432;1.0483;1.0535;
+12000;1.0023;1.0025;1.0029;1.0037;1.0047;1.006;1.0076;1.0095;1.0116;1.0141;1.017;1.0201;1.0234;1.0269;1.0307;1.0347;1.039;1.0435;1.0486;1.0538;
+12500;1.0026;1.0027;1.0032;1.0039;1.0049;1.0063;1.0079;1.0097;1.0119;1.0143;1.0172;1.0203;1.0236;1.0272;1.0309;1.035;1.0392;1.0437;1.0488;1.054;
+13000;1.0029;1.0029;1.0034;1.0042;1.0052;1.0065;1.0081;1.01;1.0121;1.0146;1.0175;1.0206;1.0239;1.0274;1.0312;1.0352;1.0395;1.044;1.0491;1.0543;
+13500;1.003;1.0031;1.0036;1.0044;1.0054;1.0067;1.0083;1.0102;1.0124;1.0148;1.0177;1.0208;1.0241;1.0277;1.0314;1.0355;1.0397;1.0443;1.0494;1.0546;
+14000;1.0024;1.0026;1.003;1.0038;1.0049;1.0064;1.0081;1.0101;1.0124;1.0151;1.018;1.0211;1.0244;1.0279;1.0317;1.0357;1.04;1.0445;1.0496;1.0548;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0635;1.0636;1.0639;1.0645;1.0654;1.0665;1.0679;1.0696;1.0716;1.074;1.0768;1.0797;1.083;1.0864;1.0901;1.094;1.0982;1.1027;1.1075;1.1127;
+500;1.0601;1.0602;1.0606;1.0611;1.062;1.0631;1.0645;1.0661;1.0682;1.0707;1.0734;1.0764;1.0796;1.083;1.0867;1.0906;1.0948;1.0992;1.1039;1.109;
+1000;1.0567;1.0568;1.0572;1.0577;1.0586;1.0597;1.0611;1.0628;1.0648;1.0671;1.0699;1.0729;1.0762;1.0796;1.0833;1.0872;1.0913;1.0957;1.1003;1.1053;
+1500;1.0533;1.0534;1.0538;1.0543;1.0552;1.0563;1.0576;1.0593;1.0614;1.0638;1.0665;1.0695;1.0727;1.0762;1.0799;1.0838;1.0879;1.0922;1.0968;1.1016;
+2000;1.0499;1.05;1.0504;1.0509;1.0518;1.0528;1.0542;1.0559;1.058;1.0604;1.0631;1.066;1.0692;1.0726;1.0763;1.0803;1.0844;1.0887;1.0932;1.098;
+2500;1.0465;1.0466;1.047;1.0475;1.0484;1.0494;1.0508;1.0525;1.0545;1.057;1.0596;1.0626;1.0657;1.0692;1.0728;1.0767;1.0809;1.0852;1.0897;1.0944;
+3000;1.0431;1.0433;1.0436;1.0442;1.045;1.0461;1.0474;1.0491;1.0511;1.0534;1.0562;1.0591;1.0622;1.0657;1.0693;1.0732;1.0773;1.0816;1.0861;1.0908;
+3500;1.0399;1.04;1.0404;1.0409;1.0417;1.0427;1.0441;1.0457;1.0477;1.05;1.0527;1.0556;1.0587;1.0621;1.0658;1.0696;1.0737;1.078;1.0825;1.0872;
+4000;1.0367;1.0369;1.0372;1.0377;1.0384;1.0395;1.0408;1.0424;1.0443;1.0466;1.0492;1.052;1.0552;1.0585;1.0622;1.066;1.0701;1.0744;1.0789;1.0836;
+4500;1.0336;1.0338;1.0341;1.0347;1.0354;1.0364;1.0377;1.0392;1.041;1.0432;1.0458;1.0485;1.0516;1.0549;1.0585;1.0624;1.0665;1.0708;1.0753;1.08;
+5000;1.0307;1.0308;1.0311;1.0316;1.0324;1.0334;1.0347;1.0362;1.038;1.04;1.0423;1.0451;1.0481;1.0514;1.0549;1.0587;1.0628;1.0671;1.0716;1.0763;
+5500;1.0275;1.0276;1.028;1.0285;1.0293;1.0304;1.0317;1.0332;1.035;1.037;1.0392;1.0418;1.0446;1.0478;1.0513;1.0551;1.0591;1.0634;1.0679;1.0725;
+6000;1.0242;1.0244;1.0247;1.0253;1.0261;1.0272;1.0286;1.0301;1.0319;1.0339;1.0362;1.0387;1.0414;1.0444;1.0477;1.0514;1.0553;1.0596;1.0641;1.0687;
+6500;1.021;1.021;1.0214;1.022;1.0229;1.024;1.0254;1.0269;1.0288;1.0308;1.0331;1.0355;1.0383;1.0412;1.0444;1.0479;1.0517;1.0558;1.0602;1.0649;
+7000;1.0174;1.0176;1.0179;1.0186;1.0195;1.0206;1.0221;1.0237;1.0256;1.0277;1.0299;1.0325;1.0351;1.038;1.0411;1.0445;1.0482;1.0522;1.0564;1.061;
+7500;1.0138;1.0139;1.0143;1.015;1.016;1.0172;1.0186;1.0203;1.0223;1.0244;1.0267;1.0293;1.032;1.0348;1.0379;1.0411;1.0447;1.0486;1.0528;1.0572;
+8000;1.01;1.0101;1.0105;1.0112;1.0122;1.0135;1.015;1.0168;1.0188;1.021;1.0234;1.026;1.0288;1.0317;1.0347;1.0379;1.0413;1.0451;1.0491;1.0535;
+8500;1.0062;1.0061;1.0065;1.0073;1.0083;1.0096;1.0112;1.013;1.0151;1.0174;1.0199;1.0226;1.0255;1.0284;1.0315;1.0347;1.038;1.0417;1.0456;1.0498;
+9000;1.0016;1.0017;1.0022;1.003;1.004;1.0054;1.0071;1.009;1.0112;1.0136;1.0163;1.019;1.022;1.025;1.0282;1.0315;1.0348;1.0383;1.0421;1.0462;
+9500;0.99696;0.99696;0.99768;0.99847;0.99956;1.001;1.0027;1.0047;1.0069;1.0094;1.0123;1.0153;1.0183;1.0215;1.0247;1.0281;1.0315;1.0351;1.0388;1.0427;
+10000;0.99275;0.9929;0.99334;0.99406;0.99508;0.99637;0.99812;1.0002;1.0025;1.0051;1.008;1.011;1.0143;1.0177;1.0211;1.0246;1.0281;1.0318;1.0355;1.0393;
+10500;0.98855;0.98862;0.98905;0.98978;0.99079;0.9921;0.9937;0.99549;0.99784;1.0006;1.0035;1.0066;1.0099;1.0134;1.0171;1.0208;1.0246;1.0283;1.0321;1.0359;
+11000;0.98414;0.98428;0.98472;0.98544;0.98646;0.98776;0.98936;0.99124;0.99339;0.99575;0.99878;1.002;1.0054;1.009;1.0128;1.0167;1.0206;1.0247;1.0286;1.0325;
+11500;0.98434;0.98452;0.98495;0.98568;0.98669;0.988;0.9896;0.99148;0.99363;0.99599;0.99903;1.0022;1.0057;1.0093;1.013;1.0169;1.0209;1.0249;1.029;1.033;
+12000;0.98454;0.98475;0.98518;0.98591;0.98692;0.98823;0.98983;0.99171;0.99387;0.99623;0.99928;1.0025;1.0059;1.0095;1.0133;1.0172;1.0211;1.0252;1.0292;1.0333;
+12500;0.98483;0.98498;0.98541;0.98614;0.98716;0.98847;0.99007;0.99195;0.99411;0.99647;0.99953;1.0028;1.0062;1.0098;1.0135;1.0174;1.0214;1.0254;1.0295;1.0336;
+13000;0.98513;0.98521;0.98565;0.98637;0.98739;0.9887;0.9903;0.99218;0.99435;0.99672;0.99978;1.003;1.0064;1.01;1.0138;1.0177;1.0216;1.0257;1.0297;1.0338;
+13500;0.98502;0.98518;0.98565;0.98643;0.98752;0.98891;0.99054;0.99243;0.9946;0.99697;1;1.0033;1.0067;1.0103;1.0141;1.0179;1.0219;1.0259;1.03;1.0341;
+14000;0.98452;0.98468;0.98515;0.98593;0.98703;0.98844;0.99016;0.99219;0.99451;0.99714;1.0003;1.0035;1.0069;1.0105;1.0143;1.0182;1.0221;1.0262;1.0303;1.0344;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0422;1.0423;1.0426;1.0432;1.0439;1.0449;1.0462;1.0477;1.0496;1.0518;1.0545;1.0575;1.0608;1.0645;1.0684;1.0726;1.0771;1.0819;1.0869;1.0922;
+500;1.0389;1.0391;1.0394;1.0399;1.0407;1.0417;1.0429;1.0444;1.0462;1.0485;1.0511;1.054;1.0573;1.0609;1.0648;1.069;1.0734;1.0782;1.0831;1.0884;
+1000;1.0357;1.0359;1.0362;1.0367;1.0375;1.0385;1.0397;1.0412;1.043;1.0451;1.0477;1.0505;1.0538;1.0573;1.0612;1.0653;1.0698;1.0744;1.0794;1.0846;
+1500;1.0325;1.0326;1.0329;1.0335;1.0342;1.0352;1.0364;1.0379;1.0397;1.0418;1.0443;1.0471;1.0503;1.0538;1.0576;1.0617;1.0661;1.0707;1.0756;1.0808;
+2000;1.0292;1.0293;1.0296;1.0301;1.0309;1.0319;1.0331;1.0347;1.0364;1.0385;1.0411;1.0438;1.0469;1.0503;1.054;1.058;1.0624;1.067;1.0718;1.0769;
+2500;1.0258;1.0258;1.0262;1.0268;1.0275;1.0286;1.0298;1.0313;1.0331;1.0353;1.0378;1.0405;1.0436;1.0469;1.0505;1.0544;1.0586;1.0632;1.068;1.0731;
+3000;1.0223;1.0224;1.0228;1.0233;1.0241;1.0251;1.0264;1.028;1.0298;1.0319;1.0345;1.0372;1.0402;1.0435;1.047;1.0508;1.0549;1.0594;1.0642;1.0692;
+3500;1.0188;1.019;1.0193;1.0198;1.0206;1.0217;1.023;1.0245;1.0264;1.0286;1.0311;1.0339;1.0369;1.0401;1.0436;1.0473;1.0514;1.0557;1.0604;1.0653;
+4000;1.0155;1.0156;1.0159;1.0164;1.0172;1.0182;1.0195;1.021;1.0229;1.0252;1.0277;1.0305;1.0335;1.0367;1.0402;1.0439;1.0478;1.0521;1.0566;1.0615;
+4500;1.0121;1.0121;1.0125;1.0131;1.0138;1.0148;1.0161;1.0177;1.0195;1.0217;1.0243;1.0271;1.0301;1.0333;1.0367;1.0404;1.0443;1.0485;1.0529;1.0577;
+5000;1.0087;1.0088;1.0091;1.0097;1.0104;1.0114;1.0127;1.0143;1.0161;1.0183;1.0209;1.0236;1.0266;1.0298;1.0333;1.0369;1.0408;1.0449;1.0492;1.0539;
+5500;1.0053;1.0054;1.0057;1.0062;1.007;1.008;1.0093;1.0108;1.0127;1.0149;1.0175;1.0202;1.0232;1.0264;1.0298;1.0334;1.0373;1.0413;1.0456;1.0502;
+6000;1.0019;1.002;1.0023;1.0028;1.0036;1.0046;1.0058;1.0074;1.0093;1.0115;1.014;1.0168;1.0197;1.0229;1.0264;1.0299;1.0337;1.0377;1.042;1.0465;
+6500;0.99853;0.99863;0.99894;0.99945;1.0002;1.0012;1.0024;1.004;1.0059;1.008;1.0106;1.0133;1.0163;1.0195;1.0229;1.0265;1.0303;1.0342;1.0384;1.0428;
+7000;0.99529;0.99539;0.99568;0.99618;0.9969;0.99786;0.9991;1.0006;1.0025;1.0046;1.0072;1.0098;1.0127;1.0159;1.0193;1.023;1.0268;1.0307;1.0348;1.0391;
+7500;0.99205;0.99222;0.99251;0.993;0.9937;0.99464;0.99585;0.99735;0.99914;1.0012;1.0037;1.0064;1.0093;1.0124;1.0158;1.0194;1.0232;1.0272;1.0313;1.0356;
+8000;0.98898;0.98908;0.98937;0.98986;0.99057;0.99151;0.99271;0.99416;0.99588;0.99788;1.0003;1.0029;1.0058;1.0089;1.0122;1.0158;1.0196;1.0236;1.0277;1.032;
+8500;0.98591;0.98577;0.98607;0.9866;0.98736;0.98835;0.9896;0.99104;0.99272;0.99467;0.99686;0.99946;1.0022;1.0053;1.0086;1.0122;1.0159;1.0199;1.0241;1.0284;
+9000;0.98216;0.98227;0.98259;0.98315;0.98393;0.98497;0.98625;0.98775;0.9895;0.99149;0.99365;0.99613;0.99881;1.0018;1.0051;1.0086;1.0123;1.0162;1.0204;1.0247;
+9500;0.97853;0.97865;0.97899;0.97956;0.98039;0.98147;0.98278;0.98433;0.98611;0.9881;0.9903;0.99271;0.99547;0.99832;1.0015;1.0049;1.0086;1.0125;1.0167;1.021;
+10000;0.97473;0.97485;0.97522;0.97583;0.9767;0.97782;0.97917;0.98077;0.98261;0.98464;0.98686;0.98927;0.99198;0.99484;0.99796;1.0013;1.0049;1.0088;1.0129;1.0172;
+10500;0.97076;0.97089;0.97128;0.97192;0.97282;0.97398;0.9754;0.97706;0.97895;0.98104;0.98332;0.98577;0.9885;0.99132;0.99436;0.99765;1.0013;1.0051;1.0091;1.0134;
+11000;0.96665;0.96679;0.96719;0.96786;0.96879;0.96999;0.97144;0.97316;0.97512;0.97728;0.97972;0.98226;0.98494;0.98778;0.99079;0.99401;0.99747;1.0013;1.0053;1.0096;
+11500;0.96685;0.96702;0.96742;0.96809;0.96902;0.97022;0.97168;0.97339;0.97535;0.97751;0.97996;0.98249;0.98518;0.98803;0.99104;0.99426;0.99773;1.0015;1.0056;1.0099;
+12000;0.96704;0.96725;0.96765;0.96832;0.96925;0.97045;0.97191;0.97363;0.97559;0.97775;0.9802;0.98273;0.98542;0.98827;0.99128;0.9945;0.99799;1.0018;1.0059;1.0102;
+12500;0.96734;0.96748;0.96788;0.96855;0.96948;0.97068;0.97214;0.97386;0.97582;0.97798;0.98043;0.98297;0.98566;0.98851;0.99153;0.99477;0.99826;1.0021;1.0062;1.0105;
+13000;0.96765;0.9677;0.96811;0.96878;0.96971;0.97091;0.97237;0.9741;0.97605;0.97822;0.98067;0.98321;0.98591;0.98875;0.99179;0.99503;0.99853;1.0023;1.0064;1.0108;
+13500;0.96742;0.96757;0.968;0.96872;0.96972;0.971;0.97257;0.97433;0.97629;0.97845;0.98091;0.98345;0.98615;0.98901;0.99205;0.99529;0.9988;1.0026;1.0067;1.0111;
+14000;0.96698;0.96712;0.96756;0.96828;0.96928;0.97056;0.97213;0.97397;0.97607;0.97839;0.98102;0.98369;0.9864;0.98927;0.99231;0.99556;0.99907;1.0029;1.007;1.0113;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0213;1.0214;1.0218;1.0224;1.0232;1.0243;1.0257;1.0273;1.0293;1.0316;1.0342;1.0372;1.0405;1.0442;1.0482;1.0526;1.0572;1.0621;1.0672;1.0726;
+500;1.0179;1.018;1.0184;1.0189;1.0197;1.0208;1.0221;1.0238;1.0257;1.028;1.0306;1.0336;1.0369;1.0405;1.0445;1.0488;1.0534;1.0583;1.0634;1.0687;
+1000;1.0144;1.0146;1.0149;1.0155;1.0163;1.0173;1.0186;1.0203;1.0222;1.0244;1.0269;1.0299;1.0332;1.0368;1.0408;1.0451;1.0496;1.0544;1.0595;1.0648;
+1500;1.0111;1.0112;1.0115;1.012;1.0128;1.0138;1.0151;1.0168;1.0187;1.0209;1.0234;1.0263;1.0295;1.0332;1.0371;1.0413;1.0458;1.0506;1.0556;1.0609;
+2000;1.0077;1.0077;1.0081;1.0086;1.0094;1.0104;1.0117;1.0132;1.0151;1.0173;1.0199;1.0228;1.0259;1.0295;1.0333;1.0375;1.042;1.0467;1.0517;1.057;
+2500;1.0042;1.0043;1.0046;1.0052;1.0059;1.0069;1.0082;1.0097;1.0116;1.0138;1.0164;1.0192;1.0224;1.0259;1.0297;1.0337;1.0382;1.0429;1.0478;1.053;
+3000;1.0008;1.0009;1.0012;1.0017;1.0025;1.0035;1.0047;1.0062;1.0081;1.0103;1.0128;1.0156;1.0188;1.0223;1.026;1.03;1.0344;1.039;1.0439;1.0491;
+3500;0.99746;0.99756;0.99786;0.99836;0.99908;1;1.0012;1.0027;1.0046;1.0067;1.0093;1.0121;1.0152;1.0186;1.0224;1.0263;1.0306;1.0351;1.0399;1.0451;
+4000;0.99413;0.9943;0.99459;0.99509;0.99579;0.99672;0.99789;0.99934;1.0011;1.0032;1.0057;1.0085;1.0116;1.015;1.0187;1.0226;1.0269;1.0313;1.0361;1.0411;
+4500;0.99095;0.99105;0.99134;0.99183;0.99252;0.99344;0.99459;0.99601;0.99775;0.9998;1.0022;1.0049;1.008;1.0114;1.015;1.0189;1.0231;1.0275;1.0322;1.0372;
+5000;0.98778;0.98778;0.98809;0.98857;0.98926;0.99017;0.9913;0.99269;0.99441;0.99642;0.99883;1.0015;1.0045;1.0078;1.0114;1.0152;1.0194;1.0237;1.0283;1.0332;
+5500;0.9846;0.98455;0.98484;0.98532;0.986;0.9869;0.98803;0.9894;0.99108;0.99307;0.99537;0.99809;1.001;1.0043;1.0078;1.0115;1.0156;1.0199;1.0245;1.0293;
+6000;0.98116;0.98126;0.98155;0.98203;0.98272;0.98363;0.98476;0.98613;0.98779;0.98975;0.99202;0.99469;0.99759;1.0008;1.0042;1.0079;1.0119;1.0161;1.0206;1.0254;
+6500;0.9778;0.9779;0.97819;0.97869;0.97939;0.9803;0.98145;0.98284;0.98449;0.98645;0.98871;0.99134;0.99418;0.99729;1.0007;1.0043;1.0082;1.0124;1.0168;1.0215;
+7000;0.97444;0.97444;0.97478;0.97527;0.97598;0.97691;0.97807;0.97949;0.98116;0.98313;0.98548;0.98802;0.99082;0.99386;0.99717;1.0007;1.0046;1.0087;1.0131;1.0176;
+7500;0.97091;0.97101;0.97131;0.97181;0.97252;0.97345;0.97463;0.97607;0.97777;0.97977;0.98215;0.98469;0.98747;0.99047;0.99371;0.99721;1.001;1.005;1.0093;1.0138;
+8000;0.96733;0.96743;0.96773;0.96825;0.96898;0.96995;0.97113;0.97259;0.97432;0.97635;0.97876;0.98132;0.9841;0.98708;0.99028;0.99371;0.99739;1.0013;1.0055;1.01;
+8500;0.96361;0.96371;0.96401;0.96453;0.96526;0.96623;0.96746;0.96896;0.97076;0.97286;0.9753;0.97789;0.98069;0.98367;0.98685;0.99024;0.99385;0.99772;1.0019;1.0062;
+9000;0.95989;0.95997;0.96027;0.96078;0.96152;0.96249;0.96372;0.96523;0.96704;0.96916;0.97166;0.97433;0.97721;0.98022;0.9834;0.98677;0.99034;0.99413;0.99817;1.0025;
+9500;0.95617;0.95623;0.95653;0.95704;0.95777;0.95874;0.95996;0.96148;0.96335;0.96542;0.96793;0.9706;0.97349;0.97659;0.97987;0.98328;0.98683;0.99056;0.99452;0.99873;
+10000;0.9524;0.95251;0.9528;0.95331;0.95403;0.955;0.95622;0.95773;0.95955;0.96164;0.96415;0.96681;0.9697;0.97281;0.97612;0.97961;0.98325;0.98701;0.99091;0.99503;
+10500;0.94874;0.94884;0.94913;0.94962;0.95033;0.95128;0.95249;0.954;0.9558;0.95787;0.96035;0.96298;0.96586;0.96897;0.97229;0.9758;0.97949;0.98331;0.98727;0.99136;
+11000;0.94515;0.94524;0.94553;0.94601;0.94671;0.94764;0.94883;0.9503;0.95206;0.9541;0.95654;0.95914;0.96199;0.96507;0.96838;0.9719;0.97561;0.97948;0.98348;0.98761;
+11500;0.94535;0.94548;0.94576;0.94625;0.94694;0.94788;0.94907;0.95055;0.95231;0.95435;0.95679;0.95939;0.96225;0.96533;0.96865;0.97217;0.97588;0.97975;0.98375;0.98788;
+12000;0.94556;0.94571;0.946;0.94648;0.94718;0.94811;0.94931;0.95079;0.95255;0.95459;0.95704;0.95965;0.96251;0.9656;0.96891;0.97244;0.97615;0.98002;0.98403;0.98816;
+12500;0.94585;0.94594;0.94623;0.94672;0.94742;0.94835;0.94955;0.95103;0.9528;0.95484;0.9573;0.95991;0.96277;0.96586;0.96918;0.9727;0.97642;0.98029;0.9843;0.98843;
+13000;0.94613;0.94613;0.94647;0.94695;0.94766;0.94859;0.94979;0.95127;0.95305;0.9551;0.95756;0.96017;0.96303;0.96612;0.96944;0.97297;0.97669;0.98056;0.98457;0.98871;
+13500;0.94577;0.94589;0.9462;0.94673;0.94749;0.94849;0.94977;0.95136;0.95324;0.95545;0.95782;0.96043;0.96329;0.96639;0.96971;0.97324;0.97695;0.98083;0.98484;0.98898;
+14000;0.94543;0.94554;0.94586;0.94639;0.94715;0.94817;0.94946;0.95106;0.95295;0.95523;0.95772;0.96046;0.96346;0.96665;0.96997;0.9735;0.97722;0.9811;0.98511;0.98925;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.002;1.0022;1.0025;1.0031;1.004;1.0052;1.0066;1.0082;1.0102;1.0125;1.015;1.018;1.0213;1.0248;1.0287;1.033;1.0376;1.0424;1.0474;1.0527;
+500;0.99849;0.99862;0.99898;0.99959;1.0005;1.0016;1.0029;1.0046;1.0065;1.0088;1.0113;1.0143;1.0175;1.0211;1.025;1.0293;1.0338;1.0386;1.0436;1.0489;
+1000;0.99494;0.995;0.99536;0.99598;0.99685;0.998;0.99934;1.001;1.0029;1.005;1.0076;1.0106;1.0138;1.0174;1.0213;1.0255;1.0301;1.0348;1.0398;1.0451;
+1500;0.99139;0.99137;0.99173;0.99233;0.99319;0.99433;0.99568;0.99732;0.99922;1.0014;1.0039;1.0068;1.01;1.0136;1.0175;1.0218;1.0263;1.031;1.036;1.0412;
+2000;0.98761;0.98773;0.98808;0.98868;0.98953;0.99065;0.99199;0.99362;0.99554;0.99774;1.0003;1.0032;1.0063;1.0098;1.0137;1.0179;1.0224;1.0272;1.0322;1.0374;
+2500;0.98382;0.98408;0.98443;0.98502;0.98586;0.98696;0.9883;0.98991;0.99182;0.99401;0.99662;0.99946;1.0026;1.0061;1.01;1.0141;1.0186;1.0233;1.0283;1.0334;
+3000;0.98035;0.98047;0.9808;0.98137;0.98218;0.98326;0.98459;0.9862;0.98809;0.99027;0.99286;0.99572;0.9989;1.0024;1.0062;1.0103;1.0147;1.0194;1.0243;1.0295;
+3500;0.9768;0.97692;0.97725;0.97781;0.9786;0.97965;0.98095;0.98252;0.98436;0.98653;0.98909;0.99194;0.99512;0.99863;1.0024;1.0065;1.0109;1.0155;1.0204;1.0255;
+4000;0.97325;0.97337;0.9737;0.97425;0.97503;0.97606;0.97735;0.9789;0.98073;0.98285;0.98535;0.98814;0.99131;0.99483;0.99865;1.0027;1.0071;1.0116;1.0165;1.0215;
+4500;0.96974;0.96985;0.97017;0.9707;0.97146;0.97247;0.97375;0.97529;0.9771;0.9792;0.98167;0.98443;0.98753;0.99099;0.99481;0.99889;1.0032;1.0077;1.0125;1.0176;
+5000;0.96625;0.96636;0.96667;0.96719;0.96793;0.96891;0.97017;0.97169;0.97349;0.97557;0.97801;0.98074;0.98381;0.98723;0.99097;0.995;0.9993;1.0038;1.0086;1.0136;
+5500;0.96276;0.96287;0.96318;0.96369;0.96442;0.96538;0.96662;0.96812;0.9699;0.97196;0.97432;0.97706;0.98009;0.98348;0.98717;0.99115;0.9954;0.99988;1.0046;1.0096;
+6000;0.95927;0.95941;0.9597;0.9602;0.96092;0.96186;0.96308;0.96457;0.96632;0.96837;0.97071;0.97342;0.97641;0.97974;0.98338;0.98731;0.99151;0.99597;1.0006;1.0055;
+6500;0.95586;0.95596;0.95625;0.95673;0.95743;0.95835;0.95955;0.96102;0.96276;0.96478;0.9671;0.96979;0.97275;0.97604;0.97962;0.98348;0.98761;0.99202;0.99668;1.0015;
+7000;0.95245;0.95256;0.95283;0.9533;0.95397;0.95487;0.95603;0.95748;0.9592;0.9612;0.96357;0.96618;0.96912;0.97235;0.97588;0.97967;0.98374;0.98808;0.99269;0.99754;
+7500;0.94904;0.94912;0.9494;0.94986;0.95053;0.95141;0.95254;0.95396;0.95565;0.95763;0.95998;0.96258;0.96549;0.96868;0.97215;0.97589;0.97989;0.98416;0.98869;0.99349;
+8000;0.9456;0.94569;0.94596;0.94642;0.94707;0.94793;0.94903;0.95042;0.95209;0.95405;0.95639;0.95897;0.96186;0.96502;0.96844;0.97211;0.97605;0.98025;0.98471;0.98944;
+8500;0.94216;0.94225;0.94252;0.94298;0.94362;0.94446;0.94553;0.9469;0.94853;0.95044;0.95274;0.95533;0.95822;0.96136;0.96474;0.96835;0.97222;0.97636;0.98075;0.9854;
+9000;0.9387;0.93879;0.93906;0.93952;0.94016;0.941;0.94206;0.94339;0.94499;0.94687;0.94913;0.95166;0.9545;0.95763;0.96101;0.96461;0.96842;0.97248;0.9768;0.98137;
+9500;0.93519;0.93528;0.93555;0.93601;0.93665;0.9375;0.93856;0.93988;0.94146;0.94332;0.94548;0.94804;0.95081;0.95388;0.95721;0.96079;0.96459;0.96862;0.97287;0.97736;
+10000;0.93168;0.93168;0.93196;0.93242;0.93308;0.93394;0.93502;0.93633;0.93792;0.93977;0.94192;0.94444;0.94716;0.95015;0.95341;0.95694;0.9607;0.9647;0.96892;0.97337;
+10500;0.92787;0.92797;0.92826;0.92873;0.92941;0.93029;0.93139;0.93272;0.93432;0.9362;0.93835;0.94086;0.94354;0.94647;0.94965;0.95309;0.9568;0.96075;0.96493;0.96933;
+11000;0.92407;0.92418;0.92447;0.92495;0.92563;0.92653;0.92766;0.92903;0.93066;0.93256;0.93482;0.93725;0.93992;0.9428;0.94592;0.94928;0.9529;0.9568;0.96092;0.96527;
+11500;0.92428;0.92442;0.9247;0.92519;0.92587;0.92677;0.9279;0.92927;0.9309;0.93281;0.93507;0.9375;0.94017;0.94306;0.94617;0.94953;0.95315;0.95705;0.96118;0.96552;
+12000;0.92449;0.92465;0.92494;0.92543;0.92611;0.92701;0.92814;0.92951;0.93115;0.93306;0.93532;0.93775;0.94042;0.9433;0.94642;0.94978;0.95341;0.9573;0.96143;0.96578;
+12500;0.92479;0.92489;0.92518;0.92566;0.92635;0.92725;0.92839;0.92975;0.93139;0.9333;0.93557;0.938;0.94067;0.94355;0.94667;0.95004;0.95366;0.95756;0.96168;0.96603;
+13000;0.92468;0.92479;0.9251;0.92561;0.92634;0.9273;0.92849;0.92994;0.93162;0.93354;0.93581;0.93825;0.94091;0.9438;0.94692;0.95029;0.95391;0.95781;0.96193;0.96629;
+13500;0.9244;0.92451;0.92482;0.92533;0.92607;0.92703;0.92823;0.92969;0.93141;0.93342;0.9358;0.93835;0.94113;0.94405;0.94717;0.95053;0.95416;0.95806;0.96219;0.96654;
+14000;0.92412;0.92424;0.92455;0.92507;0.92582;0.92678;0.92799;0.92945;0.93118;0.9332;0.93559;0.93814;0.94094;0.94395;0.9472;0.95069;0.95441;0.95831;0.96245;0.9668;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.98327;0.98338;0.98376;0.9844;0.98535;0.9865;0.98783;0.98945;0.9914;0.99362;0.99614;0.9989;1.0019;1.0052;1.0088;1.0128;1.0171;1.0217;1.0266;1.0317;
+500;0.97962;0.97973;0.98011;0.98075;0.98168;0.98281;0.98412;0.98572;0.98766;0.98988;0.99244;0.99523;0.99824;1.0015;1.0052;1.0092;1.0135;1.0181;1.023;1.028;
+1000;0.97597;0.97607;0.97644;0.97708;0.97801;0.97912;0.98043;0.98203;0.98394;0.98613;0.98867;0.99151;0.99455;0.99786;1.0015;1.0055;1.0098;1.0144;1.0193;1.0244;
+1500;0.97233;0.97239;0.97277;0.9734;0.97432;0.97542;0.97673;0.97832;0.98023;0.9824;0.98492;0.98776;0.9908;0.99415;0.99781;1.0018;1.0061;1.0107;1.0156;1.0206;
+2000;0.96858;0.9687;0.96907;0.96971;0.97061;0.9717;0.97301;0.97459;0.97649;0.97866;0.98117;0.984;0.98704;0.99039;0.99408;0.99808;1.0024;1.007;1.0119;1.0169;
+2500;0.96484;0.96499;0.96536;0.96599;0.96689;0.96796;0.96927;0.97085;0.97268;0.9749;0.9774;0.98022;0.98327;0.98662;0.99033;0.99432;0.99866;1.0033;1.0081;1.0131;
+3000;0.96122;0.96134;0.9617;0.96232;0.9632;0.96425;0.96553;0.96709;0.96891;0.97112;0.97361;0.97641;0.97948;0.98283;0.98654;0.99057;0.99488;0.99945;1.0043;1.0093;
+3500;0.95761;0.95768;0.95804;0.95864;0.95951;0.96055;0.96183;0.96338;0.96518;0.96735;0.9698;0.97259;0.97567;0.97904;0.98273;0.98676;0.9911;0.99565;1.0004;1.0054;
+4000;0.95391;0.95402;0.95438;0.95497;0.95583;0.95685;0.95813;0.95966;0.96145;0.9636;0.96604;0.96879;0.97184;0.97521;0.97889;0.98291;0.98724;0.99183;0.99657;1.0015;
+4500;0.95021;0.95036;0.95071;0.95129;0.95213;0.95315;0.95442;0.95594;0.95772;0.95984;0.96227;0.96505;0.96804;0.97139;0.97504;0.97905;0.98335;0.98791;0.9927;0.99765;
+5000;0.94657;0.94669;0.94703;0.94761;0.94843;0.94944;0.9507;0.95221;0.95398;0.95608;0.95849;0.96125;0.96423;0.96757;0.97122;0.97519;0.97944;0.98398;0.98875;0.99373;
+5500;0.94294;0.94301;0.94334;0.94391;0.94472;0.94572;0.94697;0.94847;0.95023;0.95236;0.95471;0.95745;0.96045;0.96376;0.96739;0.97134;0.97557;0.98004;0.98476;0.98973;
+6000;0.93921;0.93932;0.93965;0.9402;0.941;0.94199;0.94323;0.94472;0.94647;0.94858;0.95091;0.95364;0.95663;0.95993;0.96355;0.96748;0.97168;0.97612;0.9808;0.98569;
+6500;0.93554;0.93564;0.93597;0.93651;0.93729;0.93827;0.93949;0.94097;0.9427;0.94479;0.9471;0.94982;0.95279;0.95608;0.9597;0.9636;0.96778;0.97219;0.97683;0.98169;
+7000;0.93186;0.93191;0.93223;0.93276;0.93353;0.93452;0.93574;0.93722;0.93894;0.94101;0.94329;0.94598;0.94894;0.95222;0.95582;0.95971;0.96385;0.96823;0.97284;0.97768;
+7500;0.92806;0.92816;0.92848;0.929;0.92976;0.93074;0.93195;0.93341;0.93513;0.93719;0.93947;0.94215;0.94509;0.94835;0.95193;0.95579;0.9599;0.96425;0.96883;0.97364;
+8000;0.92425;0.92441;0.92472;0.92524;0.92598;0.92695;0.92816;0.92961;0.93132;0.93329;0.93566;0.93827;0.9412;0.94446;0.94802;0.95185;0.95594;0.96025;0.9648;0.96956;
+8500;0.92056;0.92067;0.92097;0.92148;0.9222;0.92316;0.92436;0.9258;0.9275;0.92946;0.93179;0.93438;0.93729;0.94052;0.94407;0.94789;0.95195;0.95623;0.96074;0.96547;
+9000;0.91687;0.91692;0.91721;0.91771;0.91842;0.91937;0.92056;0.92199;0.92368;0.92563;0.92794;0.93049;0.93337;0.93659;0.94009;0.94388;0.94791;0.95218;0.95666;0.96136;
+9500;0.91307;0.91317;0.91346;0.91395;0.91464;0.91558;0.91676;0.91818;0.91986;0.9218;0.92408;0.92661;0.92946;0.93264;0.93611;0.93985;0.94384;0.94807;0.95254;0.95721;
+10000;0.90928;0.90942;0.90971;0.91018;0.91087;0.91178;0.91296;0.91437;0.91604;0.91797;0.92017;0.92274;0.92556;0.9287;0.93212;0.93581;0.93975;0.94394;0.94837;0.95301;
+10500;0.90558;0.90568;0.90596;0.90643;0.90709;0.90799;0.90915;0.91055;0.9122;0.91413;0.91632;0.91887;0.92167;0.92477;0.92814;0.93177;0.93566;0.93979;0.94417;0.94878;
+11000;0.90188;0.90199;0.90225;0.9027;0.90335;0.90421;0.90535;0.90673;0.90837;0.91027;0.91253;0.915;0.91778;0.92084;0.92416;0.92774;0.93156;0.93564;0.93996;0.94453;
+11500;0.9021;0.90221;0.90247;0.90293;0.90357;0.90444;0.90558;0.90696;0.9086;0.91051;0.91276;0.91523;0.91801;0.92107;0.92439;0.92797;0.93179;0.93587;0.9402;0.94476;
+12000;0.90231;0.90242;0.9027;0.90315;0.9038;0.90467;0.90581;0.90719;0.90883;0.91074;0.91299;0.91546;0.91824;0.9213;0.92463;0.9282;0.93203;0.9361;0.94044;0.945;
+12500;0.90232;0.90243;0.90271;0.90319;0.90387;0.90479;0.90598;0.90742;0.90907;0.91098;0.91316;0.9157;0.91847;0.92153;0.92486;0.92843;0.93226;0.93634;0.94067;0.94524;
+13000;0.90214;0.90224;0.90253;0.90301;0.9037;0.90462;0.90582;0.90727;0.90898;0.91096;0.91329;0.91585;0.91871;0.92176;0.92509;0.92866;0.93249;0.93658;0.94091;0.94547;
+13500;0.90196;0.90207;0.90236;0.90284;0.90354;0.90447;0.90568;0.90713;0.90885;0.91084;0.91317;0.91574;0.9186;0.92175;0.92517;0.92884;0.93272;0.93681;0.94115;0.94571;
+14000;0.90177;0.90191;0.9022;0.90269;0.90339;0.90433;0.90554;0.907;0.90873;0.91073;0.91307;0.91564;0.91851;0.92166;0.92508;0.92876;0.9327;0.9369;0.94133;0.94595;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.96446;0.9646;0.96497;0.96559;0.9665;0.96752;0.9688;0.97029;0.97215;0.97425;0.97656;0.97907;0.98183;0.9848;0.98808;0.99174;0.99579;1.0002;1.005;1.0101;
+500;0.96082;0.96096;0.96133;0.96196;0.96279;0.96385;0.96512;0.96659;0.96846;0.97056;0.97289;0.9754;0.97818;0.98119;0.98445;0.98816;0.99219;0.99662;1.0014;1.0065;
+1000;0.95717;0.9573;0.95767;0.9583;0.95913;0.96019;0.96145;0.96293;0.96477;0.96686;0.96916;0.97171;0.9745;0.97755;0.98082;0.98457;0.98858;0.99299;0.99776;1.0028;
+1500;0.95352;0.95362;0.95399;0.95462;0.95545;0.9565;0.95776;0.95924;0.96108;0.96318;0.96547;0.96801;0.97079;0.97387;0.97717;0.98091;0.98496;0.98936;0.99409;0.9991;
+2000;0.94979;0.94991;0.95028;0.95091;0.95174;0.95279;0.95405;0.95553;0.95737;0.95947;0.96177;0.96431;0.96709;0.97016;0.9735;0.97721;0.98129;0.98571;0.99041;0.99538;
+2500;0.9461;0.94623;0.94659;0.94721;0.94802;0.94906;0.95031;0.95179;0.95363;0.95573;0.95805;0.96059;0.96338;0.96646;0.96981;0.97348;0.97757;0.98202;0.98671;0.99164;
+3000;0.94244;0.94256;0.94292;0.94354;0.9444;0.94537;0.94661;0.94807;0.94989;0.95197;0.95429;0.95684;0.95964;0.96272;0.9661;0.96977;0.97384;0.97827;0.98299;0.98789;
+3500;0.93877;0.93888;0.93924;0.93986;0.94071;0.94168;0.94292;0.94437;0.94618;0.94825;0.95056;0.95308;0.95587;0.95895;0.96236;0.96605;0.97011;0.97452;0.97919;0.98413;
+4000;0.93511;0.93518;0.93554;0.93616;0.937;0.93797;0.9392;0.94065;0.94245;0.94452;0.94683;0.94935;0.95213;0.95518;0.95858;0.9623;0.96634;0.97076;0.97542;0.98029;
+4500;0.93144;0.93147;0.93183;0.93244;0.93328;0.93424;0.93547;0.93692;0.9387;0.94076;0.94311;0.94561;0.94839;0.95144;0.95483;0.95853;0.96257;0.96696;0.97161;0.97647;
+5000;0.92763;0.92775;0.9281;0.92871;0.92954;0.93049;0.93171;0.93316;0.93493;0.93699;0.93933;0.94184;0.94462;0.94767;0.95106;0.95478;0.95881;0.96313;0.96776;0.97261;
+5500;0.92381;0.92401;0.92436;0.92496;0.92578;0.92673;0.92795;0.92939;0.93114;0.9332;0.93553;0.93806;0.94083;0.94389;0.94731;0.95101;0.95505;0.95936;0.9639;0.96871;
+6000;0.92011;0.92023;0.92058;0.92118;0.922;0.92295;0.92417;0.9256;0.92734;0.92939;0.93171;0.93426;0.93702;0.94008;0.9435;0.94721;0.95125;0.95556;0.96009;0.96482;
+6500;0.9163;0.91642;0.91676;0.91736;0.91816;0.91912;0.92033;0.92177;0.9235;0.92555;0.92787;0.93043;0.93319;0.93625;0.93967;0.94338;0.94742;0.95172;0.95624;0.96095;
+7000;0.91248;0.91258;0.91293;0.91352;0.91431;0.91526;0.91647;0.91791;0.91962;0.92167;0.92398;0.92657;0.92933;0.93239;0.93581;0.93952;0.94355;0.94784;0.95234;0.95705;
+7500;0.90867;0.90873;0.90907;0.90965;0.91044;0.91139;0.91259;0.91403;0.91579;0.91777;0.92007;0.92266;0.92542;0.9285;0.93192;0.93564;0.93965;0.94393;0.94841;0.95311;
+8000;0.90485;0.90485;0.90519;0.90576;0.90654;0.90749;0.90869;0.91012;0.91187;0.91384;0.91612;0.9187;0.92148;0.92456;0.92799;0.93171;0.93572;0.93998;0.94445;0.94912;
+8500;0.90084;0.90095;0.90129;0.90185;0.90262;0.90357;0.90476;0.90619;0.90792;0.90988;0.91215;0.91472;0.91751;0.92064;0.92403;0.92774;0.93175;0.93599;0.94044;0.9451;
+9000;0.89682;0.89703;0.89736;0.89792;0.89867;0.89962;0.90081;0.90223;0.90395;0.9059;0.90816;0.91071;0.91352;0.91665;0.92004;0.92375;0.92773;0.93196;0.93639;0.94103;
+9500;0.89298;0.89309;0.89341;0.89396;0.89471;0.89565;0.89683;0.89825;0.89997;0.9019;0.90415;0.90669;0.9095;0.91263;0.91602;0.91972;0.92368;0.92788;0.9323;0.93692;
+10000;0.88914;0.88914;0.88945;0.88999;0.89073;0.89167;0.89285;0.89426;0.89591;0.89788;0.90012;0.9027;0.90546;0.90859;0.91197;0.91567;0.91961;0.92378;0.92817;0.93277;
+10500;0.88507;0.88517;0.88549;0.88601;0.88674;0.88767;0.88884;0.89024;0.89189;0.89384;0.89607;0.89864;0.90144;0.90452;0.90791;0.91158;0.9155;0.91964;0.924;0.92857;
+11000;0.88099;0.88121;0.88151;0.88203;0.88275;0.88367;0.88483;0.88622;0.88785;0.88978;0.892;0.89456;0.89735;0.90043;0.90381;0.90746;0.91135;0.91547;0.9198;0.92434;
+11500;0.8813;0.88141;0.88172;0.88223;0.88295;0.88388;0.88504;0.88643;0.88806;0.89;0.89222;0.89478;0.89757;0.90065;0.90403;0.90767;0.91157;0.91569;0.92001;0.92455;
+12000;0.88134;0.88145;0.88177;0.8823;0.88305;0.88401;0.88521;0.88664;0.88827;0.89021;0.89243;0.89499;0.89778;0.90086;0.90424;0.90789;0.91178;0.9159;0.92023;0.92476;
+12500;0.88122;0.88133;0.88165;0.88219;0.88294;0.88391;0.88511;0.88655;0.88824;0.89023;0.89257;0.89514;0.898;0.90108;0.90446;0.9081;0.91199;0.91611;0.92044;0.92497;
+13000;0.88111;0.88123;0.88155;0.88209;0.88284;0.88381;0.88502;0.88647;0.88816;0.89017;0.89251;0.89508;0.89794;0.9011;0.90455;0.90827;0.91221;0.91632;0.92065;0.92518;
+13500;0.88099;0.88113;0.88146;0.882;0.88276;0.88373;0.88495;0.8864;0.8881;0.89011;0.89245;0.89503;0.8979;0.90106;0.90451;0.90824;0.91221;0.91641;0.92081;0.92539;
+14000;0.88095;0.88105;0.88138;0.88192;0.88268;0.88366;0.88488;0.88634;0.88805;0.89006;0.89241;0.89499;0.89787;0.90103;0.90449;0.90821;0.91219;0.91639;0.9208;0.92541;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.94549;0.94565;0.94599;0.94658;0.94739;0.94835;0.94951;0.95093;0.95258;0.95442;0.95643;0.95865;0.96109;0.96406;0.96735;0.971;0.97501;0.97932;0.98399;0.98905;
+500;0.94183;0.94201;0.94236;0.94294;0.94374;0.94469;0.94584;0.94724;0.94891;0.95076;0.95277;0.95501;0.95744;0.96038;0.96366;0.9673;0.9713;0.97565;0.98032;0.98537;
+1000;0.93824;0.93836;0.93871;0.93929;0.94008;0.94103;0.94218;0.94359;0.94525;0.94709;0.9491;0.95134;0.95378;0.95668;0.95995;0.96358;0.96757;0.97193;0.97663;0.98166;
+1500;0.93456;0.93468;0.93503;0.93561;0.9364;0.93735;0.9385;0.93991;0.94158;0.94344;0.94544;0.94767;0.9501;0.95297;0.95623;0.95984;0.96382;0.96817;0.97291;0.97793;
+2000;0.93088;0.93099;0.93134;0.93191;0.93269;0.93364;0.9348;0.9362;0.93788;0.93972;0.94177;0.94401;0.94643;0.94926;0.95249;0.95609;0.96005;0.96438;0.96911;0.97418;
+2500;0.92721;0.92733;0.92768;0.92825;0.92903;0.92996;0.93111;0.9325;0.93417;0.93601;0.93808;0.94032;0.94275;0.94556;0.94876;0.95231;0.95626;0.96058;0.96529;0.97034;
+3000;0.92355;0.92366;0.92401;0.92458;0.92535;0.92629;0.92743;0.92882;0.93049;0.93233;0.93439;0.93662;0.93906;0.94184;0.94503;0.94857;0.95247;0.95676;0.96146;0.96648;
+3500;0.91989;0.91998;0.92033;0.9209;0.92167;0.9226;0.92374;0.92513;0.92681;0.92865;0.93072;0.93297;0.93539;0.93805;0.94129;0.94473;0.94869;0.95295;0.9576;0.96259;
+4000;0.91617;0.91628;0.91662;0.9172;0.91796;0.9189;0.92004;0.92142;0.92311;0.92496;0.92703;0.9293;0.93174;0.93441;0.93757;0.94105;0.9449;0.94914;0.95377;0.9587;
+4500;0.91245;0.91256;0.9129;0.91348;0.91424;0.91517;0.91631;0.91769;0.91938;0.92128;0.92332;0.92559;0.92807;0.93074;0.93387;0.93733;0.94114;0.94532;0.94992;0.95481;
+5000;0.9087;0.90882;0.90916;0.90974;0.91049;0.91142;0.91256;0.91394;0.91563;0.91754;0.91959;0.92186;0.92436;0.92706;0.93016;0.9336;0.9374;0.94155;0.94607;0.95091;
+5500;0.90492;0.90503;0.90537;0.90596;0.90671;0.90764;0.90878;0.91016;0.91186;0.91377;0.91583;0.91811;0.92062;0.92336;0.92642;0.92985;0.93363;0.93778;0.94227;0.94704;
+6000;0.90113;0.90122;0.90156;0.90215;0.90289;0.90382;0.90497;0.90634;0.90805;0.90997;0.91204;0.91433;0.91686;0.91962;0.92267;0.92609;0.92985;0.93399;0.93846;0.94318;
+6500;0.89735;0.89735;0.89773;0.89832;0.89905;0.89999;0.90113;0.9025;0.90421;0.90614;0.90822;0.91052;0.91306;0.91584;0.91887;0.92231;0.92606;0.93018;0.93462;0.93931;
+7000;0.89341;0.89353;0.89388;0.89446;0.89519;0.89612;0.89727;0.89863;0.90034;0.90227;0.90436;0.90667;0.90922;0.91203;0.91508;0.91851;0.92225;0.92635;0.93076;0.93542;
+7500;0.88948;0.88965;0.89;0.89059;0.89131;0.89224;0.89338;0.8948;0.89645;0.89838;0.90049;0.9028;0.90535;0.90818;0.91125;0.91467;0.91842;0.92251;0.92688;0.9315;
+8000;0.88563;0.88575;0.88609;0.88668;0.8874;0.88833;0.88947;0.89089;0.89254;0.89446;0.8966;0.8989;0.90146;0.9043;0.90739;0.9108;0.91456;0.91864;0.92299;0.92757;
+8500;0.88179;0.88179;0.88216;0.88276;0.88346;0.88439;0.88553;0.88694;0.88859;0.89052;0.89267;0.89497;0.89753;0.90038;0.90349;0.90688;0.91066;0.91474;0.91907;0.92361;
+9000;0.87776;0.87787;0.87822;0.8788;0.8795;0.88043;0.88157;0.88298;0.88462;0.88655;0.88868;0.89101;0.89358;0.89642;0.89956;0.90297;0.90674;0.91081;0.91511;0.91963;
+9500;0.87372;0.8739;0.87424;0.87482;0.87552;0.87644;0.87758;0.87899;0.88062;0.88255;0.8847;0.88703;0.8896;0.89249;0.89559;0.89901;0.90278;0.90684;0.91113;0.91562;
+10000;0.86979;0.8699;0.87024;0.87081;0.8715;0.87242;0.87356;0.8749;0.87659;0.87852;0.8807;0.88301;0.88559;0.88848;0.89159;0.89506;0.8988;0.90283;0.90711;0.91157;
+10500;0.86585;0.86585;0.86621;0.86678;0.86747;0.86838;0.86952;0.87086;0.87254;0.87445;0.87663;0.87896;0.88155;0.88444;0.88759;0.89104;0.89479;0.8988;0.90304;0.90749;
+11000;0.86169;0.8618;0.86214;0.86269;0.86339;0.86431;0.86545;0.86679;0.86845;0.87036;0.87253;0.87487;0.87746;0.88031;0.88352;0.88698;0.89073;0.89474;0.89895;0.90337;
+11500;0.86171;0.86184;0.86218;0.86275;0.86346;0.86441;0.86558;0.86696;0.86864;0.87055;0.87272;0.87506;0.87765;0.88054;0.88371;0.88717;0.89092;0.89492;0.89913;0.90355;
+12000;0.86165;0.86176;0.86211;0.86268;0.86339;0.86435;0.86552;0.8669;0.86861;0.87056;0.87278;0.87518;0.87782;0.88073;0.88389;0.88735;0.89111;0.89511;0.89931;0.90374;
+12500;0.86158;0.8617;0.86204;0.86261;0.86333;0.86429;0.86546;0.86685;0.86856;0.87052;0.87274;0.87514;0.87779;0.88075;0.88397;0.88749;0.8913;0.89529;0.8995;0.90392;
+13000;0.86152;0.86164;0.86199;0.86255;0.86328;0.86424;0.86541;0.8668;0.86852;0.87048;0.87271;0.87511;0.87777;0.88072;0.88395;0.88747;0.8913;0.89536;0.89963;0.9041;
+13500;0.86148;0.86159;0.86194;0.86251;0.86323;0.86419;0.86537;0.86676;0.86848;0.87045;0.87268;0.87509;0.87774;0.8807;0.88393;0.88746;0.89128;0.89535;0.89962;0.90412;
+14000;0.86144;0.86155;0.8619;0.86247;0.86319;0.86415;0.86533;0.86673;0.86845;0.87042;0.87266;0.87507;0.87773;0.88069;0.88392;0.88744;0.89127;0.89534;0.89961;0.9041;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.92651;0.92663;0.92695;0.92748;0.9282;0.92907;0.9301;0.93138;0.93283;0.93444;0.93626;0.93831;0.94085;0.94374;0.94695;0.95048;0.95431;0.95857;0.9631;0.96795;
+500;0.9229;0.92301;0.92333;0.92386;0.92457;0.92543;0.92644;0.92772;0.92917;0.93079;0.93261;0.93465;0.93716;0.94003;0.94324;0.94677;0.95059;0.95483;0.95936;0.96426;
+1000;0.91929;0.91936;0.91969;0.92022;0.92092;0.92178;0.9228;0.92408;0.92553;0.92713;0.92894;0.93098;0.93345;0.93632;0.93951;0.94302;0.94684;0.95108;0.95559;0.9605;
+1500;0.91568;0.91571;0.91603;0.91656;0.91727;0.91813;0.91914;0.92042;0.92187;0.92348;0.92528;0.9273;0.92982;0.93258;0.93576;0.93927;0.94308;0.94731;0.95181;0.95671;
+2000;0.91207;0.91207;0.91239;0.91292;0.91362;0.91447;0.91547;0.91676;0.91821;0.91982;0.92162;0.92362;0.92611;0.92883;0.93199;0.93549;0.9393;0.94351;0.94801;0.95289;
+2500;0.90832;0.90843;0.90875;0.90927;0.90997;0.91082;0.91183;0.91311;0.91455;0.91615;0.91794;0.91994;0.92239;0.9251;0.92823;0.93169;0.9355;0.9397;0.94419;0.94906;
+3000;0.90457;0.90475;0.90507;0.9056;0.9063;0.90716;0.90817;0.90945;0.9109;0.9125;0.91429;0.91626;0.91867;0.92136;0.92447;0.92799;0.93168;0.93587;0.94034;0.94521;
+3500;0.90095;0.90106;0.90138;0.90191;0.90261;0.90347;0.90449;0.90577;0.90723;0.90883;0.91062;0.91259;0.91497;0.91763;0.92078;0.92421;0.92796;0.93203;0.93648;0.94133;
+4000;0.89733;0.89734;0.89766;0.89819;0.89889;0.89976;0.90078;0.90208;0.90354;0.90515;0.90694;0.90891;0.91126;0.9139;0.91696;0.92043;0.92415;0.92821;0.93263;0.93744;
+4500;0.89348;0.89359;0.89391;0.89444;0.89514;0.89601;0.89705;0.89835;0.89982;0.90144;0.90324;0.90521;0.90753;0.91015;0.91328;0.91666;0.92036;0.92439;0.92878;0.93357;
+5000;0.8897;0.8898;0.89013;0.89066;0.89135;0.89223;0.89327;0.89459;0.89609;0.89771;0.89951;0.90148;0.90378;0.90639;0.9095;0.91286;0.91655;0.92057;0.92494;0.92968;
+5500;0.88592;0.886;0.88632;0.88686;0.88755;0.88843;0.88947;0.89079;0.8923;0.89395;0.89576;0.89774;0.90002;0.90262;0.9057;0.90905;0.91273;0.91673;0.92109;0.92582;
+6000;0.88214;0.88214;0.8825;0.88303;0.88372;0.8846;0.88564;0.88697;0.88849;0.89015;0.89198;0.89397;0.89615;0.89882;0.90182;0.90522;0.90888;0.91288;0.91722;0.92193;
+6500;0.87822;0.87833;0.87865;0.87919;0.87987;0.88074;0.88179;0.88312;0.88465;0.88633;0.88817;0.89017;0.89236;0.89507;0.89806;0.90137;0.90501;0.909;0.91333;0.91802;
+7000;0.87431;0.87446;0.87478;0.87531;0.87599;0.87687;0.87791;0.87925;0.88078;0.88247;0.88433;0.88635;0.88854;0.89122;0.8942;0.8975;0.90113;0.9051;0.90942;0.91408;
+7500;0.87039;0.87056;0.87088;0.87141;0.87209;0.87297;0.87402;0.87535;0.87688;0.87858;0.88046;0.88251;0.88471;0.88735;0.89031;0.8936;0.89722;0.90117;0.90548;0.91012;
+8000;0.86647;0.86663;0.86695;0.86749;0.86816;0.86904;0.87009;0.87142;0.87296;0.87468;0.87656;0.87863;0.88085;0.88346;0.88641;0.88968;0.89328;0.89722;0.90152;0.90613;
+8500;0.86255;0.86268;0.863;0.86353;0.86421;0.86508;0.86614;0.86747;0.86902;0.87075;0.87263;0.87472;0.87696;0.87955;0.88248;0.88574;0.88933;0.89325;0.89754;0.90212;
+9000;0.85863;0.8587;0.85902;0.85956;0.86023;0.86111;0.86216;0.8635;0.86505;0.86679;0.86868;0.87078;0.87305;0.87561;0.87853;0.88178;0.88535;0.88926;0.89353;0.89808;
+9500;0.85456;0.85467;0.855;0.85553;0.85621;0.85709;0.85816;0.8595;0.86105;0.86281;0.8647;0.8668;0.8691;0.87165;0.87457;0.8778;0.88135;0.88525;0.8895;0.89402;
+10000;0.85049;0.85063;0.85096;0.85148;0.85216;0.85304;0.85411;0.85545;0.85702;0.85877;0.86069;0.8628;0.86512;0.86764;0.87058;0.8738;0.87734;0.88122;0.88544;0.88993;
+10500;0.84645;0.84656;0.84689;0.84742;0.84809;0.84897;0.85004;0.85138;0.85296;0.85471;0.85666;0.85879;0.86112;0.86367;0.86658;0.86972;0.87331;0.87717;0.88136;0.88582;
+11000;0.84221;0.84232;0.84266;0.84319;0.84388;0.84479;0.84588;0.84725;0.84886;0.85062;0.85258;0.85472;0.85709;0.85966;0.86255;0.86575;0.86926;0.8731;0.87726;0.88168;
+11500;0.84215;0.84226;0.8426;0.84313;0.84382;0.84473;0.84583;0.8472;0.84882;0.85063;0.85262;0.85482;0.85723;0.85983;0.86271;0.86591;0.86942;0.87326;0.87743;0.88185;
+12000;0.84208;0.84221;0.84255;0.84308;0.84377;0.84468;0.84578;0.84716;0.84878;0.85059;0.85259;0.85478;0.8572;0.85981;0.86275;0.86601;0.86958;0.87343;0.8776;0.88202;
+12500;0.84202;0.84216;0.8425;0.84303;0.84372;0.84464;0.84574;0.84712;0.84874;0.85055;0.85255;0.85475;0.85717;0.85978;0.86273;0.86598;0.86956;0.87347;0.8777;0.88219;
+13000;0.842;0.84212;0.84246;0.84299;0.84369;0.8446;0.8457;0.84709;0.84871;0.85052;0.85253;0.85473;0.85714;0.85976;0.8627;0.86596;0.86953;0.87344;0.87768;0.88217;
+13500;0.84199;0.84199;0.84242;0.84295;0.84365;0.84457;0.84568;0.84707;0.84869;0.8505;0.85251;0.8547;0.85712;0.85973;0.86268;0.86593;0.86951;0.87342;0.87766;0.88215;
+14000;0.84194;0.84206;0.84239;0.84293;0.84363;0.84454;0.84565;0.84704;0.84867;0.85048;0.85249;0.85469;0.8571;0.8597;0.86265;0.86591;0.86949;0.87341;0.87764;0.88213;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.90711;0.90724;0.90753;0.90801;0.90866;0.90944;0.91037;0.91148;0.91276;0.91431;0.9161;0.91833;0.92088;0.92364;0.92669;0.93002;0.93374;0.9378;0.94224;0.94697;
+500;0.90359;0.90369;0.90398;0.90446;0.90509;0.90585;0.90676;0.90786;0.90914;0.91059;0.91245;0.91466;0.91719;0.91995;0.923;0.92631;0.93;0.93403;0.93847;0.94318;
+1000;0.90006;0.9001;0.90039;0.90086;0.90149;0.90225;0.90317;0.90427;0.90553;0.90697;0.90878;0.91096;0.91348;0.91624;0.91927;0.92259;0.92624;0.93025;0.93469;0.93938;
+1500;0.8964;0.89649;0.89678;0.89725;0.89787;0.89863;0.89955;0.90065;0.90191;0.90335;0.90513;0.90726;0.90974;0.9125;0.91553;0.91884;0.92257;0.92656;0.93088;0.93557;
+2000;0.89279;0.89289;0.89318;0.89364;0.89426;0.89502;0.89592;0.89702;0.89828;0.89971;0.90147;0.90357;0.90603;0.90876;0.91176;0.91508;0.91878;0.92275;0.92705;0.93172;
+2500;0.88919;0.88926;0.88955;0.89002;0.89064;0.89139;0.8923;0.8934;0.89466;0.89607;0.8978;0.89994;0.90231;0.90503;0.90802;0.9113;0.91497;0.91892;0.9232;0.92786;
+3000;0.88559;0.88561;0.8859;0.88637;0.88699;0.88775;0.88865;0.88976;0.89102;0.89243;0.89414;0.89625;0.89858;0.90128;0.90426;0.90753;0.91107;0.91508;0.91934;0.92398;
+3500;0.88198;0.88198;0.88223;0.88269;0.88331;0.88407;0.88498;0.8861;0.88736;0.88878;0.89046;0.89254;0.89486;0.89755;0.90051;0.90374;0.90728;0.91124;0.91548;0.92009;
+4000;0.87812;0.87822;0.87851;0.87898;0.8796;0.88037;0.88129;0.88241;0.88367;0.88509;0.88676;0.88882;0.89111;0.89379;0.89674;0.89997;0.90348;0.9074;0.91161;0.91619;
+4500;0.87437;0.87447;0.87476;0.87523;0.87586;0.87663;0.87755;0.87868;0.87995;0.88139;0.88304;0.88508;0.88736;0.89002;0.89296;0.89618;0.89968;0.90358;0.90775;0.9123;
+5000;0.87062;0.87069;0.87099;0.87146;0.87209;0.87286;0.87378;0.87492;0.8762;0.87764;0.8793;0.88132;0.88359;0.88623;0.88917;0.89237;0.89586;0.89974;0.90389;0.90841;
+5500;0.86687;0.86687;0.8672;0.86767;0.8683;0.86907;0.87;0.87115;0.87244;0.87388;0.87553;0.87752;0.87978;0.88242;0.88535;0.88855;0.89202;0.89588;0.90001;0.90452;
+6000;0.86299;0.86309;0.86339;0.86386;0.86449;0.86527;0.8662;0.86735;0.86865;0.87009;0.87174;0.87371;0.87595;0.87858;0.8815;0.8847;0.88817;0.89201;0.89612;0.90061;
+6500;0.85911;0.85926;0.85955;0.86003;0.86066;0.86143;0.86236;0.86353;0.86483;0.86628;0.86792;0.86987;0.8721;0.87471;0.87763;0.88082;0.88428;0.88811;0.89221;0.89668;
+7000;0.85523;0.85539;0.85569;0.85617;0.8568;0.85758;0.85851;0.85968;0.86099;0.86245;0.86408;0.86601;0.86822;0.87082;0.87373;0.87692;0.88037;0.88419;0.88828;0.89273;
+7500;0.85135;0.85149;0.85179;0.85228;0.85291;0.8537;0.85463;0.85581;0.85713;0.85858;0.86022;0.86212;0.8644;0.86691;0.86981;0.87299;0.87644;0.88025;0.88433;0.88876;
+8000;0.84747;0.84747;0.84785;0.84833;0.84897;0.84977;0.85071;0.85191;0.85324;0.8547;0.85633;0.85815;0.8604;0.86298;0.86586;0.86903;0.87248;0.87629;0.88035;0.88477;
+8500;0.84347;0.84357;0.84387;0.84436;0.84499;0.84579;0.84675;0.84796;0.8493;0.85079;0.85243;0.85424;0.85653;0.85903;0.86189;0.86505;0.8685;0.8723;0.87635;0.88076;
+9000;0.83946;0.83956;0.83986;0.84035;0.84099;0.84179;0.84275;0.84398;0.84534;0.84682;0.84848;0.8503;0.85256;0.85505;0.8579;0.86105;0.86449;0.86828;0.87233;0.87673;
+9500;0.83542;0.83552;0.83582;0.83631;0.83695;0.83776;0.83872;0.83996;0.84134;0.84283;0.84449;0.84632;0.84858;0.85104;0.85388;0.85702;0.86046;0.86424;0.86828;0.87267;
+10000;0.83127;0.83137;0.83168;0.83217;0.83283;0.83366;0.83466;0.83591;0.83731;0.83881;0.84048;0.84231;0.84453;0.84701;0.84992;0.85298;0.8564;0.86018;0.86421;0.86858;
+10500;0.82711;0.82714;0.82745;0.82794;0.8286;0.82943;0.83043;0.83172;0.83316;0.83472;0.83644;0.83828;0.84047;0.84294;0.84585;0.84897;0.85238;0.85608;0.86011;0.86447;
+11000;0.82278;0.82288;0.82319;0.82368;0.82434;0.82518;0.82617;0.82747;0.82892;0.8305;0.83224;0.83413;0.83634;0.83891;0.84166;0.84486;0.84827;0.85196;0.85598;0.86033;
+11500;0.82274;0.82284;0.82314;0.82364;0.82429;0.82513;0.82613;0.82742;0.82888;0.83045;0.83219;0.83408;0.8363;0.83887;0.84175;0.84493;0.84839;0.85212;0.85613;0.86048;
+12000;0.82269;0.82279;0.8231;0.82359;0.82425;0.82509;0.82609;0.82738;0.82884;0.8304;0.83214;0.83403;0.83626;0.83883;0.84171;0.84489;0.84836;0.85211;0.85618;0.8606;
+12500;0.82264;0.82275;0.82306;0.82355;0.82421;0.82505;0.82605;0.82734;0.82879;0.83035;0.83209;0.83398;0.83622;0.83879;0.84168;0.84486;0.84832;0.85207;0.85615;0.86056;
+13000;0.8226;0.82271;0.82301;0.82351;0.82417;0.82501;0.82601;0.8273;0.82874;0.83029;0.83204;0.83393;0.83617;0.83876;0.84164;0.84482;0.84829;0.85204;0.85611;0.86052;
+13500;0.82256;0.82256;0.82297;0.82346;0.82412;0.82496;0.82596;0.82725;0.82868;0.83024;0.83199;0.83388;0.83613;0.83872;0.8416;0.84479;0.84826;0.85201;0.85608;0.86048;
+14000;0.82252;0.82252;0.82293;0.82342;0.82408;0.82491;0.82592;0.82719;0.82863;0.83019;0.83194;0.83384;0.83609;0.83868;0.84157;0.84476;0.84822;0.85197;0.85604;0.86045;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.88723;0.88733;0.88761;0.88804;0.88864;0.88936;0.89022;0.89121;0.89257;0.89428;0.89625;0.89856;0.90097;0.90374;0.90694;0.91034;0.91394;0.91775;0.9218;0.92611;
+500;0.88363;0.8838;0.88407;0.88451;0.88509;0.8858;0.88665;0.88762;0.88895;0.89064;0.89257;0.89487;0.89727;0.90001;0.90317;0.90654;0.91015;0.91397;0.91802;0.92235;
+1000;0.88015;0.88024;0.88051;0.88095;0.88153;0.88223;0.88308;0.88404;0.88535;0.887;0.88889;0.89119;0.89357;0.89627;0.89939;0.90273;0.90635;0.91016;0.91422;0.91856;
+1500;0.87667;0.87669;0.87696;0.87739;0.87796;0.87865;0.87948;0.88045;0.88165;0.88327;0.88523;0.88748;0.88985;0.89253;0.8956;0.89891;0.90253;0.90634;0.9104;0.91475;
+2000;0.87304;0.87313;0.87339;0.87382;0.87439;0.87508;0.87591;0.87687;0.87805;0.87963;0.88156;0.88378;0.88613;0.88876;0.8918;0.89508;0.8987;0.9025;0.90656;0.91091;
+2500;0.86941;0.86954;0.86981;0.87023;0.8708;0.87149;0.87232;0.87328;0.87445;0.87599;0.87788;0.88007;0.88239;0.885;0.888;0.89123;0.89484;0.89864;0.9027;0.90706;
+3000;0.86584;0.86594;0.8662;0.86662;0.86719;0.86787;0.86871;0.86966;0.87083;0.87234;0.87419;0.87635;0.87866;0.88122;0.88419;0.88738;0.89098;0.89476;0.89882;0.90318;
+3500;0.86227;0.86229;0.86255;0.86298;0.86354;0.86423;0.86506;0.86602;0.86717;0.86866;0.87047;0.87262;0.87492;0.87744;0.88031;0.88354;0.88709;0.89083;0.89491;0.89927;
+4000;0.85853;0.85861;0.85887;0.8593;0.85986;0.86055;0.86137;0.86233;0.86348;0.86495;0.86682;0.86886;0.87117;0.87366;0.87651;0.87969;0.88321;0.88694;0.89099;0.89534;
+4500;0.85478;0.8549;0.85517;0.85559;0.85615;0.85682;0.85765;0.85861;0.85976;0.8612;0.86304;0.86508;0.86739;0.86987;0.87269;0.87583;0.87932;0.88303;0.88709;0.89141;
+5000;0.85107;0.85116;0.85142;0.85184;0.85239;0.85307;0.8539;0.85486;0.85601;0.85743;0.85925;0.86126;0.86357;0.86606;0.86886;0.87196;0.87541;0.87911;0.88316;0.88747;
+5500;0.84736;0.84738;0.84764;0.84806;0.84862;0.8493;0.85013;0.85109;0.85224;0.85365;0.85543;0.85742;0.85972;0.86222;0.865;0.86815;0.87149;0.87519;0.8792;0.88351;
+6000;0.84349;0.84358;0.84384;0.84426;0.84482;0.8455;0.84633;0.8473;0.84844;0.84983;0.8516;0.85357;0.85586;0.85836;0.86113;0.86425;0.86755;0.87124;0.87517;0.87953;
+6500;0.83962;0.83972;0.83999;0.84041;0.84097;0.84166;0.84251;0.84348;0.84462;0.84599;0.84774;0.84969;0.85198;0.85447;0.85724;0.86032;0.8636;0.86726;0.87117;0.87552;
+7000;0.83575;0.83584;0.83611;0.83653;0.83709;0.83778;0.83863;0.83962;0.84078;0.84213;0.84386;0.84579;0.84807;0.85056;0.85332;0.8563;0.85962;0.86326;0.86716;0.8715;
+7500;0.83188;0.83188;0.8322;0.83263;0.83319;0.83388;0.83474;0.83573;0.83689;0.83823;0.83997;0.84189;0.84415;0.84664;0.84939;0.85237;0.85566;0.85926;0.86322;0.86746;
+8000;0.82791;0.828;0.82826;0.82869;0.82926;0.82995;0.83082;0.83182;0.83299;0.83432;0.83596;0.83795;0.84021;0.84269;0.84543;0.84841;0.85168;0.85524;0.8592;0.86341;
+8500;0.82396;0.82405;0.82432;0.82475;0.82532;0.82602;0.82688;0.82789;0.82905;0.83038;0.832;0.83397;0.83623;0.83872;0.84144;0.84442;0.84768;0.85121;0.85506;0.85935;
+9000;0.82002;0.82003;0.82031;0.82075;0.82134;0.82205;0.82291;0.82393;0.82509;0.82641;0.82802;0.82996;0.83221;0.8347;0.83744;0.84041;0.84364;0.84716;0.85109;0.85526;
+9500;0.81579;0.81589;0.81616;0.81661;0.8172;0.81792;0.81882;0.81987;0.82108;0.82243;0.82401;0.82593;0.82816;0.83065;0.83338;0.83637;0.83958;0.8431;0.847;0.85116;
+10000;0.81157;0.81171;0.81198;0.81243;0.81302;0.81375;0.81466;0.81572;0.81693;0.81829;0.81989;0.82189;0.82408;0.82657;0.8293;0.83228;0.8355;0.83901;0.84289;0.84704;
+10500;0.8074;0.8075;0.80777;0.80822;0.80881;0.80955;0.81046;0.81153;0.81275;0.81411;0.8157;0.81768;0.81986;0.82238;0.82515;0.82816;0.83138;0.83489;0.83876;0.84289;
+11000;0.80324;0.80325;0.80353;0.80398;0.80457;0.80531;0.80622;0.8073;0.80853;0.8099;0.81149;0.81344;0.81561;0.81812;0.82089;0.8239;0.82716;0.83071;0.8346;0.83871;
+11500;0.80307;0.80317;0.80345;0.80389;0.80449;0.80522;0.80614;0.80722;0.80845;0.80983;0.81141;0.81337;0.81554;0.81805;0.82082;0.82383;0.82709;0.83065;0.83459;0.83876;
+12000;0.8029;0.80308;0.80336;0.80381;0.8044;0.80514;0.80606;0.80714;0.80837;0.80975;0.81134;0.8133;0.81547;0.81799;0.82076;0.82378;0.82704;0.83059;0.83453;0.8387;
+12500;0.8029;0.80299;0.80327;0.80372;0.80431;0.80505;0.80597;0.80706;0.80829;0.80967;0.81127;0.81323;0.81541;0.81793;0.8207;0.82372;0.82699;0.83053;0.83447;0.83864;
+13000;0.8029;0.80291;0.80318;0.80363;0.80423;0.80497;0.80589;0.80697;0.80821;0.80959;0.81119;0.81316;0.81534;0.81787;0.82065;0.82367;0.82693;0.83048;0.83442;0.83858;
+13500;0.80272;0.80282;0.80309;0.80354;0.80414;0.80488;0.80581;0.80689;0.80813;0.80951;0.81111;0.81309;0.81528;0.81781;0.82059;0.82361;0.82688;0.83042;0.83436;0.83852;
+14000;0.80254;0.80273;0.803;0.80345;0.80405;0.80479;0.80572;0.80681;0.80804;0.80943;0.81103;0.81302;0.81521;0.81774;0.82053;0.82355;0.82682;0.83045;0.8343;0.83846;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.86637;0.86652;0.86681;0.86726;0.86788;0.86864;0.86954;0.87065;0.8723;0.87423;0.8763;0.87853;0.88105;0.88399;0.8871;0.89027;0.89346;0.89664;0.89976;0.90285;
+500;0.86296;0.86305;0.86333;0.86377;0.86438;0.86513;0.866;0.86709;0.86871;0.8706;0.87268;0.8749;0.8774;0.88029;0.88342;0.88658;0.88979;0.89302;0.8962;0.89938;
+1000;0.85954;0.85954;0.85984;0.86027;0.86087;0.8616;0.86246;0.86353;0.86511;0.86696;0.86904;0.87124;0.87372;0.87658;0.8797;0.88287;0.8861;0.88936;0.89261;0.89587;
+1500;0.85598;0.85608;0.85635;0.85677;0.85736;0.85807;0.85892;0.85996;0.86151;0.86333;0.86539;0.86756;0.87001;0.8729;0.87596;0.87913;0.88238;0.88568;0.88898;0.89232;
+2000;0.85242;0.85257;0.85283;0.85325;0.85383;0.85453;0.85536;0.85639;0.8579;0.85968;0.86173;0.86387;0.86629;0.86914;0.87219;0.87536;0.87862;0.88195;0.88533;0.88874;
+2500;0.84886;0.84904;0.8493;0.84971;0.85028;0.85097;0.85179;0.8528;0.85428;0.85603;0.85807;0.86018;0.86257;0.86537;0.8684;0.87156;0.87483;0.8782;0.88162;0.88511;
+3000;0.8453;0.84547;0.84573;0.84614;0.8467;0.84738;0.84819;0.84919;0.85064;0.85236;0.85438;0.85648;0.85884;0.86161;0.86461;0.86775;0.87102;0.8744;0.87788;0.88144;
+3500;0.8418;0.84188;0.84214;0.84254;0.8431;0.84376;0.84457;0.84554;0.84697;0.84866;0.85067;0.85275;0.85508;0.85782;0.86081;0.86393;0.8672;0.87057;0.87409;0.87773;
+4000;0.83829;0.83827;0.83852;0.83892;0.83947;0.84012;0.84091;0.84187;0.84327;0.84492;0.84694;0.849;0.85128;0.85402;0.85697;0.86009;0.86335;0.86674;0.87027;0.87395;
+4500;0.83454;0.83462;0.83487;0.83527;0.83582;0.83646;0.83724;0.83819;0.83955;0.84117;0.84316;0.84521;0.84753;0.85018;0.85311;0.85622;0.85947;0.86287;0.86643;0.87015;
+5000;0.83086;0.83094;0.83119;0.83159;0.83213;0.83278;0.83355;0.83448;0.83581;0.83739;0.83936;0.84141;0.8437;0.84632;0.84921;0.85232;0.85556;0.85896;0.86254;0.86631;
+5500;0.82718;0.82722;0.82747;0.82786;0.8284;0.82904;0.82982;0.83075;0.83205;0.8336;0.83553;0.83757;0.83985;0.84242;0.84528;0.84839;0.85163;0.85503;0.85861;0.86242;
+6000;0.8235;0.8235;0.82372;0.8241;0.82464;0.82528;0.82605;0.82698;0.82825;0.82978;0.83169;0.83371;0.83596;0.83843;0.84133;0.84444;0.84767;0.85108;0.85467;0.85848;
+6500;0.81982;0.81968;0.81993;0.82032;0.82085;0.82148;0.82225;0.82317;0.82442;0.826;0.8278;0.82983;0.83198;0.8345;0.83735;0.84046;0.84369;0.84709;0.8507;0.85453;
+7000;0.81579;0.81587;0.81611;0.8165;0.81703;0.81766;0.81842;0.81933;0.82056;0.82211;0.82388;0.82591;0.82806;0.83055;0.83337;0.83646;0.83967;0.84308;0.84669;0.85054;
+7500;0.81195;0.81203;0.81227;0.81265;0.81317;0.81379;0.81456;0.81546;0.81667;0.81819;0.81994;0.82196;0.8241;0.82658;0.82935;0.83243;0.83564;0.83904;0.84266;0.84652;
+8000;0.80811;0.80814;0.80838;0.80877;0.80928;0.8099;0.81066;0.81156;0.81275;0.81425;0.81598;0.81799;0.82011;0.82256;0.8253;0.82838;0.83157;0.83497;0.83859;0.84246;
+8500;0.80402;0.8041;0.80435;0.80474;0.80527;0.80591;0.80669;0.80761;0.8088;0.81028;0.81199;0.81398;0.81609;0.81851;0.82129;0.82428;0.82748;0.83087;0.83449;0.83838;
+9000;0.79992;0.80003;0.80028;0.80067;0.8012;0.80183;0.80262;0.80353;0.80471;0.8062;0.80792;0.80996;0.81206;0.81444;0.81718;0.82014;0.82335;0.82675;0.83037;0.83426;
+9500;0.79583;0.79583;0.79617;0.79656;0.79709;0.79773;0.79851;0.79942;0.80059;0.80199;0.80375;0.80578;0.8079;0.81029;0.81304;0.81598;0.81919;0.82259;0.82621;0.8301;
+10000;0.79169;0.79178;0.79202;0.79241;0.79294;0.79358;0.79437;0.79528;0.79636;0.79782;0.79955;0.80156;0.80369;0.80606;0.80879;0.81171;0.81497;0.81837;0.82202;0.82592;
+10500;0.78756;0.78759;0.78784;0.78823;0.78876;0.7894;0.79019;0.7911;0.79219;0.79361;0.79532;0.79731;0.79945;0.80181;0.80451;0.80739;0.81064;0.81404;0.81774;0.8217;
+11000;0.78328;0.78337;0.78361;0.78401;0.78454;0.78518;0.78597;0.78688;0.78797;0.78937;0.79112;0.79303;0.79518;0.79752;0.80012;0.80305;0.80627;0.80967;0.81337;0.81734;
+11500;0.7832;0.78329;0.78354;0.78393;0.78446;0.7851;0.7859;0.78681;0.78791;0.78931;0.79106;0.79298;0.79512;0.79747;0.80007;0.803;0.80623;0.80962;0.81332;0.81728;
+12000;0.78312;0.78322;0.78346;0.78386;0.78439;0.78503;0.78583;0.78675;0.78784;0.78925;0.791;0.79292;0.79507;0.79742;0.80002;0.80296;0.80619;0.80958;0.81328;0.81723;
+12500;0.78304;0.78314;0.78339;0.78379;0.78432;0.78496;0.78576;0.78668;0.78777;0.78918;0.79094;0.79287;0.79502;0.79737;0.79998;0.80292;0.80615;0.80954;0.81323;0.81719;
+13000;0.78296;0.78307;0.78332;0.78372;0.78424;0.78489;0.78569;0.78661;0.78771;0.78912;0.79089;0.79282;0.79497;0.79732;0.79994;0.80288;0.80611;0.8095;0.81319;0.81714;
+13500;0.78288;0.783;0.78325;0.78364;0.78417;0.78482;0.78562;0.78654;0.78764;0.78906;0.79083;0.79277;0.79492;0.79728;0.7999;0.80285;0.80608;0.80946;0.81315;0.8171;
+14000;0.78284;0.78293;0.78317;0.78357;0.7841;0.78475;0.78555;0.78648;0.78758;0.789;0.79077;0.79271;0.79487;0.79724;0.79994;0.80282;0.80605;0.80946;0.81311;0.81705;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.84479;0.84503;0.84536;0.84586;0.84657;0.84738;0.84838;0.84975;0.85154;0.85349;0.85548;0.85775;0.86043;0.86319;0.86588;0.86837;0.87045;0.87179;0.87184;0.86932;
+500;0.84277;0.8416;0.84192;0.84242;0.84311;0.84389;0.84487;0.84621;0.84799;0.84993;0.85191;0.85417;0.85682;0.85959;0.86229;0.86482;0.86698;0.86849;0.86888;0.86722;
+1000;0.83805;0.83816;0.83847;0.83895;0.83963;0.8404;0.84137;0.84268;0.84443;0.84636;0.84832;0.85057;0.85319;0.85596;0.85867;0.86124;0.86348;0.86515;0.86585;0.86497;
+1500;0.83461;0.8347;0.83501;0.83548;0.83615;0.83691;0.83785;0.83915;0.84086;0.84277;0.84472;0.84695;0.84959;0.85231;0.85503;0.85763;0.85994;0.86175;0.86275;0.86243;
+2000;0.83111;0.83121;0.83152;0.83198;0.83264;0.83339;0.83432;0.83559;0.83729;0.83919;0.84111;0.84333;0.84593;0.84863;0.85136;0.85398;0.85636;0.8583;0.85955;0.8597;
+2500;0.82761;0.82769;0.82799;0.82845;0.8291;0.82984;0.83076;0.83202;0.8337;0.83558;0.8375;0.8397;0.84227;0.84496;0.84767;0.85031;0.85275;0.85482;0.85629;0.85683;
+3000;0.82412;0.82414;0.82443;0.82488;0.82552;0.82625;0.82716;0.8284;0.83006;0.83195;0.83385;0.83601;0.83859;0.84127;0.84398;0.84664;0.84912;0.85129;0.85295;0.85384;
+3500;0.82046;0.82056;0.82085;0.82129;0.82192;0.82264;0.82354;0.82476;0.8264;0.82827;0.83016;0.83228;0.83488;0.83757;0.84028;0.84294;0.84547;0.84771;0.84954;0.85074;
+4000;0.81681;0.81695;0.81723;0.81767;0.81829;0.81901;0.81989;0.82109;0.82272;0.82459;0.82645;0.82861;0.83113;0.83382;0.83655;0.83922;0.84177;0.8441;0.84606;0.84756;
+4500;0.8132;0.8133;0.81358;0.81401;0.81463;0.81533;0.81621;0.8174;0.81901;0.82086;0.82272;0.82485;0.82735;0.83004;0.83277;0.83547;0.83805;0.84043;0.84253;0.84424;
+5000;0.80959;0.80963;0.8099;0.81033;0.81093;0.81163;0.8125;0.81366;0.81526;0.81709;0.81895;0.82107;0.82354;0.82622;0.82896;0.83168;0.8343;0.83674;0.83894;0.84086;
+5500;0.80584;0.80593;0.8062;0.80662;0.80721;0.8079;0.80875;0.8099;0.81147;0.81328;0.81515;0.81726;0.8197;0.82237;0.82511;0.82785;0.83051;0.83303;0.83534;0.83742;
+6000;0.80208;0.80221;0.80247;0.80288;0.80347;0.80414;0.80498;0.80611;0.80765;0.80944;0.81131;0.81341;0.81583;0.81849;0.82123;0.82399;0.82671;0.82929;0.83171;0.83391;
+6500;0.79837;0.79846;0.79872;0.79912;0.79969;0.80039;0.80118;0.80229;0.80381;0.80557;0.80744;0.80951;0.81192;0.8146;0.81734;0.82013;0.82287;0.82551;0.82801;0.83035;
+7000;0.79466;0.79467;0.79493;0.79533;0.79589;0.79657;0.79736;0.79844;0.79995;0.80168;0.80356;0.80562;0.80799;0.81066;0.81342;0.81622;0.819;0.82169;0.82427;0.82673;
+7500;0.79068;0.79077;0.79103;0.79143;0.79199;0.79268;0.79348;0.79451;0.79608;0.79781;0.79966;0.80164;0.80404;0.80668;0.80944;0.81226;0.81507;0.81782;0.82047;0.82305;
+8000;0.78671;0.78685;0.78711;0.78751;0.78807;0.78875;0.78955;0.79055;0.79209;0.79382;0.7957;0.79769;0.8;0.80266;0.80543;0.80825;0.8111;0.81391;0.81663;0.81931;
+8500;0.78283;0.78292;0.78317;0.78356;0.78412;0.78478;0.78557;0.78656;0.78807;0.78978;0.79164;0.79362;0.79591;0.79856;0.80137;0.80419;0.80706;0.80994;0.81274;0.81552;
+9000;0.77896;0.77895;0.7792;0.77959;0.78013;0.78079;0.78157;0.78254;0.78401;0.7857;0.78754;0.78952;0.79177;0.79438;0.79718;0.80004;0.80296;0.8059;0.8088;0.81167;
+9500;0.77487;0.77495;0.77519;0.77558;0.77611;0.77676;0.77753;0.77849;0.77993;0.78159;0.78341;0.78537;0.7876;0.79017;0.79297;0.79582;0.79875;0.80173;0.80474;0.80776;
+10000;0.77077;0.77092;0.77116;0.77154;0.77206;0.77269;0.77345;0.77439;0.7758;0.77743;0.77925;0.7812;0.78339;0.78598;0.78871;0.79156;0.7945;0.79751;0.80057;0.80368;
+10500;0.76677;0.76685;0.76708;0.76745;0.76797;0.76859;0.76934;0.77027;0.77164;0.77324;0.77506;0.77699;0.77915;0.7817;0.78443;0.78726;0.79021;0.79324;0.79635;0.79954;
+11000;0.76266;0.76273;0.76297;0.76334;0.76385;0.76446;0.7652;0.76611;0.76746;0.76902;0.77083;0.77274;0.77488;0.77739;0.7801;0.78293;0.78588;0.78893;0.79208;0.79534;
+11500;0.76256;0.76265;0.76289;0.76326;0.76377;0.76438;0.76513;0.76604;0.76739;0.76896;0.77077;0.77268;0.77483;0.77734;0.7801;0.78288;0.78582;0.78886;0.79199;0.79523;
+12000;0.76246;0.76257;0.7628;0.76318;0.76369;0.7643;0.76505;0.76597;0.76732;0.7689;0.77071;0.77264;0.77477;0.77729;0.77999;0.78282;0.78575;0.78878;0.79191;0.79513;
+12500;0.76237;0.76248;0.76272;0.76309;0.76361;0.76422;0.76497;0.7659;0.76726;0.76884;0.77065;0.77258;0.77472;0.77723;0.77994;0.78276;0.78569;0.78871;0.79182;0.79502;
+13000;0.76231;0.76239;0.76263;0.763;0.76352;0.76414;0.7649;0.76582;0.76719;0.76878;0.77059;0.77252;0.77466;0.77718;0.77988;0.7827;0.78562;0.78864;0.79173;0.79491;
+13500;0.76226;0.76226;0.76254;0.76291;0.76343;0.76406;0.76482;0.76575;0.76712;0.76871;0.77052;0.77246;0.77461;0.77713;0.77983;0.78264;0.78556;0.78856;0.79164;0.7948;
+14000;0.76213;0.76221;0.76245;0.76282;0.76334;0.76397;0.76473;0.76567;0.76705;0.76864;0.77046;0.7724;0.77455;0.77707;0.77977;0.78258;0.78549;0.78849;0.79155;0.79468;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.8358;0.83592;0.83627;0.83681;0.83756;0.8384;0.83942;0.84093;0.84279;0.84469;0.8467;0.84912;0.85177;0.8544;0.85684;0.85883;0.85991;0.85919;0.85383;0.83628;
+500;0.83516;0.83255;0.8329;0.83343;0.83416;0.83498;0.83597;0.83744;0.83928;0.84118;0.84319;0.84557;0.8482;0.85083;0.85331;0.85537;0.85662;0.85631;0.85218;0.83827;
+1000;0.82907;0.82918;0.82952;0.83003;0.83076;0.83155;0.83253;0.83397;0.83574;0.83765;0.83965;0.84199;0.84462;0.84725;0.84974;0.85187;0.85328;0.85332;0.85023;0.83935;
+1500;0.82568;0.82578;0.82612;0.82662;0.82733;0.82812;0.82909;0.8305;0.83223;0.83413;0.8361;0.83839;0.84103;0.84364;0.84615;0.84835;0.8499;0.85023;0.84801;0.83978;
+2000;0.82224;0.82235;0.82268;0.82318;0.82388;0.82465;0.82562;0.827;0.82871;0.83061;0.83253;0.8348;0.83739;0.84;0.84254;0.84479;0.84647;0.84709;0.84556;0.83922;
+2500;0.8188;0.81887;0.8192;0.81968;0.82038;0.82115;0.8221;0.82348;0.82517;0.82706;0.82897;0.83116;0.83378;0.83637;0.83891;0.8412;0.84299;0.84386;0.843;0.83815;
+3000;0.81526;0.81537;0.81568;0.81616;0.81685;0.81761;0.81855;0.81991;0.82159;0.82348;0.82538;0.82756;0.83014;0.83274;0.83527;0.8376;0.83947;0.84055;0.84018;0.83665;
+3500;0.81171;0.81183;0.81214;0.81261;0.81329;0.81404;0.81497;0.81631;0.81797;0.81986;0.82175;0.82391;0.82647;0.82907;0.83161;0.83395;0.83592;0.83717;0.83721;0.83478;
+4000;0.80814;0.80824;0.80855;0.80901;0.80968;0.81043;0.81136;0.81268;0.81436;0.8162;0.81808;0.82024;0.82277;0.82537;0.82792;0.8303;0.83231;0.83373;0.83408;0.83255;
+4500;0.80456;0.80463;0.80493;0.80538;0.80604;0.80678;0.80769;0.80899;0.81067;0.81251;0.81438;0.81653;0.81903;0.82164;0.82419;0.8266;0.82869;0.83022;0.83085;0.83001;
+5000;0.80088;0.80098;0.80127;0.80172;0.80237;0.8031;0.804;0.80528;0.80694;0.80877;0.81065;0.8128;0.81526;0.81787;0.82043;0.82286;0.82502;0.82668;0.82756;0.82721;
+5500;0.7972;0.79731;0.79759;0.79804;0.79867;0.79939;0.80028;0.80153;0.80317;0.805;0.80686;0.80901;0.81147;0.81408;0.81664;0.8191;0.82131;0.82309;0.8242;0.82423;
+6000;0.79351;0.7936;0.79388;0.79432;0.79494;0.79565;0.79652;0.79776;0.79938;0.80119;0.80304;0.80517;0.80767;0.81025;0.81282;0.8153;0.81757;0.81945;0.82076;0.82117;
+6500;0.78981;0.78987;0.79014;0.79057;0.79118;0.79188;0.79274;0.79395;0.79555;0.79735;0.79919;0.8013;0.80377;0.80636;0.80897;0.81146;0.81378;0.81577;0.81726;0.818;
+7000;0.78592;0.78602;0.7863;0.78672;0.78734;0.78804;0.78891;0.79011;0.7917;0.79348;0.7953;0.79738;0.79985;0.80244;0.80505;0.8076;0.80996;0.81204;0.81369;0.81472;
+7500;0.78203;0.78214;0.78241;0.78283;0.78344;0.78412;0.78498;0.78616;0.78774;0.78954;0.79137;0.79342;0.79589;0.79848;0.8011;0.80367;0.8061;0.80826;0.81006;0.81135;
+8000;0.77814;0.77823;0.77849;0.77891;0.7795;0.78018;0.78102;0.78218;0.78374;0.78553;0.78733;0.78941;0.79184;0.79445;0.79711;0.79971;0.80218;0.80444;0.80637;0.80792;
+8500;0.77424;0.77429;0.77455;0.77495;0.77554;0.7762;0.77704;0.77817;0.7797;0.78147;0.78327;0.78533;0.78773;0.79033;0.79299;0.79564;0.7982;0.80055;0.80263;0.8044;
+9000;0.77023;0.77031;0.77057;0.77097;0.77154;0.7722;0.77302;0.77413;0.77564;0.77738;0.77917;0.78121;0.78358;0.78617;0.78883;0.7915;0.7941;0.79654;0.79881;0.8008;
+9500;0.76621;0.76631;0.76656;0.76696;0.76752;0.76816;0.76897;0.77006;0.77155;0.77326;0.77504;0.77706;0.7794;0.78198;0.78463;0.78731;0.78995;0.79248;0.79486;0.79703;
+10000;0.76219;0.76227;0.76252;0.76291;0.76346;0.76412;0.76489;0.76596;0.76742;0.7691;0.77089;0.77288;0.77518;0.77777;0.7804;0.7831;0.78579;0.78839;0.79085;0.79317;
+10500;0.75817;0.7582;0.75844;0.75882;0.75937;0.76002;0.76078;0.76182;0.76326;0.76492;0.7667;0.76867;0.77094;0.77349;0.77616;0.77887;0.78158;0.78424;0.78678;0.78924;
+11000;0.754;0.75409;0.75433;0.7547;0.75524;0.75588;0.75663;0.75765;0.75906;0.76071;0.76249;0.76438;0.76669;0.76922;0.77188;0.77459;0.77733;0.78004;0.78267;0.78524;
+11500;0.75393;0.75402;0.75426;0.75464;0.75517;0.75581;0.75657;0.7576;0.75901;0.76065;0.76242;0.76431;0.76662;0.76914;0.7718;0.77451;0.77724;0.77993;0.78254;0.78508;
+12000;0.75386;0.75396;0.7542;0.75457;0.75511;0.75575;0.7565;0.75754;0.75895;0.7606;0.76237;0.76426;0.76655;0.76907;0.77172;0.77443;0.77715;0.77982;0.7824;0.78492;
+12500;0.75381;0.75389;0.75413;0.75451;0.75504;0.75568;0.75644;0.75748;0.75889;0.76054;0.76231;0.76425;0.76649;0.76902;0.77165;0.77434;0.77705;0.77971;0.78227;0.78476;
+13000;0.75376;0.75382;0.75406;0.75444;0.75497;0.75562;0.75637;0.75741;0.75883;0.76048;0.76225;0.7642;0.76644;0.76897;0.77159;0.77426;0.77696;0.77959;0.78213;0.78459;
+13500;0.75371;0.75371;0.75399;0.75437;0.7549;0.75555;0.75631;0.75735;0.75877;0.76042;0.76219;0.76414;0.76639;0.76891;0.77152;0.7742;0.77687;0.77948;0.78199;0.78443;
+14000;0.7536;0.75368;0.75392;0.7543;0.75483;0.75548;0.75624;0.75729;0.75871;0.76036;0.76213;0.76408;0.76633;0.76886;0.77146;0.77413;0.77679;0.77937;0.78186;0.78426;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.82622;0.82638;0.82678;0.82735;0.82817;0.82907;0.83015;0.83184;0.83379;0.83563;0.83776;0.84026;0.84282;0.84526;0.84728;0.84836;0.84729;0.83987;0.81231;-9999;
+500;0.8229;0.82305;0.82345;0.82401;0.82482;0.82569;0.82674;0.82839;0.83031;0.83214;0.83425;0.83673;0.83929;0.84175;0.84384;0.84507;0.84442;0.83846;0.81587;-9999;
+1000;0.81959;0.81974;0.82011;0.82067;0.82146;0.82231;0.82334;0.82495;0.82684;0.82864;0.83072;0.83318;0.83574;0.83823;0.84036;0.84173;0.84145;0.83672;0.81832;-9999;
+1500;0.81629;0.81641;0.81676;0.81731;0.81808;0.81892;0.81993;0.82151;0.82337;0.82516;0.8272;0.82961;0.83217;0.83467;0.83685;0.83834;0.83838;0.83469;0.81979;-9999;
+2000;0.81291;0.81303;0.81339;0.81392;0.81469;0.81551;0.81651;0.81806;0.8199;0.82168;0.82369;0.82606;0.82859;0.83108;0.83331;0.83491;0.83523;0.83242;0.8207;-9999;
+2500;0.80952;0.80961;0.80997;0.8105;0.81125;0.81206;0.81305;0.81458;0.81639;0.81818;0.82016;0.8225;0.82502;0.82749;0.82974;0.83144;0.832;0.82994;0.8207;-9999;
+3000;0.80606;0.80618;0.80653;0.80705;0.80778;0.80858;0.80955;0.81105;0.81285;0.81463;0.8166;0.81892;0.82143;0.8239;0.82616;0.82793;0.8287;0.82735;0.82015;-9999;
+3500;0.80259;0.8027;0.80304;0.80354;0.80427;0.80506;0.80602;0.8075;0.80927;0.81105;0.81299;0.81529;0.81779;0.82027;0.82256;0.82439;0.82532;0.82445;0.81893;0.80223;
+4000;0.79907;0.79918;0.79951;0.80001;0.80073;0.8015;0.80245;0.80391;0.80567;0.80745;0.80932;0.81163;0.81413;0.81661;0.81892;0.82082;0.8219;0.82141;0.81707;0.80298;
+4500;0.79556;0.79563;0.79596;0.79644;0.79715;0.79791;0.79885;0.80028;0.80202;0.8038;0.80569;0.80795;0.81043;0.81291;0.81524;0.8172;0.81843;0.81825;0.81492;0.80366;
+5000;0.79193;0.79204;0.79236;0.79284;0.79354;0.79429;0.79522;0.79662;0.79832;0.80012;0.802;0.80423;0.80671;0.80918;0.81153;0.81355;0.81491;0.81503;0.81251;0.80362;
+5500;0.78831;0.78843;0.78873;0.7892;0.78989;0.79063;0.79155;0.79293;0.7946;0.7964;0.79827;0.80047;0.80295;0.80543;0.80779;0.80986;0.81134;0.81172;0.80993;0.80311;
+6000;0.78467;0.78477;0.78507;0.78553;0.7862;0.78693;0.78784;0.7892;0.79086;0.79265;0.79452;0.79667;0.79916;0.80163;0.80402;0.80613;0.80772;0.80836;0.80722;0.80191;
+6500;0.78089;0.78099;0.7813;0.78176;0.78243;0.78317;0.78408;0.78544;0.78707;0.78886;0.7907;0.79285;0.79531;0.79779;0.8002;0.80237;0.80405;0.80491;0.80424;0.80029;
+7000;0.77711;0.77718;0.77748;0.77793;0.77859;0.77932;0.78022;0.78155;0.78318;0.785;0.78685;0.789;0.79143;0.79391;0.79633;0.79855;0.80035;0.80138;0.80112;0.79828;
+7500;0.77333;0.77333;0.77362;0.77407;0.77472;0.77543;0.77632;0.77763;0.77923;0.78105;0.78289;0.785;0.78748;0.78999;0.79243;0.79469;0.79658;0.7978;0.7979;0.79595;
+8000;0.76935;0.76945;0.76974;0.77018;0.77081;0.77152;0.77239;0.77367;0.77525;0.77707;0.77889;0.781;0.78344;0.78595;0.78842;0.79074;0.79275;0.79415;0.79457;0.79334;
+8500;0.76538;0.76554;0.76582;0.76625;0.76687;0.76757;0.76843;0.76968;0.77129;0.77305;0.77486;0.77695;0.77936;0.78188;0.78435;0.78671;0.78878;0.79035;0.79111;0.79056;
+9000;0.7614;0.76159;0.76187;0.76229;0.7629;0.76359;0.76444;0.76566;0.76724;0.76899;0.77079;0.77286;0.77526;0.77777;0.78025;0.78263;0.78477;0.78648;0.78751;0.78744;
+9500;0.75743;0.75761;0.75788;0.75829;0.7589;0.75957;0.76041;0.76161;0.76317;0.7649;0.76668;0.76874;0.77111;0.77363;0.77612;0.77852;0.78072;0.78255;0.78379;0.78414;
+10000;0.75346;0.7536;0.75386;0.75427;0.75486;0.75552;0.75635;0.75753;0.75906;0.76078;0.76254;0.76458;0.76696;0.76944;0.77195;0.77437;0.77662;0.77856;0.78;0.78071;
+10500;0.74946;0.74955;0.7498;0.7502;0.75078;0.75144;0.75225;0.75341;0.75492;0.75662;0.75837;0.76038;0.76274;0.76522;0.76774;0.77019;0.77249;0.77452;0.77614;0.77715;
+11000;0.74546;0.74546;0.74571;0.74611;0.74667;0.74732;0.74812;0.74925;0.75074;0.75243;0.75417;0.75612;0.75849;0.76096;0.76348;0.76596;0.7683;0.77042;0.7722;0.77349;
+11500;0.7453;0.74539;0.74565;0.74604;0.74661;0.74725;0.74806;0.74919;0.75067;0.75237;0.7541;0.75606;0.75842;0.76089;0.76341;0.76587;0.7682;0.7703;0.77204;0.77327;
+12000;0.74515;0.74533;0.74558;0.74597;0.74654;0.74718;0.74799;0.74912;0.75061;0.7523;0.75404;0.756;0.75835;0.76082;0.76332;0.76578;0.76809;0.77017;0.77188;0.77306;
+12500;0.74517;0.74526;0.74551;0.7459;0.74647;0.74711;0.74792;0.74906;0.75055;0.75224;0.75397;0.75594;0.75828;0.76075;0.76324;0.76569;0.76799;0.77004;0.77172;0.77284;
+13000;0.7452;0.74519;0.74544;0.74583;0.7464;0.74704;0.74785;0.74899;0.75048;0.75217;0.75391;0.75589;0.75822;0.76067;0.76316;0.76559;0.76788;0.76991;0.77155;0.77261;
+13500;0.74502;0.74511;0.74536;0.74576;0.74633;0.74697;0.74778;0.74892;0.75042;0.7521;0.75384;0.75583;0.75815;0.7606;0.76308;0.7655;0.76777;0.76977;0.77138;0.77238;
+14000;0.74485;0.74503;0.74528;0.74568;0.74625;0.74689;0.74771;0.74885;0.75035;0.75203;0.75377;0.75576;0.75808;0.76053;0.763;0.76541;0.76766;0.76964;0.77121;0.77215;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.81627;0.81648;0.81689;0.81759;0.8185;0.81948;0.82077;0.82252;0.82452;0.8264;0.82861;0.83108;0.83351;0.83561;0.83684;0.83577;0.82768;0.79207;-9999;-9999;
+500;0.81295;0.81315;0.8136;0.81424;0.81516;0.81614;0.81739;0.8191;0.82108;0.82296;0.82514;0.82761;0.83005;0.83219;0.83355;0.83289;0.82623;0.79692;-9999;-9999;
+1000;0.80978;0.80995;0.8104;0.81099;0.81186;0.81281;0.81402;0.81571;0.81764;0.81948;0.82163;0.82411;0.82655;0.82874;0.83021;0.82991;0.82449;0.80067;-9999;-9999;
+1500;0.80649;0.80666;0.80709;0.80767;0.80853;0.80945;0.81065;0.8123;0.81422;0.81603;0.81813;0.82058;0.82303;0.82525;0.82683;0.82685;0.82248;0.8028;-9999;-9999;
+2000;0.80321;0.80333;0.80374;0.80432;0.80517;0.80607;0.80724;0.80888;0.81077;0.81257;0.81461;0.81707;0.81949;0.82173;0.82341;0.8237;0.82025;0.80417;-9999;-9999;
+2500;0.79981;0.79997;0.80036;0.80093;0.80176;0.80265;0.8038;0.80541;0.80729;0.80908;0.81115;0.81355;0.81597;0.81821;0.81995;0.82047;0.81781;0.80496;-9999;-9999;
+3000;0.7964;0.79655;0.79694;0.7975;0.79833;0.7992;0.80033;0.80192;0.80378;0.80554;0.80759;0.80999;0.81241;0.81468;0.81646;0.81717;0.81525;0.80485;-9999;-9999;
+3500;0.793;0.79311;0.79349;0.79404;0.79485;0.7957;0.79681;0.79839;0.80024;0.80199;0.80401;0.80639;0.80881;0.8111;0.81295;0.81381;0.81238;0.80412;0.77647;-9999;
+4000;0.78959;0.78959;0.78998;0.79055;0.79134;0.79218;0.79327;0.79482;0.79665;0.7984;0.80041;0.80277;0.80518;0.80748;0.80939;0.8104;0.8094;0.80264;0.77765;-9999;
+4500;0.78601;0.78615;0.78651;0.78704;0.78781;0.78863;0.7897;0.79122;0.79303;0.79477;0.79676;0.79912;0.80152;0.80383;0.80579;0.80693;0.80632;0.80084;0.78;-9999;
+5000;0.78244;0.78262;0.78297;0.78349;0.78425;0.78505;0.7861;0.7876;0.78939;0.79111;0.79308;0.79541;0.79783;0.80015;0.80215;0.80343;0.80314;0.79877;0.78192;-9999;
+5500;0.77886;0.77906;0.77941;0.77992;0.78066;0.78145;0.78247;0.78395;0.78572;0.78742;0.78937;0.79168;0.79409;0.79644;0.79848;0.79986;0.79987;0.79644;0.78266;-9999;
+6000;0.77527;0.77539;0.77573;0.77624;0.77699;0.77777;0.7788;0.78027;0.78202;0.78371;0.78564;0.78791;0.79032;0.79267;0.79477;0.79626;0.79651;0.79389;0.783;-9999;
+6500;0.77168;0.77168;0.77203;0.77251;0.77324;0.77401;0.77495;0.77646;0.77822;0.77993;0.78186;0.78412;0.78652;0.78887;0.791;0.7926;0.79309;0.79113;0.78251;-9999;
+7000;0.76782;0.76794;0.76826;0.76875;0.76947;0.77022;0.77115;0.77262;0.77436;0.77606;0.77797;0.78022;0.78264;0.78504;0.7872;0.78888;0.78959;0.78828;0.78155;-9999;
+7500;0.76397;0.76416;0.76448;0.76496;0.76566;0.7664;0.76731;0.76876;0.77046;0.77217;0.77404;0.77626;0.77868;0.78107;0.78329;0.78508;0.78601;0.78519;0.77994;-9999;
+8000;0.76024;0.76035;0.76066;0.76113;0.76182;0.76255;0.76344;0.76486;0.76654;0.76824;0.77004;0.77228;0.77468;0.77708;0.77932;0.78117;0.78227;0.78186;0.7779;0.7643;
+8500;0.75652;0.75652;0.75681;0.75726;0.75794;0.75865;0.75954;0.76093;0.76257;0.76428;0.76607;0.76826;0.77066;0.77305;0.77531;0.77723;0.77848;0.77841;0.77547;0.76513;
+9000;0.7525;0.7526;0.7529;0.75335;0.75402;0.75472;0.7556;0.75696;0.75858;0.76028;0.76208;0.76422;0.7666;0.76899;0.77126;0.77325;0.77463;0.77486;0.77276;0.76492;
+9500;0.74849;0.74867;0.74896;0.7494;0.75006;0.75075;0.75162;0.75295;0.75455;0.75625;0.75804;0.76014;0.76255;0.7649;0.76719;0.76922;0.77071;0.77124;0.7698;0.76405;
+10000;0.74447;0.7447;0.74499;0.74542;0.74606;0.74674;0.7476;0.74891;0.75049;0.75218;0.75398;0.75603;0.75841;0.76077;0.76307;0.76514;0.76675;0.76751;0.76671;0.76242;
+10500;0.74046;0.74069;0.74097;0.74139;0.74202;0.7427;0.74355;0.74482;0.74638;0.74808;0.74984;0.75189;0.75423;0.7566;0.75891;0.76103;0.76273;0.76371;0.76336;0.76033;
+11000;0.73645;0.73665;0.73692;0.73733;0.73795;0.73862;0.73946;0.7407;0.74223;0.74393;0.74567;0.74767;0.75003;0.7524;0.75472;0.75687;0.75866;0.75983;0.75987;0.75785;
+11500;0.73647;0.73657;0.73684;0.73725;0.73787;0.73854;0.73938;0.74063;0.74216;0.74385;0.74559;0.74759;0.74995;0.75231;0.75462;0.75676;0.75852;0.75966;0.75963;0.75743;
+12000;0.7365;0.73649;0.73676;0.73717;0.73779;0.73846;0.73929;0.74055;0.74208;0.74377;0.74551;0.7475;0.74986;0.75222;0.75452;0.75665;0.75841;0.75948;0.75938;0.75699;
+12500;0.73632;0.73641;0.73668;0.73709;0.73771;0.73837;0.73921;0.74047;0.742;0.74369;0.74543;0.74742;0.74978;0.75213;0.75443;0.75654;0.75826;0.75931;0.75913;0.75654;
+13000;0.73614;0.73633;0.7366;0.73701;0.73763;0.73829;0.73912;0.74039;0.74192;0.7436;0.74534;0.74737;0.74969;0.75203;0.75433;0.75642;0.75812;0.75913;0.75887;0.75608;
+13500;0.73615;0.73624;0.73651;0.73693;0.73755;0.73821;0.73904;0.7403;0.74184;0.74351;0.74526;0.74728;0.7496;0.75194;0.75423;0.75631;0.75799;0.75895;0.75861;0.7556;
+14000;0.73617;0.73615;0.73642;0.73684;0.73746;0.73812;0.73896;0.74022;0.74176;0.74343;0.74517;0.74719;0.74951;0.75184;0.75413;0.7562;0.75784;0.75877;0.75835;0.7551;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.80697;0.8072;0.8077;0.80849;0.80951;0.81065;0.81209;0.81395;0.81594;0.81786;0.82008;0.82241;0.82446;0.82566;0.82471;0.81668;0.77931;-9999;-9999;-9999;
+500;0.80364;0.80364;0.80432;0.8051;0.8061;0.80719;0.8086;0.81041;0.81239;0.81429;0.8165;0.81885;0.82095;0.82228;0.82171;0.81496;0.78463;-9999;-9999;-9999;
+1000;0.8003;0.80049;0.80096;0.80171;0.80269;0.80375;0.80512;0.80691;0.80886;0.81072;0.8129;0.81526;0.81741;0.81886;0.81862;0.813;0.78797;-9999;-9999;-9999;
+1500;0.79696;0.79712;0.79757;0.7983;0.79927;0.8003;0.80165;0.80341;0.80534;0.80718;0.80932;0.81165;0.81383;0.81541;0.81547;0.81112;0.78987;-9999;-9999;-9999;
+2000;0.79354;0.79373;0.79416;0.79487;0.79582;0.79683;0.79815;0.7999;0.8018;0.80362;0.80575;0.80808;0.81025;0.81191;0.81218;0.8088;0.79116;-9999;-9999;-9999;
+2500;0.79012;0.79012;0.79071;0.79142;0.79235;0.79334;0.79463;0.79635;0.79825;0.80005;0.80216;0.80449;0.80669;0.8084;0.80888;0.80629;0.79186;-9999;-9999;-9999;
+3000;0.78666;0.78684;0.78732;0.78792;0.78884;0.78981;0.79108;0.79279;0.79466;0.79645;0.79854;0.80087;0.80309;0.80487;0.80557;0.80354;0.79171;-9999;-9999;-9999;
+3500;0.78319;0.78336;0.78382;0.7844;0.78531;0.78626;0.7875;0.78918;0.79105;0.79283;0.7949;0.79722;0.79946;0.80132;0.80226;0.80072;0.79103;-9999;-9999;-9999;
+4000;0.77968;0.77985;0.78029;0.78087;0.78175;0.78269;0.7839;0.78555;0.78741;0.78917;0.79123;0.79357;0.79584;0.79781;0.7989;0.79778;0.78969;0.75368;-9999;-9999;
+4500;0.77617;0.77617;0.77669;0.77732;0.77818;0.77909;0.78028;0.78191;0.78375;0.78551;0.78759;0.78994;0.79225;0.79424;0.79545;0.79473;0.78805;0.75891;-9999;-9999;
+5000;0.7726;0.77285;0.7732;0.77381;0.77463;0.77553;0.7767;0.77831;0.78014;0.78188;0.78393;0.78627;0.78859;0.79064;0.79196;0.79159;0.78611;0.76179;-9999;-9999;
+5500;0.76906;0.76921;0.7696;0.77017;0.77102;0.77191;0.77308;0.77468;0.77649;0.77822;0.78025;0.78258;0.7849;0.78698;0.78842;0.78835;0.78391;0.76376;-9999;-9999;
+6000;0.76542;0.76557;0.76595;0.76651;0.76734;0.76822;0.76936;0.77094;0.77276;0.7745;0.77653;0.77885;0.78117;0.78328;0.78481;0.78503;0.78147;0.76502;-9999;-9999;
+6500;0.76178;0.7619;0.76228;0.76282;0.76364;0.76449;0.7656;0.76716;0.76896;0.77068;0.77268;0.77502;0.77737;0.77954;0.78115;0.7816;0.77893;0.76563;-9999;-9999;
+7000;0.75815;0.75815;0.75854;0.75911;0.7599;0.76073;0.76182;0.76335;0.76513;0.76683;0.76882;0.77114;0.77348;0.77567;0.77739;0.77805;0.77607;0.76533;-9999;-9999;
+7500;0.75435;0.75448;0.75484;0.75536;0.75614;0.75694;0.75801;0.75952;0.76128;0.76296;0.76492;0.76722;0.76956;0.77177;0.77355;0.77438;0.77295;0.76458;-9999;-9999;
+8000;0.75056;0.75072;0.75107;0.75158;0.75234;0.75313;0.75417;0.75565;0.75739;0.75905;0.761;0.76328;0.76561;0.76783;0.76967;0.77065;0.76969;0.76301;0.7399;-9999;
+8500;0.74676;0.74693;0.74727;0.74777;0.74851;0.74928;0.7503;0.75176;0.75347;0.75512;0.75704;0.7593;0.76162;0.76386;0.76575;0.76687;0.76631;0.76104;0.74018;-9999;
+9000;0.74297;0.74311;0.74344;0.74392;0.74465;0.7454;0.7464;0.74783;0.74953;0.75116;0.75306;0.7553;0.7576;0.75985;0.76178;0.76303;0.76281;0.75872;0.74209;-9999;
+9500;0.73918;0.73925;0.73957;0.74005;0.74076;0.74149;0.74247;0.74388;0.74555;0.74717;0.74904;0.75125;0.75355;0.7558;0.75778;0.75914;0.75921;0.7561;0.74314;-9999;
+10000;0.73538;0.73538;0.73568;0.73613;0.73683;0.73755;0.7385;0.73989;0.74154;0.74315;0.74499;0.74717;0.74947;0.75172;0.75373;0.75519;0.75553;0.75322;0.7433;-9999;
+10500;0.73132;0.73142;0.73173;0.73218;0.73287;0.73357;0.7345;0.73586;0.73749;0.7391;0.74091;0.74306;0.74535;0.7476;0.74964;0.7512;0.75177;0.75013;0.74272;-9999;
+11000;0.72726;0.72745;0.72775;0.72819;0.72886;0.72956;0.73047;0.7318;0.73341;0.73501;0.73679;0.73891;0.74119;0.74344;0.74551;0.74715;0.74792;0.7469;0.74116;-9999;
+11500;0.72725;0.72736;0.72765;0.7281;0.72877;0.72946;0.73031;0.7317;0.73332;0.73491;0.7367;0.73882;0.74109;0.74334;0.7454;0.74701;0.74774;0.74664;0.74059;-9999;
+12000;0.72715;0.72726;0.72755;0.728;0.72867;0.72936;0.73021;0.73161;0.73322;0.73481;0.7366;0.73872;0.741;0.74324;0.74529;0.74688;0.74757;0.74636;0.73999;-9999;
+12500;0.72706;0.72716;0.72745;0.72789;0.72857;0.72926;0.73012;0.73151;0.73313;0.73472;0.73651;0.73863;0.7409;0.74314;0.74517;0.74674;0.74739;0.74601;0.73939;-9999;
+13000;0.72695;0.72705;0.72735;0.72779;0.72846;0.72915;0.73001;0.73141;0.73303;0.73462;0.73641;0.73853;0.7408;0.74303;0.74505;0.7466;0.7472;0.74572;0.73876;-9999;
+13500;0.72685;0.72695;0.72724;0.72769;0.72836;0.72905;0.72991;0.73131;0.73293;0.73451;0.73631;0.73843;0.7407;0.74292;0.74494;0.74646;0.74702;0.74542;0.73791;-9999;
+14000;0.72673;0.72684;0.72713;0.72758;0.72826;0.72894;0.72981;0.73121;0.73283;0.73441;0.73621;0.73833;0.7406;0.74282;0.74482;0.74632;0.74683;0.74512;0.73721;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.79782;0.7981;0.79873;0.79953;0.80084;0.80208;0.80372;0.80573;0.80768;0.80967;0.81182;0.8138;0.81504;0.81438;0.80738;0.77343;-9999;-9999;-9999;-9999;
+500;0.79453;0.79453;0.79533;0.79612;0.79739;0.7986;0.80018;0.80215;0.80409;0.80605;0.80823;0.81025;0.81162;0.81114;0.80535;0.77729;-9999;-9999;-9999;-9999;
+1000;0.79124;0.79137;0.79195;0.79271;0.79394;0.79512;0.79667;0.79861;0.80052;0.80245;0.8046;0.80667;0.80816;0.80797;0.80314;0.77964;-9999;-9999;-9999;-9999;
+1500;0.78775;0.78798;0.78853;0.78929;0.79048;0.79163;0.79314;0.79506;0.79697;0.79887;0.80101;0.80307;0.80465;0.80475;0.80083;0.78079;-9999;-9999;-9999;-9999;
+2000;0.78425;0.78456;0.78509;0.78584;0.78699;0.78812;0.7896;0.79149;0.79339;0.79528;0.79742;0.79952;0.80114;0.80145;0.79828;0.78136;-9999;-9999;-9999;-9999;
+2500;0.78088;0.7811;0.78162;0.78234;0.78347;0.78458;0.78603;0.78791;0.7898;0.79168;0.79381;0.79593;0.79764;0.79813;0.79553;0.78134;-9999;-9999;-9999;-9999;
+3000;0.77752;0.77762;0.77812;0.77889;0.77993;0.78102;0.78243;0.78428;0.78618;0.78804;0.79017;0.79232;0.79409;0.79478;0.7927;0.78073;-9999;-9999;-9999;-9999;
+3500;0.77392;0.77412;0.77461;0.77535;0.77637;0.77744;0.77881;0.78064;0.78252;0.78438;0.78651;0.78867;0.79051;0.79136;0.78977;0.77955;-9999;-9999;-9999;-9999;
+4000;0.77041;0.77061;0.77107;0.7718;0.77279;0.77383;0.77517;0.77697;0.77885;0.78068;0.7828;0.785;0.7869;0.7879;0.78674;0.77807;-9999;-9999;-9999;-9999;
+4500;0.76689;0.76707;0.76752;0.76822;0.7692;0.77021;0.77151;0.77329;0.77515;0.77696;0.77907;0.78128;0.78324;0.78439;0.78359;0.7763;0.74192;-9999;-9999;-9999;
+5000;0.76324;0.76343;0.76386;0.76456;0.76552;0.76653;0.76782;0.76959;0.77143;0.77323;0.77531;0.77753;0.77953;0.78082;0.78036;0.77427;0.74624;-9999;-9999;-9999;
+5500;0.75958;0.75976;0.76017;0.76085;0.7618;0.76277;0.76403;0.76579;0.76764;0.76944;0.77154;0.77376;0.77579;0.77719;0.77696;0.77209;0.74882;-9999;-9999;-9999;
+6000;0.75592;0.75607;0.75653;0.75712;0.75805;0.75899;0.76021;0.76196;0.7638;0.76557;0.76765;0.76991;0.772;0.77351;0.77356;0.76966;0.75025;-9999;-9999;-9999;
+6500;0.75226;0.75235;0.75278;0.75336;0.75427;0.7552;0.75638;0.7581;0.75992;0.76168;0.76374;0.766;0.76811;0.76971;0.77002;0.76707;0.75091;-9999;-9999;-9999;
+7000;0.74843;0.74859;0.74901;0.74958;0.75047;0.75137;0.75258;0.75422;0.75603;0.75776;0.7598;0.76205;0.76419;0.76586;0.76639;0.76414;0.75099;-9999;-9999;-9999;
+7500;0.74459;0.74481;0.74521;0.74577;0.74664;0.74752;0.74871;0.75032;0.75211;0.75382;0.75584;0.75809;0.76024;0.76198;0.76269;0.76107;0.75036;-9999;-9999;-9999;
+8000;0.74085;0.74101;0.74139;0.74194;0.74279;0.74365;0.74481;0.74639;0.74817;0.74986;0.75185;0.75409;0.75626;0.75805;0.759;0.75787;0.74918;-9999;-9999;-9999;
+8500;0.73711;0.73718;0.73755;0.73809;0.73892;0.73976;0.74088;0.74244;0.7442;0.74587;0.74783;0.75007;0.75224;0.75413;0.75531;0.75454;0.74765;0.71598;-9999;-9999;
+9000;0.73318;0.73332;0.73368;0.73421;0.73502;0.73583;0.73693;0.73847;0.7402;0.74185;0.74379;0.74605;0.74826;0.75022;0.75147;0.7511;0.74556;0.72092;-9999;-9999;
+9500;0.72925;0.72943;0.72979;0.7303;0.73109;0.73188;0.73296;0.73448;0.7362;0.73785;0.7398;0.74204;0.74426;0.74625;0.7476;0.74754;0.74315;0.72279;-9999;-9999;
+10000;0.72538;0.72551;0.72586;0.72636;0.72716;0.72796;0.72902;0.73052;0.73223;0.73387;0.73578;0.73801;0.74022;0.74223;0.74368;0.74386;0.74047;0.72421;-9999;-9999;
+10500;0.72151;0.72164;0.72198;0.72248;0.72325;0.72402;0.72506;0.72653;0.72822;0.72984;0.73173;0.73393;0.73614;0.73818;0.73971;0.74012;0.73755;0.72489;-9999;-9999;
+11000;0.7176;0.71772;0.71806;0.71854;0.71929;0.72005;0.72106;0.72251;0.72418;0.72577;0.72761;0.72982;0.73203;0.73408;0.73569;0.7363;0.73441;0.72448;-9999;-9999;
+11500;0.71749;0.71761;0.71795;0.71843;0.71919;0.71994;0.72096;0.7224;0.72407;0.72567;0.72751;0.72972;0.73192;0.73397;0.73556;0.73612;0.73413;0.72374;-9999;-9999;
+12000;0.71738;0.7175;0.71784;0.71832;0.71908;0.71983;0.7208;0.7223;0.72397;0.72557;0.72742;0.72962;0.73182;0.73385;0.73542;0.73595;0.73383;0.72298;-9999;-9999;
+12500;0.71727;0.71739;0.71773;0.71822;0.71897;0.71972;0.72069;0.72219;0.72387;0.72546;0.72733;0.72952;0.73171;0.73374;0.73529;0.73577;0.73354;0.72218;-9999;-9999;
+13000;0.71715;0.71731;0.71763;0.71811;0.71886;0.71961;0.72055;0.72209;0.72377;0.72536;0.72723;0.72942;0.73161;0.73362;0.73515;0.73559;0.73323;0.72135;-9999;-9999;
+13500;0.71704;0.71725;0.71757;0.71804;0.7188;0.71953;0.72048;0.72199;0.72366;0.72526;0.72713;0.72932;0.7315;0.73351;0.73501;0.73541;0.73292;0.7205;-9999;-9999;
+14000;0.71693;0.71719;0.71751;0.71798;0.71874;0.71947;0.72042;0.72191;0.72357;0.72515;0.72698;0.72921;0.7314;0.73339;0.73487;0.73522;0.7326;0.71943;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.79331;0.79363;0.79432;0.79518;0.79664;0.79799;0.79977;0.80185;0.80374;0.80571;0.80778;0.80946;0.80997;0.80742;0.79351;-9999;-9999;-9999;-9999;-9999;
+500;0.79003;0.79003;0.79091;0.79175;0.79316;0.79447;0.7962;0.79823;0.80012;0.80209;0.80417;0.80593;0.80662;0.80457;0.7926;-9999;-9999;-9999;-9999;-9999;
+1000;0.78676;0.78687;0.78751;0.78833;0.78969;0.79097;0.79265;0.79465;0.79652;0.79846;0.80053;0.80236;0.80323;0.80165;0.79149;0.78957;-9999;-9999;-9999;-9999;
+1500;0.78323;0.78348;0.78409;0.78489;0.78621;0.78746;0.78909;0.79108;0.79294;0.79488;0.79694;0.79877;0.79979;0.79864;0.78997;-9999;-9999;-9999;-9999;-9999;
+2000;0.77971;0.78005;0.78063;0.78142;0.7827;0.78393;0.78553;0.78749;0.78935;0.79128;0.79334;0.79522;0.79634;0.79552;0.78821;0.75325;-9999;-9999;-9999;-9999;
+2500;0.77635;0.77659;0.77715;0.77802;0.77916;0.78036;0.78193;0.78388;0.78574;0.78767;0.78972;0.79165;0.79289;0.79237;0.78612;0.75706;-9999;-9999;-9999;-9999;
+3000;0.77288;0.77311;0.77364;0.77449;0.77561;0.77678;0.77831;0.78023;0.78209;0.78399;0.78608;0.78805;0.7894;0.78904;0.78386;0.75934;-9999;-9999;-9999;-9999;
+3500;0.76941;0.7696;0.77012;0.77094;0.77202;0.77317;0.77466;0.77656;0.77842;0.78031;0.78241;0.78442;0.78587;0.78577;0.78152;0.76032;-9999;-9999;-9999;-9999;
+4000;0.76594;0.76594;0.76656;0.76736;0.76842;0.76954;0.771;0.77287;0.77472;0.7766;0.7787;0.78075;0.7823;0.78245;0.77892;0.76062;-9999;-9999;-9999;-9999;
+4500;0.76227;0.76248;0.76297;0.76375;0.76481;0.7659;0.76731;0.76916;0.77101;0.77286;0.77496;0.77704;0.77867;0.77906;0.77619;0.7606;-9999;-9999;-9999;-9999;
+5000;0.75861;0.75882;0.75929;0.76005;0.76109;0.76217;0.76356;0.76541;0.76727;0.7691;0.7712;0.7733;0.77501;0.77559;0.77333;0.76008;-9999;-9999;-9999;-9999;
+5500;0.75494;0.75514;0.75559;0.75633;0.75734;0.75839;0.75975;0.76158;0.76343;0.76527;0.76738;0.76953;0.77131;0.77207;0.77032;0.75917;-9999;-9999;-9999;-9999;
+6000;0.75124;0.75143;0.75186;0.75258;0.75358;0.7546;0.75593;0.75773;0.75956;0.76138;0.76348;0.76564;0.76751;0.76846;0.76716;0.75796;-9999;-9999;-9999;-9999;
+6500;0.74753;0.7477;0.74812;0.74881;0.74979;0.75078;0.75208;0.75385;0.75567;0.75747;0.75956;0.76173;0.76364;0.76474;0.76384;0.75615;-9999;-9999;-9999;-9999;
+7000;0.74383;0.74383;0.74434;0.74502;0.74598;0.74694;0.74821;0.74995;0.75176;0.75354;0.7556;0.75779;0.75975;0.76097;0.76042;0.75405;0.7241;-9999;-9999;-9999;
+7500;0.73999;0.74017;0.74063;0.74121;0.74215;0.74308;0.74432;0.74603;0.74783;0.74958;0.75163;0.75382;0.75581;0.75715;0.75682;0.75169;0.7274;-9999;-9999;-9999;
+8000;0.73614;0.73637;0.7368;0.73737;0.73829;0.7392;0.74041;0.74209;0.74387;0.7456;0.74763;0.74982;0.75184;0.75328;0.75324;0.74928;0.72907;-9999;-9999;-9999;
+8500;0.7323;0.73253;0.73294;0.73351;0.7344;0.73529;0.73646;0.73812;0.73989;0.74159;0.7436;0.74579;0.74784;0.74936;0.74958;0.74635;0.72981;-9999;-9999;-9999;
+9000;0.72845;0.72867;0.72906;0.72962;0.73049;0.73136;0.73249;0.73413;0.73588;0.73756;0.73955;0.74173;0.7438;0.7454;0.74585;0.74348;0.73009;-9999;-9999;-9999;
+9500;0.72463;0.72478;0.72516;0.7257;0.72656;0.7274;0.7285;0.73011;0.73185;0.73351;0.73547;0.73765;0.73973;0.7414;0.74205;0.74033;0.72954;-9999;-9999;-9999;
+10000;0.7208;0.72086;0.72123;0.72176;0.72259;0.72341;0.72448;0.72607;0.72779;0.72942;0.73136;0.73353;0.73562;0.73736;0.73817;0.73703;0.72839;-9999;-9999;-9999;
+10500;0.71677;0.71691;0.71727;0.71779;0.7186;0.7194;0.72044;0.722;0.7237;0.72531;0.72722;0.72938;0.73149;0.73327;0.7343;0.73359;0.72683;0.69516;-9999;-9999;
+11000;0.71274;0.71293;0.71328;0.71378;0.71458;0.71535;0.71636;0.71789;0.71958;0.72117;0.72305;0.72521;0.72731;0.72919;0.73041;0.73003;0.72468;0.70006;-9999;-9999;
+11500;0.71273;0.71287;0.71322;0.71373;0.71452;0.7153;0.71631;0.71785;0.71952;0.72112;0.723;0.72515;0.72725;0.72906;0.73023;0.72981;0.72424;0.69857;-9999;-9999;
+12000;0.71272;0.71282;0.71317;0.71367;0.71447;0.71524;0.71626;0.7178;0.71948;0.72107;0.72295;0.7251;0.7272;0.72899;0.73008;0.7296;0.7238;-9999;-9999;-9999;
+12500;0.71264;0.71276;0.71312;0.71362;0.71442;0.71519;0.71622;0.71775;0.71943;0.72102;0.7229;0.72505;0.72714;0.72892;0.72993;0.72938;0.72334;0.69674;-9999;-9999;
+13000;0.71255;0.71271;0.71307;0.71357;0.71437;0.71514;0.71618;0.71771;0.71939;0.72098;0.72286;0.72501;0.72709;0.72885;0.72982;0.72915;0.72287;-9999;-9999;-9999;
+13500;0.71246;0.71266;0.71302;0.71352;0.71433;0.7151;0.71614;0.71767;0.71935;0.72094;0.72282;0.72497;0.72704;0.72879;0.72972;0.72893;0.72239;0.68871;-9999;-9999;
+14000;0.71249;0.71262;0.71298;0.71347;0.71429;0.71505;0.7161;0.71763;0.71931;0.7209;0.72278;0.72492;0.72699;0.72872;0.72962;0.7287;0.7219;0.68867;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.78888;0.78888;0.79005;0.791;0.79265;0.79412;0.79607;0.7982;0.80007;0.80205;0.80386;0.80509;0.80463;0.79877;0.77189;-9999;-9999;-9999;-9999;-9999;
+500;0.78562;0.78562;0.78662;0.78754;0.78912;0.79055;0.79243;0.79453;0.79638;0.79836;0.80023;0.80157;0.80123;0.79639;0.77344;-9999;-9999;-9999;-9999;-9999;
+1000;0.78235;0.78235;0.78318;0.78408;0.78561;0.78701;0.78884;0.79091;0.79273;0.79469;0.79656;0.79801;0.79795;0.79387;0.77418;-9999;-9999;-9999;-9999;-9999;
+1500;0.77877;0.77905;0.77974;0.78062;0.78209;0.78346;0.78524;0.78728;0.7891;0.79105;0.79295;0.79444;0.7946;0.79122;0.77407;-9999;-9999;-9999;-9999;-9999;
+2000;0.77519;0.7756;0.77627;0.77712;0.77855;0.7799;0.78164;0.78366;0.78547;0.78741;0.78933;0.7909;0.79126;0.78843;0.7737;-9999;-9999;-9999;-9999;-9999;
+2500;0.77186;0.77213;0.77277;0.77361;0.77499;0.7763;0.778;0.78001;0.78183;0.78376;0.78571;0.78734;0.78788;0.78556;0.77278;-9999;-9999;-9999;-9999;-9999;
+3000;0.76853;0.76863;0.76925;0.77007;0.77141;0.77269;0.77434;0.77633;0.77814;0.78003;0.78207;0.78376;0.78446;0.7826;0.77155;-9999;-9999;-9999;-9999;-9999;
+3500;0.76488;0.76512;0.76571;0.76662;0.76781;0.76905;0.77067;0.77264;0.77445;0.77633;0.77838;0.78015;0.78101;0.77956;0.77014;-9999;-9999;-9999;-9999;-9999;
+4000;0.76135;0.76159;0.76215;0.76303;0.76419;0.7654;0.76698;0.76893;0.77073;0.77262;0.77467;0.77649;0.77751;0.77644;0.76838;-9999;-9999;-9999;-9999;-9999;
+4500;0.75773;0.75796;0.75851;0.75938;0.76052;0.76172;0.76327;0.76519;0.76699;0.76888;0.77093;0.77279;0.77394;0.77323;0.76637;0.7331;-9999;-9999;-9999;-9999;
+5000;0.75411;0.7543;0.75483;0.75566;0.75678;0.75795;0.75947;0.76139;0.76321;0.76512;0.76716;0.76907;0.77033;0.76981;0.76416;0.73634;-9999;-9999;-9999;-9999;
+5500;0.75049;0.75061;0.75111;0.75192;0.75301;0.75415;0.75564;0.75753;0.75935;0.76125;0.76331;0.76528;0.76668;0.76645;0.76173;0.73849;-9999;-9999;-9999;-9999;
+6000;0.74667;0.74689;0.74737;0.74816;0.74925;0.75034;0.75178;0.75365;0.75546;0.75736;0.75941;0.76141;0.7629;0.76295;0.75915;0.73906;-9999;-9999;-9999;-9999;
+6500;0.74286;0.74315;0.74361;0.74437;0.74544;0.7465;0.74791;0.74975;0.75155;0.75339;0.75548;0.75751;0.75909;0.75936;0.75628;0.73935;-9999;-9999;-9999;-9999;
+7000;0.73918;0.73938;0.73983;0.74057;0.7416;0.74264;0.74401;0.74582;0.74762;0.74944;0.75152;0.75357;0.75523;0.75572;0.75324;0.73903;-9999;-9999;-9999;-9999;
+7500;0.7354;0.73559;0.73602;0.73674;0.73775;0.73876;0.74009;0.74188;0.74367;0.74546;0.74753;0.74961;0.75133;0.75201;0.75007;0.73823;-9999;-9999;-9999;-9999;
+8000;0.73161;0.73178;0.73219;0.73289;0.73388;0.73486;0.73615;0.73791;0.73969;0.74146;0.74351;0.74561;0.7474;0.74824;0.74678;0.73696;-9999;-9999;-9999;-9999;
+8500;0.72783;0.72783;0.72833;0.72901;0.72998;0.73093;0.73219;0.73392;0.73569;0.73743;0.73947;0.74158;0.74342;0.74442;0.74338;0.73539;-9999;-9999;-9999;-9999;
+9000;0.72405;0.72408;0.72453;0.7251;0.72605;0.72698;0.72821;0.72991;0.73166;0.73338;0.7354;0.73752;0.7394;0.74054;0.73987;0.73332;0.70158;-9999;-9999;-9999;
+9500;0.72001;0.72019;0.72061;0.72118;0.7221;0.723;0.7242;0.72587;0.72761;0.72931;0.7313;0.73343;0.73535;0.73661;0.73628;0.73095;0.70559;-9999;-9999;-9999;
+10000;0.71609;0.71626;0.71666;0.71722;0.71812;0.719;0.72016;0.72181;0.72353;0.72521;0.72718;0.7293;0.73126;0.73262;0.73251;0.72831;0.70773;-9999;-9999;-9999;
+10500;0.71217;0.7123;0.71269;0.71324;0.71412;0.71497;0.7161;0.71772;0.71943;0.72108;0.72302;0.72515;0.72713;0.72858;0.72874;0.72543;0.70878;-9999;-9999;-9999;
+11000;0.70826;0.70826;0.70865;0.70923;0.71009;0.71091;0.71202;0.7136;0.71529;0.71692;0.71884;0.72096;0.72296;0.7245;0.72489;0.72245;0.70918;-9999;-9999;-9999;
+11500;0.70813;0.70826;0.70866;0.70919;0.71005;0.71087;0.71198;0.71357;0.71526;0.71688;0.71881;0.72093;0.72291;0.72443;0.72478;0.72218;0.70837;-9999;-9999;-9999;
+12000;0.70809;0.70824;0.70862;0.70915;0.71002;0.71084;0.71195;0.71354;0.71523;0.71685;0.71878;0.72089;0.72287;0.72437;0.72466;0.72193;0.70743;-9999;-9999;-9999;
+12500;0.70805;0.70823;0.70859;0.70912;0.70999;0.71081;0.71192;0.71351;0.7152;0.71682;0.71875;0.72086;0.72283;0.72431;0.72455;0.72157;0.70656;-9999;-9999;-9999;
+13000;0.70804;0.70817;0.70856;0.70909;0.70996;0.71078;0.71189;0.71349;0.71518;0.7168;0.71873;0.72083;0.7228;0.72425;0.72444;0.72131;0.70566;-9999;-9999;-9999;
+13500;0.70803;0.70813;0.70853;0.70906;0.70994;0.71075;0.71187;0.71347;0.71515;0.71678;0.7187;0.72081;0.72276;0.72419;0.72434;0.72104;0.70472;-9999;-9999;-9999;
+14000;0.70797;0.70812;0.7085;0.70903;0.70992;0.71073;0.71184;0.71345;0.71514;0.71676;0.71869;0.72079;0.72273;0.72413;0.72422;0.72078;0.70377;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.78466;0.78517;0.78623;0.78711;0.78897;0.7906;0.79258;0.79489;0.79674;0.7986;0.80012;0.80063;0.79846;0.78689;0.77144;-9999;-9999;-9999;-9999;-9999;
+500;0.78141;0.78141;0.78257;0.78358;0.78537;0.78695;0.78889;0.79114;0.79298;0.79485;0.79645;0.79714;0.79541;0.7853;0.7731;-9999;-9999;-9999;-9999;-9999;
+1000;0.77816;0.77816;0.77908;0.78007;0.7818;0.78333;0.78522;0.78745;0.78926;0.79112;0.79275;0.79361;0.79229;0.78352;0.77507;-9999;-9999;-9999;-9999;-9999;
+1500;0.77448;0.7748;0.7756;0.77656;0.77823;0.77973;0.78168;0.78378;0.78557;0.78744;0.78911;0.79007;0.78908;0.78172;0.74657;-9999;-9999;-9999;-9999;-9999;
+2000;0.7708;0.77132;0.77209;0.77302;0.77464;0.7761;0.77802;0.78011;0.78188;0.78376;0.78547;0.78655;0.78586;0.77947;0.75007;-9999;-9999;-9999;-9999;-9999;
+2500;0.76752;0.76782;0.76856;0.76948;0.77103;0.77246;0.77433;0.7764;0.77818;0.78008;0.78183;0.78302;0.78244;0.77708;0.75223;-9999;-9999;-9999;-9999;-9999;
+3000;0.76424;0.76431;0.76501;0.76591;0.76742;0.76881;0.77063;0.77267;0.77445;0.77636;0.77817;0.77946;0.77915;0.77455;0.75295;-9999;-9999;-9999;-9999;-9999;
+3500;0.76049;0.76077;0.76145;0.76232;0.76378;0.76514;0.76691;0.76894;0.77071;0.77262;0.77446;0.77586;0.7758;0.77191;0.75316;-9999;-9999;-9999;-9999;-9999;
+4000;0.75693;0.7572;0.75786;0.75872;0.76013;0.76145;0.76318;0.76518;0.76695;0.76886;0.77073;0.77221;0.7724;0.76915;0.75269;-9999;-9999;-9999;-9999;-9999;
+4500;0.75337;0.75355;0.75418;0.75514;0.75641;0.75771;0.75941;0.76141;0.76317;0.76507;0.76697;0.76853;0.76892;0.76625;0.75197;-9999;-9999;-9999;-9999;-9999;
+5000;0.74962;0.74987;0.75048;0.7514;0.75264;0.75391;0.75557;0.75755;0.75932;0.76124;0.76319;0.76483;0.7654;0.76325;0.751;-9999;-9999;-9999;-9999;-9999;
+5500;0.74587;0.74618;0.74675;0.74765;0.74885;0.75009;0.7517;0.75366;0.75543;0.75734;0.75932;0.76103;0.7618;0.76012;0.74962;0.74627;-9999;-9999;-9999;-9999;
+6000;0.74221;0.74245;0.74301;0.74388;0.74505;0.74625;0.74782;0.74976;0.75152;0.75342;0.75541;0.75718;0.7581;0.75683;0.748;0.74724;-9999;-9999;-9999;-9999;
+6500;0.73847;0.73871;0.73924;0.74008;0.74121;0.74239;0.74392;0.74583;0.74759;0.74944;0.75148;0.7533;0.75436;0.75346;0.74598;-9999;-9999;-9999;-9999;-9999;
+7000;0.73473;0.73473;0.73543;0.73625;0.73736;0.73851;0.73999;0.74188;0.74364;0.74548;0.74752;0.74938;0.75056;0.75;0.74372;0.71231;-9999;-9999;-9999;-9999;
+7500;0.731;0.731;0.73161;0.73241;0.73351;0.7346;0.73605;0.7379;0.73966;0.7415;0.74353;0.74543;0.74673;0.74635;0.74124;0.71568;-9999;-9999;-9999;-9999;
+8000;0.72726;0.72731;0.72777;0.72853;0.72961;0.73067;0.73208;0.7339;0.73565;0.73749;0.73951;0.74144;0.74284;0.74274;0.73865;0.71737;-9999;-9999;-9999;-9999;
+8500;0.72324;0.72345;0.7239;0.72463;0.72568;0.72671;0.72808;0.72988;0.73163;0.73345;0.73546;0.73742;0.73891;0.73907;0.73572;0.71773;-9999;-9999;-9999;-9999;
+9000;0.71937;0.71957;0.72;0.72071;0.72174;0.72274;0.72406;0.72584;0.72758;0.72934;0.73137;0.73337;0.73494;0.73532;0.73264;0.71769;-9999;-9999;-9999;-9999;
+9500;0.7155;0.71567;0.71607;0.71676;0.71776;0.71873;0.72002;0.72178;0.7235;0.72524;0.72725;0.72927;0.73093;0.73151;0.7294;0.71707;-9999;-9999;-9999;-9999;
+10000;0.71163;0.71163;0.71211;0.71279;0.71376;0.71471;0.71596;0.71768;0.7194;0.72112;0.72311;0.72514;0.72687;0.72763;0.72604;0.71592;-9999;-9999;-9999;-9999;
+10500;0.70759;0.70777;0.70821;0.70878;0.70974;0.71065;0.71187;0.71357;0.71527;0.71697;0.71894;0.72098;0.72276;0.72369;0.72255;0.71429;-9999;-9999;-9999;-9999;
+11000;0.70355;0.70378;0.70419;0.70476;0.70569;0.70657;0.70776;0.70942;0.71112;0.71278;0.71474;0.71679;0.71861;0.71969;0.71894;0.71234;0.67984;-9999;-9999;-9999;
+11500;0.70359;0.70376;0.70417;0.70474;0.70568;0.70656;0.70775;0.70941;0.7111;0.71277;0.71473;0.71678;0.71858;0.71963;0.71881;0.71196;0.67826;-9999;-9999;-9999;
+12000;0.70363;0.70363;0.7041;0.70473;0.70567;0.70655;0.70774;0.70941;0.71109;0.71276;0.71472;0.71676;0.71856;0.71957;0.71868;0.71157;-9999;-9999;-9999;-9999;
+12500;0.70367;0.70367;0.70409;0.70472;0.70566;0.70654;0.70773;0.70941;0.71109;0.71276;0.71472;0.71675;0.71853;0.71952;0.71855;0.71118;-9999;-9999;-9999;-9999;
+13000;0.70355;0.70372;0.70414;0.7047;0.70566;0.70654;0.70773;0.70941;0.71109;0.71275;0.71472;0.71675;0.71851;0.71946;0.71842;0.71078;-9999;-9999;-9999;-9999;
+13500;0.70343;0.70373;0.70413;0.7047;0.70566;0.70654;0.70773;0.70941;0.71109;0.71276;0.71473;0.71676;0.71851;0.71941;0.7183;0.71027;-9999;-9999;-9999;-9999;
+14000;0.70355;0.70372;0.70413;0.7047;0.70566;0.70654;0.70773;0.70942;0.7111;0.71277;0.71474;0.71677;0.7185;0.71937;0.71817;0.70985;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.78079;0.78147;0.78269;0.78366;0.78577;0.78759;0.78971;0.79216;0.79398;0.7956;0.79658;0.79588;0.79073;0.76933;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.77757;0.77757;0.77912;0.78004;0.78207;0.78383;0.78588;0.78827;0.79013;0.7918;0.79292;0.79251;0.78809;0.76936;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.77435;0.77439;0.77554;0.77644;0.7784;0.78011;0.78212;0.78446;0.78628;0.78799;0.78923;0.78908;0.78535;0.76888;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.77051;0.77051;0.77178;0.77285;0.77475;0.77641;0.77838;0.78066;0.78247;0.78422;0.78553;0.78561;0.78249;0.76803;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.76666;0.76733;0.76822;0.76925;0.77108;0.7727;0.77465;0.7769;0.77869;0.78045;0.78184;0.78211;0.77955;0.76686;0.74813;-9999;-9999;-9999;-9999;-9999;
+2500;0.76344;0.76378;0.76464;0.76564;0.76741;0.76899;0.7709;0.77312;0.7749;0.7767;0.77816;0.7786;0.77648;0.76535;0.75105;-9999;-9999;-9999;-9999;-9999;
+3000;0.75989;0.76022;0.76104;0.76202;0.76373;0.76527;0.76714;0.76934;0.7711;0.77291;0.77445;0.77507;0.77338;0.76359;0.7524;-9999;-9999;-9999;-9999;-9999;
+3500;0.75634;0.75634;0.75741;0.75838;0.76003;0.76153;0.76348;0.76554;0.76728;0.7691;0.7707;0.77149;0.77021;0.76166;0.75384;-9999;-9999;-9999;-9999;-9999;
+4000;0.75279;0.75302;0.75377;0.75472;0.75632;0.75778;0.75968;0.76172;0.76346;0.76529;0.76694;0.76788;0.76694;0.75972;0.72494;-9999;-9999;-9999;-9999;-9999;
+4500;0.74903;0.74933;0.75006;0.75099;0.75254;0.75397;0.75584;0.75789;0.75963;0.76147;0.76316;0.76423;0.76361;0.75737;0.72817;-9999;-9999;-9999;-9999;-9999;
+5000;0.74527;0.74563;0.74633;0.74736;0.74873;0.75013;0.75195;0.75398;0.75572;0.75759;0.75934;0.76055;0.76004;0.75488;0.73013;-9999;-9999;-9999;-9999;-9999;
+5500;0.74163;0.74191;0.74258;0.74358;0.74491;0.74627;0.74804;0.75005;0.75178;0.75366;0.75545;0.75676;0.75654;0.75216;0.73097;-9999;-9999;-9999;-9999;-9999;
+6000;0.73789;0.73817;0.7388;0.73977;0.74107;0.74239;0.74411;0.74611;0.74783;0.74971;0.75154;0.75294;0.75296;0.74929;0.73104;-9999;-9999;-9999;-9999;-9999;
+6500;0.73416;0.73416;0.735;0.73595;0.73721;0.73849;0.74016;0.74214;0.74386;0.74574;0.7476;0.74908;0.74933;0.7463;0.73049;-9999;-9999;-9999;-9999;-9999;
+7000;0.73043;0.73043;0.73119;0.7321;0.73332;0.73457;0.7362;0.73815;0.73987;0.74174;0.74363;0.74518;0.74563;0.74317;0.72967;-9999;-9999;-9999;-9999;-9999;
+7500;0.72655;0.7268;0.72735;0.72823;0.72942;0.73063;0.73221;0.73414;0.73585;0.73772;0.73963;0.74125;0.74189;0.73994;0.72848;-9999;-9999;-9999;-9999;-9999;
+8000;0.72268;0.72296;0.72349;0.72433;0.72549;0.72667;0.72821;0.73011;0.73181;0.73367;0.7356;0.73729;0.73809;0.7366;0.72693;0.72442;-9999;-9999;-9999;-9999;
+8500;0.7188;0.71909;0.7196;0.72041;0.72158;0.72269;0.72418;0.72605;0.72775;0.72959;0.73155;0.73328;0.73423;0.73315;0.7251;0.72481;-9999;-9999;-9999;-9999;
+9000;0.71492;0.7152;0.71568;0.71647;0.7176;0.71868;0.72013;0.72198;0.72367;0.72544;0.72745;0.72924;0.73033;0.72961;0.7229;0.68828;-9999;-9999;-9999;-9999;
+9500;0.71105;0.71128;0.71174;0.7125;0.7136;0.71465;0.71605;0.71787;0.71956;0.72133;0.72333;0.72516;0.72637;0.72598;0.72041;0.69321;-9999;-9999;-9999;-9999;
+10000;0.70717;0.70717;0.70776;0.7085;0.70957;0.71058;0.71195;0.71374;0.71543;0.71719;0.71918;0.72105;0.72237;0.72216;0.71782;0.69521;-9999;-9999;-9999;-9999;
+10500;0.70314;0.70334;0.70376;0.70447;0.70551;0.7065;0.70782;0.70959;0.71127;0.71303;0.715;0.71689;0.71831;0.71837;0.71484;0.69621;-9999;-9999;-9999;-9999;
+11000;0.69911;0.69933;0.69973;0.70042;0.70143;0.70239;0.70367;0.70541;0.70709;0.70883;0.71078;0.7127;0.71421;0.71451;0.71169;0.69631;-9999;-9999;-9999;-9999;
+11500;0.6992;0.69934;0.69974;0.70042;0.70145;0.7024;0.70368;0.70543;0.7071;0.70884;0.71079;0.71271;0.7142;0.71445;0.71152;0.69556;-9999;-9999;-9999;-9999;
+12000;0.6993;0.6993;0.69975;0.70044;0.70147;0.70242;0.7037;0.70545;0.70712;0.70885;0.71081;0.71273;0.7142;0.7144;0.71134;0.69481;-9999;-9999;-9999;-9999;
+12500;0.69918;0.69938;0.69986;0.70045;0.70149;0.70244;0.70373;0.70548;0.70715;0.70888;0.71085;0.71276;0.71421;0.71435;0.71117;0.69403;-9999;-9999;-9999;-9999;
+13000;0.6992;0.6994;0.69988;0.70047;0.70152;0.70246;0.70376;0.70552;0.70719;0.70891;0.71089;0.71279;0.71423;0.71432;0.71099;0.69323;-9999;-9999;-9999;-9999;
+13500;0.69922;0.69942;0.6999;0.70049;0.70155;0.70249;0.70379;0.70557;0.70723;0.70895;0.71094;0.71283;0.71425;0.71429;0.71082;0.69242;-9999;-9999;-9999;-9999;
+14000;0.69924;0.69945;0.69993;0.70052;0.70159;0.70253;0.70388;0.70563;0.70728;0.70899;0.71099;0.71287;0.71427;0.71426;0.71064;0.69159;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77761;0.77761;0.77954;0.78058;0.78305;0.78511;0.78731;0.7898;0.79156;0.79282;0.7931;0.79088;0.78065;0.75473;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.77412;0.77412;0.77567;0.7769;0.77926;0.78126;0.78342;0.78586;0.78762;0.78893;0.78939;0.7876;0.77854;0.74051;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.77052;0.77052;0.77205;0.77326;0.7755;0.77746;0.77958;0.78199;0.78373;0.78509;0.78566;0.78424;0.77631;0.7441;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76693;0.76742;0.76868;0.76964;0.77179;0.77369;0.77578;0.77816;0.77988;0.7813;0.78199;0.78087;0.77391;0.74652;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.7634;0.7634;0.76483;0.76599;0.76807;0.76993;0.77199;0.77435;0.77608;0.77754;0.77833;0.77729;0.77141;0.74766;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75986;0.76017;0.76117;0.76228;0.76429;0.76609;0.76814;0.7705;0.77225;0.77377;0.77469;0.77394;0.7688;0.7478;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.75614;0.75614;0.75746;0.75856;0.76051;0.76224;0.76426;0.76659;0.76836;0.76998;0.77101;0.77055;0.76611;0.7476;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.75242;0.75287;0.75378;0.75484;0.75672;0.75839;0.76037;0.76266;0.76443;0.76609;0.76729;0.7671;0.76333;0.74693;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.74881;0.74881;0.75003;0.75109;0.75291;0.75454;0.75647;0.75874;0.76049;0.76219;0.76348;0.76355;0.76041;0.74587;0.72438;-9999;-9999;-9999;-9999;-9999;
+4500;0.74519;0.74543;0.74628;0.74729;0.74905;0.75064;0.75255;0.75479;0.75655;0.75828;0.75966;0.75993;0.75735;0.74465;0.72657;-9999;-9999;-9999;-9999;-9999;
+5000;0.74135;0.74169;0.74249;0.74349;0.74519;0.74673;0.74859;0.75081;0.75255;0.75432;0.75579;0.75626;0.75416;0.74306;0.72914;-9999;-9999;-9999;-9999;-9999;
+5500;0.73752;0.73792;0.73869;0.73966;0.7413;0.74281;0.74477;0.74682;0.74855;0.75034;0.75187;0.75252;0.75085;0.74119;0.73043;-9999;-9999;-9999;-9999;-9999;
+6000;0.73382;0.73413;0.73487;0.73596;0.73741;0.73887;0.74077;0.74281;0.74453;0.74633;0.74792;0.74873;0.74745;0.7391;0.73163;-9999;-9999;-9999;-9999;-9999;
+6500;0.73013;0.73033;0.73104;0.73209;0.73349;0.73491;0.73676;0.73878;0.74049;0.74231;0.74395;0.7449;0.74398;0.73699;0.70279;-9999;-9999;-9999;-9999;-9999;
+7000;0.72622;0.7265;0.72718;0.72819;0.72956;0.73094;0.73273;0.73474;0.73644;0.73827;0.73996;0.74104;0.74023;0.73447;0.70613;-9999;-9999;-9999;-9999;-9999;
+7500;0.7223;0.72266;0.7233;0.72428;0.72561;0.72694;0.72868;0.73068;0.73237;0.73421;0.73594;0.73713;0.73664;0.73176;0.70823;-9999;-9999;-9999;-9999;-9999;
+8000;0.71852;0.71879;0.71941;0.72035;0.72164;0.72293;0.72462;0.72659;0.72828;0.73012;0.73189;0.73319;0.73297;0.7289;0.70876;-9999;-9999;-9999;-9999;-9999;
+8500;0.71474;0.7149;0.71549;0.71639;0.71764;0.7189;0.72054;0.72249;0.72416;0.72601;0.72781;0.7292;0.72925;0.72587;0.7086;-9999;-9999;-9999;-9999;-9999;
+9000;0.71073;0.71098;0.71154;0.71242;0.71363;0.71485;0.71645;0.71836;0.72003;0.72188;0.7237;0.72518;0.72545;0.72271;0.70806;-9999;-9999;-9999;-9999;-9999;
+9500;0.70673;0.70704;0.70757;0.70842;0.70959;0.71078;0.71233;0.71422;0.71587;0.71771;0.71957;0.72112;0.7216;0.71942;0.70709;-9999;-9999;-9999;-9999;-9999;
+10000;0.70283;0.70307;0.70357;0.70439;0.70558;0.70669;0.70818;0.71005;0.71169;0.71352;0.7154;0.71701;0.71769;0.716;0.70569;-9999;-9999;-9999;-9999;-9999;
+10500;0.69894;0.69907;0.69955;0.70033;0.70149;0.70256;0.70401;0.70585;0.70749;0.7093;0.7112;0.71288;0.71371;0.71247;0.70395;0.70344;-9999;-9999;-9999;-9999;
+11000;0.69482;0.69504;0.6955;0.69625;0.69738;0.69841;0.69982;0.70163;0.70326;0.70505;0.70697;0.70869;0.70968;0.70867;0.70177;0.70225;-9999;-9999;-9999;-9999;
+11500;0.69489;0.69508;0.69554;0.69629;0.69743;0.69846;0.69987;0.70169;0.70333;0.70511;0.70703;0.70875;0.70972;0.70878;0.70147;0.70195;-9999;-9999;-9999;-9999;
+12000;0.69496;0.69496;0.69557;0.69634;0.69748;0.69851;0.69993;0.70177;0.70339;0.70519;0.7071;0.70881;0.70975;0.70874;0.70117;0.70161;-9999;-9999;-9999;-9999;
+12500;0.69503;0.69518;0.69563;0.69639;0.69755;0.69857;0.7;0.70185;0.70347;0.70526;0.70717;0.70887;0.7098;0.7087;0.70086;0.70116;-9999;-9999;-9999;-9999;
+13000;0.69501;0.69524;0.69568;0.69645;0.69762;0.69865;0.70008;0.70193;0.70355;0.70535;0.70725;0.70894;0.70984;0.70866;0.70055;-9999;-9999;-9999;-9999;-9999;
+13500;0.69499;0.6953;0.69575;0.69651;0.6977;0.69873;0.70017;0.70202;0.70364;0.70543;0.70734;0.70902;0.70989;0.70863;0.70024;0.69955;-9999;-9999;-9999;-9999;
+14000;0.69514;0.69537;0.69583;0.69659;0.69779;0.69882;0.70026;0.70212;0.70373;0.70552;0.70742;0.7091;0.70994;0.70861;0.69992;0.69953;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77442;0.77557;0.77726;0.77845;0.78123;0.78353;0.78577;0.78827;0.78989;0.79063;0.78988;0.7849;0.76617;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.77125;0.77125;0.77345;0.77458;0.77726;0.77949;0.7817;0.78416;0.78581;0.78662;0.78612;0.78182;0.76508;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.7675;0.7675;0.76964;0.77074;0.77333;0.77551;0.77769;0.78013;0.78175;0.78266;0.78233;0.77863;0.76373;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76375;0.76433;0.76585;0.76695;0.76946;0.77158;0.77373;0.77615;0.77776;0.77874;0.7786;0.77542;0.76217;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.76014;0.76014;0.76213;0.76317;0.7656;0.76765;0.76978;0.77218;0.77382;0.77489;0.77491;0.77217;0.76059;0.73042;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75653;0.75694;0.75834;0.75939;0.76173;0.76374;0.76584;0.76822;0.76987;0.77103;0.77124;0.76894;0.75863;0.73293;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.7528;0.7528;0.75435;0.7556;0.75787;0.75982;0.76189;0.76425;0.76591;0.76715;0.76752;0.76566;0.75649;0.71802;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74908;0.74957;0.75085;0.75182;0.75401;0.75591;0.75795;0.76028;0.76196;0.76326;0.76379;0.7623;0.75421;0.72162;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.74542;0.74542;0.74684;0.74802;0.75016;0.75199;0.75401;0.75632;0.758;0.75936;0.76003;0.75888;0.75177;0.72362;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.74177;0.74203;0.74301;0.74415;0.74622;0.74804;0.75005;0.75234;0.75403;0.75546;0.75625;0.75542;0.74922;0.72464;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73781;0.73781;0.73912;0.74024;0.74224;0.744;0.746;0.74829;0.75002;0.75151;0.75243;0.75189;0.7465;0.72514;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.73386;0.73436;0.73526;0.73633;0.73825;0.73997;0.74193;0.7442;0.74592;0.74751;0.74857;0.7483;0.74366;0.72486;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.73015;0.73015;0.73135;0.73241;0.73426;0.73592;0.73785;0.74009;0.74181;0.74343;0.74463;0.74448;0.7407;0.72419;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.72643;0.72664;0.72746;0.72848;0.73025;0.73187;0.73376;0.73597;0.73768;0.73934;0.74063;0.74072;0.73761;0.7232;0.70225;-9999;-9999;-9999;-9999;-9999;
+7000;0.72242;0.72275;0.72354;0.72469;0.72623;0.7278;0.72967;0.73184;0.73354;0.73523;0.7366;0.7369;0.73434;0.72179;0.70508;-9999;-9999;-9999;-9999;-9999;
+7500;0.7184;0.71885;0.7196;0.7207;0.7222;0.72372;0.72555;0.7277;0.72938;0.7311;0.73255;0.73304;0.73097;0.7201;0.70668;-9999;-9999;-9999;-9999;-9999;
+8000;0.71461;0.71492;0.71564;0.7167;0.71815;0.71963;0.72154;0.72355;0.72521;0.72696;0.72847;0.72914;0.7275;0.71816;0.70851;-9999;-9999;-9999;-9999;-9999;
+8500;0.71083;0.71098;0.71167;0.71269;0.71409;0.71552;0.71738;0.71937;0.72103;0.72279;0.72436;0.72518;0.72396;0.71597;0.70921;-9999;-9999;-9999;-9999;-9999;
+9000;0.70674;0.70702;0.70767;0.70866;0.71001;0.7114;0.71319;0.71518;0.71683;0.7186;0.72022;0.72119;0.72034;0.71371;0.68177;-9999;-9999;-9999;-9999;-9999;
+9500;0.70264;0.70304;0.70366;0.7046;0.70592;0.70726;0.709;0.71097;0.7126;0.71439;0.71606;0.71715;0.71663;0.71103;0.68469;-9999;-9999;-9999;-9999;-9999;
+10000;0.69876;0.69903;0.69962;0.70053;0.7018;0.7031;0.70478;0.70674;0.70836;0.71015;0.71186;0.71307;0.71271;0.70817;0.68613;-9999;-9999;-9999;-9999;-9999;
+10500;0.69488;0.69499;0.69555;0.69643;0.69767;0.69892;0.70055;0.70248;0.7041;0.70589;0.70763;0.70894;0.70886;0.70511;0.68662;-9999;-9999;-9999;-9999;-9999;
+11000;0.69069;0.69093;0.69146;0.69231;0.69358;0.69472;0.69629;0.6982;0.69981;0.7016;0.70337;0.70478;0.70494;0.7019;0.68628;-9999;-9999;-9999;-9999;-9999;
+11500;0.6907;0.69101;0.69154;0.6924;0.69368;0.69483;0.69641;0.69832;0.69992;0.70171;0.70348;0.70487;0.70501;0.70183;0.68572;-9999;-9999;-9999;-9999;-9999;
+12000;0.69072;0.69111;0.69163;0.69249;0.6938;0.69495;0.69652;0.69844;0.70004;0.70183;0.70359;0.70498;0.70507;0.70177;0.68515;-9999;-9999;-9999;-9999;-9999;
+12500;0.69095;0.69121;0.69174;0.6926;0.69393;0.69507;0.69665;0.69857;0.70016;0.70195;0.70371;0.70509;0.70515;0.70171;0.68456;-9999;-9999;-9999;-9999;-9999;
+13000;0.69119;0.69119;0.69186;0.69272;0.69406;0.6952;0.69678;0.6987;0.70029;0.70208;0.70384;0.7052;0.70522;0.70165;0.68401;-9999;-9999;-9999;-9999;-9999;
+13500;0.69121;0.69146;0.69199;0.69285;0.69419;0.69533;0.69691;0.69884;0.70042;0.70221;0.70397;0.70531;0.7053;0.7016;0.68339;-9999;-9999;-9999;-9999;-9999;
+14000;0.69124;0.69159;0.69212;0.69297;0.69433;0.69546;0.69704;0.69897;0.70056;0.70234;0.7041;0.70543;0.70539;0.70155;0.68275;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77355;0.77429;0.77621;0.77749;0.78061;0.78318;0.78538;0.78779;0.78916;0.78896;0.78569;0.77225;0.7384;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.76965;0.76965;0.77179;0.77335;0.77636;0.77889;0.78106;0.78344;0.78485;0.78496;0.78298;0.77116;0.74086;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.76565;0.76565;0.76776;0.76928;0.77219;0.77465;0.77681;0.77919;0.78061;0.78084;0.77942;0.7718;0.7427;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76166;0.76237;0.76412;0.7653;0.76812;0.7705;0.77267;0.77502;0.77646;0.7768;0.77563;0.76889;0.74507;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.7579;0.7579;0.75987;0.76132;0.76405;0.76635;0.76854;0.7709;0.77237;0.77302;0.77178;0.76592;0.74466;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75414;0.75459;0.75597;0.75736;0.76;0.76224;0.76439;0.76675;0.76827;0.76903;0.76806;0.76294;0.74381;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.75019;0.75019;0.75201;0.7534;0.75596;0.75814;0.76026;0.76261;0.76417;0.7649;0.7643;0.75986;0.7427;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74623;0.74623;0.74809;0.74946;0.75194;0.75405;0.75615;0.75848;0.76005;0.7609;0.76052;0.7567;0.74129;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.7425;0.7425;0.74419;0.74551;0.74792;0.74998;0.75205;0.75437;0.75595;0.7569;0.75673;0.75346;0.73969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73876;0.73913;0.7403;0.74158;0.7439;0.7459;0.74795;0.75026;0.75186;0.7529;0.75292;0.75016;0.73791;0.70712;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73479;0.73479;0.73636;0.73763;0.73987;0.74182;0.74385;0.74614;0.74775;0.74887;0.74908;0.74678;0.73593;0.7098;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.73082;0.73082;0.73244;0.73368;0.73584;0.73774;0.73974;0.74202;0.74363;0.74484;0.74521;0.74333;0.73397;0.71197;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72707;0.72707;0.72851;0.72972;0.73181;0.73365;0.73563;0.73788;0.7395;0.74078;0.7413;0.73982;0.7316;0.69748;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.72331;0.72358;0.72458;0.72575;0.72777;0.72955;0.7315;0.73373;0.73536;0.7367;0.73737;0.73624;0.72907;0.70021;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71919;0.71919;0.72052;0.72168;0.72364;0.7254;0.72735;0.72958;0.73121;0.73261;0.73341;0.7326;0.72639;0.70149;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71507;0.71507;0.71648;0.7176;0.71949;0.7212;0.72312;0.72533;0.72701;0.72849;0.72941;0.7289;0.72356;0.70214;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.7112;0.7112;0.71242;0.71368;0.71534;0.71699;0.71888;0.72106;0.72274;0.72428;0.72537;0.72515;0.72059;0.7019;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70734;0.70754;0.70837;0.70956;0.71118;0.71278;0.71463;0.71679;0.71845;0.72004;0.72123;0.72114;0.71752;0.70124;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.70316;0.7035;0.70429;0.70543;0.707;0.70855;0.71037;0.7125;0.71415;0.71577;0.71705;0.7172;0.71423;0.70019;0.68137;-9999;-9999;-9999;-9999;-9999;
+9500;0.69898;0.69898;0.70017;0.70129;0.70281;0.70431;0.7061;0.70819;0.70983;0.71149;0.71285;0.7132;0.7108;0.6987;0.68352;-9999;-9999;-9999;-9999;-9999;
+10000;0.69504;0.69536;0.69607;0.69713;0.6986;0.70005;0.70193;0.70388;0.7055;0.70718;0.70861;0.70916;0.70727;0.6969;0.68371;-9999;-9999;-9999;-9999;-9999;
+10500;0.69111;0.69126;0.69193;0.69295;0.69437;0.69578;0.69759;0.69953;0.70115;0.70285;0.70435;0.70507;0.70364;0.69482;0.68695;-9999;-9999;-9999;-9999;-9999;
+11000;0.68685;0.68714;0.68778;0.68876;0.69013;0.69149;0.69325;0.69518;0.69677;0.69849;0.70005;0.70093;0.6999;0.69246;0.68678;-9999;-9999;-9999;-9999;-9999;
+11500;0.68697;0.68731;0.68794;0.68892;0.6903;0.69166;0.69342;0.69535;0.69694;0.69866;0.70022;0.70107;0.7;0.69232;0.68638;-9999;-9999;-9999;-9999;-9999;
+12000;0.68718;0.68749;0.68811;0.68908;0.69047;0.69183;0.69359;0.69552;0.69712;0.69883;0.70039;0.70122;0.70009;0.69217;0.68596;-9999;-9999;-9999;-9999;-9999;
+12500;0.6874;0.68765;0.68828;0.68925;0.69064;0.69201;0.69377;0.6957;0.6973;0.69901;0.70056;0.70138;0.70019;0.69202;0.68553;-9999;-9999;-9999;-9999;-9999;
+13000;0.68761;0.68783;0.68846;0.68942;0.69094;0.6922;0.69395;0.69589;0.69748;0.69919;0.70073;0.70154;0.7003;0.69188;0.68509;-9999;-9999;-9999;-9999;-9999;
+13500;0.68771;0.68802;0.68864;0.6896;0.69113;0.69238;0.69414;0.69607;0.69767;0.69937;0.70092;0.7017;0.70041;0.69173;0.68474;-9999;-9999;-9999;-9999;-9999;
+14000;0.68781;0.68781;0.68881;0.68978;0.69132;0.69257;0.69433;0.69627;0.69786;0.69957;0.70111;0.70189;0.70052;0.69158;0.68416;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77231;0.77231;0.77516;0.77647;0.77949;0.7821;0.78387;0.78555;0.78558;0.78325;0.77485;0.75154;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.7686;0.7686;0.77093;0.77269;0.77557;0.77818;0.77998;0.78172;0.78193;0.78003;0.7728;0.75186;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.76501;0.76501;0.76729;0.76919;0.77175;0.77434;0.77616;0.77793;0.77833;0.77681;0.77064;0.75173;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76103;0.76103;0.76336;0.76501;0.76813;0.77058;0.77243;0.77425;0.77479;0.77362;0.76833;0.75126;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75704;0.75704;0.75915;0.76079;0.76381;0.76635;0.76844;0.77056;0.77127;0.77044;0.76601;0.7505;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75306;0.75345;0.755;0.75657;0.75951;0.762;0.76407;0.76637;0.76762;0.76705;0.76359;0.7496;0.71482;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.74874;0.74874;0.75081;0.75236;0.75525;0.75766;0.75973;0.76202;0.76332;0.76334;0.76097;0.74863;0.71737;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74441;0.74529;0.74672;0.74818;0.75099;0.75335;0.75541;0.75768;0.75903;0.7592;0.75769;0.74744;0.71924;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.74067;0.74067;0.74257;0.74405;0.74674;0.74906;0.7511;0.75336;0.75475;0.75506;0.75387;0.74679;0.72062;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73692;0.73719;0.73853;0.73993;0.74252;0.7448;0.74684;0.74907;0.75049;0.75093;0.75003;0.74381;0.72128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73263;0.73263;0.73442;0.73582;0.73833;0.74054;0.74257;0.7448;0.74624;0.7468;0.74616;0.74073;0.72063;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72834;0.72834;0.73032;0.73171;0.73414;0.73626;0.73831;0.74052;0.74199;0.74267;0.74227;0.73761;0.71967;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72461;0.72461;0.72626;0.72759;0.72994;0.732;0.73404;0.73625;0.73774;0.73853;0.73835;0.73433;0.71833;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.72088;0.72106;0.7222;0.72348;0.72575;0.72775;0.72975;0.73197;0.73349;0.7344;0.73429;0.73098;0.71677;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71657;0.71657;0.71809;0.71936;0.72156;0.7235;0.72547;0.72769;0.72922;0.73024;0.73031;0.72754;0.715;0.68388;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71225;0.71225;0.71399;0.71524;0.71736;0.71924;0.7212;0.72339;0.72494;0.72606;0.72629;0.72401;0.71302;0.68698;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.7085;0.7085;0.7099;0.71111;0.71316;0.71498;0.71691;0.71909;0.72066;0.72186;0.72225;0.72041;0.71105;0.68937;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70474;0.70486;0.70582;0.70716;0.70895;0.71072;0.71262;0.71478;0.71636;0.71762;0.71816;0.71673;0.70859;0.67424;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.70033;0.70033;0.70162;0.70294;0.7047;0.70644;0.70832;0.71046;0.71204;0.71336;0.71405;0.71298;0.70597;0.67704;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69592;0.69592;0.69739;0.69867;0.70037;0.70206;0.70393;0.70609;0.7077;0.70908;0.7099;0.70917;0.70317;0.67858;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.69199;0.69235;0.69318;0.69438;0.69604;0.69767;0.69951;0.70164;0.70326;0.70474;0.70572;0.70529;0.7002;0.67922;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68805;0.68814;0.68894;0.69009;0.69169;0.69327;0.69508;0.69719;0.6988;0.70032;0.70142;0.70117;0.69709;0.67893;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.6836;0.68393;0.68468;0.68579;0.68734;0.68886;0.69064;0.69271;0.69432;0.69587;0.69707;0.69707;0.69376;0.67816;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.68392;0.68392;0.6849;0.68601;0.68757;0.6891;0.69087;0.69295;0.69456;0.69611;0.6973;0.69728;0.69387;0.6778;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.68424;0.68424;0.68513;0.68624;0.6878;0.68933;0.69111;0.69318;0.6948;0.69636;0.69754;0.69762;0.69398;0.67743;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.6843;0.68464;0.68537;0.68647;0.68804;0.68957;0.69135;0.69342;0.69502;0.69656;0.69775;0.69782;0.6941;0.67706;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68437;0.68489;0.68561;0.68671;0.68828;0.68982;0.6916;0.69364;0.69522;0.69675;0.69794;0.69804;0.6942;0.67667;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68479;0.68513;0.68586;0.68694;0.68853;0.69007;0.69182;0.69384;0.69542;0.69695;0.69813;0.6981;0.6943;0.67628;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68521;0.68521;0.6861;0.68719;0.68895;0.69031;0.69204;0.69405;0.69563;0.69716;0.69833;0.69826;0.69442;0.67586;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.76967;0.77076;0.77337;0.77491;0.77826;0.78076;0.78208;0.78316;0.78192;0.77595;0.75941;0.71885;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.76601;0.76687;0.76938;0.77053;0.77414;0.77664;0.77803;0.77921;0.77829;0.77308;0.7583;0.72187;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.76234;0.76234;0.76526;0.76671;0.77021;0.77266;0.7741;0.77534;0.77468;0.77016;0.75704;0.72425;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.75868;0.75951;0.76175;0.76294;0.76632;0.76875;0.77028;0.77161;0.77119;0.76727;0.75559;0.72607;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75501;0.75584;0.75798;0.75919;0.76243;0.76484;0.76644;0.76786;0.7677;0.76437;0.75411;0.72731;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75142;0.75142;0.75379;0.75545;0.75844;0.76093;0.76259;0.76409;0.76395;0.76139;0.75246;0.728;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.74777;0.74777;0.75004;0.75177;0.75448;0.75702;0.75872;0.76032;0.7604;0.75831;0.75059;0.7285;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74412;0.74412;0.74627;0.74803;0.75059;0.7531;0.75484;0.75651;0.7568;0.75515;0.74856;0.72858;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.7402;0.7402;0.74238;0.74401;0.7467;0.74917;0.75095;0.75268;0.75318;0.75192;0.74637;0.72839;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73595;0.73595;0.73806;0.73964;0.74251;0.74499;0.74698;0.74885;0.74952;0.74862;0.74398;0.7277;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73169;0.73169;0.73414;0.73529;0.73807;0.74049;0.74248;0.74468;0.74584;0.74528;0.74145;0.72703;0.6901;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72743;0.72743;0.72944;0.73095;0.73365;0.736;0.73798;0.74018;0.74142;0.7414;0.73878;0.72617;0.69312;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72318;0.72383;0.72518;0.72663;0.72923;0.73152;0.7335;0.73568;0.73697;0.7371;0.73549;0.72504;0.69543;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.71892;0.7196;0.72089;0.7223;0.72483;0.72706;0.72903;0.73119;0.73252;0.7328;0.73153;0.72443;0.69711;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71466;0.71538;0.71662;0.71799;0.72044;0.7226;0.72455;0.72671;0.72808;0.72849;0.72753;0.72136;0.69758;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71064;0.71064;0.71231;0.71369;0.71604;0.71815;0.72009;0.72223;0.72363;0.72417;0.7235;0.71817;0.69723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.70661;0.70693;0.70808;0.70938;0.71166;0.7137;0.71562;0.71776;0.71918;0.71984;0.71943;0.71486;0.69639;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70223;0.70223;0.70377;0.70508;0.70728;0.70925;0.71117;0.71328;0.71473;0.71549;0.71518;0.71144;0.69515;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.69785;0.69848;0.69953;0.70098;0.70291;0.7048;0.70671;0.7088;0.71026;0.71114;0.71105;0.70791;0.69362;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69381;0.69381;0.69523;0.69665;0.69853;0.70036;0.70224;0.70431;0.7058;0.70677;0.70688;0.70429;0.69182;0.66133;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.68976;0.69;0.69096;0.69231;0.69413;0.69592;0.69775;0.69981;0.70131;0.70238;0.70268;0.70058;0.68977;0.6646;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68533;0.68533;0.68663;0.68795;0.68972;0.69147;0.69327;0.69531;0.69681;0.69797;0.69843;0.69678;0.68774;0.66705;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.6809;0.6809;0.68228;0.68359;0.6853;0.68699;0.68878;0.6908;0.69231;0.69354;0.69416;0.69291;0.68517;0.65138;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.68145;0.68145;0.6826;0.68389;0.68561;0.68728;0.68906;0.69107;0.69257;0.6938;0.6944;0.69317;0.6851;0.65045;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.682;0.682;0.68292;0.68419;0.68591;0.68756;0.68933;0.69135;0.69285;0.69408;0.69466;0.69343;0.68515;0.6493;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.68199;0.68238;0.68324;0.68449;0.68618;0.68784;0.68961;0.69163;0.69314;0.69436;0.69493;0.69365;0.68523;0.64813;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68199;0.68271;0.68356;0.68477;0.68646;0.68812;0.6899;0.69193;0.69344;0.69464;0.6952;0.69388;0.68531;0.64691;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68263;0.68263;0.68382;0.68497;0.68675;0.68842;0.69021;0.69224;0.69375;0.69493;0.69549;0.69411;0.68539;0.66653;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68294;0.68331;0.68413;0.68526;0.68704;0.68871;0.69053;0.69256;0.69407;0.69524;0.69577;0.69435;0.68547;0.66593;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.76894;0.77012;0.77285;0.77541;0.77853;0.78072;0.78159;0.78178;0.77813;0.76586;0.73597;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.76487;0.76487;0.76871;0.77095;0.77412;0.77638;0.77761;0.77764;0.7745;0.76377;0.73683;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.7608;0.76211;0.76455;0.76676;0.76995;0.77225;0.77315;0.77362;0.77088;0.76139;0.73732;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.75721;0.75721;0.76048;0.76259;0.7658;0.76812;0.76913;0.76975;0.76745;0.75902;0.73723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75362;0.75428;0.75692;0.75807;0.76167;0.76402;0.7651;0.76588;0.76399;0.75661;0.73693;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.74951;0.74951;0.75253;0.754;0.75756;0.75991;0.76107;0.762;0.76048;0.75406;0.73629;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.7454;0.74655;0.74897;0.75006;0.75346;0.75581;0.75707;0.7581;0.75694;0.7514;0.73544;0.69636;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74185;0.74185;0.74466;0.74604;0.74937;0.75172;0.75306;0.7542;0.75335;0.74862;0.73442;0.69915;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.73811;0.73811;0.7407;0.74229;0.74529;0.74763;0.74904;0.75028;0.74974;0.74573;0.73322;0.70136;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73437;0.73437;0.73674;0.73844;0.74124;0.74361;0.74507;0.74639;0.7461;0.74276;0.73189;0.70304;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73063;0.73063;0.73287;0.73447;0.73722;0.7396;0.74112;0.74253;0.74248;0.73973;0.73033;0.70431;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72683;0.72683;0.72898;0.73067;0.73318;0.73558;0.73716;0.73865;0.7386;0.73661;0.72858;0.70513;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72303;0.72368;0.72509;0.72677;0.72916;0.73154;0.73317;0.73472;0.7349;0.73335;0.72653;0.70547;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.71901;0.71901;0.72107;0.72284;0.72513;0.72747;0.72916;0.73077;0.73115;0.73;0.72426;0.70536;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71452;0.71452;0.71651;0.71809;0.72079;0.72316;0.72512;0.72679;0.72735;0.72656;0.72178;0.70499;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71004;0.71004;0.71197;0.7135;0.71615;0.71844;0.72036;0.72242;0.7235;0.72302;0.71912;0.70444;0.66558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.70555;0.70555;0.70745;0.70894;0.7115;0.71376;0.71565;0.7177;0.71887;0.71904;0.71628;0.70362;0.66918;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70107;0.70167;0.70296;0.70437;0.70685;0.70907;0.71093;0.71299;0.71421;0.71438;0.71273;0.70247;0.67195;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.6967;0.6967;0.6984;0.70006;0.7022;0.70437;0.70623;0.7083;0.70957;0.70988;0.70855;0.70154;0.67369;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69233;0.69277;0.69392;0.69545;0.69757;0.69967;0.70155;0.7036;0.70492;0.70536;0.70434;0.69832;0.6739;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.68797;0.68833;0.68941;0.69088;0.69294;0.69497;0.69685;0.6989;0.70026;0.70082;0.70009;0.69495;0.67372;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68344;0.68344;0.68489;0.68634;0.68832;0.69028;0.69214;0.69418;0.69557;0.69623;0.6958;0.69151;0.67294;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.679;0.679;0.68041;0.6818;0.68369;0.6856;0.68744;0.68947;0.69087;0.69164;0.69147;0.68788;0.67177;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.67949;0.67949;0.68078;0.68215;0.68407;0.68598;0.68782;0.68985;0.69126;0.69203;0.69182;0.68815;0.67159;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.67976;0.67976;0.68114;0.68252;0.68445;0.68637;0.68822;0.69022;0.69162;0.6924;0.69204;0.68843;0.67149;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.68003;0.68058;0.68154;0.68288;0.68485;0.68678;0.68859;0.69059;0.69198;0.69275;0.69241;0.68871;0.67139;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68029;0.68097;0.68193;0.6832;0.68526;0.68717;0.68898;0.69095;0.69234;0.6931;0.69275;0.68899;0.67128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68091;0.68091;0.6823;0.68361;0.68566;0.68755;0.68935;0.69132;0.69271;0.69347;0.69309;0.68929;0.67117;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68153;0.68153;0.68272;0.68402;0.68603;0.68792;0.68973;0.6917;0.69309;0.69384;0.69344;0.68959;0.67106;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77209;0.77209;0.77534;0.77811;0.78087;0.78316;0.78329;0.78214;0.77423;0.75084;0.69701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.7674;0.7674;0.77092;0.77345;0.77625;0.77856;0.77836;0.77773;0.77064;0.74965;0.70063;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.7627;0.7631;0.76639;0.76921;0.77183;0.77408;0.77439;0.77352;0.76711;0.74831;0.70445;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.75821;0.75821;0.76179;0.76448;0.76736;0.76968;0.77008;0.76941;0.76378;0.74691;0.70706;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75372;0.75372;0.75742;0.75991;0.76284;0.76513;0.76581;0.76516;0.76033;0.74541;0.70907;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.74922;0.75045;0.75301;0.75543;0.75836;0.76039;0.76146;0.76104;0.75692;0.74371;0.71077;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.74473;0.7461;0.74872;0.75099;0.75393;0.75612;0.75714;0.75692;0.75353;0.74178;0.71229;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.7411;0.7411;0.74443;0.74657;0.74954;0.75175;0.75284;0.75287;0.74999;0.73968;0.7133;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.73747;0.73806;0.74031;0.74224;0.7452;0.7474;0.74833;0.7488;0.7464;0.73741;0.71382;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73322;0.73322;0.73622;0.73805;0.74099;0.74314;0.74414;0.74477;0.74282;0.73504;0.71388;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.72897;0.73013;0.7325;0.73386;0.73682;0.73898;0.74005;0.74084;0.73926;0.73262;0.71352;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72536;0.72536;0.72812;0.72939;0.73264;0.73481;0.73595;0.73687;0.73564;0.72992;0.71289;0.67034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72176;0.72215;0.72426;0.72532;0.72845;0.73061;0.73183;0.73286;0.73197;0.72708;0.71206;0.6738;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.71742;0.71742;0.71983;0.72123;0.72431;0.72639;0.72769;0.72882;0.72823;0.7241;0.71099;0.67658;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71308;0.71308;0.71561;0.71713;0.71996;0.72215;0.72353;0.72476;0.72445;0.72098;0.70978;0.67884;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.70941;0.70941;0.71149;0.71311;0.71562;0.71791;0.71935;0.72067;0.72061;0.71775;0.70816;0.68043;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.70575;0.706;0.7074;0.70899;0.71137;0.71365;0.71515;0.71655;0.71671;0.7144;0.70627;0.68171;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70134;0.70134;0.70316;0.70481;0.70712;0.70937;0.71092;0.7124;0.71258;0.71095;0.70411;0.68229;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.69693;0.69765;0.69897;0.70047;0.70285;0.70507;0.70667;0.70821;0.7086;0.70738;0.70171;0.68236;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69229;0.69229;0.69411;0.69562;0.69815;0.70046;0.70225;0.704;0.70456;0.70372;0.69908;0.68214;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.68765;0.68812;0.68938;0.6908;0.69322;0.69548;0.69729;0.69929;0.70034;0.69996;0.69626;0.68166;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68282;0.68282;0.68455;0.686;0.68833;0.6905;0.69234;0.69431;0.69541;0.69555;0.69322;0.68083;0.64574;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.67798;0.67863;0.6798;0.6814;0.68346;0.68555;0.68738;0.68934;0.6905;0.69066;0.68918;0.68136;0.64874;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.67871;0.67871;0.68027;0.68187;0.68392;0.68602;0.68787;0.68982;0.69098;0.69126;0.6896;0.68152;0.6483;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.67914;0.67914;0.68074;0.68233;0.68439;0.68652;0.68836;0.6903;0.69146;0.69172;0.69003;0.68183;0.64793;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.67958;0.68017;0.68127;0.68264;0.68487;0.68702;0.68882;0.69078;0.69193;0.6922;0.69046;0.68215;0.64737;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68001;0.68066;0.68175;0.68313;0.68538;0.68753;0.68932;0.69126;0.69241;0.69265;0.69092;0.68248;0.64692;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68064;0.68064;0.6822;0.68363;0.68589;0.68802;0.68982;0.69176;0.6929;0.69297;0.69138;0.68281;0.64645;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68126;0.68164;0.68273;0.68414;0.68639;0.68852;0.69033;0.69227;0.69341;0.69346;0.69185;0.68314;0.64594;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/St45_total_temperature.csv b/engine/test/stubs/V2527-A5/St45_total_temperature.csv
new file mode 100644
index 00000000..82cde459
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/St45_total_temperature.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1255.2;1255.5;1255.8;1256.5;1257.5;1259.1;1261.3;1264.1;1267.5;1271.7;1276.9;1282.7;1289.3;1296.6;1304.6;1313.2;1322.4;1331.9;1341.5;1350.9;
+500;1250.4;1250.8;1251.2;1251.8;1252.9;1254.3;1256.3;1258.8;1262;1265.9;1270.6;1276.1;1282.4;1289.5;1297.3;1305.8;1314.9;1324.5;1334.4;1344.2;
+1000;1245.6;1246;1246.5;1247.2;1248.3;1249.8;1251.8;1254.1;1257;1260.6;1264.7;1269.8;1275.7;1282.5;1290;1298.4;1307.3;1316.9;1326.9;1337.1;
+1500;1240.8;1241;1241.5;1242.3;1243.5;1245.2;1247.2;1249.6;1252.5;1255.8;1259.8;1264.2;1269.4;1275.7;1282.9;1291;1299.8;1309.3;1319.3;1329.7;
+2000;1235.3;1235.5;1236.1;1237;1238.4;1240.2;1242.4;1245;1248;1251.2;1255;1259.2;1263.9;1269.4;1276.1;1283.8;1292.3;1301.6;1311.5;1322;
+2500;1229.3;1229.6;1230.2;1231.3;1232.9;1234.9;1237.2;1240;1243.2;1246.6;1250.2;1254.4;1258.9;1263.9;1269.8;1276.8;1284.9;1294;1303.8;1314.1;
+3000;1222.8;1223.1;1223.8;1225;1226.8;1229;1231.6;1234.7;1238.1;1241.7;1245.5;1249.8;1254.1;1258.9;1264.2;1270.5;1278;1286.5;1296;1306.2;
+3500;1215.9;1216.2;1217;1218.3;1220.2;1222.5;1225.4;1228.7;1232.4;1236.3;1240.4;1245;1249.4;1254;1259.1;1264.8;1271.6;1279.5;1288.3;1298.3;
+4000;1208.7;1209;1209.8;1211.2;1213.2;1215.6;1218.7;1222.2;1226.2;1230.5;1234.9;1239.8;1244.5;1249.3;1254.2;1259.6;1265.7;1272.9;1281.3;1290.6;
+4500;1201.5;1202.1;1203;1204.3;1206.3;1208.7;1211.7;1215.3;1219.4;1224;1229.1;1234.1;1239.2;1244.3;1249.4;1254.7;1260.4;1266.8;1274.5;1283.4;
+5000;1194.2;1194.9;1195.8;1197.3;1199.3;1201.9;1205;1208.7;1212.7;1217.2;1222.4;1227.8;1233.4;1238.9;1244.3;1249.8;1255.3;1261.4;1268.2;1276.4;
+5500;1187;1187.3;1188.2;1189.7;1191.9;1194.6;1197.9;1201.7;1206;1210.7;1215.9;1221.3;1226.9;1233;1238.8;1244.6;1250.4;1256.2;1262.6;1269.9;
+6000;1179.7;1179.8;1180.2;1181.8;1184;1186.9;1190.3;1194.4;1198.8;1203.7;1209.2;1214.8;1220.7;1226.7;1232.8;1239.1;1245.2;1251.2;1257.3;1264;
+6500;1172.2;1172.4;1173.2;1174;1176.1;1178.9;1182.3;1186.5;1191.2;1196.5;1202.1;1207.9;1214.1;1220.4;1226.9;1233.3;1239.6;1246;1252.2;1258.6;
+7000;1166.2;1166.5;1167.2;1168.5;1170.2;1172.5;1174.9;1178.9;1183.4;1188.6;1194.4;1200.6;1207;1213.7;1220.5;1227.3;1234.1;1240.5;1246.9;1253.4;
+7500;1160.2;1160.5;1161.3;1162.5;1164.3;1166.5;1169.3;1172.6;1176;1181.3;1186.9;1192.9;1199.6;1206.5;1213.6;1220.8;1228.1;1235.1;1241.8;1248.1;
+8000;1154.3;1154.4;1155.3;1156.5;1158.3;1160.6;1163.3;1166.6;1170.3;1174.6;1179.5;1185.7;1192.3;1199.1;1206.3;1213.9;1221.5;1229.1;1236.4;1243.2;
+8500;1148.3;1148.4;1149.3;1150.5;1152.3;1154.5;1157.3;1160.5;1164.2;1168.4;1173.2;1178;1184.9;1192;1199.3;1206.7;1214.5;1222.5;1230.4;1237.9;
+9000;1142.6;1142.7;1143.4;1144.6;1146.4;1148.6;1151.3;1154.4;1158.1;1162.3;1167;1172.2;1177.8;1184.4;1192.1;1199.9;1207.7;1215.4;1223.7;1231.8;
+9500;1136.9;1136.7;1137.6;1138.7;1140.4;1142.6;1145.3;1148.4;1152.1;1156.2;1160.9;1165.9;1171.5;1177.5;1184.3;1192.5;1200.8;1208.9;1217;1225.1;
+10000;1131.1;1131.3;1132;1133.1;1134.7;1136.7;1139.3;1142.6;1146.2;1150.3;1154.8;1159.8;1165.2;1171.1;1177.5;1184.6;1193.3;1201.9;1210.4;1218.8;
+10500;1125.3;1125.9;1126.6;1127.7;1129.3;1131.2;1133.7;1136.5;1140.2;1144.2;1148.7;1153.7;1159.1;1164.9;1171.1;1177.9;1185.2;1194.3;1203.4;1212.2;
+11000;1120.4;1120.6;1121.3;1122.3;1123.9;1125.8;1128.2;1131;1134.3;1138.1;1142.6;1147.5;1152.9;1158.7;1164.9;1171.5;1178.6;1186.2;1195.7;1205;
+11500;1123.9;1124.2;1124.8;1125.9;1127.5;1129.4;1131.8;1134.6;1137.9;1141.6;1146.3;1151.2;1156.6;1162.3;1168.6;1175.2;1182.3;1189.9;1199.3;1208.5;
+12000;1127.4;1127.8;1128.5;1129.5;1131.1;1133;1135.4;1138.3;1141.5;1145.3;1149.9;1154.9;1160.2;1166;1172.3;1179;1186.1;1193.7;1203.1;1212.3;
+12500;1131.2;1131.4;1132.1;1133.2;1134.7;1136.7;1139.1;1141.9;1145.2;1148.9;1153.6;1158.6;1164;1169.8;1176;1182.7;1189.9;1197.5;1206.9;1216.2;
+13000;1135;1135.1;1135.8;1136.9;1138.4;1140.4;1142.8;1145.6;1148.9;1152.6;1157.3;1162.3;1167.7;1173.5;1179.8;1186.5;1193.7;1201.4;1210.7;1220;
+13500;1138.6;1138.8;1139.5;1140.6;1142.1;1144.1;1146.5;1149.4;1152.7;1156.4;1161.1;1166.1;1171.5;1177.3;1183.6;1190.4;1197.6;1205.2;1214.6;1223.9;
+14000;1142.6;1142.8;1143.5;1144.5;1146.1;1148;1150.4;1153.2;1156.5;1160.2;1164.8;1169.8;1175.3;1181.2;1187.5;1194.2;1201.4;1209.1;1218.5;1227.9;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1200.2;1200.4;1200.9;1201.7;1203.1;1204.9;1207.3;1210.3;1214.2;1218.8;1224.2;1230;1236;1242.4;1249.2;1256.5;1264.3;1272.8;1282.1;1292.4;
+500;1193.4;1193.4;1193.9;1194.8;1196;1197.8;1200.1;1203.1;1207.1;1212;1217.4;1223.4;1229.7;1236.2;1243;1250.2;1257.9;1266.1;1275.1;1285;
+1000;1186.3;1186.5;1187;1187.9;1189.1;1190.8;1193.2;1196.3;1200.2;1204.8;1210.4;1216.5;1223;1229.8;1236.7;1243.9;1251.5;1259.6;1268.3;1277.8;
+1500;1179.2;1179.8;1180.3;1181.1;1182.3;1184;1186.3;1189.4;1193.3;1198.2;1203.5;1209.5;1216;1223;1230.2;1237.5;1245.1;1253.2;1261.6;1270.8;
+2000;1173.2;1173.3;1173.7;1174.5;1175.7;1177.3;1179.6;1182.6;1186.5;1191.3;1196.7;1202.7;1209.1;1216;1223.4;1231;1238.7;1246.7;1255.1;1264;
+2500;1167;1167.1;1167.6;1168.3;1169.4;1170.9;1173.1;1176.1;1179.8;1184.5;1189.8;1195.7;1202.2;1209.1;1216.5;1224.1;1232.1;1240.2;1248.5;1257.3;
+3000;1160.9;1161.5;1161.9;1162.5;1163.5;1164.9;1167;1169.9;1173.4;1177.7;1183;1188.8;1195.2;1202.1;1209.5;1217.3;1225.3;1233.5;1241.9;1250.6;
+3500;1156.1;1156.3;1156.6;1157.2;1158.1;1159.5;1161.4;1164;1167.3;1171.3;1176.4;1181.9;1188.1;1195;1202.4;1210.3;1218.5;1226.9;1235.2;1243.9;
+4000;1151.5;1151.6;1151.9;1152.4;1153.2;1154.4;1156.2;1158.6;1161.6;1165.3;1170.1;1175.3;1181.2;1187.9;1195.2;1203.1;1211.4;1220;1228.7;1237.2;
+4500;1146.8;1147.4;1147.7;1148.2;1149.1;1150.3;1151.9;1153.9;1156.5;1159.8;1164.1;1168.9;1174.6;1180.9;1188;1195.8;1204.1;1212.8;1221.8;1230.7;
+5000;1143;1143.1;1143.4;1144;1145;1146.3;1148;1150;1152.4;1155.3;1158.7;1163;1168.2;1174.2;1181;1188.5;1196.7;1205.4;1214.5;1223.8;
+5500;1138.3;1138.4;1138.8;1139.6;1140.6;1142.1;1143.9;1146;1148.5;1151.3;1154.5;1158.3;1162.6;1167.8;1174.1;1181.3;1189.3;1198;1207.1;1216.5;
+6000;1133.2;1133.4;1133.9;1134.7;1135.9;1137.5;1139.5;1141.8;1144.4;1147.3;1150.5;1154.1;1158;1162.5;1168;1174.4;1182;1190.4;1199.5;1209;
+6500;1128.2;1128.8;1129.3;1130.2;1131.4;1133;1134.9;1137.2;1140.1;1143.1;1146.4;1149.9;1153.8;1157.9;1162.8;1168.5;1175.2;1183;1191.8;1201.3;
+7000;1123.6;1123.8;1124.3;1125.3;1126.7;1128.5;1130.6;1133.2;1135.9;1138.9;1142.1;1145.9;1149.7;1153.7;1158.1;1163.2;1169.3;1176.4;1184.4;1193.5;
+7500;1118.2;1118.4;1119;1120.1;1121.6;1123.5;1125.8;1128.6;1131.6;1134.9;1138.3;1142;1145.6;1149.6;1153.9;1158.5;1163.9;1170.3;1177.8;1186.2;
+8000;1112.4;1112.7;1113.4;1114.5;1116.1;1118.1;1120.6;1123.5;1126.8;1130.3;1134;1138.1;1142;1145.9;1149.8;1154.2;1159.1;1164.8;1171.6;1179.4;
+8500;1106.5;1106.6;1107.3;1108.5;1110.1;1112.3;1114.9;1118;1121.5;1125.2;1129.2;1133.6;1137.9;1142.2;1146.5;1150.6;1154.8;1159.9;1165.9;1173.1;
+9000;1099.9;1100.2;1101;1102.2;1104;1106.2;1109;1112.2;1115.7;1119.7;1124.1;1128.6;1133.3;1138;1142.6;1147.2;1151.6;1156;1160.9;1167.2;
+9500;1093.2;1093.3;1094.1;1095.4;1097.3;1099.7;1102.6;1106;1109.8;1113.9;1118.5;1123.2;1128.1;1133.2;1138.3;1143.3;1148.1;1152.7;1157.3;1162.4;
+10000;1087.1;1087.3;1088;1089.1;1090.7;1092.7;1095.8;1099.4;1103.3;1107.8;1112.5;1117.4;1122.6;1127.9;1133.4;1138.9;1144.1;1149.2;1154;1158.8;
+10500;1080.9;1081.5;1082.2;1083.3;1084.9;1086.9;1089.5;1092.1;1096.3;1101.1;1106;1111.2;1116.7;1122.3;1128.1;1133.8;1139.6;1145.1;1150.5;1155.4;
+11000;1075.5;1075.7;1076.4;1077.5;1079.1;1081.1;1083.7;1086.6;1090.1;1093.6;1099;1104.5;1110.3;1116.2;1122.3;1128.5;1134.6;1140.6;1146.4;1151.9;
+11500;1078.9;1079.2;1079.9;1081;1082.6;1084.6;1087.2;1090.1;1093.6;1097.2;1102.5;1108;1113.8;1119.8;1125.9;1132.1;1138.2;1144.2;1149.9;1155.3;
+12000;1082.3;1082.7;1083.4;1084.5;1086.1;1088.1;1090.7;1093.7;1097.1;1100.7;1106.1;1111.6;1117.4;1123.4;1129.5;1135.7;1141.8;1147.9;1153.6;1158.9;
+12500;1086;1086.2;1086.9;1088;1089.6;1091.7;1094.3;1097.3;1100.7;1104.3;1109.6;1115.2;1121;1127;1133.1;1139.3;1145.5;1151.6;1157.3;1162.6;
+13000;1089.7;1089.8;1090.5;1091.6;1093.2;1095.3;1097.8;1100.8;1104.3;1107.8;1113.2;1118.8;1124.6;1130.7;1136.8;1143;1149.2;1155.3;1161;1166.4;
+13500;1093.2;1093.5;1094.1;1095.3;1096.8;1098.9;1101.4;1104.4;1107.9;1111.4;1116.8;1122.4;1128.3;1134.3;1140.5;1146.7;1152.9;1159;1164.7;1170.1;
+14000;1097.1;1097.4;1098;1099.2;1100.7;1102.8;1105.3;1108.2;1111.6;1115.2;1120.5;1126.1;1132;1138;1144.2;1150.5;1156.7;1162.8;1168.5;1173.9;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1150.6;1150.7;1150.9;1151.4;1152.3;1153.4;1154.9;1156.9;1159.5;1163.2;1167.8;1173.3;1179.7;1186.8;1194.5;1202.7;1211.3;1220.5;1230.3;1240.6;
+500;1144.7;1144.8;1145.1;1145.6;1146.4;1147.5;1148.9;1150.7;1153.3;1156.9;1161.2;1166.6;1172.8;1179.8;1187.4;1195.6;1204.2;1213.3;1223;1233.2;
+1000;1138.8;1139;1139.3;1139.8;1140.6;1141.7;1143.1;1145;1147.4;1150.6;1154.9;1160;1166;1172.9;1180.4;1188.5;1197.1;1206.2;1215.7;1225.8;
+1500;1132.8;1133;1133.3;1133.9;1134.7;1135.8;1137.3;1139.3;1141.7;1144.9;1149;1153.9;1159.5;1166;1173.4;1181.3;1189.9;1198.9;1208.4;1218.4;
+2000;1126.6;1126.7;1127.1;1127.7;1128.6;1129.9;1131.4;1133.5;1136;1139.2;1143.4;1148.1;1153.5;1159.5;1166.4;1174.2;1182.6;1191.6;1201.1;1211;
+2500;1120.4;1120.4;1120.6;1121.3;1122.3;1123.6;1125.4;1127.5;1130.2;1133.5;1137.7;1142.4;1147.7;1153.6;1160;1167.1;1175.4;1184.3;1193.7;1203.6;
+3000;1113.2;1113.3;1113.7;1114.5;1115.6;1117;1118.9;1121.3;1124.2;1127.7;1132;1136.8;1142;1147.7;1153.9;1160.8;1168.4;1176.9;1186.2;1196.1;
+3500;1106;1106.3;1106.8;1107.5;1108.7;1110.2;1112.2;1114.8;1117.9;1121.7;1126.2;1131;1136.3;1141.9;1148;1154.6;1161.9;1169.9;1178.8;1188.5;
+4000;1099.6;1099.8;1100.2;1100.9;1102;1103.5;1105.4;1107.9;1111.3;1115.4;1120.1;1125.1;1130.5;1136.1;1142.2;1148.6;1155.6;1163.3;1171.8;1181;
+4500;1093.2;1093.3;1093.6;1094.4;1095.4;1096.9;1099;1101.6;1104.8;1108.9;1113.6;1118.9;1124.5;1130.2;1136.3;1142.7;1149.5;1156.9;1165;1173.9;
+5000;1086.6;1086.7;1087.1;1087.8;1088.9;1090.4;1092.4;1095.1;1098.5;1102.6;1107.4;1112.7;1118.2;1124.2;1130.3;1136.7;1143.5;1150.7;1158.4;1166.9;
+5500;1080;1080.4;1080.8;1081.5;1082.5;1084;1086;1088.6;1092;1096.2;1101.1;1106.4;1112.1;1118.1;1124.2;1130.7;1137.5;1144.5;1152.1;1160.2;
+6000;1074.9;1075;1075.3;1075.8;1076.7;1077.9;1079.7;1082.3;1085.7;1089.7;1094.7;1100;1105.8;1111.9;1118.3;1124.8;1131.3;1138.4;1145.8;1153.7;
+6500;1070.2;1070.3;1070.6;1071;1071.8;1072.9;1074.6;1076.8;1079.8;1083.5;1088.2;1093.5;1099.3;1105.5;1112;1118.8;1125.6;1132.5;1139.6;1147.4;
+7000;1066.2;1066.2;1066.5;1066.8;1067.5;1068.5;1070;1072.1;1074.9;1078.3;1082.6;1087.3;1092.7;1098.9;1105.5;1112.4;1119.6;1126.8;1133.9;1141.2;
+7500;1062.1;1062.7;1062.9;1063.2;1063.8;1064.7;1066;1067.9;1070.4;1073.5;1077.4;1081.9;1086.9;1092.6;1098.8;1105.8;1113.1;1120.6;1128.1;1135.5;
+8000;1059.3;1059.4;1059.6;1059.9;1060.5;1061.4;1062.7;1064.3;1066.5;1069.2;1072.8;1076.8;1081.5;1086.9;1092.9;1099.5;1106.5;1114.1;1122;1129.6;
+8500;1056.2;1056.1;1056.4;1056.8;1057.4;1058.3;1059.6;1061.2;1063.2;1065.6;1068.5;1072.2;1076.5;1081.5;1087.2;1093.5;1100.5;1107.8;1115.3;1123.5;
+9000;1052.6;1052.6;1052.9;1053.5;1054.2;1055.3;1056.7;1058.3;1060.2;1062.5;1065;1068.3;1072;1076.5;1081.7;1087.7;1094.4;1101.7;1109.3;1117.2;
+9500;1048.6;1048.8;1049.1;1049.7;1050.7;1052;1053.5;1055.3;1057.4;1059.7;1062.1;1064.8;1068.1;1072;1076.7;1082.2;1088.5;1095.5;1103.1;1111.1;
+10000;1044.2;1044.4;1044.8;1045.6;1046.7;1048.1;1049.8;1051.9;1054.2;1056.7;1059.3;1061.9;1065.1;1068.4;1072.3;1077.2;1082.9;1089.6;1096.9;1104.8;
+10500;1039.4;1039.5;1040;1040.9;1042.1;1043.7;1045.7;1048;1050.5;1053.2;1056.1;1059;1062.2;1065.3;1068.8;1072.9;1077.9;1083.9;1090.8;1098.5;
+11000;1034.1;1034.3;1034.9;1035.8;1037.2;1038.9;1041;1043.5;1046.3;1049.3;1052.6;1055.9;1059.1;1062.4;1065.8;1069.4;1073.7;1078.9;1085.1;1092.3;
+11500;1037.4;1037.7;1038.2;1039.2;1040.5;1042.3;1044.4;1046.8;1049.7;1052.7;1056;1059.3;1062.6;1065.8;1069.2;1072.9;1077.1;1082.4;1088.6;1095.7;
+12000;1040.7;1041;1041.6;1042.6;1043.9;1045.7;1047.8;1050.3;1053.1;1056.1;1059.4;1062.7;1066;1069.3;1072.6;1076.3;1080.6;1085.9;1092.1;1099.3;
+12500;1044.3;1044.5;1045;1046;1047.3;1049.1;1051.2;1053.7;1056.5;1059.5;1062.9;1066.2;1069.5;1072.7;1076.1;1079.8;1084.1;1089.4;1095.7;1102.9;
+13000;1047.8;1047.9;1048.5;1049.4;1050.8;1052.5;1054.7;1057.2;1060;1063;1066.4;1069.7;1073;1076.2;1079.6;1083.3;1087.7;1093;1099.3;1106.5;
+13500;1051.3;1051.5;1052.1;1053;1054.4;1056.1;1058.2;1060.7;1063.5;1066.5;1069.9;1073.2;1076.5;1079.8;1083.2;1086.9;1091.2;1096.6;1102.9;1110.1;
+14000;1055.2;1055.3;1055.9;1056.9;1058.2;1059.9;1062;1064.5;1067.2;1070.2;1073.5;1076.7;1080;1083.3;1086.7;1090.5;1094.9;1100.2;1106.6;1113.8;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1101.4;1101.5;1101.9;1102.5;1103.5;1104.8;1106.6;1109;1111.8;1115.3;1119.4;1124.4;1130.2;1137.1;1144.7;1153;1162;1171.4;1181.4;1191.7;
+500;1095;1095;1095.4;1096;1096.9;1098.1;1099.8;1102;1104.9;1108.4;1112.5;1117.4;1123.2;1130;1137.6;1145.8;1154.7;1164;1173.9;1184.3;
+1000;1088.5;1088.5;1088.9;1089.4;1090.3;1091.5;1093.2;1095.4;1098.2;1101.6;1105.6;1110.6;1116.3;1123;1130.5;1138.6;1147.4;1156.6;1166.4;1176.8;
+1500;1082;1082.1;1082.4;1082.9;1083.8;1085;1086.6;1088.8;1091.6;1095;1099.1;1103.8;1109.4;1116.1;1123.4;1131.4;1140;1149.2;1158.9;1169.2;
+2000;1075.4;1075.6;1075.9;1076.5;1077.3;1078.4;1080;1082.2;1085;1088.4;1092.6;1097.4;1102.9;1109.3;1116.4;1124.2;1132.7;1141.8;1151.4;1161.6;
+2500;1069.2;1069.3;1069.6;1070.1;1070.9;1072;1073.5;1075.7;1078.5;1081.9;1086;1090.9;1096.5;1102.8;1109.7;1117.1;1125.4;1134.4;1143.9;1153.9;
+3000;1063.1;1063.2;1063.4;1063.9;1064.6;1065.6;1067.1;1069.2;1071.9;1075.3;1079.5;1084.4;1090;1096.3;1103.2;1110.5;1118.4;1127;1136.4;1146.3;
+3500;1057.4;1057.5;1057.7;1058.1;1058.7;1059.6;1060.8;1062.8;1065.5;1068.8;1073;1077.9;1083.5;1089.8;1096.6;1103.9;1111.6;1119.9;1128.8;1138.6;
+4000;1051.8;1052.2;1052.4;1052.8;1053.3;1054.2;1055.3;1057;1059.4;1062.4;1066.5;1071.4;1077;1083.2;1090;1097.3;1104.9;1113.1;1121.8;1131.1;
+4500;1046.8;1046.9;1047.1;1047.5;1048;1048.9;1050;1051.6;1053.8;1056.7;1060.5;1065;1070.5;1076.7;1083.4;1090.6;1098.2;1106.3;1114.8;1123.9;
+5000;1041.8;1041.9;1041.8;1042.2;1042.8;1043.6;1044.7;1046.2;1048.5;1051.3;1054.9;1059.3;1064.4;1070.3;1076.8;1083.9;1091.4;1099.5;1107.9;1116.8;
+5500;1036.8;1036.8;1037;1037.4;1037.9;1038.7;1039.7;1041;1043.2;1046;1049.4;1053.8;1058.7;1064.3;1070.5;1077.3;1084.7;1092.6;1101;1109.8;
+6000;1031.9;1032;1032.2;1032.6;1033.2;1034;1035.1;1036.5;1038.5;1041;1044.2;1048.4;1053.1;1058.5;1064.4;1071.1;1078.2;1085.8;1094;1102.8;
+6500;1026.6;1026.7;1027;1027.5;1028.2;1029.1;1030.4;1031.9;1034;1036.6;1039.8;1043.7;1048;1052.9;1058.6;1064.9;1071.9;1079.4;1087.3;1095.7;
+7000;1021.4;1021.4;1021.5;1022;1022.8;1023.9;1025.3;1027.1;1029.3;1032;1035.5;1039.3;1043.5;1048.2;1053.3;1059;1065.7;1073;1080.8;1089.1;
+7500;1015.3;1015.4;1015.7;1016.3;1017.1;1018.3;1019.8;1021.8;1024.3;1027.3;1031;1034.9;1039.1;1043.7;1048.6;1054;1059.9;1066.7;1074.4;1082.5;
+8000;1009.5;1009.6;1010;1010.5;1011.3;1012.5;1014.1;1016.3;1018.9;1022.2;1026.2;1030.3;1034.6;1039.2;1044;1049.3;1054.9;1061.2;1068.1;1076;
+8500;1003.9;1004;1004.3;1004.8;1005.7;1006.9;1008.5;1010.6;1013.4;1016.8;1020.9;1025.3;1029.9;1034.6;1039.5;1044.7;1050.2;1056.1;1062.7;1069.9;
+9000;998.17;998.43;998.74;999.28;1000.1;1001.3;1002.9;1005.1;1007.9;1011.4;1015.6;1020.1;1024.8;1029.8;1034.9;1040.1;1045.5;1051.3;1057.5;1064.4;
+9500;992.36;993.11;993.39;993.89;994.67;995.8;997.41;999.6;1002.6;1005.9;1010.1;1014.7;1019.6;1024.7;1030;1035.4;1040.9;1046.5;1052.6;1059.1;
+10000;988.15;988.24;988.48;988.92;989.62;990.67;992.19;994.29;997.1;1000.5;1004.6;1009.1;1014.1;1019.4;1024.9;1030.6;1036.2;1041.8;1047.8;1054.1;
+10500;983.97;984.03;984.21;984.56;985.14;986.06;987.43;989.41;992.01;995.21;999.25;1003.6;1008.5;1013.7;1019.4;1025.3;1031.4;1037.2;1043.1;1049.2;
+11000;980.41;980.46;980.62;980.92;981.41;982.18;983.37;985.11;987.41;990.32;994.08;998.23;1002.9;1008.1;1013.7;1019.7;1026;1032.3;1038.5;1044.6;
+11500;983.63;983.7;983.86;984.15;984.65;985.43;986.62;988.37;990.68;993.6;997.38;1001.5;1006.2;1011.4;1017.1;1023.1;1029.4;1035.8;1041.9;1048;
+12000;986.84;986.96;987.11;987.41;987.91;988.7;989.89;991.65;993.98;996.92;1000.7;1004.8;1009.5;1014.7;1020.4;1026.5;1032.8;1039.2;1045.4;1051.5;
+12500;990.2;990.25;990.41;990.71;991.21;992;993.2;994.97;997.31;1000.3;1004;1008.2;1012.9;1018.1;1023.8;1029.9;1036.3;1042.7;1048.9;1055;
+13000;993.56;993.63;993.73;994.04;994.54;995.33;996.54;998.32;1000.7;1003.6;1007.4;1011.5;1016.3;1021.5;1027.3;1033.4;1039.8;1046.2;1052.4;1058.5;
+13500;997.19;997.23;997.37;997.66;998.13;998.89;1000.1;1001.8;1004;1007.1;1010.7;1014.9;1019.7;1025;1030.7;1036.9;1043.3;1049.7;1055.9;1062.1;
+14000;1000.9;1000.9;1001.1;1001.4;1001.8;1002.6;1003.8;1005.5;1007.8;1010.8;1014.4;1018.5;1023.2;1028.4;1034.2;1040.4;1046.8;1053.2;1059.5;1065.7;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1057.5;1057.6;1058;1058.8;1060;1061.6;1063.2;1065.3;1067.8;1071;1074.7;1079.3;1084.6;1090.5;1097.2;1104.9;1113.1;1121.8;1130.8;1140.3;
+500;1050.7;1050.8;1051.2;1052;1053.1;1054.6;1056.1;1058.1;1060.6;1063.8;1067.6;1072.2;1077.5;1083.5;1090.3;1098;1106.3;1115;1124.1;1133.5;
+1000;1043.9;1044.1;1044.5;1045.2;1046.3;1047.7;1049.3;1051.3;1053.7;1056.6;1060.4;1065.1;1070.4;1076.4;1083.3;1091.1;1099.5;1108.2;1117.2;1126.7;
+1500;1037;1037.4;1037.8;1038.5;1039.5;1041;1042.5;1044.5;1046.9;1049.8;1053.6;1058.1;1063.2;1069.4;1076.3;1084.1;1092.4;1101.2;1110.3;1119.7;
+2000;1030.7;1030.8;1031.2;1031.8;1032.8;1034.2;1035.7;1037.7;1040.2;1043.1;1046.9;1051.3;1056.4;1062.3;1069.3;1077;1085.3;1094.1;1103.3;1112.7;
+2500;1024.3;1024.2;1024.6;1025.2;1026.1;1027.5;1029;1031;1033.4;1036.3;1040.1;1044.5;1049.6;1055.6;1062.4;1069.9;1078.2;1086.9;1096.1;1105.6;
+3000;1017.7;1017.8;1018.1;1018.7;1019.5;1020.8;1022.3;1024.3;1026.7;1029.6;1033.4;1037.7;1042.9;1048.8;1055.7;1063.1;1071.1;1079.7;1088.9;1098.4;
+3500;1011.5;1011.7;1012;1012.5;1013.3;1014.5;1015.9;1017.8;1020;1022.9;1026.7;1031;1036.1;1042.1;1048.9;1056.3;1064.3;1072.7;1081.5;1091.1;
+4000;1005.5;1005.6;1005.9;1006.4;1007.2;1008.3;1009.7;1011.6;1013.9;1016.6;1020.1;1024.3;1029.4;1035.4;1042.1;1049.5;1057.4;1065.7;1074.5;1083.7;
+4500;999.74;999.82;1000.1;1000.5;1001.2;1002.1;1003.6;1005.5;1007.7;1010.5;1013.9;1018;1022.9;1028.6;1035.3;1042.6;1050.4;1058.7;1067.4;1076.6;
+5000;994.27;994.35;994.59;995.01;995.66;996.58;997.94;999.68;1001.8;1004.4;1007.8;1011.9;1016.7;1022.4;1028.8;1035.8;1043.5;1051.7;1060.4;1069.4;
+5500;988.82;988.94;989.16;989.56;990.18;991.06;992.42;994.18;996.34;998.98;1002.1;1005.9;1010.6;1016.2;1022.4;1029.3;1036.7;1044.7;1053.2;1062.3;
+6000;983.37;983.61;983.82;984.19;984.77;985.61;986.94;988.71;990.88;993.55;996.75;1000.6;1005.1;1010.3;1016.2;1022.9;1030.2;1037.9;1046.1;1055;
+6500;978.31;978.37;978.56;978.91;979.46;980.25;981.53;983.28;985.46;988.14;991.39;995.27;999.8;1004.9;1010.6;1016.8;1023.7;1031.3;1039.4;1048;
+7000;973.26;973.36;973.53;973.82;974.3;975.01;976.2;977.92;980.07;982.76;986.11;989.96;994.51;999.65;1005.2;1011.3;1017.8;1024.9;1032.7;1041.2;
+7500;969.3;968.79;968.91;969.15;969.52;970.1;971.08;972.68;974.75;977.42;980.79;984.69;989.24;994.34;999.93;1005.9;1012.2;1019.1;1026.5;1034.4;
+8000;964.44;964.48;964.6;964.82;965.17;965.7;966.55;967.98;969.82;972.25;975.49;979.42;984;989.04;994.57;1000.5;1006.7;1013.4;1020.6;1028.3;
+8500;959.59;960.22;960.35;960.57;960.92;961.44;962.21;963.54;965.3;967.59;970.64;974.39;978.8;983.77;989.22;995.07;1001.3;1007.8;1014.8;1022.3;
+9000;955.88;955.93;956.07;956.31;956.68;957.23;958;959.24;960.96;963.16;966.08;969.66;973.92;978.76;984.01;989.66;995.82;1002.3;1009.2;1016.5;
+9500;951.45;951.5;951.66;951.94;952.36;952.96;953.79;955;956.7;958.87;961.65;965.19;969.23;973.85;979.02;984.58;990.48;996.8;1003.6;1010.7;
+10000;947;947.07;946.99;947.33;947.83;948.52;949.45;950.71;952.45;954.66;957.44;960.91;964.79;969.18;974.07;979.53;985.39;991.58;998.14;1005;
+10500;941.54;941.62;941.87;942.29;942.91;943.76;944.86;946.24;948.09;950.42;953.3;956.75;960.53;964.73;969.37;974.53;980.27;986.42;992.9;999.73;
+11000;936.07;936.07;936.34;936.82;937.53;938.5;939.8;941.44;943.51;946.04;949.17;952.58;956.35;960.44;964.9;969.79;975.21;981.23;987.65;994.41;
+11500;939.13;939.24;939.51;939.99;940.7;941.68;942.98;944.63;946.69;949.24;952.39;955.81;959.59;963.69;968.16;973.07;978.5;984.54;990.97;997.74;
+12000;942.19;942.43;942.71;943.19;943.9;944.88;946.18;947.84;949.92;952.48;955.63;959.06;962.86;966.97;971.45;976.38;981.83;987.87;994.32;1001.1;
+12500;945.57;945.66;945.93;946.41;947.13;948.12;949.42;951.07;953.17;955.73;958.9;962.34;966.15;970.27;974.77;979.71;985.17;991.24;997.7;1004.4;
+13000;949.08;949.16;949.42;949.88;950.57;951.53;952.78;954.39;956.45;959.02;962.19;965.65;969.46;973.61;978.12;983.07;988.54;994.63;1001.1;1007.8;
+13500;952.77;952.85;953.12;953.59;954.28;955.24;956.51;958.13;960.17;962.68;965.78;969.14;972.84;976.96;981.49;986.45;991.94;998.04;1004.4;1011.1;
+14000;956.48;956.61;956.88;957.35;958.05;959.02;960.3;961.94;963.99;966.52;969.65;973.03;976.76;980.8;985.19;989.99;995.36;1001.5;1007.8;1014.5;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1017;1017;1017.5;1018.2;1019.5;1020.8;1021.9;1023.5;1025.6;1028.1;1031.2;1034.4;1038;1042.1;1047;1052.7;1059.5;1067.1;1075.1;1083.8;
+500;1010.2;1010.3;1010.7;1011.5;1012.7;1013.9;1015;1016.5;1018.6;1021.1;1024.3;1027.7;1031.4;1035.6;1040.6;1046.5;1053.4;1061;1069.1;1077.6;
+1000;1003.4;1003.5;1004;1004.7;1005.9;1007.1;1008.2;1009.7;1011.8;1014.2;1017.4;1020.9;1024.7;1029.1;1034.2;1040.2;1047.2;1054.9;1063;1071.4;
+1500;996.58;996.72;997.15;997.94;999.15;1000.3;1001.5;1003;1005.1;1007.6;1010.7;1014.3;1018;1022.5;1027.7;1033.9;1041;1048.7;1056.8;1065.3;
+2000;989.7;989.84;990.28;991.06;992.26;993.36;994.6;996.2;998.32;1000.9;1004;1007.7;1011.5;1015.9;1021.1;1027.4;1034.6;1042.4;1050.5;1059;
+2500;982.82;982.97;983.39;984.17;985.35;986.43;987.7;989.32;991.23;994.06;997.3;1001.1;1005;1009.5;1014.8;1021;1028.2;1036;1044.2;1052.7;
+3000;976.33;976.46;976.86;977.58;978.69;979.68;980.9;982.46;984.39;987.21;990.47;994.31;998.52;1003.1;1008.5;1014.7;1021.8;1029.6;1037.7;1046.2;
+3500;969.82;970.01;970.37;971.07;972.14;973.12;974.36;975.94;977.8;980.5;983.64;987.5;991.84;996.58;1002.1;1008.5;1015.5;1023.2;1031.2;1039.7;
+4000;964;964.12;964.47;965.1;966.06;966.94;968.07;969.52;971.32;974;977.15;980.88;985.19;989.95;995.63;1002.2;1009.2;1016.8;1024.8;1033.1;
+4500;958.18;958.24;958.58;959.2;960.12;961.01;962.16;963.62;965.37;967.82;970.8;974.5;978.8;983.54;989.12;995.69;1002.9;1010.4;1018.4;1026.7;
+5000;952.31;952.41;952.74;953.33;954.22;955.12;956.28;957.76;959.55;961.95;964.96;968.55;972.61;977.21;982.87;989.35;996.4;1004;1011.9;1020.2;
+5500;946.45;946.65;946.97;947.53;948.38;949.29;950.45;951.94;953.74;956.27;959.13;962.73;966.81;971.48;976.9;983.09;990.14;997.6;1005.4;1013.6;
+6000;940.86;940.96;941.26;941.79;942.59;943.5;944.66;946.15;947.96;950.47;953.32;956.93;961.05;965.77;971.25;977.43;984.12;991.26;999.06;1007.1;
+6500;935.28;935.36;935.63;936.12;936.87;937.77;938.93;940.4;942.22;944.7;947.55;951.15;955.29;960.08;965.6;971.76;978.4;985.45;992.84;1000.7;
+7000;930.72;930.19;930.44;930.87;931.54;932.36;933.42;934.8;936.54;938.98;941.82;945.4;949.54;954.37;959.94;966.07;972.68;979.66;987.02;994.71;
+7500;925;925.07;925.31;925.72;926.34;927.16;928.23;929.6;931.29;933.59;936.24;939.7;943.82;948.67;954.26;960.37;966.93;973.86;981.16;988.82;
+8000;919.28;919.98;920.2;920.59;921.18;922.01;923.09;924.46;926.16;928.24;931.13;934.45;938.39;943.04;948.56;954.65;961.16;968.04;975.27;982.87;
+8500;914.84;914.92;915.13;915.49;916.05;916.88;917.98;919.38;921.1;923.19;926;929.27;933.2;937.85;943.17;949;955.36;962.19;969.38;976.91;
+9000;910.41;909.9;910.09;910.44;910.97;911.79;912.91;914.33;916.08;918.2;920.96;924.18;928.06;932.7;937.96;943.72;949.89;956.42;963.45;970.93;
+9500;904.86;904.91;905.09;905.41;905.91;906.72;907.86;909.3;911.09;913.27;916;919.2;923.03;927.6;932.78;938.45;944.54;951.02;957.84;964.98;
+10000;899.28;899.98;900.15;900.45;900.92;901.7;902.85;904.29;906.11;908.34;911.01;914.29;918.12;922.61;927.65;933.21;939.19;945.58;952.36;959.47;
+10500;894.96;895.02;895.18;895.46;895.91;896.65;897.83;899.3;901.15;903.42;906.15;909.42;913.27;917.71;922.64;928.02;933.88;940.16;946.84;953.91;
+11000;890.64;890.28;890.4;890.63;891.02;891.67;892.8;894.26;896.14;898.47;901.34;904.59;908.46;912.86;917.71;922.96;928.62;934.76;941.33;948.3;
+11500;893.29;893.32;893.45;893.69;894.07;894.73;895.88;897.34;899.23;901.54;904.38;907.63;911.51;915.92;920.78;926.04;931.72;937.87;944.45;951.44;
+12000;895.93;896.4;896.53;896.77;897.15;897.82;898.98;900.43;902.29;904.59;907.44;910.71;914.59;919.01;923.87;929.14;934.83;940.99;947.6;954.61;
+12500;899.76;899.8;899.91;900.12;900.46;901.07;902.13;903.49;905.35;907.67;910.47;913.8;917.69;922.12;926.99;932.27;937.97;944.16;950.78;957.8;
+13000;903.41;903.44;903.55;903.76;904.11;904.73;905.81;907.19;908.97;911.19;913.95;917.08;920.81;925.25;930.14;935.43;941.14;947.34;953.98;961.03;
+13500;907.06;907.14;907.26;907.47;907.83;908.47;909.56;910.95;912.75;914.98;917.75;920.91;924.67;928.94;933.64;938.72;944.34;950.56;957.21;964.28;
+14000;910.72;910.89;911.01;911.23;911.59;912.24;913.34;914.75;916.56;918.82;921.61;924.8;928.58;932.88;937.61;942.73;948.26;954.24;960.63;967.56;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;977.16;977.31;977.65;978.27;979.22;979.75;980.5;981.25;982.77;984.4;985.97;987.59;989.48;991.67;994.63;998.83;1004.1;1010.6;1018.4;1026.9;
+500;970.18;970.48;970.85;971.49;972.13;972.9;973.61;974.36;975.92;977.63;979.37;981.05;983.06;985.43;988.24;992.64;997.99;1004.6;1012.4;1020.8;
+1000;963.55;963.69;964.06;964.72;965.37;966.16;966.92;967.7;969.23;970.91;972.57;974.51;976.62;979.15;982.14;986.48;991.84;998.58;1006.3;1014.7;
+1500;956.92;956.9;957.28;957.95;958.6;959.41;960.21;961.04;962.62;964.38;966.1;968.02;970.18;972.86;976.03;980.34;985.74;992.48;1000.3;1008.5;
+2000;950;950.12;950.5;951.2;951.85;952.68;953.5;954.39;956.01;957.85;959.67;961.7;963.91;966.6;969.88;974.2;979.69;986.41;994.1;1002.4;
+2500;943.39;943.52;943.9;944.58;945.18;945.98;946.8;947.73;949.41;951.31;953.24;955.37;957.68;960.49;963.92;968.05;973.64;980.37;987.97;996.15;
+3000;937.35;937.47;937.82;938.45;939.28;939.7;940.42;941.27;942.89;944.76;946.8;949.02;951.45;954.37;957.98;962.17;967.66;974.35;981.86;989.92;
+3500;931.35;931.51;931.87;932.52;933.35;933.79;934.54;935.35;936.86;938.61;940.52;942.74;945.21;948.21;952.01;956.37;961.82;968.47;975.76;983.71;
+4000;925.38;925.58;925.94;926.6;927.42;927.88;928.66;929.53;931.06;932.87;934.83;936.93;939.22;942.13;945.93;950.54;956;962.65;969.9;977.56;
+4500;919.41;919.67;920.04;920.7;921.51;921.98;922.78;923.69;925.24;927.12;929.34;931.38;933.79;936.62;940.23;944.73;950.26;956.82;964.03;971.6;
+5000;913.67;913.78;914.15;914.81;915.6;916.1;916.92;917.86;919.39;921.35;923.65;925.83;928.34;931.28;934.98;939.47;944.74;951.01;958.13;965.65;
+5500;907.92;907.92;908.28;908.94;909.71;910.23;911.07;912.05;913.56;915.58;917.93;920.28;922.89;925.96;929.84;934.36;939.77;945.83;952.31;959.67;
+6000;902.24;902.34;902.68;903.28;903.98;904.43;905.23;906.24;907.73;909.8;912.19;914.73;917.4;920.58;924.57;929.22;934.75;940.84;947.31;954.07;
+6500;896.8;896.9;897.24;897.85;898.54;899.03;899.84;900.78;902.12;904.07;906.45;909.15;911.89;915.19;919.27;924.04;929.66;935.8;942.26;948.99;
+7000;891.3;891.41;891.74;892.34;893.02;893.54;894.38;895.37;896.73;898.78;901.1;903.75;906.35;909.77;913.92;918.84;924.52;930.68;937.16;943.88;
+7500;885.8;885.91;886.24;886.83;887.49;888.05;888.91;889.95;891.53;893.39;895.77;898.61;901.33;904.63;908.58;913.57;919.32;925.5;931.97;938.71;
+8000;880.29;880.38;880.73;881.31;881.96;882.55;883.45;884.51;886.12;888;890.42;893.3;896.23;899.73;903.77;908.61;914.1;920.25;926.74;933.47;
+8500;874.82;874.92;875.23;875.79;876.43;877.06;877.99;879.1;880.72;882.62;885.06;887.96;891.07;894.71;898.93;903.83;909.35;915.27;921.43;928.17;
+9000;869.35;869.46;869.76;870.3;870.93;871.59;872.53;873.68;875.31;877.24;879.7;882.63;885.9;889.61;893.96;899.04;904.55;910.47;916.66;923.07;
+9500;863.93;864.03;864.31;864.82;865.44;866.13;867.09;868.27;869.9;871.85;874.33;877.28;880.69;884.47;888.93;894.1;899.73;905.6;911.79;918.23;
+10000;858.51;858.6;858.9;859.38;859.99;860.69;861.67;862.87;864.32;866.47;868.96;872.02;875.44;879.33;883.87;889.09;894.75;900.71;906.85;913.29;
+10500;853.2;853.28;853.54;853.99;854.58;855.29;856.27;857.49;858.97;861.08;863.6;866.68;870.16;874.16;878.8;884.02;889.69;895.67;901.87;908.28;
+11000;847.9;847.99;848.23;848.64;849.22;849.94;850.92;852.14;853.65;855.7;858.27;861.34;864.88;868.97;873.69;878.93;884.56;890.53;896.79;903.22;
+11500;850.82;850.87;851.1;851.52;852.09;852.82;853.8;855.03;856.54;858.62;861.17;864.27;867.82;871.91;876.65;881.89;887.53;893.51;899.77;906.15;
+12000;854.07;854.14;854.36;854.74;855.25;855.91;856.8;857.93;859.46;861.55;864.11;867.22;870.78;874.89;879.63;884.87;890.52;896.51;902.72;909.11;
+12500;857.75;857.82;858.03;858.42;858.94;859.61;860.51;861.65;863.06;865.03;867.54;870.4;873.77;877.88;882.63;887.88;893.54;899.54;905.69;912.09;
+13000;861.47;861.56;861.78;862.17;862.7;863.37;864.28;865.43;866.85;868.85;871.39;874.28;877.68;881.6;886.11;891.1;896.59;902.54;908.69;915.1;
+13500;865.21;865.33;865.55;865.95;866.48;867.17;868.1;869.27;870.71;872.73;875.3;878.22;881.65;885.6;890.14;895.16;900.54;906.12;911.93;918.15;
+14000;869.1;869.17;869.4;869.81;870.35;871.05;871.99;873.18;874.63;876.69;879.28;882.23;885.69;889.67;894.25;899.3;904.62;910.23;916.08;922.15;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;937.9;937.94;938.15;938.49;938.9;939.06;939.18;939.48;939.93;940.27;940.47;940.69;940.98;942.71;945.1;948.37;952.6;957.92;964.46;972.44;
+500;931.11;931.35;931.56;931.9;932.28;932.41;932.5;932.76;933.29;933.74;934.01;934.34;934.72;936.39;938.82;942.12;946.39;951.76;958.39;966.36;
+1000;924.68;924.75;924.97;925.32;925.7;925.85;925.97;926.27;926.79;927.25;927.55;927.99;928.46;930.08;932.53;935.87;940.18;945.6;952.31;960.27;
+1500;918.05;918.13;918.36;918.73;919.1;919.28;919.44;919.78;920.35;920.91;921.24;921.69;922.2;923.78;926.26;929.63;933.97;939.44;946.22;954.17;
+2000;911.42;911.77;911.96;912.27;912.57;912.7;912.9;913.28;913.92;914.39;914.99;915.52;916.08;917.51;919.99;923.4;927.78;933.28;940.11;948.05;
+2500;905.99;905.83;906.03;906.36;906.65;906.75;906.82;907.07;907.59;908.03;908.7;909.34;910;911.43;913.87;917.2;921.61;927.15;934;941.91;
+3000;899.8;899.88;900.09;900.45;900.74;900.88;900.98;901.27;901.85;902.24;902.73;903.23;903.95;905.37;907.84;911.2;915.52;921.03;927.91;935.74;
+3500;893.49;893.77;894.01;894.39;894.71;894.87;895.03;895.36;896.03;896.56;897.14;897.7;898.33;899.22;901.83;904.99;909.56;915.04;921.81;929.59;
+4000;887.63;887.69;887.94;888.34;888.66;888.86;889.06;889.43;890.21;890.84;891.5;892.14;892.9;893.88;896.28;899.41;903.62;909.12;915.89;923.47;
+4500;881.75;881.64;881.9;882.34;882.65;882.87;883.12;883.53;884.4;885.29;885.86;886.6;887.46;888.57;890.9;894.04;898.16;903.36;909.98;917.49;
+5000;875.53;875.66;875.9;876.37;876.68;876.93;877.2;877.64;878.58;879.56;880.23;881.07;882.06;883.29;885.57;888.71;892.87;898.13;904.45;911.53;
+5500;870.12;870.2;870.45;870.88;871.13;871.3;871.48;871.78;872.76;873.82;874.6;875.54;876.66;878.02;880.28;883.43;887.61;892.92;899.3;906.18;
+6000;864.71;864.74;865;865.46;865.71;865.91;866.14;866.47;867.41;868.37;869.06;870.02;871.26;872.78;875.03;878.22;882.39;887.73;894.08;900.99;
+6500;859.29;859.39;859.55;860.05;860.29;860.53;860.8;861.16;862.17;863.22;864.03;864.94;866.02;867.53;869.59;873.06;877.24;882.56;888.87;895.72;
+7000;853.75;853.85;854.13;854.64;854.88;855.15;855.46;855.85;856.94;858.07;859.01;860.02;861.23;862.83;864.75;867.93;872.14;877.47;883.67;890.43;
+7500;848.22;848.41;848.7;849.23;849.47;849.76;850.12;850.79;851.7;852.9;854.01;855.1;856.43;858.19;860.3;863.41;867.35;872.43;878.53;885.15;
+8000;842.87;842.97;843.28;843.82;844.06;844.39;844.78;845.5;846.46;847.73;849;850.17;851.62;853.54;855.81;858.95;862.99;867.99;873.65;879.93;
+8500;837.53;837.63;837.83;838.41;838.64;839.01;839.45;840.2;841.21;842.55;843.99;845.23;846.8;848.84;851.33;854.32;858.64;863.65;869.26;875.24;
+9000;831.97;832.08;832.4;832.97;833.21;833.61;834.1;834.9;835.96;837.37;838.74;840.28;841.96;844.1;846.78;849.99;854.28;859.35;864.88;870.78;
+9500;826.41;826.62;826.94;827.51;827.77;828.2;828.74;829.57;830.68;832.16;833.66;835.32;837.13;839.51;842.2;845.59;849.92;855.03;860.53;866.33;
+10000;821.06;821.16;821.49;822.03;822.31;822.78;823.35;824;825.38;826.92;828.77;830.32;832.27;834.76;837.61;841.28;845.62;850.66;856.16;861.91;
+10500;815.7;815.79;816.02;816.56;816.86;817.35;817.97;818.67;820.07;821.67;823.58;825.31;827.39;829.97;833.09;836.81;841.29;846.31;851.74;857.48;
+11000;810.16;810.26;810.58;811.08;811.4;811.93;812.58;813.34;814.75;816.38;818.36;820.26;822.48;825.04;828.41;832.29;836.9;841.97;847.32;853;
+11500;813.42;813.47;813.77;814.21;814.46;814.91;815.47;816.1;817.49;819.12;821.11;822.99;825.2;827.89;831.15;835.02;839.63;844.7;850.06;855.75;
+12000;816.99;817.08;817.38;817.82;818.07;818.53;819.1;819.75;821.04;822.55;824.36;826.04;828.01;830.65;833.92;837.78;842.38;847.46;852.82;858.53;
+12500;820.57;820.75;821.05;821.49;821.75;822.22;822.8;823.46;824.79;826.33;828.18;829.87;831.86;834.3;837.28;840.83;845.17;850.24;855.6;861.34;
+13000;824.14;824.5;824.8;825.24;825.5;826;826.59;827.28;828.63;830.18;832.05;833.76;835.77;838.22;841.22;844.79;849.04;853.74;858.71;864.17;
+13500;828.23;828.33;828.64;829.08;829.35;829.85;830.46;831.16;832.53;834.1;835.98;837.7;839.73;842.21;845.22;848.8;853.08;857.77;862.77;868.1;
+14000;832.32;832.23;832.54;832.99;833.26;833.78;834.4;835.11;836.49;838.08;839.98;841.71;843.75;846.26;849.29;852.89;857.18;861.89;866.9;872.25;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;898.64;898.69;898.78;898.89;898.93;898.72;898.25;897.96;897.44;896.7;895.94;895.33;895.86;896.98;898.7;900.99;903.82;907.5;912.16;918.15;
+500;892.06;892.1;892.2;892.33;892.34;892.11;891.64;891.35;890.91;890.25;889.54;888.96;889.45;890.61;892.39;894.77;897.76;901.59;906.32;912.39;
+1000;885.48;885.56;885.64;885.75;885.78;885.58;885.15;884.92;884.48;883.82;883.13;882.59;883.04;884.24;886.07;888.48;891.59;895.57;900.49;906.62;
+1500;878.88;879.39;879.48;879.59;879.56;879.3;878.81;878.53;878.1;877.51;876.85;876.27;876.9;877.84;879.72;882.24;885.43;889.49;894.51;900.86;
+2000;873.45;873.38;873.46;873.56;873.52;873.25;872.75;872.53;872.1;871.43;870.67;870.05;870.62;871.49;873.36;875.95;879.24;883.38;888.5;894.96;
+2500;867.38;867.42;867.51;867.62;867.59;867.36;866.88;866.67;866.25;865.58;864.87;864.2;864.57;865.28;867.11;869.67;873.04;877.26;882.47;889.03;
+3000;861.31;861.44;861.55;861.68;861.66;861.45;861.03;860.86;860.51;859.91;859.23;858.53;858.8;859.52;861.18;863.71;866.85;871.12;876.43;883.08;
+3500;855.43;855.47;855.58;855.73;855.72;855.55;855.17;855.05;854.78;854.24;853.64;852.97;853.2;853.86;855.68;858.04;861.13;865.06;870.35;877.1;
+4000;849.54;849.5;849.62;849.78;849.78;849.63;849.3;849.24;849.03;848.58;848.04;847.44;847.62;848.3;849.96;852.47;855.54;859.54;864.62;871.12;
+4500;843.74;843.77;843.86;843.97;843.89;843.72;843.42;843.41;843.28;842.9;842.45;841.91;842.05;842.74;844.65;847;850.12;854.08;859.16;865.63;
+5000;838.38;838.4;838.49;838.61;838.53;838.34;837.94;837.83;837.6;837.22;836.85;836.38;836.49;837.2;839.14;841.52;844.71;848.74;853.85;860.23;
+5500;833.01;833.04;833.14;833.27;833.19;833.02;832.67;832.61;832.44;832.04;831.53;830.92;830.96;831.69;833.64;836.06;839.29;843.39;848.57;854.98;
+6000;827.63;827.74;827.79;827.94;827.86;827.71;827.39;827.39;827.29;826.97;826.56;826.03;825.54;826.3;827.96;830.61;833.87;838.04;843.28;849.72;
+6500;822.29;822.34;822.45;822.61;822.53;822.4;822.12;822.16;822.13;821.89;821.56;821.13;820.74;821.74;823.2;825.37;828.5;832.72;838;844.44;
+7000;816.95;816.98;817.1;817.28;817.21;817.11;816.85;816.94;816.97;816.82;816.58;816.29;815.99;816.93;818.42;820.61;823.61;827.53;832.74;839.16;
+7500;811.59;811.61;811.75;811.94;811.88;811.81;811.59;811.72;811.84;811.79;811.64;811.45;811.25;812.13;813.64;815.88;818.91;822.87;827.92;833.9;
+8000;806.21;806.23;806.38;806.58;806.55;806.5;806.34;806.53;806.71;806.77;806.69;806.61;806.52;807.36;808.89;811.16;814.23;818.23;823.34;829.31;
+8500;800.83;800.86;801.02;801.24;801.23;801.23;801.11;801.33;801.6;801.76;801.75;801.78;801.8;802.61;804.17;806.47;809.56;813.61;818.75;824.7;
+9000;795.32;795.4;795.58;795.82;795.82;795.85;795.77;796.05;796.38;796.67;796.72;796.86;797.01;797.82;799.46;801.81;804.94;809.01;814.18;820.09;
+9500;789.84;789.91;790.11;790.35;790.37;790.44;790.4;790.74;791.14;791.56;791.67;791.91;792.19;792.98;794.67;797.1;800.34;804.45;809.62;815.47;
+10000;784.36;784.41;784.63;784.88;784.92;785.01;785.02;785.42;785.89;786.25;786.63;786.97;787.41;788;789.91;792.37;795.67;799.91;805.09;810.86;
+10500;778.85;778.93;779.15;779.4;779.46;779.59;779.64;780.09;780.65;781.1;781.59;782.03;782.62;783.37;785.24;787.47;791.03;795.32;800.58;806.27;
+11000;774.02;774.08;774.29;774.5;774.5;774.56;774.54;774.87;775.35;775.95;776.54;777.1;777.84;778.76;780.58;783.08;786.43;790.75;795.99;801.71;
+11500;777.64;777.7;777.91;778.11;778.13;778.2;778.19;778.54;779.03;779.42;779.77;780.07;780.53;781.22;783.13;785.63;788.98;793.31;798.55;804.22;
+12000;781.26;781.39;781.6;781.8;781.82;781.91;781.92;782.3;782.81;783.19;783.54;783.84;784.28;784.87;786.42;788.58;791.57;795.89;801.11;806.75;
+12500;784.88;785.19;785.4;785.6;785.63;785.72;785.73;786.12;786.63;787.03;787.38;787.66;788.1;788.67;790.22;792.38;795.38;799.33;804.08;809.3;
+13000;789;789.07;789.29;789.48;789.51;789.6;789.62;790.02;790.52;790.92;791.26;791.55;791.97;792.53;794.09;796.25;799.24;803.13;807.87;813.11;
+13500;793.14;793.24;793.23;793.43;793.46;793.55;793.56;793.97;794.47;794.87;795.21;795.49;795.92;796.46;798.02;800.16;803.08;806.96;811.72;816.98;
+14000;796.96;797.04;797.26;797.45;797.48;797.57;797.58;797.99;798.49;798.88;799.22;799.49;799.91;800.44;801.95;804.04;806.97;810.85;815.63;820.91;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;859.04;859.08;859.01;858.82;858.43;857.72;856.77;855.66;854.33;853.19;852.16;851.94;852.1;852.29;852.85;853.75;855.44;857.82;860.73;864.79;
+500;853.04;852.89;852.78;852.56;852.12;851.37;850.34;849.25;847.99;846.55;845.84;845.61;845.8;846.1;846.72;847.71;849.42;851.85;854.91;859.1;
+1000;847.02;846.83;846.75;846.56;846.16;845.45;844.45;843.31;841.93;840.37;839.54;839.28;839.5;839.89;840.56;841.67;843.4;845.88;849.07;853.36;
+1500;840.87;840.85;840.78;840.6;840.21;839.52;838.58;837.5;836.15;834.64;833.68;833.2;833.23;833.68;834.41;835.62;837.48;839.96;843.23;847.63;
+2000;835.02;835.02;834.96;834.79;834.41;833.72;832.77;831.72;830.41;828.94;827.95;827.46;827.49;827.78;828.37;829.57;831.48;834.02;837.39;841.88;
+2500;829.17;829.18;829.14;828.99;828.63;827.98;827.06;826.07;824.8;823.34;822.27;821.97;821.77;822.14;822.77;823.84;825.61;828.09;831.55;836.13;
+3000;823.3;823.35;823.31;823.18;822.84;822.23;821.36;820.41;819.21;817.8;816.71;816.37;816.15;816.49;817.22;818.36;819.94;822.48;825.79;830.36;
+3500;817.42;817.52;817.51;817.38;817.06;816.47;815.64;814.77;813.62;812.27;811.16;810.8;810.59;811.01;811.75;812.87;814.53;817.07;820.38;824.86;
+4000;812.11;812.1;812.04;811.88;811.5;810.82;809.94;809.11;808.02;806.74;805.63;805.25;805.05;805.51;806.32;807.53;809.21;811.71;815.08;819.56;
+4500;806.87;806.86;806.81;806.68;806.31;805.67;804.79;803.88;802.67;801.25;800.12;799.69;799.5;800.02;800.89;802.18;803.95;806.5;809.84;814.35;
+5000;801.62;801.62;801.58;801.47;801.12;800.52;799.66;798.81;797.62;796.23;794.89;794.2;793.82;794.4;795.35;796.73;798.62;801.28;804.7;809.23;
+5500;796.27;796.38;796.26;796.15;795.81;795.22;794.4;793.62;792.51;791.18;789.86;789.13;788.7;789.06;789.76;791.24;793.2;795.95;799.52;804.16;
+6000;790.88;790.88;790.86;790.78;790.46;789.91;789.13;788.41;787.39;786.12;784.82;784.07;783.65;784.04;784.87;786.1;787.76;790.58;794.23;799.05;
+6500;785.51;785.48;785.47;785.41;785.11;784.6;783.85;783.21;782.25;781.06;779.8;779.01;778.61;779.02;779.92;781.25;783.03;785.57;788.93;793.82;
+7000;780.18;780.07;780.08;780.04;779.76;779.28;778.57;778;777.12;775.99;774.78;773.95;773.56;774.02;774.97;776.38;778.25;780.88;784.29;788.83;
+7500;774.83;774.67;774.68;774.66;774.39;773.95;773.28;772.78;771.98;770.91;769.76;768.9;768.81;769;770.01;771.5;773.46;776.19;779.69;784.31;
+8000;769.44;769.54;769.29;769.27;769.02;768.61;767.99;767.55;766.84;765.84;764.74;763.61;763.51;764.01;765.05;766.61;768.67;771.49;775.08;779.79;
+8500;763.83;763.85;763.88;763.88;763.65;763.26;762.68;762.32;761.69;760.76;759.73;758.64;758.77;759.01;760.09;761.72;763.89;766.78;770.47;775.27;
+9000;758.21;758.44;758.48;758.49;758.28;757.92;757.37;757.07;756.54;755.67;754.72;753.69;753.76;754.02;755.14;756.82;759.11;762.06;765.85;770.75;
+9500;753;753.03;753.08;753.09;752.9;752.57;752.05;751.82;751.36;750.59;749.72;748.74;748.77;749.05;750.19;751.91;754.31;757.35;761.22;766.21;
+10000;748.09;748.09;748.11;748.06;747.79;747.37;746.75;746.56;746.19;745.49;744.72;743.81;743.8;744.1;745.49;747.05;749.49;752.65;756.6;761.67;
+10500;743.17;743.42;743.44;743.4;743.16;742.76;742.18;741.92;741.44;740.61;739.71;738.9;738.86;739.17;740.6;742.38;744.81;747.95;751.99;757.11;
+11000;738.74;738.74;738.78;738.75;738.53;738.18;737.63;737.44;737.04;736.32;735.51;734.53;734.18;734.53;735.5;737.54;740.03;743.24;747.36;752.54;
+11500;742.34;742.33;742.37;742.34;742.12;741.78;741.25;741.06;740.65;739.9;739.06;738.05;737.71;738.03;738.92;740.42;742.57;745.58;749.71;754.9;
+12000;745.95;746;746.04;746.01;745.79;745.45;744.92;744.73;744.31;743.54;742.68;741.63;741.29;741.6;742.49;743.99;746.14;748.97;752.71;757.47;
+12500;749.55;749.75;749.79;749.75;749.54;749.19;748.64;748.44;748.02;747.24;746.35;745.28;744.92;745.23;746.12;747.61;749.76;752.6;756.34;761.12;
+13000;753.54;753.56;753.6;753.56;753.34;752.98;752.43;752.22;751.79;750.98;750.08;748.98;748.62;748.91;749.79;751.28;753.43;756.27;760.02;764.81;
+13500;757.54;757.63;757.48;757.43;757.21;756.84;756.29;756.06;755.62;754.79;753.87;752.75;752.37;752.65;753.53;755.01;757.16;760;763.75;768.55;
+14000;761.53;761.62;761.41;761.36;761.14;760.76;760.2;759.97;759.51;758.66;757.71;756.57;756.19;756.46;757.32;758.8;760.94;763.78;767.54;772.34;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;821.16;820.96;820.71;820.2;819.44;818.28;816.81;814.94;813.47;812.47;811.59;810.86;809.95;809.32;809.24;809.37;809.56;809.94;810.73;812.23;
+500;815.09;814.98;814.74;814.25;813.48;812.32;810.85;808.99;807.52;806.41;805.41;804.65;803.78;803.18;803.16;803.46;803.66;804.18;805.12;806.8;
+1000;809.1;809.02;808.78;808.31;807.56;806.44;805;803.16;801.66;800.5;799.48;798.93;797.83;797.12;797;797.33;797.7;798.36;799.48;801.35;
+1500;803.12;803.18;802.94;802.47;801.71;800.59;799.14;797.32;795.5;794.34;793.53;792.91;791.88;791.23;791.14;791.33;791.65;792.43;793.71;795.77;
+2000;797.35;797.29;797.06;796.59;795.85;794.72;793.29;791.47;789.64;788.42;787.57;786.99;786.08;785.42;785.32;785.54;786;786.72;787.93;790.15;
+2500;791.54;791.34;791.11;790.67;789.94;788.84;787.45;785.67;783.88;782.64;781.75;781.17;780.33;779.71;779.59;779.76;780.36;781.19;782.53;784.68;
+3000;785.46;785.38;785.17;784.75;784.05;782.97;781.62;779.9;778.14;776.86;775.99;775.45;774.71;774.02;773.93;774.12;774.76;775.67;777.15;779.44;
+3500;780.19;779.97;779.74;779.27;778.5;777.33;775.86;774.13;772.43;771.16;770.26;769.76;769.09;768.41;768.23;768.57;769.41;770.33;771.77;774.21;
+4000;774.71;774.66;774.44;773.98;773.24;772.11;770.72;768.96;767.1;765.61;764.82;764.08;763.5;762.85;762.73;763.09;763.96;764.96;766.45;768.97;
+4500;769.22;769.36;769.14;768.72;768.03;766.94;765.61;763.9;762.09;760.57;759.69;758.73;757.97;757.32;757.27;757.61;758.5;759.63;761.23;763.8;
+5000;764.16;764.1;763.91;763.51;762.84;761.8;760.5;758.85;757.08;755.54;754.64;753.7;753.01;752.27;751.98;752.12;753.07;754.31;756.02;758.7;
+5500;759.09;758.86;758.68;758.31;757.65;756.64;755.4;753.8;752.07;750.53;749.61;748.68;748.06;747.41;747.16;747.35;747.84;749.04;750.81;753.6;
+6000;753.67;753.62;753.45;753.1;752.47;751.5;750.3;748.76;747.07;745.5;744.57;743.64;743.11;742.56;742.35;742.57;743.09;744.26;745.77;748.49;
+6500;748.23;748.38;748.22;747.88;747.28;746.34;745.19;743.71;742.07;740.46;739.53;738.61;738.16;737.69;737.54;737.8;738.37;739.62;741.24;743.74;
+7000;743.17;743.13;742.98;742.67;742.09;741.19;740.08;738.66;737.07;735.44;734.51;733.59;733.21;732.82;732.72;732.86;733.65;734.95;736.71;739.33;
+7500;738.1;738.2;737.77;737.45;736.9;736.03;734.97;733.61;732.07;730.44;729.48;728.56;728.22;727.94;727.89;728.11;728.92;730.28;732.15;734.92;
+8000;732.66;732.63;732.5;732.23;731.7;730.86;729.84;728.54;727.05;725.41;724.17;723.54;723.23;723.03;723.04;723.38;724.21;725.62;727.62;730.5;
+8500;727.38;727.35;727.24;726.98;726.47;725.66;724.7;723.47;722.03;720.4;719.17;718.51;718.23;718.14;718.22;718.63;719.5;720.97;723.14;726.07;
+9000;722.09;722.33;722.18;721.87;721.28;720.44;719.56;718.4;717.01;715.41;714.18;713.5;713.24;713.22;713.4;713.89;714.77;716.34;718.56;721.64;
+9500;717.84;717.79;717.66;717.37;716.81;715.95;714.93;713.66;712.18;710.4;709.19;708.47;708.24;708.29;708.57;709.14;710.06;711.7;714.05;717.21;
+10000;713.57;713.26;713.14;712.87;712.33;711.51;710.54;709.33;707.88;706.19;704.7;703.98;703.26;703.36;703.74;704.39;705.41;707.08;709.52;712.78;
+10500;708.76;708.73;708.62;708.37;707.86;707.08;706.16;705.01;703.62;702;700.49;699.73;699.01;698.91;699.1;699.56;700.74;702.47;704.99;708.35;
+11000;703.94;704.21;704.11;703.88;703.4;702.65;701.78;700.69;699.35;697.76;696.21;695.39;694.67;694.62;694.89;695.45;696.37;697.84;700.47;703.92;
+11500;707.7;707.67;707.57;707.33;706.84;706.08;705.2;704.11;702.76;701.16;699.63;698.81;698.08;698.02;698.27;698.83;699.76;701.19;703.42;706.46;
+12000;711.47;711.18;711.08;710.83;710.34;709.56;708.68;707.57;706.19;704.57;703.03;702.22;701.48;701.42;701.65;702.18;703.08;704.52;706.74;709.78;
+12500;714.79;714.76;714.65;714.4;713.89;713.1;712.2;711.08;709.68;708.04;706.46;705.65;704.89;704.82;705.04;705.55;706.42;707.89;710.09;713.13;
+13000;718.16;718.39;718.28;718.02;717.5;716.7;715.79;714.65;713.24;711.56;709.95;709.13;708.34;708.26;708.46;708.96;709.83;711.27;713.49;716.53;
+13500;722.11;722.07;721.96;721.69;721.17;720.35;719.43;718.26;716.82;715.14;713.54;712.67;711.87;711.75;711.95;712.42;713.27;714.7;716.94;719.97;
+14000;726.06;725.81;725.7;725.42;724.89;724.06;723.13;721.94;720.48;718.77;717.12;716.27;715.45;715.31;715.48;715.94;716.76;718.29;720.42;723.45;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;784.08;784.15;783.83;783.2;782.3;781;779.27;777.34;776.35;775.36;774.07;772.49;771.08;770.23;769.41;768.09;766.34;764.16;761.61;759;
+500;778.1;778.05;777.73;777.1;776.2;774.9;773.16;771.21;770.19;769.19;767.98;766.44;765.05;764.19;763.36;762.01;760.35;758.4;756.16;753.92;
+1000;772.11;772.22;771.68;771.03;770.13;768.83;767.12;765.2;764.11;763.05;761.9;760.42;759.04;758.15;757.42;756.19;754.62;752.72;750.68;748.79;
+1500;766.11;766.01;765.69;765.07;764.16;762.85;761.14;759.21;758.09;757.02;755.91;754.4;753.02;752.36;751.49;750.38;748.96;747.28;745.43;743.68;
+2000;760.11;760.06;759.74;759.12;758.22;756.93;755.24;753.36;752.18;751.05;749.97;748.47;747.1;746.37;745.57;744.56;743.29;741.81;740.24;738.81;
+2500;754.1;754.12;753.81;753.2;752.32;751.03;749.36;747.49;746.3;745.17;744.13;742.64;741.26;740.49;739.71;738.75;737.63;736.36;735.05;733.93;
+3000;748.88;748.75;748.4;747.73;746.76;745.36;743.55;741.63;740.44;739.29;738.32;736.86;735.51;734.73;733.97;733.05;732;730.88;729.82;729.01;
+3500;743.57;743.46;743.11;742.45;741.49;740.11;738.34;736.34;734.97;733.61;732.52;731.11;729.76;728.99;728.35;727.42;726.46;725.43;724.57;724.05;
+4000;738.26;738.19;737.84;737.19;736.24;734.88;733.14;731.15;729.76;728.4;727.37;725.72;724.09;723.28;722.66;721.82;720.99;720.1;719.35;719.04;
+4500;733.04;732.92;732.58;731.94;731.04;729.66;727.96;725.98;724.57;723.19;722.18;720.59;719.17;718.07;717.18;716.29;715.51;714.77;714.2;714.05;
+5000;727.76;727.66;727.33;726.7;725.78;724.45;722.76;720.81;719.36;717.99;717;715.47;714.11;713.02;712.17;711.3;710.32;709.43;709.03;709.1;
+5500;722.46;722.39;722.07;721.45;720.55;719.25;717.59;715.65;714.2;712.8;711.83;710.37;709.07;708;707.16;706.42;705.53;704.66;704;704.12;
+6000;717.2;717.3;716.84;716.21;715.33;714.03;712.4;710.51;709.03;707.63;706.67;705.33;704.07;702.78;702.2;701.55;700.75;700.02;699.49;699.5;
+6500;712.05;711.87;711.56;710.98;710.11;708.83;707.23;705.37;703.88;702.69;701.56;700.31;698.81;697.79;697.17;696.59;695.88;695.26;694.89;695.06;
+7000;706.71;706.61;706.32;705.75;704.9;703.66;702.09;700.25;698.73;697.52;696.36;695.16;693.73;692.71;692.08;691.61;690.99;690.5;690.28;690.63;
+7500;701.45;701.37;701.08;700.54;699.71;698.46;696.91;695.04;693.51;692.29;691.13;690.01;688.66;687.66;687.01;686.63;686.11;685.74;685.68;686.2;
+8000;696.08;696.11;695.79;695.24;694.42;693.19;691.68;689.86;688.3;687.07;685.89;684.87;683.6;682.62;681.93;681.78;681.25;681;681.09;681.77;
+8500;691.65;691.55;691.23;690.63;689.72;688.39;686.77;684.8;683.11;681.86;680.69;679.75;678.55;677.59;677.11;676.78;676.52;676.26;676.5;677.34;
+9000;687.21;686.99;686.68;686.1;685.21;683.91;682.32;680.39;678.66;677.2;675.79;674.82;673.5;672.58;672.11;671.8;671.67;671.53;671.9;672.91;
+9500;682.75;682.84;682.17;681.59;680.73;679.45;677.9;675.99;674.27;672.54;671.39;670.41;669.09;667.94;667.21;666.82;666.88;666.83;667.32;668.48;
+10000;678.02;677.93;677.64;677.1;676.25;675;673.5;671.63;669.63;668.19;666.98;666.03;664.8;663.75;663.03;662.48;662.17;662.16;662.75;664.05;
+10500;673.28;673.42;673.14;672.62;671.79;670.57;669.11;667.26;665.32;663.82;662.59;661.66;660.55;659.55;658.86;658.34;658.15;658.23;658.51;659.61;
+11000;668.99;668.91;668.65;668.15;667.34;666.15;664.73;662.94;661.03;659.49;658.47;657.31;656.29;655.29;654.57;654.23;654.26;654.29;654.73;655.92;
+11500;672.35;672.27;672;671.49;670.67;669.46;668.01;666.2;664.26;662.7;661.67;660.49;659.44;658.43;657.69;657.36;657.36;657.36;657.78;658.94;
+12000;675.72;675.67;675.39;674.87;674.04;672.82;671.35;669.51;667.53;665.95;664.91;663.7;662.63;661.61;660.83;660.52;660.49;660.46;660.85;661.98;
+12500;679.08;679.12;678.84;678.31;677.46;676.22;674.74;672.87;670.87;669.24;668.19;666.95;665.86;664.82;664.01;663.69;663.66;663.59;663.95;665.06;
+13000;682.45;682.62;682.33;681.79;680.93;679.67;678.16;676.28;674.24;672.62;671.52;670.26;669.12;668.07;667.23;666.88;666.87;666.75;667.08;668.16;
+13500;686.71;686.16;685.87;685.32;684.45;683.17;681.65;679.74;677.67;676.02;674.91;673.61;672.44;671.36;670.48;670.11;670.09;669.95;670.24;671.29;
+14000;689.85;689.76;689.46;688.91;688.02;686.72;685.18;683.25;681.15;679.47;678.34;677.01;675.8;674.7;674;673.4;673.19;673.1;673.43;674.45;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;748.19;747.62;747.34;746.76;745.96;744.69;743.11;741.9;741.05;739.94;738.28;736.62;735.45;733.95;731.51;728;722.9;715.61;705.76;690.64;
+500;748.64;741.52;741.41;740.83;740.02;738.72;737.13;735.87;735.03;733.96;732.33;730.69;729.54;728.13;725.81;722.48;717.71;710.96;701.81;688.07;
+1000;736.07;735.82;735.54;734.94;734.13;732.81;731.23;729.94;729.07;728;726.37;724.77;723.6;722.32;720.1;716.96;712.5;706.23;697.78;685.72;
+1500;730.28;730;729.72;729.13;728.3;726.99;725.39;724.09;723.19;722.11;720.48;718.87;717.92;716.48;714.39;711.42;707.24;701.43;693.34;682.79;
+2000;724.27;724.18;723.89;723.3;722.49;721.18;719.59;718.27;717.36;716.31;714.68;713.06;712.07;710.66;708.68;705.88;701.97;696.5;689.05;679.59;
+2500;719.02;718.83;718.5;717.84;716.93;715.52;713.79;712.46;711.55;710.52;708.91;707.33;706.31;704.93;703;700.32;696.57;691.46;684.65;676.17;
+3000;713.71;713.63;713.29;712.63;711.72;710.31;708.6;707.12;706.05;704.87;703.15;701.52;700.59;699.23;697.33;694.7;691.11;686.37;680.16;672.56;
+3500;708.53;708.42;708.08;707.42;706.52;705.11;703.41;701.92;700.85;699.68;697.88;695.92;694.83;693.41;691.61;689.07;685.71;681.25;675.58;668.76;
+4000;703.33;703.21;702.88;702.22;701.32;699.92;698.19;696.62;695.52;694.34;692.57;690.89;689.56;688.07;686.1;683.48;680.26;676.13;670.88;664.56;
+4500;698.05;697.95;697.6;696.93;696.01;694.57;692.84;691.28;690.18;688.99;687.26;685.61;684.27;682.85;680.97;678.41;675.06;670.95;666.13;660.33;
+5000;692.69;692.61;692.26;691.58;690.66;689.24;687.52;685.94;684.83;683.64;681.96;680.33;678.99;677.63;675.83;673.43;670.25;666.26;661.36;656;
+5500;687.39;687.27;686.92;686.25;685.33;683.91;682.2;680.61;679.49;678.31;676.66;675.06;673.71;672.4;670.69;668.43;665.44;661.67;657.09;651.88;
+6000;682.08;681.94;681.59;680.92;680;678.58;676.87;675.28;674.16;672.97;671.38;669.79;668.44;667.18;665.54;663.4;660.56;656.99;652.78;648.04;
+6500;676.72;676.62;676.26;675.59;674.68;673.35;671.56;669.96;668.84;667.65;666.12;664.52;663.13;661.93;660.33;658.3;655.64;652.33;648.46;644.14;
+7000;671.34;671.35;670.96;670.23;669.36;668.03;666.26;664.65;663.5;662.35;660.8;659.18;657.79;656.56;655.11;653.19;650.71;647.66;644.07;640.18;
+7500;666.89;666.76;666.35;665.61;664.59;663.15;661.22;659.16;658.1;656.95;655.45;653.64;652.46;651.24;649.9;648.11;645.8;642.94;639.66;636.17;
+8000;662.44;662.12;661.72;660.96;659.93;658.46;656.55;654.53;653.41;652.07;650.4;648.42;646.89;645.96;644.71;643.02;640.89;638.26;635.24;632.11;
+8500;657.58;657.46;657.06;656.31;655.29;653.82;651.93;649.9;648.76;647.43;645.83;643.89;642.19;640.98;639.58;637.93;635.97;633.56;630.81;628;
+9000;652.72;652.82;652.41;651.67;650.65;649.19;647.32;645.33;644.13;642.81;641.27;639.39;637.69;636.43;635.12;633.35;631.25;628.86;626.38;623.87;
+9500;648.32;648.18;647.78;647.04;646.04;644.58;642.72;640.71;639.53;638.22;636.74;634.92;633.2;631.91;630.68;628.99;627.02;624.74;622.23;619.74;
+10000;643.98;643.55;643.17;642.44;641.44;640;638.17;636.18;634.96;633.63;632.22;630.46;628.74;627.62;626.24;624.64;622.8;620.73;618.47;616.25;
+10500;639.1;638.99;638.6;637.89;636.89;635.46;633.65;631.66;630.4;629.04;627.69;625.98;624.27;623.14;621.83;620.31;618.58;616.69;614.69;612.78;
+11000;634.56;634.44;634.05;633.35;632.35;630.92;629.13;627.15;625.85;624.46;623.17;621.5;619.84;618.69;617.45;616;614.38;612.64;610.89;609.27;
+11500;637.72;637.61;637.21;636.5;635.49;634.03;632.22;630.21;628.89;627.48;626.16;624.46;622.76;621.61;620.45;618.85;617.18;615.39;613.59;611.91;
+12000;640.89;640.82;640.42;639.7;638.67;637.2;635.35;633.32;631.98;630.54;629.19;627.47;625.72;624.57;623.25;621.72;620.01;618.16;616.31;614.57;
+12500;644.05;644.09;643.68;642.95;641.9;640.4;638.53;636.47;635.11;633.65;632.26;630.5;628.73;627.56;626.2;624.63;622.86;620.95;619.03;617.24;
+13000;647.54;647.41;647;646.26;645.18;643.66;641.74;639.66;638.29;636.8;635.38;633.57;631.77;630.58;629.19;627.57;625.75;623.78;621.78;619.94;
+13500;651.11;651.2;650.38;649.6;648.52;646.98;645.05;642.9;641.52;640;638.53;636.68;634.85;633.64;632.21;630.54;628.66;626.63;624.56;622.64;
+14000;654.34;654.2;653.78;653.01;651.91;650.34;648.37;646.23;644.79;643.25;641.74;639.84;637.98;636.74;635.27;633.56;631.62;629.51;627.36;625.36;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;733.46;733.39;733.14;732.6;731.87;730.66;729.13;728.2;727.42;726.11;724.3;723.12;721.69;719.55;716.34;711.44;703.91;692.34;672.48;638.26;
+500;735.38;727.52;727.26;726.71;725.97;724.73;723.17;722.2;721.41;720.16;718.44;717.21;715.84;713.8;710.74;706.13;699.07;688.29;670.4;640.49;
+1000;722.02;721.68;721.43;720.87;720.13;718.87;717.3;716.3;715.33;714.23;712.54;711.28;709.98;708.04;705.14;700.78;694.05;684.11;667.98;641.99;
+1500;715.95;715.9;715.65;715.09;714.32;713.07;711.51;710.48;709.48;708.39;706.7;705.36;704.05;702.27;699.51;695.28;688.97;679.79;665.21;642.33;
+2000;710.25;710.16;709.86;709.29;708.54;707.28;705.73;704.68;703.67;702.62;700.98;699.55;698.17;696.41;693.72;689.74;683.84;675.08;662.17;641.94;
+2500;705.26;704.97;704.67;704.04;703.19;701.84;700.16;698.94;697.83;696.78;695.11;693.42;692.28;690.58;687.97;684.17;678.67;670.58;659.13;640.98;
+3000;699.87;699.77;699.46;698.81;697.95;696.55;694.82;693.59;692.38;691.23;689.38;687.54;686.41;684.81;682.27;678.67;673.46;666;655.58;639.52;
+3500;694.33;694.44;694.12;693.48;692.61;691.21;689.5;688.25;687.04;685.92;684.1;682.23;680.86;679.12;676.61;673.14;668.27;661.29;651.83;637.61;
+4000;689.2;689.11;688.79;688.13;687.28;685.88;684.17;682.91;681.89;680.6;678.8;676.97;675.6;673.94;671.38;667.79;662.99;656.51;647.78;635.23;
+4500;684.06;683.78;683.46;682.8;681.95;680.55;678.86;677.57;676.56;675.3;673.51;671.7;670.33;668.76;666.31;662.88;658.16;651.74;643.61;632.51;
+5000;678.56;678.46;678.13;677.46;676.62;675.23;673.54;672.24;671.22;669.99;668.23;666.46;665.07;663.57;661.23;657.95;653.51;647.46;639.35;629.31;
+5500;673.05;673.14;672.81;672.16;671.3;669.92;668.23;666.9;665.89;664.68;662.94;661.2;659.82;658.38;656.14;653.02;648.82;643.14;635.66;626.32;
+6000;667.92;667.82;667.49;666.83;665.98;664.59;662.92;661.57;660.55;659.37;657.64;655.92;654.79;653.19;651.07;648.08;644.09;638.78;631.87;623.39;
+6500;662.76;662.49;662.16;661.51;660.65;659.27;657.6;656.24;655.22;654.06;652.35;650.66;649.52;647.99;645.96;643.13;639.36;634.39;628.02;620.29;
+7000;658.01;657.87;657.49;656.75;655.78;654.29;652.47;650.94;649.88;648.74;647.05;645.33;644.26;642.78;640.85;638.18;634.6;629.96;624.07;617.06;
+7500;653.24;653.26;652.88;652.14;651.17;649.68;647.87;646.32;645.12;643.8;641.94;639.94;638.99;637.58;635.74;633.23;629.85;625.5;620.05;613.68;
+8000;648.79;648.67;648.28;647.54;646.57;645.08;643.28;641.71;640.49;639.19;637.35;635.59;634.16;632.58;630.64;628.27;625.07;621.01;615.98;610;
+8500;644.38;644.09;643.69;642.96;641.98;640.49;638.69;637.1;635.88;634.57;632.77;631.04;629.57;628.07;626.14;623.68;620.41;616.49;611.87;606.39;
+9000;639.64;639.51;639.12;638.38;637.4;635.9;634.11;632.51;631.28;629.96;628.2;626.48;625.01;623.56;621.7;619.36;616.31;612.47;607.88;602.68;
+9500;634.89;634.94;634.55;633.81;632.83;631.34;629.56;627.92;626.68;625.35;623.66;621.96;620.47;619.06;617.27;615.03;612.2;608.57;604.26;599.49;
+10000;630.51;630.4;630;629.27;628.28;626.87;625;623.35;622.11;620.78;619.16;617.44;615.93;614.52;612.84;610.68;608;604.64;600.65;596.23;
+10500;626.11;625.86;625.45;624.72;623.74;622.33;620.48;618.82;617.57;616.23;614.66;612.94;611.4;610;608.37;606.3;603.78;600.7;596.96;592.91;
+11000;621.46;621.33;620.93;620.21;619.23;617.82;615.98;614.3;613.04;611.72;610.14;608.18;606.83;605.4;603.9;601.93;599.55;596.66;593.23;589.54;
+11500;624.48;624.4;624;623.26;622.27;620.83;618.96;617.26;615.98;614.63;613.05;611.08;609.71;608.26;606.7;604.69;602.25;599.36;595.85;592.06;
+12000;627.5;627.52;627.11;626.36;625.35;623.89;621.99;620.27;618.96;617.58;615.98;613.95;612.62;611.15;609.54;607.47;604.97;602.01;598.5;594.6;
+12500;630.82;630.69;630.27;629.51;628.48;627;625.07;623.32;621.99;620.57;618.94;617.14;615.53;614.02;612.41;610.29;607.72;604.67;601.13;597.16;
+13000;634.14;633.9;633.48;632.71;631.66;630.15;628.19;626.42;625.06;623.61;621.94;620.11;618.47;616.93;615.28;613.13;610.5;607.37;603.75;599.73;
+13500;637.46;637.55;636.75;635.95;634.88;633.36;631.35;629.56;628.18;626.68;624.98;623.12;621.46;619.88;618.18;615.97;613.3;610.09;606.38;602.27;
+14000;640.61;640.47;640.03;639.24;638.15;636.6;634.56;632.76;631.35;629.82;628.07;626.17;624.48;622.86;621.11;618.84;616.1;612.82;609.02;604.82;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;719.52;719.48;719.29;718.76;718.12;716.99;715.53;714.9;714.13;712.59;711.07;709.7;707.82;705.04;700.67;693.42;681.72;659.71;613.18;-9999;
+500;713.67;713.6;713.41;712.9;712.23;711.08;709.61;708.92;708.17;706.66;705.17;703.85;702.06;699.4;695.13;688.31;677.43;657.53;617.73;-9999;
+1000;707.84;707.81;707.59;707.08;706.4;705.24;703.75;703.04;702.27;700.75;699.23;697.91;696.18;693.58;689.55;683.14;673.03;654.98;620.3;-9999;
+1500;702;702.05;701.8;701.29;700.62;699.44;697.91;697.15;696.34;694.81;693.23;691.88;690.22;687.77;683.95;677.93;668.53;652.12;621.74;-9999;
+2000;696.48;696.39;696.12;695.52;694.74;693.48;691.96;691.2;690.4;688.92;687.33;685.96;684.32;681.94;678.32;672.67;663.64;648.97;622.27;-9999;
+2500;690.8;691.06;690.8;690.2;689.42;688.1;686.44;685.53;684.58;683.01;681.45;680.09;678.52;676.19;672.72;667.37;659.03;645.59;622.08;-9999;
+3000;685.84;685.77;685.49;684.89;684.1;682.78;681.12;680.19;679.24;677.68;675.93;674.39;672.72;670.5;667.14;662.08;654.3;642.24;620.96;-9999;
+3500;680.84;680.49;680.19;679.58;678.8;677.47;675.81;674.86;673.91;672.38;670.65;669.11;667.45;665.09;661.63;656.77;649.4;638.3;619.49;588.92;
+4000;675.27;675.17;674.89;674.28;673.49;672.16;670.5;669.53;668.58;667.1;665.15;663.83;662.23;659.96;656.65;651.79;644.49;634.21;617.15;588.7;
+4500;669.68;669.87;669.59;668.97;668.19;666.86;665.2;664.21;663.26;661.82;659.91;658.56;657.01;654.84;651.65;647.01;640.15;630.19;614.51;589.39;
+5000;664.65;664.57;664.28;663.67;662.88;661.55;659.9;658.89;657.82;656.54;654.68;653.28;651.78;649.69;646.65;642.23;635.76;626.51;611.97;589.4;
+5500;659.6;659.28;658.97;658.35;657.57;656.24;654.6;653.56;652.49;651.25;649.43;648;646.55;644.55;641.64;637.43;631.33;622.7;609.46;589.1;
+6000;654.05;653.96;653.66;653.04;652.25;650.92;649.28;648.24;647.16;645.96;644.16;642.72;641.28;639.39;636.61;632.6;626.86;618.59;606.97;588.51;
+6500;649.42;649.3;648.95;648.24;647.34;645.89;644.11;642.9;641.82;640.66;638.97;637.45;636.01;634.24;631.59;627.77;622.35;614.66;604;587.48;
+7000;644.76;644.69;644.33;643.62;642.72;641.26;639.48;638.24;636.96;635.67;633.8;632.19;630.75;629.08;626.55;622.91;617.81;610.62;600.84;586;
+7500;640.09;640.08;639.72;639.01;638.1;636.65;634.88;633.61;632.31;631.05;629.19;627.28;625.83;624.03;621.52;618.06;613.23;606.51;597.47;584.17;
+8000;635.61;635.49;635.12;634.41;633.5;632.04;630.27;628.97;627.66;626.43;624.58;622.69;621.24;619.53;617;613.48;608.66;602.37;593.95;582.04;
+8500;631.11;630.9;630.53;629.82;628.91;627.44;625.67;624.35;623.21;621.82;619.99;618.12;616.66;615.03;612.59;609.26;604.68;598.57;590.55;579.87;
+9000;626.59;626.31;625.94;625.23;624.31;622.85;621.08;619.73;618.58;617.24;615.41;613.56;612.09;610.53;608.18;605.02;600.71;594.86;587.23;577.82;
+9500;622.06;621.75;621.38;620.66;619.73;618.26;616.5;615.13;613.98;612.67;610.85;609.01;607.51;606.02;603.77;600.77;596.63;591.1;584.08;575.54;
+10000;617.52;617.19;616.82;616.1;615.16;613.69;611.93;610.53;609.39;608.1;606.29;604.45;603.2;601.52;599.34;596.39;592.48;587.32;580.85;573.08;
+10500;612.77;612.65;612.27;611.54;610.61;609.15;607.38;605.97;604.82;603.54;601.74;599.9;598.61;596.94;594.8;591.99;588.33;583.54;577.55;570.49;
+11000;608;608.13;607.75;607.03;606.09;604.63;602.86;601.42;600.26;598.96;597.12;595.14;593.94;592.32;590.26;587.59;584.17;579.71;574.2;567.77;
+11500;611.16;611.13;610.74;610.01;609.06;607.57;605.77;604.3;603.12;601.83;600.01;598.02;596.77;595.12;593;590.27;586.76;582.24;576.55;569.95;
+12000;614.33;614.17;613.78;613.03;612.06;610.55;608.72;607.23;606.03;604.71;602.86;600.9;599.64;597.94;595.78;592.98;589.38;584.79;578.93;572.13;
+12500;617.38;617.26;616.85;616.09;615.11;613.57;611.71;610.21;608.97;607.62;605.74;603.76;602.47;600.78;598.59;595.73;592.04;587.35;581.36;574.33;
+13000;620.43;620.4;619.98;619.2;618.2;616.64;614.74;613.23;611.97;610.58;608.65;606.65;605.33;603.59;601.39;598.5;594.74;589.93;583.8;576.54;
+13500;623.72;623.57;623.15;622.37;621.35;619.75;617.82;616.29;615.01;613.58;611.61;609.6;608.22;606.44;604.18;601.27;597.45;592.53;586.26;578.76;
+14000;627.01;626.79;626.37;625.57;624.54;622.91;620.94;619.4;618.08;616.63;614.62;612.59;611.15;609.32;607.01;604.02;600.19;595.16;588.73;581;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;706.3;706.15;705.92;705.52;704.92;703.89;702.78;701.97;701;699.35;697.76;696.18;693.81;689.94;683.3;672.65;651.01;597.29;-9999;-9999;
+500;700.63;700.44;699.82;699.22;698.59;697.67;696.53;695.75;694.9;693.25;691.75;690.25;687.99;684.31;678.08;668.1;648.43;601.7;-9999;-9999;
+1000;694.04;694.06;693.94;693.42;692.82;691.72;690.56;689.77;688.91;687.24;685.7;684.28;682.14;678.67;672.81;663.45;645.53;605.73;-9999;-9999;
+1500;688.19;688.17;688.03;687.51;686.91;685.81;684.65;683.85;682.99;681.33;679.75;678.33;676.28;673;667.49;658.75;642.37;607.63;-9999;-9999;
+2000;682.2;682.71;682.5;681.93;681.25;680.04;678.75;677.95;677.11;675.47;673.82;672.5;670.47;667.31;662.14;653.63;638.94;608.28;-9999;-9999;
+2500;677.45;677.42;677.19;676.63;675.94;674.73;673.43;672.51;671.54;669.76;668.12;666.71;664.75;661.7;656.81;648.76;635.31;608.22;-9999;-9999;
+3000;672.15;672.12;671.88;671.32;670.64;669.42;668.11;667.19;666.23;664.49;662.84;661.27;659.2;656.13;651.42;643.86;631.66;607.45;-9999;-9999;
+3500;666.84;666.81;666.56;666.01;665.33;664.11;662.79;661.87;660.93;659.22;657.59;656.06;654.05;651.04;646.3;638.92;627.53;605.74;561.9;-9999;
+4000;661.51;661.61;661.19;660.71;660.02;658.8;657.47;656.55;655.62;653.92;652.33;650.84;648.91;646.02;641.52;634.44;623.43;603.51;562.33;-9999;
+4500;656.26;656.21;655.96;655.4;654.72;653.48;652.14;651.23;650.31;648.63;647.07;645.62;643.76;640.99;636.7;630;619.7;601.28;565.1;-9999;
+5000;651.02;650.91;650.66;650.1;649.41;648.17;646.82;645.9;645;643.35;641.79;640.38;638.6;635.95;631.86;625.52;615.88;599.02;567.48;-9999;
+5500;645.76;645.61;645.36;644.79;644.1;642.85;641.5;640.58;639.68;638.05;636.51;635.12;633.41;630.88;627;620.98;611.97;596.46;568.15;-9999;
+6000;641.05;640.96;640.65;639.99;639.18;637.81;636.31;635.24;634.36;632.78;631.23;629.86;628.22;625.8;622.11;616.4;607.96;593.66;568.48;-9999;
+6500;636.32;636.42;636.06;635.36;634.55;633.16;631.45;630.54;629.47;627.77;626.02;624.6;623.02;620.71;617.19;611.79;603.58;590.63;568.22;-9999;
+7000;631.83;631.74;631.41;630.75;629.93;628.53;626.82;625.87;624.8;623.16;621.4;619.84;618.1;615.67;612.26;607.15;599.44;587.65;567.27;-9999;
+7500;627.33;627.14;626.82;626.15;625.32;623.91;622.18;621.22;620.14;618.55;616.79;615.23;613.54;611.21;607.79;602.73;595.15;584.27;565.97;-9999;
+8000;622.65;622.55;622.22;621.55;620.72;619.3;617.57;616.58;615.51;613.96;611.94;610.62;608.97;606.72;603.47;598.64;591.42;581.2;564.66;538.01;
+8500;617.95;618.04;617.67;616.95;616.12;614.69;612.97;611.95;610.81;609.38;607.39;606.01;604.41;602.23;599.12;594.45;587.64;578.15;563.17;539.58;
+9000;613.51;613.4;613.06;612.39;611.54;610.09;608.38;607.32;606.18;604.8;602.84;601.41;599.84;597.67;594.64;590.23;583.82;575;561.4;540.76;
+9500;609.05;608.82;608.48;607.79;606.95;605.52;603.79;602.74;601.57;600.23;598.26;596.73;595.1;593.05;590.15;586;579.99;571.53;559.38;540.99;
+10000;604.58;604.25;603.92;603.22;602.39;600.97;599.23;598.1;596.88;595.54;593.59;592.02;590.39;588.45;585.66;581.74;576.14;568.16;557.38;540.85;
+10500;600.09;599.72;599.37;598.67;597.79;596.33;594.55;593.4;592.15;590.86;589.01;587.34;585.7;583.84;581.16;577.48;572.18;564.78;554.9;540.23;
+11000;595.49;595.1;594.74;594.03;593.14;591.68;589.9;588.71;587.44;586.19;584.34;582.43;581.03;579.24;576.67;573.14;568.19;561.31;552.27;539.21;
+11500;598.07;598.1;597.73;597.01;596.11;594.62;592.81;591.6;590.3;589.02;587.14;585.19;583.77;581.94;579.3;575.73;570.68;563.63;554.33;540.82;
+12000;600.63;601.12;600.76;600.04;599.13;597.6;595.74;594.53;593.21;591.88;589.97;587.99;586.54;584.66;581.97;578.31;573.25;565.99;556.39;542.43;
+12500;604.25;604.13;603.76;603.03;602.12;600.61;598.74;597.5;596.16;594.79;592.84;590.81;589.34;587.42;584.67;580.93;575.76;568.35;558.47;544.03;
+13000;607.87;607.18;606.8;606.05;605.13;603.6;601.72;600.51;599.16;597.74;595.76;593.95;592.17;590.21;587.41;583.58;578.3;570.74;560.56;545.62;
+13500;610.4;610.28;609.88;609.12;608.18;606.62;604.71;603.48;602.13;600.71;598.71;596.87;595.06;593.04;590.17;586.26;580.83;573.19;562.66;547.2;
+14000;612.93;613.42;613.02;612.24;611.29;609.69;607.73;606.51;605.12;603.66;601.65;599.82;598;595.91;592.97;588.97;583.41;575.61;564.76;548.77;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;689.92;689.88;689.71;689.38;688.87;687.83;686.89;686.4;685.59;684.07;682.51;680.58;677.55;672.31;663.22;645.03;592.17;-9999;-9999;-9999;
+500;684.47;684.55;684.15;683.81;683.29;682.25;681.28;680.68;679.91;678.4;676.9;675.07;672.18;667.21;658.58;641.96;595.69;-9999;-9999;-9999;
+1000;678.82;678.83;678.63;678.27;677.74;676.69;675.71;675.06;674.28;672.75;671.24;669.5;666.76;662.09;653.87;638.71;598.5;-9999;-9999;-9999;
+1500;673.17;673.3;673.09;672.72;672.2;671.14;670.15;669.48;668.71;667.19;665.67;663.92;661.3;656.86;649.1;634.7;599.84;-9999;-9999;-9999;
+2000;668.32;668.3;668.05;667.62;667.02;665.87;664.76;663.94;663.14;661.64;660.15;658.46;655.89;651.62;644.07;630.96;600.12;-9999;-9999;-9999;
+2500;663.5;663.59;663.02;662.59;661.99;660.83;659.72;658.91;658.05;656.41;654.77;653;650.54;646.44;639.26;626.97;599.5;-9999;-9999;-9999;
+3000;658.26;658.24;658.09;657.53;656.93;655.76;654.65;653.85;653.01;651.39;649.79;648.04;645.47;641.35;634.37;622.77;598.23;-9999;-9999;-9999;
+3500;653.02;653.19;653.01;652.46;651.86;650.67;649.56;648.78;647.96;646.36;644.78;643.1;640.63;636.6;629.75;618.52;596.08;-9999;-9999;-9999;
+4000;648.14;648.12;647.92;647.38;646.78;645.57;644.45;643.69;642.89;641.31;639.76;638.09;635.63;631.68;625.22;614.69;593.89;542.41;-9999;-9999;
+4500;643.26;643.35;642.72;642.29;641.68;640.46;639.33;638.59;637.77;636.14;634.55;632.93;630.57;626.85;620.71;610.76;591.72;546.73;-9999;-9999;
+5000;638.01;637.35;637.51;636.63;636.34;635.16;634.03;633.3;632.48;630.87;629.31;627.75;625.49;621.95;616.14;606.77;589.25;549.92;-9999;-9999;
+5500;633.02;632.98;632.71;632.12;631.44;630.14;628.87;627.99;627.19;625.6;623.96;622.56;620.39;617.03;611.52;602.69;586.5;552.01;-9999;-9999;
+6000;628.4;628.34;628.08;627.49;626.8;625.48;624.19;623.31;622.33;620.58;618.75;617.35;615.28;612.07;606.88;598.51;583.51;553.18;-9999;-9999;
+6500;623.77;623.71;623.44;622.84;622.15;620.83;619.55;618.66;617.68;615.94;614.1;612.62;610.41;607.13;602.19;594.21;580.62;553.22;-9999;-9999;
+7000;619.12;619.21;618.73;618.22;617.51;616.21;614.91;614.01;613.04;611.31;609.62;608.04;605.92;602.78;597.85;589.78;577.37;553.11;-9999;-9999;
+7500;614.54;614.47;614.2;613.59;612.88;611.59;610.27;609.36;608.39;606.68;605;603.45;601.4;598.36;593.62;586.03;574.42;552.65;-9999;-9999;
+8000;609.95;609.86;609.59;608.97;608.26;606.99;605.64;604.71;603.75;602.04;600.38;598.82;596.78;593.85;589.35;582.27;571.35;551.68;515.79;-9999;
+8500;605.35;605.26;604.99;604.36;603.67;602.39;601.02;600.07;599.08;597.34;595.64;594.11;592.13;589.33;585.06;578.41;568.16;550.34;516.27;-9999;
+9000;600.73;600.68;600.41;599.79;599.07;597.73;596.31;595.32;594.32;592.6;590.9;589.39;587.47;584.79;580.76;574.44;564.9;548.67;518.85;-9999;
+9500;596;596.04;595.75;595.12;594.38;593.03;591.59;590.58;589.58;587.87;586.17;584.66;582.81;580.24;576.39;570.46;561.53;546.73;520.73;-9999;
+10000;591.23;591.32;591.14;590.46;589.71;588.35;586.88;585.85;584.84;583.14;581.44;579.92;578.14;575.65;572.02;566.44;558.07;544.54;521.53;-9999;
+10500;586.87;586.78;586.47;585.82;585.05;583.67;582.17;581.1;580.1;578.44;576.72;575.2;573.46;571.07;567.61;562.37;554.29;542.13;521.69;-9999;
+11000;582.49;582.17;581.85;581.18;580.41;579;577.49;576.4;575.37;573.74;572.01;570.48;568.79;566.48;563.18;558.26;550.74;539.77;521.34;-9999;
+11500;584.95;585.07;584.75;584.07;583.27;581.85;580.1;579.21;578.16;576.49;574.73;573.17;571.45;569.1;565.73;560.72;553.05;541.76;522.72;-9999;
+12000;588.13;588.03;587.7;587;586.19;584.74;582.94;582.05;580.98;579.29;577.48;575.9;574.14;571.74;568.31;563.21;555.38;543.75;524.08;-9999;
+12500;591.3;591.03;590.68;589.97;589.15;587.68;585.85;584.93;583.83;582.09;580.26;578.66;576.86;574.42;570.91;565.71;557.72;545.49;525.42;-9999;
+13000;594.17;594.06;593.71;592.99;592.15;590.65;588.8;587.86;586.73;584.94;583.09;581.44;579.62;577.12;573.54;568.24;560.07;547.49;526.75;-9999;
+13500;597.04;597.12;596.77;596.03;595.19;593.66;591.78;590.82;589.66;587.82;585.95;584.28;582.4;579.86;576.2;570.79;562.46;549.49;528.21;-9999;
+14000;600.34;600.24;599.88;599.13;598.26;596.71;594.81;593.82;592.64;590.75;588.83;587.14;585.21;582.61;578.91;573.36;564.85;551.49;529.49;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;672.23;672.22;672.03;671.78;671.79;671.17;670.52;670.14;669.1;667.57;665.77;663.29;659.15;651.67;636.61;593.72;-9999;-9999;-9999;-9999;
+500;667;667.08;666.73;666.44;666.4;665.76;665.08;664.67;663.67;662.15;660.43;658.06;654.12;646.86;633.01;595.85;-9999;-9999;-9999;-9999;
+1000;661.83;661.65;661.45;661.12;661.06;660.4;659.7;659.29;658.28;656.74;655.03;652.78;649.05;642.21;629.28;596.72;-9999;-9999;-9999;-9999;
+1500;656.5;656.51;656.28;655.88;655.72;655.04;654.32;653.93;652.95;651.42;649.73;647.49;643.93;637.51;625.83;596.31;-9999;-9999;-9999;-9999;
+2000;651.04;651.73;651.47;651.08;650.9;650.13;649.28;648.79;647.71;646.09;644.46;642.3;638.84;632.71;621.74;594.94;-9999;-9999;-9999;-9999;
+2500;646.89;646.91;646.64;646.26;646.07;645.28;644.42;643.93;642.88;641.24;639.48;637.23;633.8;627.98;617.5;593.94;-9999;-9999;-9999;-9999;
+3000;642.74;642.07;641.79;641.63;641.21;640.42;639.56;639.06;638.03;636.41;634.7;632.53;629.17;623.43;613.21;591.91;-9999;-9999;-9999;-9999;
+3500;637.17;637.22;636.92;636.75;636.34;635.53;634.66;634.16;633.17;631.57;629.9;627.8;624.58;619.11;609.29;589.54;-9999;-9999;-9999;-9999;
+4000;632.32;632.34;632.03;631.85;631.46;630.63;629.74;629.25;628.28;626.7;625.07;623.06;619.97;614.76;605.36;587.28;-9999;-9999;-9999;-9999;
+4500;627.46;627.43;627.11;626.93;626.54;625.7;624.79;624.31;623.37;621.81;620.21;618.28;615.33;610.38;601.54;584.77;536.28;-9999;-9999;-9999;
+5000;623.07;623.05;622.72;622.39;621.92;620.96;619.87;619.35;618.44;616.9;615.33;613.48;610.65;605.94;597.57;581.99;539.95;-9999;-9999;-9999;
+5500;618.67;618.69;618.4;618.06;617.6;616.61;615.5;614.88;613.82;612.13;610.43;608.64;605.93;601.46;593.34;578.44;542.11;-9999;-9999;-9999;
+6000;614.26;614.32;614.21;613.72;613.25;612.25;611.11;610.5;609.46;607.78;606.09;604.16;601.37;596.91;589.19;575.22;543.53;-9999;-9999;-9999;
+6500;609.83;609.99;609.86;609.38;608.9;607.88;606.7;606.1;605.08;603.41;601.75;599.89;597.14;592.81;585.47;572.44;544.09;-9999;-9999;-9999;
+7000;605.66;605.66;605.5;605.02;604.53;603.49;602.45;601.69;600.69;599.02;597.33;595.49;592.85;588.72;581.77;569.41;543.9;-9999;-9999;-9999;
+7500;601.48;601.31;601.14;600.66;600.16;599.09;598;597.21;596.2;594.52;592.86;591.07;588.53;584.6;577.96;566.26;543.39;-9999;-9999;-9999;
+8000;596.91;596.9;596.7;596.2;595.68;594.58;593.47;592.68;591.68;590;588.36;586.63;584.2;580.4;573.99;563.02;542.37;-9999;-9999;-9999;
+8500;592.29;592.44;592.23;591.72;591.18;590.06;588.93;588.13;587.15;585.47;583.84;582.16;579.81;576.06;569.75;559.67;540.79;496.26;-9999;-9999;
+9000;588;587.96;587.75;587.23;586.67;585.54;584.38;583.57;582.6;580.93;579.31;577.56;575.23;571.63;565.87;556.25;539.04;501.75;-9999;-9999;
+9500;583.75;583.48;583.26;582.73;582.16;581.01;579.83;578.93;577.94;576.24;574.41;572.88;570.61;567.21;561.77;552.82;536.99;504.51;-9999;-9999;
+10000;579.06;579;578.76;578.21;577.52;576.3;575.06;574.18;573.17;571.45;569.67;568.18;566;562.77;557.63;549.07;534.7;506.21;-9999;-9999;
+10500;574.35;574.3;574.05;573.46;572.83;571.59;570.31;569.41;568.41;566.7;564.94;563.48;561.38;558.29;553.45;545.48;532.2;506.9;-9999;-9999;
+11000;569.71;569.63;569.37;568.78;568.13;566.86;565.56;564.65;563.65;561.95;560.12;558.77;556.74;553.79;549.23;541.79;529.53;507.23;-9999;-9999;
+11500;572.58;572.46;572.19;571.58;570.92;569.63;568.3;567.37;566.35;564.62;562.79;561.38;559.32;556.32;551.67;544.09;531.47;508.44;-9999;-9999;
+12000;575.45;575.32;575.04;574.42;573.75;572.43;570.88;570.12;569.08;567.32;565.49;564.03;561.92;558.87;554.14;546.41;533.43;509.61;-9999;-9999;
+12500;578.33;578.21;577.91;577.23;576.61;575.26;573.7;572.9;571.84;570.04;568.2;566.69;564.54;561.44;556.63;548.75;535.38;510.75;-9999;-9999;
+13000;581.21;581.11;580.82;580.2;579.54;578.14;576.65;575.72;574.62;572.79;570.92;569.38;567.19;564.03;559.14;551.11;537.35;511.85;-9999;-9999;
+13500;584.1;583.92;583.63;582.99;582.32;581;579.47;578.56;577.44;575.54;573.65;572.09;569.86;566.65;561.66;553.48;539.32;512.91;-9999;-9999;
+14000;587.02;586.75;586.44;585.81;585.12;583.77;582.23;581.39;580.28;578.4;576.59;574.86;572.56;569.28;564.21;555.87;541.3;514.13;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;663.31;663;663.11;662.92;662.99;662.45;661.88;661.48;660.32;658.59;656.79;653.93;649.02;639.71;619.11;-9999;-9999;-9999;-9999;-9999;
+500;657.73;657.81;657.88;657.69;657.73;657.17;656.57;656.15;655.02;653.33;651.59;648.87;644.2;635.45;616.65;-9999;-9999;-9999;-9999;-9999;
+1000;652.14;652.61;652.68;652.49;652.51;651.93;651.31;650.89;649.75;648.08;646.34;643.76;639.34;631.13;613.68;606.2;-9999;-9999;-9999;-9999;
+1500;647.58;647.66;647.69;647.43;647.36;646.69;646.05;645.64;644.54;642.89;641.18;638.63;634.42;626.72;610.62;-9999;-9999;-9999;-9999;-9999;
+2000;642.91;642.97;642.98;642.73;642.64;641.96;641.2;640.69;639.5;637.7;636.04;633.6;629.53;622.21;607.34;564.31;-9999;-9999;-9999;-9999;
+2500;638.23;638.27;638.26;638.14;637.9;637.2;636.43;635.94;634.78;633.04;631.26;628.73;624.66;617.71;603.79;566.43;-9999;-9999;-9999;-9999;
+3000;633.48;633.55;633.53;633.39;633.14;632.43;631.65;631.16;630.04;628.42;626.59;624.15;620.25;613.27;600.11;567.15;-9999;-9999;-9999;-9999;
+3500;628.72;628.82;628.77;628.62;628.36;627.64;626.85;626.37;625.27;623.67;621.9;619.56;615.83;609.21;597.12;566.6;-9999;-9999;-9999;-9999;
+4000;623.95;624.03;623.99;623.84;623.57;622.83;622.03;621.55;620.49;618.91;617.19;614.93;611.37;605.1;593.49;565.78;-9999;-9999;-9999;-9999;
+4500;619.48;619.51;619.38;619.12;618.75;618;617.19;616.72;615.68;614.12;612.45;610.27;606.86;600.94;589.79;564.74;-9999;-9999;-9999;-9999;
+5000;614.99;615.31;615.16;614.89;614.49;613.6;612.63;612;610.87;609.31;607.68;605.59;602.34;596.65;585.99;563.69;-9999;-9999;-9999;-9999;
+5500;611.07;611.1;610.93;610.64;610.23;609.33;608.32;607.71;606.56;604.87;603.1;600.9;597.74;592.31;582.23;562.09;-9999;-9999;-9999;-9999;
+6000;606.84;606.87;606.68;606.38;605.97;605.04;604.03;603.4;602.28;600.62;598.86;596.68;593.45;588.13;578.56;560.1;-9999;-9999;-9999;-9999;
+6500;602.59;602.63;602.43;602.11;601.69;600.75;599.72;599.08;597.96;596.26;594.52;592.41;589.31;584.26;575.25;558.23;-9999;-9999;-9999;-9999;
+7000;598.3;598.38;598.12;597.78;597.34;596.35;595.28;594.64;593.55;591.86;590.15;588.11;585.15;580.29;571.86;556.07;514.11;-9999;-9999;-9999;
+7500;593.97;593.98;593.87;593.38;592.93;591.93;590.84;590.19;589.12;587.45;585.76;583.79;580.93;576.32;568.22;553.66;517.45;-9999;-9999;-9999;
+8000;589.62;589.59;589.45;588.96;588.5;587.49;586.39;585.72;584.67;583.01;581.35;579.45;576.69;572.31;564.7;551.09;519.31;-9999;-9999;-9999;
+8500;585.35;585.18;585.01;584.53;584.06;583.02;581.89;581.24;580.2;578.55;576.92;575.08;572.43;568.26;561.1;547.96;519.97;-9999;-9999;-9999;
+9000;581.09;580.76;580.57;580.09;579.6;578.55;577.39;576.74;575.72;574.08;572.46;570.69;568.15;564.17;557.42;545.27;520;-9999;-9999;-9999;
+9500;576.35;576.33;576.13;575.64;575.14;574.07;572.88;572.23;571.23;569.59;567.99;566.27;563.83;560.03;553.69;542.17;519.69;-9999;-9999;-9999;
+10000;571.6;571.89;571.69;571.18;570.67;569.58;568.35;567.7;566.72;565.09;563.5;561.84;559.49;555.87;549.88;539.03;518.78;-9999;-9999;-9999;
+10500;567.49;567.45;567.24;566.72;566.19;565.08;563.82;563.17;562.19;560.57;559;557.37;555.12;551.67;545.86;535.83;517.24;472.96;-9999;-9999;
+11000;563.36;563.01;562.79;562.26;561.71;560.58;559.28;558.62;557.66;556.04;554.47;552.89;550.72;547.28;541.73;532.5;515.58;478.61;-9999;-9999;
+11500;565.72;565.64;565.4;564.86;564.3;563.15;561.84;561.16;560.17;558.53;556.94;555.34;553.13;549.8;544.17;534.69;517.22;478.88;-9999;-9999;
+12000;568.08;568.28;568.04;567.49;566.91;565.74;564.43;563.72;562.7;561.04;559.43;557.8;555.56;552.19;546.57;536.89;518.87;-9999;-9999;-9999;
+12500;570.99;570.92;570.69;570.12;569.54;568.35;567.03;566.29;565.25;563.57;561.93;560.28;558.01;554.58;549.04;539.1;520.51;480.42;-9999;-9999;
+13000;573.9;573.58;573.35;572.77;572.19;570.98;569.64;568.88;567.81;566.1;564.45;562.77;560.46;556.99;551.37;541.33;522.15;-9999;-9999;-9999;
+13500;576.82;576.27;576.03;575.44;574.85;573.62;572.28;571.49;570.39;568.65;566.98;565.27;562.93;559.41;553.71;543.58;523.78;475.32;-9999;-9999;
+14000;579.03;578.97;578.72;578.12;577.52;576.27;574.92;574.11;572.99;571.22;569.52;567.79;565.41;561.84;556.06;545.83;525.41;477.61;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;653.73;653.8;653.83;653.66;653.8;653.34;652.85;652.37;651.14;649.51;647.29;643.99;638.26;626.09;594.82;-9999;-9999;-9999;-9999;-9999;
+500;648.54;648.61;648.73;648.56;648.67;648.18;647.67;647.19;645.98;644.37;642.26;639.1;633.52;622.34;593.82;-9999;-9999;-9999;-9999;-9999;
+1000;643.34;643.42;643.66;643.49;643.57;643.07;642.54;642.07;640.85;639.26;637.18;634.18;628.89;618.47;592.61;-9999;-9999;-9999;-9999;-9999;
+1500;638.71;638.79;638.86;638.63;638.63;638.03;637.4;636.96;635.77;634.2;632.17;629.23;624.19;614.48;591.37;-9999;-9999;-9999;-9999;-9999;
+2000;633.99;634.21;634.26;634.03;634.01;633.41;632.74;632.21;630.92;629.24;627.17;624.36;619.53;610.37;589.6;-9999;-9999;-9999;-9999;-9999;
+2500;629.53;629.61;629.64;629.41;629.37;628.75;628.07;627.56;626.3;624.65;622.6;619.72;614.92;606.23;587.15;-9999;-9999;-9999;-9999;-9999;
+3000;625.09;624.98;625;624.77;624.71;624.08;623.39;622.89;621.65;619.85;618.06;615.29;610.71;602.34;584.34;-9999;-9999;-9999;-9999;-9999;
+3500;620.27;620.35;620.35;620.24;620.04;619.4;618.7;618.2;616.99;615.23;613.49;610.84;606.46;598.54;581.62;-9999;-9999;-9999;-9999;-9999;
+4000;615.62;615.69;615.68;615.54;615.34;614.69;613.97;613.49;612.32;610.59;608.89;606.35;602.18;594.61;578.81;-9999;-9999;-9999;-9999;-9999;
+4500;611.42;611.46;611.38;611.16;610.83;610.04;609.22;608.76;607.62;605.92;604.27;601.84;597.83;590.59;575.8;535.35;-9999;-9999;-9999;-9999;
+5000;607.21;607.34;607.24;607;606.66;605.86;604.96;604.35;603.08;601.25;599.63;597.24;593.37;586.44;572.63;537.36;-9999;-9999;-9999;-9999;
+5500;602.99;603.22;603.1;602.85;602.5;601.69;600.78;600.17;598.91;597.07;595.27;592.78;588.95;582.25;569.33;538.55;-9999;-9999;-9999;-9999;
+6000;599.03;599.07;598.93;598.66;598.29;597.44;596.48;595.87;594.63;592.83;591.05;588.66;584.95;578.55;566.59;538.6;-9999;-9999;-9999;-9999;
+6500;595;594.81;594.66;594.37;594.01;593.12;592.16;591.54;590.33;588.64;586.81;584.49;580.94;574.88;563.45;538.12;-9999;-9999;-9999;-9999;
+7000;590.51;590.54;590.37;590.07;589.69;588.8;587.82;587.2;586.01;584.34;582.55;580.31;576.9;571.16;560.49;537.92;-9999;-9999;-9999;-9999;
+7500;586.23;586.25;586.06;585.75;585.36;584.44;583.45;582.83;581.67;580.02;578.27;576.1;572.84;567.39;557.42;537.04;-9999;-9999;-9999;-9999;
+8000;581.94;581.94;581.74;581.41;581.01;580.07;579.07;578.45;577.31;575.67;573.96;571.86;568.73;563.57;554.25;535.67;-9999;-9999;-9999;-9999;
+8500;577.65;577.73;577.39;577.06;576.64;575.69;574.67;574.04;572.93;571.3;569.63;567.6;564.6;559.7;550.99;533.74;-9999;-9999;-9999;-9999;
+9000;573.38;573.28;573.16;572.68;572.26;571.29;570.25;569.62;568.54;566.92;565.27;563.32;560.45;555.78;547.63;531.68;489.02;-9999;-9999;-9999;
+9500;568.92;568.92;568.76;568.29;567.87;566.88;565.82;565.18;564.12;562.51;560.9;559;556.25;551.82;544.18;529.35;492.84;-9999;-9999;-9999;
+10000;564.54;564.54;564.36;563.89;563.45;562.45;561.37;560.73;559.69;558.09;556.5;554.67;552.03;547.82;540.5;526.81;495.23;-9999;-9999;-9999;
+10500;560.16;560.15;559.97;559.49;559.03;558.01;556.9;556.26;555.23;553.64;552.07;550.3;547.77;543.77;536.9;524.07;496.35;-9999;-9999;-9999;
+11000;555.77;555.84;555.49;555.08;554.6;553.55;552.43;551.77;550.77;549.18;547.62;545.91;543.48;539.68;533.23;521.46;496.62;-9999;-9999;-9999;
+11500;558.06;558.24;558.07;557.56;557.08;556.02;554.87;554.21;553.18;551.57;550;548.26;545.8;541.96;535.41;523.47;497.78;-9999;-9999;-9999;
+12000;560.81;560.79;560.58;560.07;559.57;558.49;557.33;556.65;555.6;553.98;552.38;550.63;548.13;544.24;537.6;525.45;499.07;-9999;-9999;-9999;
+12500;563.58;563.35;563.1;562.58;562.09;560.98;559.8;559.11;558.03;556.39;554.78;553;550.48;546.54;539.8;527.2;500.19;-9999;-9999;-9999;
+13000;565.93;565.86;565.64;565.11;564.6;563.49;562.29;561.58;560.48;558.82;557.19;555.39;552.83;548.84;542.01;529.18;501.25;-9999;-9999;-9999;
+13500;568.29;568.39;568.19;567.64;567.13;566;564.79;564.07;562.94;561.26;559.61;557.78;555.2;551.15;544.23;531.15;502.3;-9999;-9999;-9999;
+14000;571.01;570.97;570.74;570.19;569.67;568.52;567.3;566.56;565.41;563.7;562.04;560.19;557.57;553.48;546.46;533.12;503.32;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;644.01;643.94;644.24;643.95;644.11;643.72;643.26;642.72;641.45;639.7;637.23;633.44;626.39;610.26;592.45;-9999;-9999;-9999;-9999;-9999;
+500;638.92;638.99;639.16;639;639.14;638.73;638.26;637.71;636.46;634.73;632.37;628.73;622.1;607.04;591.53;-9999;-9999;-9999;-9999;-9999;
+1000;633.83;633.89;634.22;634.06;634.19;633.76;633.29;632.75;631.49;629.78;627.46;623.98;617.74;603.64;590.4;-9999;-9999;-9999;-9999;-9999;
+1500;629.41;629.51;629.62;629.41;629.46;628.94;628.37;627.8;626.56;624.88;622.62;619.22;613.3;600.47;563.76;-9999;-9999;-9999;-9999;-9999;
+2000;624.95;625.03;625.12;624.91;624.95;624.42;623.85;623.26;621.91;620.14;617.81;614.53;608.88;596.78;564.31;-9999;-9999;-9999;-9999;-9999;
+2500;620.46;620.54;620.61;620.4;620.42;619.88;619.29;618.73;617.41;615.69;613.43;610.13;604.39;593.04;563.74;-9999;-9999;-9999;-9999;-9999;
+3000;615.96;616.03;616.09;615.87;615.88;615.33;614.72;614.18;612.89;611.21;609.03;605.86;600.41;589.55;562.21;-9999;-9999;-9999;-9999;-9999;
+3500;611.41;611.5;611.55;611.33;611.31;610.75;610.15;609.61;608.34;606.7;604.59;601.57;596.31;586.1;561.35;-9999;-9999;-9999;-9999;-9999;
+4000;606.98;607.03;607.01;606.76;606.73;606.15;605.53;605.02;603.77;602.18;600.15;597.19;592.15;582.55;560.17;-9999;-9999;-9999;-9999;-9999;
+4500;603.28;603.03;602.99;602.8;602.52;601.81;601.04;600.42;599.18;597.58;595.57;592.73;587.98;578.9;558.47;-9999;-9999;-9999;-9999;-9999;
+5000;598.94;598.99;598.93;598.72;598.43;597.69;596.86;596.21;594.82;593.09;590.97;588.25;583.67;575.17;556.52;-9999;-9999;-9999;-9999;-9999;
+5500;594.52;594.85;594.78;594.55;594.25;593.5;592.66;592.02;590.65;588.94;586.89;584.1;579.6;571.51;554.42;544.24;-9999;-9999;-9999;-9999;
+6000;590.65;590.69;590.6;590.37;590.06;589.29;588.43;587.8;586.47;584.78;582.78;580.1;575.8;568.16;552.06;546.8;-9999;-9999;-9999;-9999;
+6500;586.48;586.52;586.42;586.17;585.84;585.07;584.19;583.58;582.27;580.41;578.65;576.07;571.96;564.74;549.67;-9999;-9999;-9999;-9999;-9999;
+7000;582.3;582.38;582.21;581.96;581.62;580.83;579.94;579.33;578.05;576.23;574.5;572.01;568.09;561.26;547.11;510.43;-9999;-9999;-9999;-9999;
+7500;578.12;578.19;577.99;577.72;577.39;576.57;575.66;575.06;573.81;572.03;570.33;567.92;564.17;557.57;544.37;512.72;-9999;-9999;-9999;-9999;
+8000;573.94;573.91;573.76;573.48;573.14;572.29;571.37;570.77;569.56;567.81;566.13;563.81;560.23;554.01;541.92;513.46;-9999;-9999;-9999;-9999;
+8500;569.66;569.68;569.51;569.21;568.87;568;567.07;566.47;565.28;563.57;561.91;559.67;556.24;550.37;539.16;513.4;-9999;-9999;-9999;-9999;
+9000;565.4;565.42;565.24;564.93;564.57;563.68;562.74;562.14;560.97;559.38;557.67;555.5;552.22;546.67;536.26;513.34;-9999;-9999;-9999;-9999;
+9500;561.14;561.15;560.95;560.63;560.26;559.35;558.39;557.79;556.64;555.07;553.4;551.31;548.17;542.91;533.24;512.68;-9999;-9999;-9999;-9999;
+10000;556.87;556.94;556.64;556.31;555.93;555;554.02;553.42;552.3;550.73;549.1;547.09;544.08;539.1;530.11;511.46;-9999;-9999;-9999;-9999;
+10500;552.55;552.56;552.43;551.97;551.58;550.64;549.64;549.03;547.94;546.38;544.77;542.83;539.96;535.24;526.86;509.79;-9999;-9999;-9999;-9999;
+11000;548.24;548.24;548.08;547.62;547.21;546.26;545.24;544.62;543.55;542;540.43;538.55;535.8;531.33;523.51;507.64;464.93;-9999;-9999;-9999;
+11500;550.63;550.62;550.45;549.99;549.58;548.6;547.57;546.95;545.86;544.29;542.7;540.8;538.02;533.49;525.56;509.23;465.64;-9999;-9999;-9999;
+12000;553.03;553.1;552.75;552.37;551.95;550.96;549.91;549.28;548.17;546.58;544.98;543.06;540.26;535.67;527.62;510.82;-9999;-9999;-9999;-9999;
+12500;555.44;555.51;555.15;554.76;554.33;553.32;552.26;551.62;550.49;548.89;547.27;545.33;542.5;537.87;529.69;512.4;-9999;-9999;-9999;-9999;
+13000;557.83;557.82;557.63;557.14;556.72;555.7;554.62;553.96;552.81;551.2;549.56;547.6;544.74;540.07;531.76;513.98;-9999;-9999;-9999;-9999;
+13500;560.24;560.25;560.04;559.54;559.12;558.08;556.99;556.32;555.15;553.51;551.84;549.85;546.96;542.28;533.83;515.72;-9999;-9999;-9999;-9999;
+14000;562.68;562.66;562.46;561.95;561.52;560.47;559.35;558.68;557.45;555.8;554.12;552.1;549.19;544.45;535.91;517.3;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;633.71;633.63;633.92;633.66;633.84;633.51;632.95;632.18;630.82;628.88;626.17;622.01;613.46;590.74;-9999;-9999;-9999;-9999;-9999;-9999;
+500;628.78;628.84;629.15;628.88;629.04;628.69;628.21;627.42;626.05;624.15;621.55;617.56;609.47;588.77;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;623.83;624.1;624.38;624.1;624.26;623.89;623.42;622.73;621.35;619.45;616.88;613.06;605.42;586.42;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;619.63;619.69;619.85;619.66;619.75;619.3;618.75;618.06;616.67;614.81;612.29;608.5;601.28;583.75;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;615.4;615.38;615.5;615.3;615.38;614.92;614.37;613.71;612.29;610.36;607.78;604.05;597.08;580.75;561.81;-9999;-9999;-9999;-9999;-9999;
+2500;610.92;611.01;611.11;610.92;610.98;610.52;609.98;609.34;607.96;606.1;603.6;599.94;592.98;577.32;560.83;-9999;-9999;-9999;-9999;-9999;
+3000;606.54;606.63;606.72;606.52;606.57;606.09;605.56;604.93;603.6;601.81;599.39;595.79;589.15;574.29;559.65;-9999;-9999;-9999;-9999;-9999;
+3500;602.14;602.21;602.3;602.11;602.15;601.66;601.13;600.53;599.22;597.44;595.06;591.6;585.27;571.37;558.77;-9999;-9999;-9999;-9999;-9999;
+4000;597.68;598.02;598.02;597.74;597.65;597.14;596.58;595.99;594.7;592.97;590.7;587.31;581.33;568.59;533.46;-9999;-9999;-9999;-9999;-9999;
+4500;593.95;594.01;594;593.71;593.59;592.95;592.22;591.52;590.15;588.45;586.25;583.01;577.33;565.46;533.8;-9999;-9999;-9999;-9999;-9999;
+5000;590.3;589.98;589.96;589.79;589.54;588.88;588.13;587.46;586.03;584.23;581.94;578.69;573.19;562.22;533.72;-9999;-9999;-9999;-9999;-9999;
+5500;585.89;585.94;585.91;585.72;585.47;584.79;584.04;583.37;581.96;580.2;577.98;574.85;569.53;559.27;533.33;-9999;-9999;-9999;-9999;-9999;
+6000;581.83;581.88;581.83;581.64;581.37;580.69;579.92;579.26;577.88;576.15;574;570.98;565.93;556.3;533.19;-9999;-9999;-9999;-9999;-9999;
+6500;577.77;577.84;577.74;577.54;577.26;576.57;575.78;575.14;573.77;572.08;569.99;567.09;562.28;553.24;532.33;-9999;-9999;-9999;-9999;-9999;
+7000;573.69;573.76;573.63;573.42;573.14;572.42;571.63;571;569.65;567.98;565.95;563.17;558.59;550.09;531.03;-9999;-9999;-9999;-9999;-9999;
+7500;569.56;569.6;569.51;569.28;568.99;568.26;567.45;566.83;565.51;563.87;561.89;559.22;554.86;546.87;529.31;-9999;-9999;-9999;-9999;-9999;
+8000;565.42;565.47;565.37;565.12;564.82;564.08;563.25;562.65;561.35;559.73;557.81;555.24;551.08;543.57;527.29;519.03;-9999;-9999;-9999;-9999;
+8500;561.27;561.32;561.2;560.94;560.65;559.88;559.04;558.45;557.17;555.57;553.71;551.23;547.27;540.2;524.85;520.51;-9999;-9999;-9999;-9999;
+9000;557.11;557.16;557.02;556.75;556.45;555.66;554.8;554.22;552.97;551.22;549.58;547.2;543.42;536.76;522.4;483.86;-9999;-9999;-9999;-9999;
+9500;552.94;552.98;552.83;552.55;552.24;551.43;550.55;549.97;548.75;547.03;545.43;543.12;539.52;533.26;520.09;487.26;-9999;-9999;-9999;-9999;
+10000;548.76;548.83;548.61;548.32;548;547.17;546.28;545.7;544.51;542.82;541.25;539.02;535.58;529.57;517.79;488.38;-9999;-9999;-9999;-9999;
+10500;544.56;544.58;544.39;544.09;543.76;542.9;542;541.42;540.24;538.6;537.04;534.9;531.61;525.94;515.07;488.91;-9999;-9999;-9999;-9999;
+11000;540.36;540.34;540.14;539.82;539.48;538.61;537.7;537.1;535.96;534.35;532.8;530.74;527.6;522.26;512.22;488.91;-9999;-9999;-9999;-9999;
+11500;542.45;542.59;542.39;542.06;541.72;540.83;539.91;539.31;538.14;536.51;534.97;532.89;529.72;524.33;514.12;490.27;-9999;-9999;-9999;-9999;
+12000;544.55;544.62;544.64;544.31;543.96;543.06;542.13;541.52;540.35;538.67;537.12;535;531.82;526.41;516.02;491.43;-9999;-9999;-9999;-9999;
+12500;547.12;547.13;547.02;546.55;546.21;545.29;544.35;543.73;542.51;540.83;539.24;537.11;533.9;528.47;517.92;492.56;-9999;-9999;-9999;-9999;
+13000;549.4;549.41;549.29;548.81;548.46;547.54;546.55;545.92;544.66;542.95;541.37;539.22;535.99;530.52;519.82;493.66;-9999;-9999;-9999;-9999;
+13500;551.68;551.68;551.55;551.07;550.71;549.79;548.76;548.08;546.81;545.08;543.49;541.33;538.07;532.55;521.73;494.73;-9999;-9999;-9999;-9999;
+14000;553.98;553.96;553.81;553.31;552.94;551.98;551.06;550.24;548.95;547.21;545.61;543.43;540.16;534.59;523.63;495.77;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;622.78;622.84;623.09;622.86;622.78;622.31;621.63;620.75;619.35;617.29;614.36;609.69;598.94;577.68;-9999;-9999;-9999;-9999;-9999;-9999;
+500;618.11;618.17;618.36;618.24;618.24;617.75;617.08;616.21;614.83;612.8;609.97;605.5;595.36;565.45;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;613.51;613.57;613.73;613.59;613.69;613.2;612.53;611.69;610.31;608.31;605.53;601.26;591.65;563.71;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;609.52;609.37;609.61;609.32;609.43;608.88;608.16;607.25;605.8;603.85;601.15;596.94;587.83;561.62;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;605.06;605.13;605.27;605.09;605.18;604.67;603.97;603.1;601.66;599.64;596.82;592.52;583.95;559.98;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;600.59;600.94;601.06;600.87;600.96;600.46;599.75;598.85;597.45;595.45;592.7;588.55;580.21;558.17;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;596.54;596.61;596.73;596.55;596.63;596.17;595.47;594.61;593.17;591.23;588.55;584.52;576.65;556.42;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;592.54;592.27;592.38;592.19;592.26;591.84;591.16;590.32;588.9;586.97;584.36;580.48;573.03;554.41;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;588.2;588.27;588.28;588.02;587.96;587.44;586.81;585.99;584.6;582.71;580.19;576.4;569.34;552.02;532.35;-9999;-9999;-9999;-9999;-9999;
+4500;583.85;584.36;584.38;584.11;584.04;583.47;582.76;581.81;580.3;578.42;575.98;572.34;565.61;549.48;531.38;-9999;-9999;-9999;-9999;-9999;
+5000;580.38;580.44;580.45;580.18;580.09;579.52;578.84;577.91;576.43;574.49;571.99;568.37;561.94;546.8;531.24;-9999;-9999;-9999;-9999;-9999;
+5500;576.89;576.5;576.5;576.23;576.13;575.54;574.82;574;572.53;570.63;568.2;564.71;558.59;544.54;530.71;-9999;-9999;-9999;-9999;-9999;
+6000;572.51;572.56;572.55;572.38;572.16;571.55;570.83;570.05;568.6;566.74;564.38;561.02;555.2;542.21;530.35;-9999;-9999;-9999;-9999;-9999;
+6500;568.11;568.59;568.57;568.39;568.16;567.54;566.82;566.08;564.64;562.82;560.53;557.3;551.77;539.9;506.78;-9999;-9999;-9999;-9999;-9999;
+7000;564.55;564.61;564.57;564.38;564.15;563.52;562.8;562.08;560.65;558.88;556.65;553.54;548.31;537.26;507.2;-9999;-9999;-9999;-9999;-9999;
+7500;560.99;560.6;560.55;560.35;560.11;559.47;558.74;558.06;556.65;554.91;552.75;549.76;544.78;534.48;507.33;-9999;-9999;-9999;-9999;-9999;
+8000;556.53;556.57;556.51;556.3;556.05;555.39;554.66;554.01;552.62;550.91;548.82;545.94;541.2;531.59;507.37;-9999;-9999;-9999;-9999;-9999;
+8500;552.05;552.53;552.45;552.22;551.97;551.3;550.55;549.93;548.56;546.88;544.85;542.08;537.57;528.61;506.99;-9999;-9999;-9999;-9999;-9999;
+9000;548.42;548.46;548.37;548.13;547.87;547.19;546.42;545.82;544.48;542.83;540.86;538.19;533.89;525.53;505.98;-9999;-9999;-9999;-9999;-9999;
+9500;544.78;544.38;544.27;544.03;543.75;543.05;542.27;541.68;540.37;538.75;536.84;534.27;530.17;522.37;504.48;-9999;-9999;-9999;-9999;-9999;
+10000;540.25;540.28;540.16;539.9;539.64;538.9;538.1;537.52;536.23;534.65;532.79;530.32;526.41;519.12;502.62;-9999;-9999;-9999;-9999;-9999;
+10500;535.71;536.16;536.02;535.75;535.49;534.73;533.91;533.34;532.08;530.52;528.71;526.33;522.61;515.79;500.3;495.51;-9999;-9999;-9999;-9999;
+11000;531.99;532.02;531.87;531.59;531.31;530.54;529.7;529.14;527.9;526.37;524.61;522.32;518.76;512.43;498.27;495.31;-9999;-9999;-9999;-9999;
+11500;534.18;534.15;533.98;533.7;533.42;532.63;531.77;531.18;529.91;528.36;526.59;524.29;520.7;514.3;499.97;496.87;-9999;-9999;-9999;-9999;
+12000;536.38;536.45;536.1;535.81;535.53;534.74;533.83;533.19;531.9;530.35;528.58;526.25;522.64;516.23;501.65;498.53;-9999;-9999;-9999;-9999;
+12500;538.58;538.4;538.23;537.91;537.6;536.8;535.87;535.2;533.9;532.34;530.56;528.22;524.57;518.15;503.33;499.92;-9999;-9999;-9999;-9999;
+13000;540.51;540.53;540.35;540;539.67;538.82;537.88;537.21;535.9;534.33;532.54;530.19;526.51;520.07;504.99;-9999;-9999;-9999;-9999;-9999;
+13500;542.45;542.64;542.46;542.08;541.71;540.84;539.89;539.21;537.89;536.31;534.51;532.15;528.46;521.97;506.65;501.74;-9999;-9999;-9999;-9999;
+14000;544.72;544.72;544.49;544.1;543.73;542.85;541.89;541.21;539.88;538.29;536.49;534.11;530.39;523.84;508.3;504.14;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;611.56;610.87;610.95;610.59;610.44;609.97;609.25;608.28;606.87;604.68;601.56;596.19;581.16;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;606.58;606.64;606.62;606.3;606.16;605.68;604.96;604.01;602.62;600.49;597.41;592.21;578.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;602.37;602.43;602.4;602.06;601.89;601.4;600.7;599.76;598.34;596.21;593.18;588.16;575.3;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;598.76;598.37;598.42;598.06;597.89;597.36;596.59;595.59;594.09;591.92;588.97;584.1;572.14;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;594.22;594.28;594.29;593.98;593.82;593.3;592.54;591.56;590.11;587.93;584.9;580.06;568.94;547.48;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;589.75;590.1;590.2;589.86;589.72;589.19;588.45;587.5;586.06;583.94;581;576.32;565.82;545.35;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;585.84;585.91;585.99;585.71;585.57;585.05;584.33;583.41;581.98;579.91;577.05;572.55;562.68;533.67;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;581.93;581.66;581.82;581.52;581.39;580.87;580.17;579.27;577.87;575.85;573.06;568.73;559.45;532.13;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;577.78;577.84;577.88;577.57;577.32;576.68;575.96;575.1;573.72;571.75;569.05;564.87;556.11;530.63;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;573.59;574.04;574.09;573.79;573.52;572.88;572.08;571.11;569.62;567.61;564.98;560.97;552.72;529.36;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;570.2;570.26;570.29;570.03;569.77;569.11;568.29;567.31;565.86;563.87;561.21;557.27;549.56;528.51;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;566.8;566.46;566.48;566.24;565.98;565.32;564.52;563.55;562.08;560.11;557.54;553.74;546.45;527.23;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;562.58;562.64;562.64;562.4;562.17;561.51;560.71;559.77;558.32;556.39;553.85;550.09;543.31;525.61;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;558.34;558.78;558.79;558.54;558.34;557.67;556.88;555.96;554.53;552.64;550.18;546.55;540.1;523.62;505.48;-9999;-9999;-9999;-9999;-9999;
+7000;554.87;554.92;554.91;554.73;554.48;553.8;553.02;552.13;550.71;548.87;546.47;542.98;536.88;521.47;504.71;-9999;-9999;-9999;-9999;-9999;
+7500;551.38;551.03;551.02;550.83;550.59;549.91;549.14;548.26;546.86;545.06;542.74;539.38;533.6;519.47;504.53;-9999;-9999;-9999;-9999;-9999;
+8000;547.08;547.13;547.1;546.91;546.68;545.99;545.19;544.36;542.98;541.22;538.97;535.74;530.27;517.29;504.06;-9999;-9999;-9999;-9999;-9999;
+8500;542.77;543.2;543.16;542.97;542.74;542.05;541.24;540.44;539.08;537.35;535.17;532.07;526.87;514.94;503.89;-9999;-9999;-9999;-9999;-9999;
+9000;539.21;539.26;539.2;539;538.78;538.08;537.27;536.5;535.14;533.45;531.33;528.36;523.42;512.58;480.43;-9999;-9999;-9999;-9999;-9999;
+9500;535.64;535.29;535.22;535.01;534.78;534.08;533.26;532.52;531.18;529.52;527.47;524.61;519.92;509.89;481.3;-9999;-9999;-9999;-9999;-9999;
+10000;531.26;531.3;531.21;530.99;530.76;530.06;529.24;528.52;527.2;525.57;523.58;520.84;516.29;507.09;481.39;-9999;-9999;-9999;-9999;-9999;
+10500;526.86;527.28;527.19;526.96;526.71;526.01;525.19;524.49;523.19;521.59;519.66;517.02;512.75;504.17;481.58;-9999;-9999;-9999;-9999;-9999;
+11000;523.22;523.25;523.14;522.9;522.64;521.94;521.11;520.43;519.15;517.58;515.71;513.18;509.08;501.15;480.81;-9999;-9999;-9999;-9999;-9999;
+11500;525.28;525.23;525.12;524.83;524.56;523.81;522.97;522.29;521;519.43;517.55;514.99;510.89;502.92;482.06;-9999;-9999;-9999;-9999;-9999;
+12000;527.34;527.19;527.1;526.77;526.45;525.68;524.83;524.15;522.84;521.27;519.39;516.81;512.68;504.68;483.3;-9999;-9999;-9999;-9999;-9999;
+12500;529.13;529.16;528.98;528.64;528.31;527.54;526.68;526;524.69;523.11;521.22;518.63;514.44;506.45;484.51;-9999;-9999;-9999;-9999;-9999;
+13000;530.93;531;530.85;530.51;530.18;529.4;528.54;527.84;526.53;524.94;523.05;520.45;516.22;508.21;485.8;-9999;-9999;-9999;-9999;-9999;
+13500;532.91;532.91;532.72;532.37;532.04;531.25;530.38;529.69;528.37;526.77;524.87;522.27;518.01;509.97;486.98;-9999;-9999;-9999;-9999;-9999;
+14000;534.91;534.77;534.57;534.21;533.89;533.09;532.22;531.52;530.2;528.6;526.7;524.08;519.79;511.7;488.12;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;597.53;597.49;597.45;597.09;596.91;596.76;596.27;595.53;594.11;591.42;587.02;579.41;559.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;593.43;593.49;593.38;593.05;592.84;592.5;591.99;591.27;589.88;587.38;583.51;576.3;557.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;589.49;589.55;589.44;589.09;588.84;588.38;587.81;587.02;585.63;583.15;579.8;573.99;555.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;585.48;585.68;585.67;585.3;585.06;584.58;583.9;583;581.54;578.99;575.82;570.17;553.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;581.83;581.89;581.79;581.46;581.24;580.74;580.02;579.04;577.62;575.27;571.88;566.46;550.91;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;578.19;577.94;577.9;577.59;577.38;576.86;576.14;575.13;573.71;571.53;568.21;562.98;548.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;573.99;574.05;573.97;573.67;573.48;572.97;572.23;571.24;569.78;567.57;564.55;559.46;545.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;569.79;569.85;570.01;569.71;569.53;569.03;568.3;567.33;565.92;563.77;560.83;555.88;543.39;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;566.45;566.51;566.36;566;565.71;565.09;564.32;563.39;562;559.93;557.03;552.26;540.68;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;563.11;562.82;562.75;562.39;562.11;561.5;560.68;559.63;558.15;556.03;553.19;548.6;538.02;517.52;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;559.16;559.22;559.1;558.74;558.47;557.87;557.06;556.04;554.58;552.5;549.68;545.24;535.47;516.03;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;555.21;555.27;555.42;555.07;554.81;554.2;553.42;552.42;550.98;548.95;546.19;541.91;532.92;515.38;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;551.78;551.83;551.71;551.37;551.11;550.51;549.74;548.77;547.35;545.36;542.67;538.55;530.13;503.91;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;548.32;548.05;547.96;547.64;547.39;546.79;546.03;545.08;543.68;541.75;539.13;535.15;527.25;502.58;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;544.35;544.41;544.27;543.92;543.65;543.03;542.26;541.37;539.99;538.1;535.56;531.72;524.31;501.84;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;540.38;540.44;540.54;540.2;539.93;539.31;538.55;537.63;536.24;534.42;531.95;528.25;521.31;501.06;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;536.89;536.95;536.8;536.51;536.19;535.56;534.8;533.91;532.54;530.71;528.29;524.76;518.22;499.77;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;533.4;533.13;533.03;532.74;532.42;531.78;531.03;530.15;528.8;527.02;524.67;521.18;515.04;498.1;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;529.33;529.34;529.23;528.94;528.62;527.98;527.23;526.37;525.03;523.29;521.02;517.67;511.82;496.24;479.21;-9999;-9999;-9999;-9999;-9999;
+9500;525.26;525.32;525.41;525.12;524.8;524.15;523.41;522.57;521.25;519.54;517.34;514.14;508.57;494.41;478.63;-9999;-9999;-9999;-9999;-9999;
+10000;521.67;521.68;521.56;521.26;520.94;520.29;519.53;518.74;517.42;515.76;513.63;510.57;505.26;492.34;477.6;-9999;-9999;-9999;-9999;-9999;
+10500;518.08;517.81;517.68;517.38;517.06;516.4;515.63;514.87;513.57;511.94;509.87;506.91;501.91;490.07;477.72;-9999;-9999;-9999;-9999;-9999;
+11000;513.9;513.9;513.77;513.46;513.14;512.48;511.7;510.97;509.69;508.08;506.08;503.24;498.47;487.62;478.04;-9999;-9999;-9999;-9999;-9999;
+11500;515.57;515.63;515.49;515.17;514.85;514.19;513.42;512.67;511.39;509.78;507.77;504.91;500.15;489.24;479.34;-9999;-9999;-9999;-9999;-9999;
+12000;517.34;517.36;517.2;516.88;516.56;515.89;515.11;514.37;513.09;511.47;509.45;506.59;501.8;490.85;480.61;-9999;-9999;-9999;-9999;-9999;
+12500;519.13;519.06;518.91;518.59;518.27;517.59;516.81;516.06;514.77;513.16;511.15;508.26;503.44;492.46;481.86;-9999;-9999;-9999;-9999;-9999;
+13000;520.95;520.76;520.61;520.28;519.99;519.29;518.5;517.75;516.46;514.85;512.83;509.94;505.08;494.06;483.09;-9999;-9999;-9999;-9999;-9999;
+13500;522.45;522.46;522.3;521.97;521.68;520.97;520.19;519.43;518.14;516.53;514.5;511.61;506.71;495.65;484.4;-9999;-9999;-9999;-9999;-9999;
+14000;523.97;524.03;523.98;523.64;523.36;522.64;521.86;521.11;519.81;518.18;516.13;513.18;508.33;497.23;485.44;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;582.31;582.37;582.33;582.31;582.36;582.08;581.37;580.31;578.33;575.16;570.03;559.56;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;578.6;578.66;578.75;578.62;578.69;578.41;577.73;576.7;574.82;571.72;566.65;557.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;575.23;575.29;575.22;575.08;575.15;574.85;574.15;573.09;571.28;568.26;563.35;554.6;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;571.71;571.78;571.67;571.52;571.7;571.45;570.79;569.77;567.93;564.9;560.02;551.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;568.19;568.25;568.07;567.83;567.98;567.84;567.31;566.44;564.66;561.76;556.98;549.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;564.67;564.51;564.43;564.15;564.19;564.08;563.57;562.78;561.33;558.52;554.1;546.44;528.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;560.85;560.91;560.78;560.47;560.36;560.28;559.78;559.02;557.6;555.08;551.04;543.69;525.34;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;557.03;557.14;557.08;556.76;556.58;556.44;555.94;555.21;553.81;551.36;547.72;540.88;523.49;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;553.79;553.85;553.66;553.28;552.96;552.58;552.06;551.35;549.99;547.6;544.08;538.41;521.92;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;550.55;550.37;550.26;549.89;549.56;549.09;548.48;547.66;546.22;543.8;540.48;535.1;520.55;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;546.94;547;546.83;546.46;546.15;545.61;545.02;544.16;542.74;540.4;537.21;532.05;518.51;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;543.32;543.37;543.36;543.01;542.7;542.14;541.5;540.63;539.24;536.96;533.94;529.12;516.78;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;539.96;540.02;539.86;539.51;539.22;538.64;537.93;537.07;535.71;533.5;530.63;525.95;514.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;536.59;536.41;536.32;535.98;535.7;535.13;534.37;533.47;532.15;530.03;527.06;522.73;512.36;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;532.83;532.89;532.75;532.42;532.15;531.58;530.83;529.85;528.56;526.52;523.7;519.51;509.93;489.83;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;529.06;529.12;529.15;528.83;528.56;528;527.25;526.3;524.98;522.98;520.31;516.26;507.38;488.7;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;525.6;525.65;525.52;525.21;524.95;524.38;523.65;522.72;521.37;519.44;516.89;512.96;504.81;488.07;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;522.12;521.95;521.87;521.6;521.31;520.74;520.02;519.12;517.76;515.92;513.45;509.63;502.04;476.06;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;518.28;518.34;518.19;517.92;517.61;517.06;516.35;515.47;514.16;512.37;509.95;506.27;499.13;474.84;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;514.48;514.54;514.55;514.26;513.96;513.37;512.66;511.78;510.51;508.76;506.41;502.88;496.06;474.43;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;510.97;510.97;510.87;510.58;510.28;509.69;508.98;508.12;506.83;505.1;502.85;499.43;492.93;473.62;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;507.45;507.26;507.15;506.86;506.57;505.97;505.26;504.42;503.15;501.46;499.23;495.83;489.76;472.24;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;503.51;503.52;503.4;503.12;502.82;502.22;501.52;500.7;499.42;497.75;495.57;492.31;486.53;470.59;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;505.03;505.08;504.96;504.67;504.37;503.77;503.07;502.24;500.98;499.32;497.12;493.85;488.05;471.93;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;506.55;506.61;506.51;506.21;505.92;505.31;504.61;503.79;502.48;500.83;498.63;495.5;489.57;473.25;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;508.18;508.18;508.05;507.75;507.46;506.85;506.15;505.33;504.14;502.51;500.3;497.1;491.09;474.56;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;509.82;509.72;509.59;509.28;508.99;508.38;507.68;507;505.85;504.25;502.02;498.63;492.67;475.85;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;511.24;511.24;511.11;510.8;510.51;509.91;509.32;508.73;507.58;505.97;503.74;500.12;493.99;477.13;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;512.68;512.74;512.62;512.31;512.06;511.49;511.02;510.46;509.3;507.69;505.46;501.8;495.47;478.38;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;566.26;566.24;566.24;565.99;565.98;565.64;564.82;563.57;561.38;557.79;552.55;544.8;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;562.74;562.82;562.85;562.66;562.57;562.26;561.48;560.26;558.13;554.64;549.39;539.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;559.6;559.66;559.73;559.51;559.37;559.04;558.26;557;554.85;551.45;546.22;536.01;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;556.45;556.42;556.53;556.32;556.22;555.9;555.17;553.96;551.82;548.41;543.05;532.66;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;553.28;553.16;553.32;553.1;552.98;552.71;552.02;550.86;548.8;545.5;540.17;529.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;549.81;549.87;549.98;549.84;549.79;549.48;548.84;547.74;545.71;542.55;537.3;527.15;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;546.47;546.53;546.66;546.54;546.56;546.23;545.62;544.56;542.62;539.57;534.33;524.94;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;543.12;543.18;543.3;543.2;543.25;542.95;542.35;541.34;539.49;536.55;531.42;522.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;539.93;540;540.1;539.94;539.96;539.63;539.04;538.09;536.31;533.5;528.62;520.61;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;536.66;536.72;536.85;536.69;536.74;536.48;535.91;534.92;533.16;530.44;525.87;518.48;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;533.48;533.54;533.48;533.39;533.47;533.21;532.63;531.77;530.32;527.68;523.35;516.17;499.79;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;530.3;530.36;530.24;530.07;530.15;529.91;529.34;528.5;527.08;524.68;520.8;513.75;496.84;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;527.1;526.94;526.86;526.7;526.8;526.56;526;525.19;523.79;521.45;517.98;511.29;495.13;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;523.9;523.64;523.52;523.31;523.4;523.17;522.63;521.84;520.47;518.18;514.83;509.15;493.55;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;520.69;520.3;520.19;519.88;519.96;519.74;519.22;518.45;517.1;514.87;511.63;506.05;492.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;516.94;517;516.82;516.49;516.48;516.27;515.76;515.03;513.71;511.53;508.4;503.04;490.34;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;513.24;513.52;513.42;513.09;512.97;512.75;512.27;511.56;510.28;508.14;505.13;499.99;488.47;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;510.07;510.12;509.97;509.65;509.44;509.21;508.75;508.05;506.78;504.71;501.77;496.86;486.5;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;506.89;506.58;506.48;506.21;505.91;505.62;505.17;504.5;503.27;501.27;498.42;493.68;484.18;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;503.06;503.12;502.97;502.69;502.41;502.02;501.57;500.91;499.71;497.76;494.99;490.47;481.73;462.14;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;499.2;499.49;499.4;499.13;498.84;498.38;497.88;497.24;496.06;494.2;491.52;487.2;479.11;461.63;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;495.83;495.89;495.75;495.48;495.21;494.66;494.17;493.53;492.36;490.59;488.01;483.9;476.41;460.77;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;492.45;492.5;492.05;491.81;491.53;490.98;490.42;489.79;488.65;486.93;484.46;480.71;473.49;448.48;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;493.52;493.57;493.47;493.22;492.94;492.49;492.01;491.41;490.26;488.55;486.07;482.09;474.69;449.51;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;494.59;494.65;494.87;494.63;494.4;494.07;493.62;493.01;491.87;490.15;487.67;483.46;476.11;450.4;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;496.37;496.38;496.28;496.07;495.98;495.67;495.22;494.61;493.48;491.75;489.27;485.05;477.45;451.3;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;498.17;497.78;497.65;497.58;497.57;497.27;496.82;496.22;495.09;493.35;490.87;486.62;478.78;452.15;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;499.19;499.25;499.19;499.08;499.15;498.85;498.42;497.83;496.69;494.93;492.46;488.19;480.1;465.54;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;500.63;500.71;500.74;500.64;500.7;500.41;500.01;499.42;498.28;496.51;494.03;489.75;481.4;466.53;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;548.6;548.49;548.49;548.23;548.09;547.71;546.83;545.46;543.11;539.43;535.32;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;545.45;545.51;545.32;545.25;545.1;544.68;543.78;542.48;540.2;536.56;532.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;542.86;542.66;542.67;542.42;542.31;541.89;541;539.62;537.27;533.61;528.92;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;539.79;539.85;539.82;539.54;539.48;539.07;538.2;536.85;534.55;530.82;525.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;536.7;536.83;536.78;536.74;536.6;536.19;535.36;534.04;531.8;528.12;523.03;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;533.84;533.9;533.89;533.77;533.66;533.28;532.5;531.21;529.01;525.4;520.19;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;530.96;530.81;530.8;530.71;530.67;530.33;529.55;528.33;526.17;522.66;517.36;509.87;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;527.71;527.77;527.8;527.69;527.63;527.32;526.58;525.41;523.3;519.89;514.53;505.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;524.88;524.94;524.89;524.56;524.47;524.27;523.56;522.43;520.4;517.09;511.74;502.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;522.04;522.1;522.07;521.78;521.76;521.45;520.69;519.53;517.54;514.38;509.24;500.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;519.19;519.25;519.22;519.04;518.97;518.67;517.95;516.84;514.91;511.82;506.64;497.66;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;516.29;516.35;516.34;516.15;516.2;515.85;515.18;514.12;512.2;509.26;504.29;495.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;513.38;513.41;513.42;513.25;513.32;513;512.37;511.36;509.52;506.68;501.91;493.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;510.35;510.41;510.48;510.34;510.38;510.11;509.53;508.58;506.82;504.08;499.49;491.83;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;507.17;507.23;507.31;507.17;507.22;507.1;506.67;505.75;504.06;501.44;497.01;489.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;503.98;504.04;504.09;503.97;504.02;503.85;503.44;502.69;501.31;498.75;494.49;487.14;471.35;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;500.78;500.84;500.85;500.73;500.79;500.6;500.14;499.41;498.06;495.81;491.95;484.71;468.54;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;497.52;497.36;497.5;497.39;497.47;497.25;496.79;496.07;494.76;492.5;489.13;482.24;466.86;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;493.93;493.99;494.1;494.04;494.09;493.88;493.42;492.7;491.42;489.21;485.98;480.02;465.5;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;490.33;490.57;490.65;490.57;490.66;490.45;489.97;489.29;488.03;485.88;482.78;476.95;463.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;486.72;487.1;487.16;487.09;487.18;486.97;486.51;485.83;484.6;482.52;479.55;473.98;462.17;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;483.52;483.57;483.65;483.58;483.66;483.44;483;482.34;481.13;479.14;476.27;471.05;460.37;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;480.11;480.16;480.11;480.03;480.08;479.87;479.44;478.81;477.63;475.71;472.95;467.95;458.27;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;481.34;481.4;481.52;481.46;481.53;481.32;480.89;480.26;479.08;477.15;474.4;469.37;459.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;482.83;482.89;482.94;482.88;482.97;482.76;482.34;481.73;480.56;478.62;475.69;470.78;460.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;484.33;484.31;484.36;484.28;484.4;484.2;483.81;483.22;482.06;480.13;477.14;472.19;461.93;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;485.83;485.72;485.77;485.7;485.82;485.64;485.27;484.71;483.55;481.62;478.64;473.6;463.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;487.04;487.1;487.18;487.12;487.23;487.1;486.74;486.18;485.03;483.11;480.12;475;464.23;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;488.27;488.33;488.57;488.51;488.68;488.56;488.2;487.64;486.5;484.58;481.6;476.38;465.3;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;528.94;529.01;528.62;528.45;528.05;527.46;526.69;525.41;523.23;521.11;532.1;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;526.42;526.49;526.02;526.07;525.73;525.13;524.32;522.95;520.69;518.16;524.55;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;523.82;523.9;523.68;523.55;523.43;522.87;521.99;520.57;518.18;515.27;517.49;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;521.45;521.52;521.34;521.08;521.03;520.57;519.63;518.19;515.79;512.57;512.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;518.87;518.93;518.81;518.56;518.46;518.04;517.21;515.74;513.32;509.97;507.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;516.26;516.2;516.2;515.98;515.87;515.56;514.61;513.23;510.89;507.34;503.96;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;513.65;513.47;513.54;513.33;513.24;512.91;511.99;510.61;508.37;504.79;500.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;510.75;510.81;510.85;510.61;510.56;510.21;509.33;508.05;505.8;502.13;497.99;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;507.91;508.16;508.16;507.87;507.83;507.48;506.74;505.48;503.19;499.53;495.38;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;505.61;505.68;505.67;505.36;505.3;504.87;504.08;502.81;500.62;497.11;492.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;503.31;503;502.97;502.82;502.78;502.39;501.61;500.39;498.21;494.82;489.99;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;500.39;500.45;500.5;500.3;500.22;499.86;499.09;497.9;495.76;492.45;487.38;482.07;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;497.41;497.71;497.72;497.63;497.58;497.26;496.52;495.37;493.29;490.05;484.81;477.45;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;494.95;495.01;495.1;494.98;494.82;494.61;493.91;492.8;490.78;487.62;482.23;474.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;492.48;492.54;492.33;492.27;492.15;491.92;491.25;490.19;488.24;485.16;479.84;471.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;489.37;489.44;489.51;489.44;489.45;489.18;488.55;487.54;485.66;482.68;477.54;468.84;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;486.25;486.6;486.66;486.57;486.68;486.4;485.81;484.86;483.05;480.17;475.21;466.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;483.65;483.72;483.78;483.7;483.86;483.59;483.04;482.13;480.36;477.64;472.84;465.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;481.04;480.75;480.86;480.8;480.99;480.75;480.25;479.36;477.68;475.06;470.46;462.88;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;477.53;477.6;477.71;477.63;477.82;477.75;477.37;476.57;474.95;472.44;468.04;460.49;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;474.02;474.4;474.48;474.41;474.57;474.51;474.1;473.45;472.14;469.78;465.62;458.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;471.07;471.13;471.22;471.14;471.29;471.2;470.85;470.18;468.91;466.78;463.21;455.72;440.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;468.12;467.83;467.91;467.87;467.98;467.85;467.5;466.87;465.64;463.54;460.3;454.27;439.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;468.96;469.02;469.16;469.15;469.28;469.17;468.85;468.21;466.97;464.92;461.63;455.36;440.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;470.25;470.31;470.45;470.45;470.58;470.5;470.17;469.57;468.32;466.26;462.95;456.58;441.07;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;471.55;471.6;471.72;471.7;471.86;471.82;471.54;470.95;469.73;467.58;464.28;457.79;441.91;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;472.85;472.88;472.99;472.97;473.17;473.16;472.86;472.34;471.14;468.96;465.59;458.99;442.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;474.04;474.11;474.24;474.24;474.48;474.52;474.23;473.72;472.52;470.27;466.9;460.18;443.77;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;475.25;475.37;475.49;475.48;475.83;475.87;475.58;475.08;473.89;471.66;468.2;461.41;444.64;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/V2527-A5.xml b/engine/test/stubs/V2527-A5/V2527-A5.xml
new file mode 100644
index 00000000..78a2a89b
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/V2527-A5.xml
@@ -0,0 +1,187 @@
+<EngineDataFile>
+    <EngineDesignCondition Desc="Flight conditions for creating the bucket curve">
+        <flightAltitude Desc="Flight altitude for bucket curve" Unit="ft">35000</flightAltitude>
+        <flightMachNumber Desc="Mach number for bucket curve" Unit="-">0.8</flightMachNumber>
+        <thrust Desc="thrust at design point, ISA (value from source)" Unit="kN">17.01</thrust>
+        <SLST Desc="Sea level static thrust measured at SL, Mach 0, ISA (value from source)" Unit="kN">110.31</SLST>
+        <MCT Desc="Maximum continuous thrust measured at SL, Mach 0, ISA (value from source)" Unit="kN">98.92</MCT>
+        <FlatRatingTemp_MTO Desc="Delta ISA Temperature until the Maximum Takeoff Thrust (MTO) can be reached at sea level" Unit="K">31</FlatRatingTemp_MTO>
+        <FlatRatingTemp_MCT Desc="Delta ISA Temperature until the Maximum Continuous Thrust (MCT) can be reached at sea level" Unit="K">10</FlatRatingTemp_MCT>
+        <OPRMax_Climb Desc="Maximum overall pressure ratio in rating TO" Unit="-">32.8</OPRMax_Climb>
+    </EngineDesignCondition>
+	<MassProperties>
+        <Dry_mass Desc="Dry mass of the engine (value from source) excludes starter, exhaust nozzle and power source for ignition system" Unit="kg">2404</Dry_mass>
+    </MassProperties>
+    <Geometry Desc="Dimensions of the engine">
+        <OuterDimensions Desc="External dimensions of the engine">
+            <w_Engine Desc="Engine width" Unit="m">1.829</w_Engine>
+            <h_Engine Desc="Height of the engine" Unit="m">2.118</h_Engine>
+            <l_Engine Desc="Length of the engine" Unit="m">2.508</l_Engine>
+        </OuterDimensions>
+        <jetSpecific>
+            <FanDiameter Desc="Diameter of the fan" Unit="m">1.613</FanDiameter>
+            <turbineNoise>
+                <turbineRotorDiameter Desc="Diameter of LP Turbine rotor blades" Unit="m">0</turbineRotorDiameter>
+                <turbineInletArea Desc="Inlet area of LP turbine" Unit="m2">0</turbineInletArea>
+                <turbineRotorBladeNo Desc="No of rotor blades of LP turbine" Unit="-">0</turbineRotorBladeNo>
+            </turbineNoise>
+            <fanNoise>
+                <fanInletArea Desc="Inlet area of the fan of the engine" Unit="m2">0</fanInletArea>
+                <fanExhaustArea Desc="Inlet area of the fan of the engine" Unit="m2">0</fanExhaustArea>
+                <fanRotorBladeNo Desc="Number of fan rotor blades" Unit="-">0</fanRotorBladeNo>
+                <fanStatorVaneNo Desc="Number of stator vanes in fan section of engine" Unit="-">0</fanStatorVaneNo>
+                <fanRotorStatorSpacing Desc="The spacing between rotor blades and stator vanes, actually the ratio spacing/rotorChord (s/C)" Unit="-">0</fanRotorStatorSpacing>
+                <fanInletRotorDiameter Desc="Diameter of the fan inlet rotor" Unit="m">0</fanInletRotorDiameter>
+                <fanExhaustRotorDiameter Desc="Diameter of the fan exhaust rotor" Unit="m">0</fanExhaustRotorDiameter>
+                <fanTipDesignMach Desc="Design Mach number of the fan rotors tip" Unit="-">0</fanTipDesignMach>
+                <IGV Desc="Whether engine has Inlet Guide Vanes or not: 1:No 2:Yes" Unit="-">0</IGV>
+                <IFD Desc="Whether Inlet Flow Distortion is present or not: 1:No 2:Yes" Unit="-">0</IFD>
+                <INBB Desc="Calculate inlet broadband noise or not: 0:No 1:Yes" Unit="-">0</INBB>
+                <INTON Desc="Calculate inlet tonal noise or not: 0:No 1:Yes" Unit="-">0</INTON>
+                <DISBB Desc="Calculate exhaust broadband noise or not: 0:No 1:Yes" Unit="-">0</DISBB>
+                <DISTON Desc="Calculate exhaust tonal noise or not: 0:No 1:Yes" Unit="-">0</DISTON>
+            </fanNoise>
+            <combustorNoise>
+                <combustorEntranceArea Desc="Cross-sectional area of the entrance of combustor" Unit="m2">0</combustorEntranceArea>
+            </combustorNoise>
+            <jetNoise>
+                <flightVectorEngineAxisAngle Desc="Distance from source to observer in dimensionless form" Unit="-">0</flightVectorEngineAxisAngle>
+                <plugNozzle Desc="Boolean for whether there is a plug at nozzle or not: 1: Yes 0: No" Unit="-">0</plugNozzle>
+                <plugDiameter Desc="Diameter of plug at nozzle" Unit="m">0</plugDiameter>
+                <coaxialNozzle Desc="Boolean for whether the nozzles are coaxial or a single nozzle is present: 1: Yes 0: No" Unit="-">0</coaxialNozzle>
+                <actualPrimaryArea Desc="Geometrical area of the primary jet" Unit="m2">0</actualPrimaryArea>
+                <actualSecondaryArea Desc="Geometrical area of the secondary jet" Unit="m2">0</actualSecondaryArea>
+            </jetNoise>
+        </jetSpecific>
+        <propSpecific>
+            <PropDiameter Desc="Diameter of the propeller" Unit="m">0.0</PropDiameter>
+            <PropBlades Desc="Number of propeller blades" Unit="---">0</PropBlades>
+        </propSpecific>
+    </Geometry>
+    <Deck Desc="Engine performance map (Performance Deck). All values apply to the unscaled deck!">
+        <UnscaledSLST Desc="Unscaled Flat-Rated static thrust of the deck" Unit="kN" ValueFromSource="110.31">110.3126953</UnscaledSLST>
+        <UnscaledRatedPower Desc="Unscaled Flat-Rated static power of the deck (Shaft power)" Unit="kW">0</UnscaledRatedPower>
+        <ThrustDeckName Desc="Name of the engine deck containing the thrust values as a function of N1, Mach, and altitude" Unit="-">V2527-A5_FN.csv</ThrustDeckName>
+        <FuelDeckName Desc="Name of the engine deck containing the fuel flow values as a function of N1, Mach, and altitude" Unit="-">V2527-A5_WF.csv</FuelDeckName>
+        <CoreMassFlowDeckName Desc="Name of the engine deck containing the air mass flow values through the engine core as a function of N1, Mach, and altitude" Unit="-">V2527-A5_W25.csv</CoreMassFlowDeckName>
+        <OPRDeckName Desc="Name of the engine deck containing the OPR values (p3/p2) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_P3q2.csv</OPRDeckName>
+        <EPRDeckName Desc="Name of the engine deck containing the EPR values (p5/p2) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_P5q2.csv</EPRDeckName>
+        <TemperatureLimitDeckName Desc="Name of the engine deck containing the temperature limit values (GE uses TIT (turbine inlet temperature) where PW/IAE uses EGT (exhaust gas temperature measured at LP turbine exit) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_St5_T.csv</TemperatureLimitDeckName>
+        <EGTDeckName Desc="Name of the engine deck containing the EGT values (exhaust gas temperature at LP turbine exit) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_St5_T.csv</EGTDeckName>
+        <NLimitDeckName Desc="Name of the engine deck containing the rel. N2 values (maximum rel. rotation speed of HP shaft) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_XN_HPC.csv</NLimitDeckName>
+        <WFToP3LimitDeckName Desc="Name of the engine deck containing the fraction values of fuel flow to p3 as a function of N1, Mach, and altitude" Unit="-">V2527-A5_WFqP3.csv</WFToP3LimitDeckName>
+        <N1nominal Desc="Maximum rotational speed for low pressure rotor - Limit in TCDS" Unit="1/min">5650</N1nominal>
+        <N2nominal Desc="Maximum rotational speed for high pressure rotor - Limit in TCDS" Unit="1/min">14950</N2nominal>
+        <WFToP3min Desc="Minimum fraction of fuel flow and p3 to prevent flame-out" Unit="-">45</WFToP3min>
+        <WFToP3max_MTO Desc="Maximum ratio of fuel flow to flow pressure after compression in rating TO" Unit="-">101.83</WFToP3max_MTO>
+        <WFToP3max_MCT Desc="Maximum ratio of fuel flow to flow pressure after compression in rating MCT" Unit="-">98.74</WFToP3max_MCT>
+        <TempMax_MTO Desc="Temperature limit at turbine exit (T49 or T5). Calculated by returning UnscaledSLST at TO-rating and ambient conditions at FlatRatingTemp_MTO" Unit="K">8480.69</TempMax_MTO>
+        <TempMax_MCT Desc="Temperature limit at turbine exit (T49 or T5). Calculated by returning Maximum Continuous Thrust at MCT-rating and ambient conditions at FlatRatingTemp_MCT" Unit="K">7720.35</TempMax_MCT>
+        <N2max Desc="Maximum relative rotational speed for high pressure rotor - Limit in TCDS" Unit="-">1.034</N2max>
+        <RelBleedMax Desc="Maximum bleed air extraction of the engine for aircraft onboard systems as a fraction of core mass flow" Unit="-">0.3</RelBleedMax>
+        <ShaftPowerExtractionMax Desc="Maximum shaft power extraction of the engine for aircraft onboard systems" Unit="kW">150</ShaftPowerExtractionMax>
+        <NfractionClimbRating Desc="Fraction of N_Climb/N_MCT; calculated such that N_Climb is about 0.9*N1 at SL, Ma=0, and ISA conditions" Unit="-">0.97</NfractionClimbRating>
+        <NfractionCruiseRating Desc="Fraction of N_Cruise/N_MCT; calculated such that Cruise thrust is met at design point (cf. EngineDesignCondition)" Unit="-">0.875</NfractionCruiseRating>
+        <St2FuelAirDeckName Unit="-">V2527-A5_St2_fa.csv</St2FuelAirDeckName>
+        <St2MachDeckName Unit="-">V2527-A5_St2_Mn.csv</St2MachDeckName>
+        <St2TotalPressureDeckName Unit="-">V2527-A5_St2_P.csv</St2TotalPressureDeckName>
+        <St2TotalTemperatureDeckName Unit="-">V2527-A5_St2_T.csv</St2TotalTemperatureDeckName>
+        <St2StaticTemperatureDeckName Unit="-">V2527-A5_St2_Ts.csv</St2StaticTemperatureDeckName>
+        <St2MassFlowDeckName Unit="-">V2527-A5_St2_W.csv</St2MassFlowDeckName>
+        <St3FuelAirDeckName Unit="-">V2527-A5_St3_fa.csv</St3FuelAirDeckName>
+        <St3MachDeckName Unit="-">V2527-A5_St3_Mn.csv</St3MachDeckName>
+        <St3TotalPressureDeckName Unit="-">V2527-A5_St3_P.csv</St3TotalPressureDeckName>
+        <St3TotalTemperatureDeckName Unit="-">V2527-A5_St3_T.csv</St3TotalTemperatureDeckName>
+        <St3StaticTemperatureDeckName Unit="-">V2527-A5_St3_Ts.csv</St3StaticTemperatureDeckName>
+        <St3MassFlowDeckName Unit="-">V2527-A5_St3_W.csv</St3MassFlowDeckName>
+        <St4FuelAirDeckName Unit="-">V2527-A5_St4_fa.csv</St4FuelAirDeckName>
+        <St4MachDeckName Unit="-">V2527-A5_St4_Mn.csv</St4MachDeckName>
+        <St4TotalPressureDeckName Unit="-">V2527-A5_St4_P.csv</St4TotalPressureDeckName>
+        <St4TotalTemperatureDeckName Unit="-">V2527-A5_St4_T.csv</St4TotalTemperatureDeckName>
+        <St4StaticTemperatureDeckName Unit="-">V2527-A5_St4_Ts.csv</St4StaticTemperatureDeckName>
+        <St4MassFlowDeckName Unit="-">V2527-A5_St4_W.csv</St4MassFlowDeckName>
+        <St5FuelAirDeckName Unit="-">V2527-A5_St5_fa.csv</St5FuelAirDeckName>
+        <St5MachDeckName Unit="-">V2527-A5_St5_Mn.csv</St5MachDeckName>
+        <St5TotalPressureDeckName Unit="-">V2527-A5_St5_P.csv</St5TotalPressureDeckName>
+        <St5TotalTemperatureDeckName Unit="-">V2527-A5_St5_T.csv</St5TotalTemperatureDeckName>
+        <St5StaticTemperatureDeckName Unit="-">V2527-A5_St5_Ts.csv</St5StaticTemperatureDeckName>
+        <St5MassFlowDeckName Unit="-">V2527-A5_St5_W.csv</St5MassFlowDeckName>
+        <St13FuelAirDeckName Unit="-">V2527-A5_St13_fa.csv</St13FuelAirDeckName>
+        <St13MachDeckName Unit="-">V2527-A5_St13_Mn.csv</St13MachDeckName>
+        <St13TotalPressureDeckName Unit="-">V2527-A5_St13_P.csv</St13TotalPressureDeckName>
+        <St13TotalTemperatureDeckName Unit="-">V2527-A5_St13_T.csv</St13TotalTemperatureDeckName>
+        <St13StaticTemperatureDeckName Unit="-">V2527-A5_St13_Ts.csv</St13StaticTemperatureDeckName>
+        <St13MassFlowDeckName Unit="-">V2527-A5_St13_W.csv</St13MassFlowDeckName>
+        <St22FuelAirDeckName Unit="-">V2527-A5_St22_fa.csv</St22FuelAirDeckName>
+        <St22MachDeckName Unit="-">V2527-A5_St22_Mn.csv</St22MachDeckName>
+        <St22TotalPressureDeckName Unit="-">V2527-A5_St22_P.csv</St22TotalPressureDeckName>
+        <St22TotalTemperatureDeckName Unit="-">V2527-A5_St22_T.csv</St22TotalTemperatureDeckName>
+        <St22StaticTemperatureDeckName Unit="-">V2527-A5_St22_Ts.csv</St22StaticTemperatureDeckName>
+        <St22MassFlowDeckName Unit="-">V2527-A5_St22_W.csv</St22MassFlowDeckName>
+        <St25FuelAirDeckName Unit="-">V2527-A5_St25_fa.csv</St25FuelAirDeckName>
+        <St25MachDeckName Unit="-">V2527-A5_St25_Mn.csv</St25MachDeckName>
+        <St25TotalPressureDeckName Unit="-">V2527-A5_St25_P.csv</St25TotalPressureDeckName>
+        <St25TotalTemperatureDeckName Unit="-">V2527-A5_St25_T.csv</St25TotalTemperatureDeckName>
+        <St25StaticTemperatureDeckName Unit="-">V2527-A5_St25_Ts.csv</St25StaticTemperatureDeckName>
+        <St25MassFlowDeckName Unit="-">V2527-A5_St25_W.csv</St25MassFlowDeckName>
+        <St45FuelAirDeckName Unit="-">V2527-A5_St45_fa.csv</St45FuelAirDeckName>
+        <St45MachDeckName Unit="-">V2527-A5_St45_Mn.csv</St45MachDeckName>
+        <St45TotalPressureDeckName Unit="-">V2527-A5_St45_P.csv</St45TotalPressureDeckName>
+        <St45TotalTemperatureDeckName Unit="-">V2527-A5_St45_T.csv</St45TotalTemperatureDeckName>
+        <St45StaticTemperatureDeckName Unit="-">V2527-A5_St45_Ts.csv</St45StaticTemperatureDeckName>
+        <St45MassFlowDeckName Unit="-">V2527-A5_St45_W.csv</St45MassFlowDeckName>
+        <St18MachDeckName Unit="-">V2527-A5_St8_Mn.csv</St18MachDeckName>
+        <St18TotalTemperatureDeckName Unit="-">V2527-A5_St8_T.csv</St18TotalTemperatureDeckName>
+        <St18JetVelocityDeckName Unit="-">V2527-A5_St8_V.csv</St18JetVelocityDeckName>
+        <St18JetDensityDeckName Unit="-">V2527-A5_St8_Rh.csv</St18JetDensityDeckName>
+        <St18MassFlowDeckName Unit="-">V2527-A5_St8_W.csv</St18MassFlowDeckName>
+        <St8MachDeckName Unit="-">V2527-A5_St8_Mn.csv</St8MachDeckName>
+        <St8TotalTemperatureDeckName Unit="-">V2527-A5_St8_T.csv</St8TotalTemperatureDeckName>
+        <St8JetVelocityDeckName Unit="-">V2527-A5_St8_V.csv</St8JetVelocityDeckName>
+        <St8JetDensityDeckName Unit="-">V2527-A5_St8_Rh.csv</St8JetDensityDeckName>
+        <St8MassFlowDeckName Unit="-">V2527-A5_St8_W.csv</St8MassFlowDeckName>
+        <SNoxDeckName Unit="-">V2527-A5_sNOx.csv</SNoxDeckName>
+    </Deck>
+    <EmissionFactors Desc="Data for the emission calculation">
+        <NOxFactor Desc="Combustion chamber factor NOx Severity Parameter * x = EI_NOx 23 - 32">32</NOxFactor>
+        <CO2Factor Desc="Stoichiometric factor for the combustion of the fuel" Unit="kg/kgFuel">3.149</CO2Factor>
+        <H2OFactor Desc="Stoichiometric factor for the combustion of the fuel" Unit="kg/kgFuel">1.2</H2OFactor>
+		<SO2Factor Desc="Stoichiometric factor for fuel combustion" Unit="kg/kgFuel">0.84e-3</SO2Factor>
+        <SO4Factor Desc="Stoichiometric factor for fuel combustion" Unit="kg/kgFuel">2e-4</SO4Factor>
+        <SootFactor Desc="Factor for the combustion of the fuel" Unit="kg/kgFuel">0.025e-3</SootFactor>
+    </EmissionFactors>
+    <ICAOEngineData>
+        <LTOFuelFlow Desc=" Fuel Flow according to ICAO Aircraft Engine Emissions Databank for LTO phases">
+            <Taxi Desc="Fuel Flow for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/s">0.128</Taxi>
+            <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/s">1.053</Takeoff>
+            <ClimbOut Desc="EI Index for ClimbOut phase according to ICAO" Unit="kg/s">0.88</ClimbOut>
+            <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/s">0.319</Approach>
+        </LTOFuelFlow>
+        <LTOEmissions Desc="EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+            <HCFactor Desc=" EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="EI Index for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/kgFuel">0.105e-3</Taxi>
+                <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/kgFuel">0.041e-3</Takeoff>
+                <ClimbOut Desc="EI Index for ClimbOut Phase according to ICAO" Unit="kg/kgFuel">0.041e-3</ClimbOut>
+                <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/kgFuel">0.061e-3</Approach>
+            </HCFactor>
+            <COFactor Desc=" EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="EI Index for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/kgFuel">12.43e-3</Taxi>
+                <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/kgFuel">0.53e-3</Takeoff>
+                <ClimbOut Desc="EI Index for ClimbOut Phase according to ICAO" Unit="kg/kgFuel">0.62e-3</ClimbOut>
+                <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/kgFuel">2.44e-3</Approach>
+            </COFactor>
+            <NOxFactor Desc=" EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="EI Index for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/kgFuel">4.7e-3</Taxi>
+                <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/kgFuel">26.5e-3</Takeoff>
+                <ClimbOut Desc="EI Index for ClimbOut Phase according to ICAO" Unit="kg/kgFuel">22.3e-3</ClimbOut>
+                <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/kgFuel">8.9e-3</Approach>
+            </NOxFactor>
+            <SNFactor Desc=" Smoke Number according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="Smoke Number for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="-">2.6</Taxi>
+                <Takeoff Desc="Smoke Number for Takeoff Phase according to ICAO" Unit="-">5.2</Takeoff>
+                <ClimbOut Desc="Smoke Number for ClimbOut Phase according to ICAO" Unit="-">7.2</ClimbOut>
+                <Approach Desc="Smoke Number for Approach Phase according to ICAO" Unit="-">4.2</Approach>
+            </SNFactor>
+        </LTOEmissions>
+    </ICAOEngineData>
+</EngineDataFile>
diff --git a/engine/test/stubs/V2527-A5/V2527-A5_FN.csv b/engine/test/stubs/V2527-A5/V2527-A5_FN.csv
new file mode 100644
index 00000000..f06540f3
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/V2527-A5_FN.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;144.92;138.88;133.44;128.63;124.4;120.74;117.64;115.11;113.07;111.5;110.43;109.7;109.34;109.32;109.61;110.22;111.12;112.28;113.68;115.24;
+500;138.05;132.38;127.24;122.69;118.72;115.29;112.4;110;108.07;106.6;105.59;104.94;104.63;104.65;104.96;105.56;106.43;107.56;108.93;110.48;
+1000;131.42;126.06;121.21;116.93;113.2;109.99;107.28;105.03;103.22;101.85;100.87;100.3;100.05;100.1;100.43;101.03;101.87;102.97;104.29;105.81;
+1500;125.06;119.91;115.34;111.33;107.83;104.84;102.31;100.21;98.529;97.236;96.373;95.805;95.581;95.665;96.019;96.619;97.454;98.513;99.785;101.25;
+2000;118.75;113.9;109.61;105.85;102.59;99.807;97.459;95.521;93.975;92.771;91.977;91.45;91.235;91.341;91.723;92.331;93.156;94.187;95.414;96.83;
+2500;112.57;108.01;103.99;100.48;97.453;94.872;92.708;90.934;89.527;88.44;87.649;87.24;87.049;87.138;87.518;88.157;88.974;89.986;91.173;92.537;
+3000;106.53;102.24;98.473;95.201;92.394;90.018;88.038;86.431;85.164;84.197;83.509;83.157;83.004;83.097;83.446;84.055;84.9;85.902;87.06;88.373;
+3500;100.66;96.627;93.1;90.048;87.437;85.24;83.433;81.994;80.871;80.032;79.452;79.18;79.078;79.197;79.532;80.1;80.907;81.914;83.067;84.339;
+4000;94.952;91.175;87.879;85.032;82.607;80.578;78.923;77.623;76.634;75.927;75.462;75.286;75.252;75.411;75.761;76.301;77.051;78.019;79.157;80.419;
+4500;89.413;85.904;82.823;80.171;77.92;76.048;74.532;73.353;72.476;71.875;71.588;71.455;71.505;71.722;72.1;72.643;73.352;74.254;75.353;76.591;
+5000;84.112;80.793;77.921;75.455;73.372;71.651;70.272;69.209;68.432;67.918;67.709;67.674;67.816;68.106;68.532;69.092;69.792;70.644;71.668;72.869;
+5500;78.938;75.847;73.17;70.881;68.958;67.38;66.129;65.176;64.498;64.071;63.934;63.958;64.173;64.546;65.037;65.635;66.343;67.17;68.137;69.261;
+6000;74.004;71.041;68.574;66.452;64.68;63.237;62.105;61.256;60.67;60.323;60.257;60.343;60.61;61.038;61.596;62.25;62.987;63.816;64.742;65.799;
+6500;69.269;66.565;64.214;62.19;60.553;59.229;58.203;57.452;56.95;56.725;56.676;56.819;57.135;57.607;58.213;58.925;59.705;60.551;61.472;62.478;
+7000;65.014;62.491;60.297;58.412;56.821;55.511;54.469;53.791;53.356;53.186;53.195;53.389;53.749;54.259;54.899;55.653;56.489;57.367;58.294;59.282;
+7500;60.977;58.622;56.576;54.819;53.337;52.119;51.151;50.419;49.912;49.792;49.84;50.062;50.455;50.998;51.667;52.446;53.318;54.25;55.204;56.185;
+8000;57.155;54.913;53.044;51.409;50.03;48.898;47.997;47.317;46.848;46.578;46.605;46.869;47.285;47.836;48.52;49.319;50.209;51.173;52.176;53.183;
+8500;53.514;51.431;49.695;48.169;46.888;45.838;45.003;44.374;43.938;43.691;43.66;43.775;44.22;44.798;45.491;46.285;47.18;48.156;49.188;50.24;
+9000;50.077;48.166;46.516;45.1;43.91;42.933;42.157;41.574;41.175;40.953;40.924;41.038;41.309;41.851;42.561;43.369;44.26;45.22;46.257;47.338;
+9500;46.83;45.028;43.505;42.19;41.085;40.178;39.459;38.919;38.55;38.346;38.33;38.438;38.695;39.095;39.721;40.538;41.437;42.404;43.423;44.488;
+10000;43.741;42.1;40.675;39.453;38.424;37.572;36.899;36.431;36.095;35.912;35.874;35.978;36.218;36.592;37.097;37.796;38.697;39.666;40.689;41.75;
+10500;40.823;39.33;38.008;36.875;35.919;35.133;34.508;34.035;33.743;33.576;33.546;33.646;33.874;34.224;34.696;35.286;36.045;37.011;38.032;39.093;
+11000;38.124;36.714;35.489;34.439;33.554;32.825;32.246;31.807;31.506;31.364;31.34;31.438;31.654;31.983;32.424;32.974;33.632;34.441;35.455;36.511;
+11500;35.233;33.942;32.811;31.842;31.025;30.353;29.818;29.414;29.137;28.979;28.987;29.078;29.28;29.586;29.995;30.506;31.117;31.867;32.804;33.781;
+12000;32.559;31.38;30.336;29.441;28.687;28.067;27.574;27.202;26.947;26.803;26.81;26.896;27.084;27.369;27.749;28.223;28.79;29.486;30.354;31.26;
+12500;30.122;29.011;28.047;27.221;26.525;25.953;25.499;25.156;24.921;24.79;24.797;24.879;25.054;25.318;25.672;26.112;26.638;27.283;28.089;28.929;
+13000;27.865;26.82;25.932;25.169;24.527;23.999;23.58;23.265;23.048;22.928;22.936;23.013;23.176;23.422;23.75;24.159;24.646;25.245;25.992;26.772;
+13500;25.744;24.798;23.976;23.272;22.68;22.193;21.806;21.515;21.317;21.207;21.215;21.287;21.439;21.668;21.973;22.352;22.805;23.36;24.053;24.776;
+14000;23.803;22.93;22.171;21.521;20.974;20.524;20.167;19.898;19.714;19.613;19.623;19.69;19.832;20.045;20.328;20.681;21.101;21.616;22.259;22.929;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;130.83;124.96;119.73;115.06;110.93;107.31;104.18;101.52;99.337;97.624;96.401;95.517;94.964;94.719;94.773;95.094;95.67;96.513;97.629;99;
+500;124.83;119.22;114.27;109.85;105.95;102.54;99.6;97.115;95.061;93.502;92.316;91.51;91.025;90.829;90.902;91.233;91.798;92.591;93.628;94.914;
+1000;118.9;113.66;108.97;104.8;101.11;97.898;95.13;92.799;90.891;89.417;88.358;87.603;87.171;87.026;87.129;87.468;88.029;88.795;89.766;90.962;
+1500;113.15;108.26;103.83;99.895;96.421;93.393;90.792;88.607;86.839;85.503;84.49;83.806;83.415;83.305;83.444;83.796;84.358;85.109;86.037;87.153;
+2000;107.71;103.03;98.849;95.139;91.868;89.02;86.582;84.542;82.903;81.662;80.727;80.096;79.75;79.672;79.839;80.215;80.774;81.518;82.423;83.48;
+2500;102.41;97.953;94.017;90.524;87.45;84.776;82.496;80.597;79.078;77.932;77.07;76.493;76.186;76.129;76.309;76.713;77.284;78.013;78.899;79.926;
+3000;97.227;93.065;89.355;86.061;83.168;80.661;78.533;76.776;75.363;74.264;73.517;72.994;72.724;72.689;72.876;73.271;73.867;74.605;75.471;76.469;
+3500;92.305;88.38;84.878;81.776;79.053;76.696;74.697;73.064;71.755;70.744;70.065;69.595;69.362;69.35;69.546;69.938;70.515;71.264;72.133;73.107;
+4000;87.568;83.868;80.571;77.654;75.096;72.887;71.019;69.485;68.258;67.326;66.71;66.292;66.096;66.108;66.314;66.705;67.267;67.992;68.862;69.829;
+4500;82.944;79.526;76.425;73.687;71.293;69.23;67.492;66.055;64.898;64.023;63.45;63.083;62.923;62.959;63.177;63.568;64.119;64.821;65.665;66.627;
+5000;78.599;75.327;72.42;69.854;67.616;65.698;64.088;62.753;61.68;60.863;60.277;59.969;59.843;59.902;60.133;60.524;61.066;61.748;62.563;63.5;
+5500;74.315;71.249;68.529;66.136;64.055;62.277;60.785;59.554;58.573;57.817;57.276;56.984;56.862;56.935;57.178;57.572;58.106;58.771;59.559;60.46;
+6000;70.149;67.277;64.739;62.514;60.59;58.952;57.575;56.445;55.553;54.872;54.382;54.118;54.006;54.074;54.318;54.709;55.236;55.885;56.65;57.519;
+6500;66.073;63.43;61.064;59.001;57.227;55.717;54.453;53.421;52.614;52.002;51.577;51.316;51.26;51.329;51.557;51.944;52.459;53.091;53.832;54.672;
+7000;62.198;59.692;57.491;55.58;53.943;52.561;51.415;50.493;49.77;49.223;48.843;48.671;48.61;48.69;48.91;49.272;49.776;50.393;51.107;51.918;
+7500;58.409;56.073;54.028;52.26;50.75;49.482;48.441;47.617;46.985;46.523;46.212;46.076;46.043;46.143;46.365;46.711;47.184;47.783;48.479;49.259;
+8000;54.746;52.57;50.675;49.04;47.65;46.49;45.548;44.809;44.254;43.866;43.629;43.558;43.569;43.691;43.915;44.251;44.7;45.262;45.936;46.693;
+8500;51.217;49.187;47.431;45.921;44.644;43.587;42.736;42.079;41.594;41.268;41.09;41.082;41.151;41.312;41.564;41.9;42.319;42.847;43.48;44.212;
+9000;47.794;45.923;44.299;42.908;41.739;40.777;40.01;39.426;39.006;38.74;38.647;38.651;38.77;38.983;39.268;39.628;40.055;40.55;41.13;41.816;
+9500;44.542;42.762;41.274;39.997;38.928;38.056;37.371;36.857;36.499;36.285;36.238;36.284;36.438;36.689;37.021;37.409;37.856;38.354;38.909;39.534;
+10000;41.479;39.862;38.456;37.247;36.227;35.429;34.817;34.368;34.067;33.932;33.9;33.983;34.17;34.448;34.808;35.237;35.707;36.221;36.774;37.373;
+10500;38.655;37.188;35.885;34.766;33.82;33.043;32.425;31.967;31.714;31.624;31.633;31.75;31.966;32.27;32.651;33.099;33.604;34.139;34.704;35.297;
+11000;36.048;34.661;33.455;32.419;31.546;30.828;30.259;29.827;29.529;29.372;29.436;29.585;29.827;30.152;30.553;31.018;31.538;32.1;32.684;33.285;
+11500;33.314;32.04;30.927;29.971;29.165;28.504;27.978;27.58;27.306;27.163;27.224;27.363;27.588;27.891;28.264;28.695;29.178;29.7;30.239;30.795;
+12000;30.786;29.618;28.59;27.708;26.964;26.354;25.87;25.503;25.251;25.12;25.178;25.308;25.518;25.8;26.146;26.547;26.995;27.48;27.98;28.496;
+12500;28.472;27.38;26.43;25.616;24.93;24.367;23.92;23.583;23.351;23.231;23.287;23.408;23.604;23.866;24.187;24.56;24.976;25.426;25.891;26.37;
+13000;26.332;25.31;24.434;23.683;23.05;22.53;22.118;21.807;21.594;21.485;21.538;21.651;21.834;22.077;22.376;22.722;23.108;23.526;23.957;24.402;
+13500;24.33;23.399;22.589;21.896;21.311;20.832;20.452;20.166;19.97;19.87;19.92;20.027;20.197;20.423;20.701;21.022;21.38;21.768;22.169;22.581;
+14000;22.493;21.633;20.886;20.246;19.706;19.263;18.913;18.649;18.468;18.391;18.424;18.524;18.683;18.893;19.151;19.449;19.782;20.143;20.514;20.897;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;116.37;110.84;105.86;101.4;97.436;93.924;90.842;88.165;85.853;84.027;82.619;81.593;80.98;80.698;80.713;81.006;81.559;82.347;83.348;84.538;
+500;111.15;105.89;101.17;96.951;93.197;89.878;86.968;84.448;82.268;80.562;79.192;78.226;77.646;77.388;77.41;77.695;78.226;78.983;79.943;81.09;
+1000;106.12;101.1;96.625;92.63;89.078;85.939;83.19;80.813;78.784;77.134;75.889;74.98;74.418;74.173;74.2;74.48;74.989;75.713;76.635;77.731;
+1500;101.17;96.444;92.213;88.435;85.078;82.115;79.523;77.285;75.392;73.834;72.677;71.841;71.308;71.06;71.085;71.357;71.847;72.539;73.418;74.47;
+2000;96.393;91.928;87.928;84.359;81.191;78.397;75.958;73.861;72.096;70.635;69.564;68.787;68.291;68.056;68.068;68.325;68.796;69.459;70.299;71.301;
+2500;91.829;87.498;83.767;80.396;77.41;74.781;72.49;70.53;68.886;67.535;66.548;65.827;65.366;65.144;65.153;65.389;65.837;66.471;67.272;68.23;
+3000;87.299;83.313;79.744;76.561;73.74;71.263;69.114;67.285;65.756;64.519;63.615;62.952;62.53;62.325;62.334;62.545;62.964;63.573;64.34;65.25;
+3500;82.971;79.228;75.86;72.857;70.197;67.862;65.842;64.127;62.707;61.575;60.757;60.155;59.775;59.594;59.608;59.808;60.189;60.757;61.495;62.366;
+4000;78.836;75.29;72.114;69.283;66.777;64.579;62.682;61.073;59.746;58.715;57.965;57.429;57.093;56.942;56.968;57.161;57.519;58.039;58.731;59.568;
+4500;74.852;71.426;68.494;65.83;63.473;61.411;59.632;58.126;56.891;55.927;55.243;54.764;54.478;54.36;54.404;54.599;54.941;55.429;56.063;56.852;
+5000;70.953;67.808;64.995;62.491;60.279;58.347;56.682;55.278;54.129;53.242;52.613;52.172;51.92;51.842;51.908;52.111;52.446;52.91;53.503;54.23;
+5500;67.194;64.255;61.613;59.263;57.192;55.384;53.831;52.524;51.464;50.644;50.069;49.665;49.44;49.384;49.475;49.692;50.027;50.475;51.036;51.713;
+6000;63.611;60.837;58.356;56.154;54.213;52.521;51.072;49.861;48.891;48.132;47.606;47.239;47.039;46.998;47.105;47.339;47.675;48.116;48.654;49.293;
+6500;60.15;57.545;55.222;53.162;51.35;49.774;48.426;47.302;46.402;45.699;45.222;44.889;44.714;44.688;44.8;45.042;45.393;45.829;46.351;46.959;
+7000;56.836;54.395;52.218;50.287;48.591;47.122;45.872;44.841;44.013;43.367;42.929;42.622;42.465;42.453;42.57;42.809;43.164;43.607;44.121;44.705;
+7500;53.621;51.382;49.345;47.539;45.954;44.583;43.42;42.465;41.701;41.113;40.717;40.444;40.309;40.301;40.414;40.651;40.995;41.439;41.955;42.528;
+8000;50.627;48.491;46.589;44.905;43.429;42.154;41.077;40.191;39.477;38.934;38.575;38.335;38.223;38.232;38.352;38.577;38.9;39.328;39.843;40.413;
+8500;47.675;45.71;43.936;42.37;41.001;39.822;38.83;38.01;37.353;36.849;36.486;36.294;36.206;36.229;36.357;36.583;36.9;37.302;37.784;38.353;
+9000;44.88;43.025;41.375;39.923;38.658;37.575;36.665;35.912;35.309;34.849;34.516;34.334;34.255;34.292;34.428;34.655;34.966;35.358;35.822;36.355;
+9500;42.152;40.424;38.893;37.55;36.385;35.397;34.566;33.883;33.339;32.923;32.624;32.436;32.386;32.422;32.563;32.791;33.098;33.479;33.928;34.44;
+10000;39.498;37.893;36.479;35.243;34.18;33.277;32.521;31.908;31.426;31.058;30.798;30.639;30.6;30.635;30.765;30.99;31.293;31.665;32.1;32.593;
+10500;36.93;35.442;34.135;32.999;32.027;31.207;30.529;29.983;29.558;29.241;29.025;28.898;28.882;28.926;29.051;29.259;29.552;29.914;30.335;30.811;
+11000;34.454;33.077;31.872;30.83;29.942;29.196;28.585;28.102;27.734;27.469;27.318;27.232;27.221;27.28;27.41;27.609;27.881;28.227;28.634;29.093;
+11500;31.839;30.574;29.462;28.5;27.68;26.993;26.429;25.984;25.645;25.401;25.263;25.185;25.176;25.233;25.355;25.54;25.793;26.116;26.494;26.919;
+12000;29.42;28.261;27.234;26.347;25.59;24.956;24.436;24.025;23.714;23.489;23.364;23.292;23.286;23.339;23.453;23.627;23.862;24.163;24.515;24.91;
+12500;27.208;26.124;25.175;24.356;23.658;23.073;22.594;22.215;21.928;21.722;21.607;21.542;21.537;21.588;21.695;21.857;22.076;22.356;22.683;23.051;
+13000;25.161;24.148;23.272;22.516;21.872;21.332;20.89;20.542;20.277;20.088;19.983;19.924;19.92;19.969;20.069;20.22;20.425;20.685;20.99;21.332;
+13500;23.247;22.323;21.515;20.817;20.222;19.723;19.315;18.994;18.751;18.576;18.481;18.427;18.425;18.471;18.565;18.706;18.897;19.139;19.423;19.74;
+14000;21.492;20.638;19.892;19.247;18.698;18.238;17.862;17.565;17.34;17.179;17.092;17.043;17.043;17.087;17.174;17.306;17.483;17.709;17.973;18.269;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;102.4;97.182;92.5;88.323;84.607;81.319;78.42;75.915;73.763;71.955;70.479;69.359;68.566;68.133;68.046;68.234;68.656;69.302;70.147;71.158;
+500;97.844;92.859;88.416;84.451;80.926;77.807;75.051;72.684;70.644;68.934;67.548;66.499;65.763;65.378;65.31;65.496;65.903;66.523;67.334;68.307;
+1000;93.437;88.676;84.463;80.703;77.358;74.399;71.78;69.536;67.614;66.004;64.705;63.728;63.045;62.698;62.646;62.832;63.225;63.82;64.594;65.533;
+1500;89.088;84.629;80.638;77.075;73.905;71.099;68.613;66.487;64.673;63.152;61.936;61.039;60.412;60.1;60.054;60.238;60.622;61.192;61.932;62.826;
+2000;84.892;80.715;76.938;73.564;70.561;67.904;65.549;63.535;61.821;60.39;59.268;58.418;57.848;57.577;57.541;57.716;58.089;58.638;59.345;60.199;
+2500;80.929;76.942;73.366;70.171;67.327;64.813;62.585;60.677;59.062;57.712;56.669;55.878;55.363;55.118;55.096;55.27;55.625;56.155;56.832;57.647;
+3000;77.081;73.308;69.927;66.903;64.212;61.83;59.721;57.913;56.393;55.125;54.151;53.417;52.953;52.732;52.719;52.886;53.233;53.74;54.391;55.169;
+3500;73.372;69.81;66.615;63.757;61.213;58.96;56.966;55.247;53.812;52.623;51.713;51.033;50.614;50.417;50.412;50.578;50.909;51.393;52.019;52.765;
+4000;69.758;66.438;63.423;60.726;58.324;56.196;54.319;52.687;51.329;50.207;49.353;48.726;48.346;48.171;48.175;48.339;48.659;49.117;49.711;50.428;
+4500;66.354;63.185;60.342;57.8;55.536;53.531;51.766;50.225;48.944;47.89;47.082;46.495;46.149;45.992;46.004;46.168;46.476;46.916;47.478;48.156;
+5000;63.067;60.009;57.366;54.972;52.841;50.957;49.302;47.849;46.645;45.658;44.902;44.356;44.026;43.884;43.899;44.064;44.362;44.783;45.319;45.96;
+5500;59.829;57.019;54.5;52.248;50.244;48.472;46.919;45.56;44.429;43.508;42.785;42.299;41.985;41.847;41.865;42.024;42.313;42.717;43.228;43.839;
+6000;56.734;54.095;51.728;49.614;47.734;46.075;44.622;43.36;42.298;41.438;40.764;40.317;40.023;39.887;39.899;40.055;40.331;40.718;41.206;41.787;
+6500;53.746;51.266;49.044;47.061;45.301;43.749;42.394;41.228;40.24;39.445;38.831;38.416;38.138;38.004;38.01;38.15;38.416;38.787;39.252;39.802;
+7000;50.904;48.522;46.456;44.595;42.944;41.493;40.232;39.156;38.246;37.513;36.978;36.584;36.331;36.205;36.201;36.32;36.563;36.918;37.364;37.889;
+7500;48.104;45.922;43.966;42.222;40.676;39.318;38.141;37.141;36.308;35.64;35.162;34.807;34.581;34.47;34.472;34.58;34.792;35.112;35.538;36.041;
+8000;45.448;43.403;41.572;39.939;38.493;37.223;36.128;35.197;34.429;33.819;33.394;33.08;32.883;32.791;32.801;32.906;33.105;33.396;33.779;34.253;
+8500;42.894;40.981;39.268;37.742;36.392;35.21;34.19;33.326;32.616;32.062;31.675;31.398;31.232;31.162;31.184;31.291;31.481;31.753;32.106;32.541;
+9000;40.436;38.649;37.05;35.627;34.369;33.271;32.324;31.525;30.873;30.368;30.015;29.765;29.621;29.577;29.614;29.728;29.915;30.173;30.503;30.903;
+9500;38.06;36.405;34.914;33.589;32.421;31.402;30.526;29.791;29.204;28.734;28.415;28.19;28.065;28.033;28.086;28.211;28.399;28.65;28.963;29.336;
+10000;35.8;34.246;32.859;31.628;30.545;29.602;28.794;28.12;27.579;27.158;26.871;26.669;26.56;26.54;26.601;26.736;26.93;27.178;27.479;27.832;
+10500;33.628;32.181;30.89;29.746;28.739;27.868;27.126;26.51;26.019;25.638;25.382;25.202;25.11;25.099;25.165;25.302;25.503;25.753;26.046;26.384;
+11000;31.561;30.215;29.016;27.953;27.02;26.212;25.526;24.963;24.515;24.17;23.944;23.786;23.71;23.709;23.779;23.916;24.115;24.369;24.662;24.99;
+11500;29.166;27.928;26.82;25.839;24.977;24.232;23.6;23.08;22.668;22.35;22.142;21.998;21.929;21.93;21.997;22.125;22.311;22.548;22.821;23.126;
+12000;26.952;25.814;24.791;23.885;23.09;22.402;21.819;21.34;20.96;20.668;20.477;20.345;20.283;20.285;20.348;20.469;20.642;20.863;21.117;21.402;
+12500;24.919;23.859;22.915;22.079;21.345;20.71;20.172;19.731;19.381;19.112;18.937;18.816;18.76;18.764;18.824;18.937;19.099;19.304;19.541;19.806;
+13000;23.038;22.043;21.182;20.41;19.733;19.147;18.65;18.244;17.921;17.674;17.513;17.403;17.352;17.357;17.413;17.52;17.671;17.862;18.083;18.329;
+13500;21.288;20.387;19.582;18.869;18.244;17.702;17.244;16.868;16.57;16.356;16.196;16.095;16.05;16.055;16.109;16.209;16.35;16.528;16.733;16.963;
+14000;19.68;18.846;18.103;17.445;16.868;16.369;15.946;15.6;15.325;15.128;14.981;14.888;14.846;14.851;14.903;14.996;15.128;15.294;15.486;15.699;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;89.555;84.653;80.285;76.402;72.956;69.982;67.238;64.865;62.788;60.99;59.471;58.279;57.353;56.724;56.416;56.45;56.751;57.252;57.918;58.754;
+500;85.532;80.881;76.737;73.051;69.783;66.95;64.361;62.115;60.154;58.456;57.015;55.892;55.034;54.452;54.18;54.235;54.538;55.026;55.673;56.464;
+1000;81.676;77.236;73.306;69.809;66.708;64.01;61.563;59.439;57.592;55.952;54.642;53.58;52.777;52.248;52.003;52.079;52.375;52.851;53.479;54.244;
+1500;77.947;73.716;69.992;66.677;63.736;61.171;58.856;56.846;55.103;53.564;52.323;51.336;50.59;50.109;49.893;49.977;50.268;50.727;51.336;52.074;
+2000;74.271;70.318;66.789;63.648;60.86;58.421;56.234;54.335;52.692;51.251;50.097;49.152;48.461;48.03;47.852;47.933;48.216;48.654;49.244;49.957;
+2500;70.731;67.04;63.699;60.724;58.082;55.764;53.698;51.903;50.353;49.007;47.919;47.034;46.396;46;45.862;45.95;46.216;46.639;47.203;47.892;
+3000;67.418;63.879;60.719;57.902;55.4;53.198;51.246;49.548;48.086;46.829;45.806;44.982;44.393;44.032;43.922;44.013;44.274;44.677;45.219;45.877;
+3500;64.175;60.834;57.846;55.182;52.814;50.723;48.88;47.275;45.894;44.718;43.758;42.994;42.451;42.125;42.036;42.135;42.382;42.769;43.289;43.918;
+4000;61.053;57.898;55.075;52.557;50.319;48.336;46.597;45.082;43.779;42.678;41.773;41.065;40.567;40.276;40.207;40.307;40.549;40.916;41.409;42.013;
+4500;58.05;55.072;52.408;50.029;47.913;46.033;44.394;42.965;41.737;40.706;39.858;39.2;38.741;38.484;38.431;38.532;38.766;39.122;39.587;40.157;
+5000;55.161;52.354;49.842;47.599;45.602;43.823;42.276;40.927;39.767;38.796;38.008;37.399;36.976;36.751;36.709;36.81;37.035;37.378;37.824;38.362;
+5500;52.373;49.736;47.369;45.255;43.372;41.693;40.235;38.967;37.877;36.964;36.218;35.662;35.271;35.072;35.04;35.142;35.358;35.686;36.114;36.626;
+6000;49.681;47.215;44.987;42.996;41.223;39.641;38.266;37.076;36.053;35.198;34.51;33.996;33.636;33.454;33.423;33.524;33.735;34.049;34.454;34.945;
+6500;47.125;44.787;42.692;40.819;39.152;37.664;36.369;35.252;34.292;33.494;32.859;32.386;32.06;31.901;31.874;31.962;32.16;32.463;32.85;33.316;
+7000;44.646;42.459;40.49;38.729;37.16;35.762;34.54;33.493;32.595;31.848;31.273;30.831;30.54;30.398;30.378;30.464;30.65;30.93;31.297;31.741;
+7500;42.304;40.23;38.381;36.726;35.252;33.938;32.785;31.801;30.959;30.263;29.733;29.33;29.07;28.945;28.931;29.015;29.194;29.459;29.805;30.218;
+8000;40.024;38.091;36.357;34.806;33.423;32.194;31.106;30.181;29.389;28.738;28.246;27.878;27.65;27.538;27.531;27.615;27.787;28.039;28.365;28.76;
+8500;37.836;36.036;34.413;32.96;31.665;30.517;29.497;28.629;27.889;27.28;26.819;26.48;26.276;26.18;26.178;26.262;26.428;26.668;26.977;27.35;
+9000;35.752;34.061;32.542;31.183;29.974;28.903;27.953;27.138;26.451;25.884;25.455;25.141;24.952;24.868;24.871;24.954;25.115;25.345;25.638;25.989;
+9500;33.739;32.157;30.738;29.471;28.342;27.344;26.465;25.704;25.067;24.543;24.133;23.859;23.682;23.602;23.609;23.694;23.847;24.066;24.346;24.679;
+10000;31.823;30.316;28.998;27.817;26.766;25.839;25.026;24.321;23.733;23.252;22.877;22.629;22.465;22.388;22.392;22.476;22.627;22.835;23.1;23.415;
+10500;29.928;28.552;27.32;26.22;25.243;24.384;23.634;22.985;22.445;22.006;21.669;21.446;21.296;21.225;21.227;21.302;21.446;21.649;21.901;22.2;
+11000;28.14;26.858;25.709;24.685;23.777;22.979;22.286;21.693;21.199;20.802;20.515;20.305;20.172;20.107;20.111;20.179;20.31;20.503;20.745;21.029;
+11500;26.003;24.824;23.764;22.818;21.98;21.243;20.604;20.057;19.601;19.236;18.972;18.779;18.658;18.6;18.604;18.669;18.792;18.971;19.196;19.461;
+12000;24.026;22.944;21.966;21.093;20.319;19.639;19.049;18.545;18.124;17.788;17.545;17.368;17.257;17.205;17.211;17.272;17.387;17.554;17.764;18.01;
+12500;22.216;21.207;20.303;19.498;18.783;18.156;17.611;17.146;16.759;16.449;16.226;16.063;15.962;15.915;15.921;15.98;16.087;16.243;16.439;16.668;
+13000;20.533;19.603;18.768;18.024;17.365;16.785;16.282;15.853;15.497;15.211;15.006;14.857;14.764;14.722;14.729;14.784;14.885;15.03;15.212;15.426;
+13500;18.981;18.121;17.35;16.664;16.055;15.52;15.056;14.66;14.33;14.067;13.879;13.742;13.656;13.618;13.626;13.678;13.772;13.908;14.078;14.277;
+14000;17.54;16.751;16.04;15.406;14.844;14.351;13.923;13.558;13.254;13.011;12.839;12.713;12.635;12.6;12.608;12.655;12.743;12.87;13.028;13.213;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;77.965;73.332;69.266;65.662;62.534;59.732;57.142;54.879;52.885;51.153;49.699;48.387;47.356;46.479;45.818;45.472;45.44;45.709;46.154;46.764;
+500;74.414;70.046;66.187;62.766;59.799;57.134;54.684;52.547;50.658;49.019;47.642;46.427;45.467;44.668;44.075;43.779;43.789;44.063;44.498;45.06;
+1000;71.016;66.874;63.214;59.969;57.157;54.618;52.301;50.277;48.493;46.949;45.654;44.524;43.629;42.897;42.37;42.125;42.167;42.446;42.871;43.405;
+1500;67.75;63.814;60.346;57.269;54.604;52.187;49.995;48.079;46.394;44.935;43.716;42.738;41.839;41.169;40.703;40.506;40.576;40.857;41.272;41.792;
+2000;64.557;60.864;57.579;54.663;52.138;49.839;47.768;45.957;44.362;42.985;41.835;40.915;40.094;39.485;39.07;38.921;39.018;39.297;39.702;40.208;
+2500;61.493;58.019;54.91;52.149;49.757;47.572;45.617;43.906;42.348;41.098;40.015;39.144;38.401;37.84;37.478;37.37;37.492;37.769;38.162;38.655;
+3000;58.58;55.277;52.336;49.724;47.458;45.387;43.541;41.922;40.458;39.272;38.252;37.43;36.759;36.241;35.923;35.836;35.99;36.273;36.654;37.132;
+3500;55.769;52.635;49.855;47.386;45.241;43.279;41.539;40.013;38.636;37.509;36.545;35.771;35.163;34.671;34.409;34.354;34.511;34.798;35.179;35.641;
+4000;53.042;50.095;47.471;45.137;43.105;41.253;39.612;38.171;36.876;35.808;34.9;34.166;33.613;33.165;32.937;32.91;33.062;33.349;33.724;34.181;
+4500;50.418;47.65;45.173;42.971;41.048;39.302;37.756;36.4;35.186;34.166;33.312;32.629;32.108;31.706;31.506;31.501;31.658;31.928;32.299;32.745;
+5000;47.917;45.296;42.96;40.883;39.063;37.419;35.965;34.692;33.555;32.588;31.79;31.148;30.648;30.291;30.119;30.131;30.288;30.551;30.904;31.342;
+5500;45.506;43.029;40.829;38.871;37.152;35.605;34.237;33.04;31.979;31.09;30.319;29.72;29.251;28.935;28.781;28.8;28.956;29.21;29.549;29.971;
+6000;43.173;40.851;38.779;36.935;35.311;33.856;32.57;31.447;30.458;29.621;28.899;28.341;27.912;27.625;27.492;27.522;27.668;27.907;28.234;28.631;
+6500;40.941;38.756;36.807;35.07;33.538;32.17;30.963;29.908;28.986;28.202;27.527;27.009;26.617;26.359;26.247;26.282;26.424;26.654;26.959;27.338;
+7000;38.834;36.746;34.913;33.279;31.834;30.548;29.414;28.424;27.565;26.831;26.203;25.722;25.363;25.134;25.043;25.082;25.218;25.437;25.732;26.09;
+7500;36.743;34.816;33.094;31.559;30.197;28.989;27.924;26.996;26.193;25.51;24.922;24.479;24.152;23.949;23.877;23.918;24.051;24.258;24.54;24.884;
+8000;34.741;32.963;31.348;29.906;28.625;27.49;26.492;25.621;24.87;24.215;23.703;23.284;22.983;22.801;22.747;22.792;22.918;23.118;23.385;23.712;
+8500;32.879;31.188;29.672;28.32;27.115;26.051;25.115;24.299;23.597;22.992;22.512;22.128;21.855;21.694;21.653;21.702;21.823;22.013;22.268;22.577;
+9000;31.086;29.483;28.064;26.796;25.665;24.667;23.791;23.027;22.371;21.812;21.365;21.012;20.765;20.626;20.595;20.646;20.766;20.946;21.187;21.48;
+9500;29.329;27.846;26.518;25.332;24.272;23.337;22.519;21.805;21.192;20.677;20.263;19.94;19.715;19.595;19.572;19.624;19.74;19.917;20.145;20.42;
+10000;27.647;26.276;25.036;23.927;22.935;22.059;21.297;20.63;20.06;19.582;19.192;18.907;18.704;18.601;18.583;18.636;18.749;18.919;19.139;19.401;
+10500;26.064;24.773;23.614;22.579;21.653;20.833;20.122;19.501;18.97;18.529;18.174;17.913;17.732;17.644;17.63;17.68;17.79;17.954;18.164;18.416;
+11000;24.536;23.337;22.255;21.289;20.425;19.658;18.995;18.417;17.924;17.515;17.201;16.957;16.797;16.721;16.711;16.761;16.865;17.021;17.222;17.462;
+11500;22.681;21.569;20.571;19.678;18.881;18.173;17.561;17.028;16.574;16.196;15.907;15.683;15.536;15.466;15.459;15.506;15.604;15.75;15.937;16.161;
+12000;20.964;19.934;19.013;18.189;17.453;16.8;16.236;15.743;15.325;14.977;14.711;14.504;14.37;14.306;14.301;14.345;14.437;14.573;14.748;14.957;
+12500;19.375;18.426;17.575;16.814;16.134;15.531;15.01;14.555;14.17;13.85;13.597;13.414;13.291;13.234;13.23;13.272;13.358;13.485;13.648;13.842;
+13000;17.909;17.032;16.247;15.544;14.916;14.36;13.879;13.46;13.103;12.808;12.583;12.407;12.293;12.241;12.239;12.279;12.359;12.478;12.63;12.811;
+13500;16.548;15.744;15.019;14.37;13.791;13.278;12.835;12.448;12.119;11.847;11.639;11.478;11.374;11.326;11.324;11.36;11.436;11.547;11.688;11.857;
+14000;15.286;14.554;13.884;13.285;12.751;12.277;11.868;11.512;11.209;10.958;10.767;10.619;10.524;10.481;10.479;10.515;10.585;10.687;10.818;10.975;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;67.545;63.272;59.495;56.153;53.279;50.561;48.175;45.936;44.078;42.388;40.836;39.415;38.145;37.018;36.08;35.403;35.015;34.936;35.199;35.655;
+500;64.371;60.412;56.829;53.658;50.842;48.36;46.099;43.993;42.231;40.634;39.198;37.851;36.666;35.627;34.727;34.137;33.792;33.749;34.022;34.461;
+1000;61.492;57.655;54.257;51.251;48.581;46.227;44.088;42.094;40.433;38.932;37.519;36.336;35.221;34.272;33.468;32.905;32.597;32.583;32.863;33.286;
+1500;58.72;54.996;51.774;48.929;46.397;44.165;42.139;40.256;38.688;37.273;35.957;34.853;33.818;32.948;32.214;31.696;31.431;31.445;31.72;32.129;
+2000;55.872;52.428;49.379;46.689;44.287;42.173;40.255;38.478;36.998;35.665;34.437;33.405;32.445;31.647;30.989;30.515;30.296;30.331;30.597;30.989;
+2500;53.207;49.954;47.07;44.527;42.25;40.248;38.436;36.76;35.362;34.108;32.963;32;31.109;30.365;29.745;29.359;29.185;29.239;29.497;29.869;
+3000;50.652;47.575;44.848;42.445;40.363;38.394;36.679;35.1;33.781;32.601;31.534;30.634;29.811;29.118;28.561;28.207;28.087;28.171;28.42;28.77;
+3500;48.194;45.286;42.708;40.439;38.47;36.61;34.991;33.504;32.256;31.145;30.151;29.309;28.55;27.903;27.408;27.1;27.001;27.115;27.362;27.696;
+4000;45.837;43.082;40.649;38.508;36.645;34.889;33.362;31.964;30.787;29.745;28.819;28.031;27.328;26.723;26.31;26.019;25.935;26.072;26.317;26.64;
+4500;43.576;40.962;38.666;36.648;34.885;33.233;31.791;30.478;29.364;28.391;27.573;26.795;26.148;25.596;25.217;24.964;24.902;25.045;25.292;25.599;
+5000;41.362;38.924;36.759;34.857;33.19;31.633;30.278;29.043;27.988;27.081;26.312;25.598;25.002;24.502;24.158;23.944;23.901;24.031;24.281;24.584;
+5500;39.242;36.966;34.926;33.134;31.559;30.093;28.817;27.663;26.661;25.814;25.093;24.444;23.89;23.443;23.126;22.953;22.938;23.066;23.281;23.585;
+6000;37.248;35.086;33.165;31.478;29.989;28.611;27.41;26.328;25.384;24.592;23.914;23.327;22.809;22.41;22.129;21.985;21.994;22.126;22.334;22.607;
+6500;35.314;33.282;31.475;29.887;28.483;27.188;26.058;25.043;24.151;23.411;22.775;22.244;21.762;21.404;21.158;21.042;21.07;21.205;21.409;21.664;
+7000;33.466;31.551;29.852;28.359;27.035;25.82;24.759;23.809;22.967;22.278;21.678;21.193;20.746;20.423;20.212;20.123;20.165;20.303;20.502;20.751;
+7500;31.7;29.889;28.293;26.89;25.644;24.505;23.509;22.62;21.854;21.184;20.623;20.178;19.767;19.475;19.292;19.225;19.281;19.419;19.614;19.857;
+8000;30.01;28.275;26.797;25.48;24.308;23.241;22.308;21.478;20.758;20.128;19.604;19.188;18.819;18.558;18.398;18.353;18.418;18.555;18.747;18.982;
+8500;28.34;26.765;25.362;24.125;23.024;22.027;21.153;20.379;19.704;19.114;18.624;18.232;17.904;17.669;17.534;17.505;17.579;17.715;17.898;18.128;
+9000;26.745;25.3;23.985;22.825;21.792;20.861;20.044;19.322;18.69;18.138;17.681;17.313;17.022;16.811;16.696;16.683;16.759;16.896;17.076;17.296;
+9500;25.274;23.895;22.665;21.578;20.61;19.74;18.978;18.305;17.716;17.201;16.775;16.431;16.169;15.98;15.884;15.884;15.961;16.095;16.273;16.488;
+10000;23.865;22.536;21.399;20.381;19.475;18.664;17.953;17.327;16.763;16.3;15.903;15.593;15.346;15.18;15.097;15.108;15.186;15.315;15.489;15.7;
+10500;22.463;21.26;20.187;19.234;18.387;17.631;16.968;16.386;15.865;15.431;15.065;14.779;14.556;14.408;14.34;14.356;14.435;14.559;14.724;14.93;
+11000;21.126;20.028;19.026;18.136;17.345;16.641;16.023;15.481;15.002;14.594;14.259;13.996;13.796;13.665;13.611;13.631;13.706;13.826;13.986;14.179;
+11500;19.549;18.511;17.586;16.764;16.033;15.383;14.813;14.313;13.87;13.496;13.186;12.944;12.76;12.64;12.591;12.611;12.681;12.794;12.942;13.123;
+12000;18.066;17.11;16.255;15.496;14.821;14.221;13.694;13.232;12.824;12.48;12.194;11.972;11.802;11.692;11.648;11.667;11.733;11.838;11.977;12.145;
+12500;16.699;15.815;15.026;14.326;13.703;13.149;12.663;12.237;11.859;11.541;11.285;11.073;10.916;10.815;10.775;10.794;10.856;10.954;11.084;11.24;
+13000;15.431;14.619;13.89;13.244;12.669;12.158;11.709;11.317;10.968;10.675;10.439;10.244;10.101;10.007;9.9701;9.9871;10.046;10.137;10.257;10.403;
+13500;14.257;13.513;12.84;12.244;11.713;11.241;10.828;10.466;10.144;9.8748;9.6573;9.4779;9.3462;9.261;9.2273;9.2443;9.2983;9.3825;9.4935;9.6294;
+14000;13.187;12.491;11.87;11.319;10.829;10.394;10.013;9.6787;9.3824;9.1346;8.934;8.7691;8.6481;8.5704;8.5404;8.5571;8.6079;8.687;8.7907;8.9162;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;58.127;54.152;50.655;47.572;44.862;42.364;40.099;38.044;36.195;34.497;32.893;31.407;29.959;28.731;27.63;26.715;26.01;25.576;25.436;25.656;
+500;55.453;51.708;48.39;45.466;42.891;40.523;38.379;36.431;34.689;33.089;31.572;30.179;28.844;27.672;26.648;25.798;25.154;24.776;24.676;24.912;
+1000;52.918;49.35;46.203;43.432;40.985;38.741;36.707;34.862;33.223;31.722;30.289;28.985;27.755;26.638;25.684;24.9;24.312;23.983;23.922;24.168;
+1500;50.452;47.072;44.091;41.466;39.143;37.017;35.092;33.344;31.799;30.39;29.035;27.819;26.675;25.627;24.742;24.02;23.488;23.2;23.175;23.428;
+2000;48.036;44.875;42.052;39.569;37.364;35.351;33.529;31.875;30.415;29.023;27.824;26.677;25.609;24.637;23.82;23.155;22.675;22.427;22.431;22.691;
+2500;45.831;42.758;40.087;37.74;35.652;33.747;32.023;30.457;29.08;27.77;26.645;25.567;24.567;23.662;22.912;22.31;21.88;21.668;21.695;21.96;
+3000;43.574;40.717;38.193;35.974;33.998;32.198;30.571;29.091;27.795;26.565;25.506;24.487;23.556;22.714;22.02;21.468;21.093;20.92;20.974;21.227;
+3500;41.414;38.75;36.364;34.273;32.403;30.703;29.167;27.768;26.552;25.401;24.406;23.458;22.582;21.756;21.153;20.607;20.311;20.174;20.259;20.508;
+4000;39.406;36.855;34.604;32.631;30.863;29.259;27.812;26.489;25.353;24.275;23.341;22.456;21.644;20.895;20.319;19.85;19.548;19.435;19.538;19.792;
+4500;37.479;35.03;32.908;31.052;29.381;27.866;26.502;25.255;24.19;23.236;22.308;21.482;20.735;20.054;19.506;19.08;18.813;18.716;18.827;19.073;
+5000;35.534;33.278;31.276;29.528;27.95;26.526;25.242;24.064;23.068;22.175;21.31;20.541;19.849;19.234;18.716;18.328;18.097;18.024;18.137;18.365;
+5500;33.727;31.594;29.708;28.064;26.574;25.232;24.028;22.915;21.985;21.149;20.345;19.629;18.987;18.428;17.947;17.596;17.395;17.346;17.467;17.685;
+6000;31.998;29.976;28.2;26.655;25.25;23.988;22.857;21.811;20.941;20.158;19.411;18.746;18.15;17.639;17.199;16.886;16.71;16.681;16.808;17.017;
+6500;30.344;28.391;26.749;25.3;23.976;22.79;21.729;20.746;19.934;19.203;18.511;17.895;17.336;16.871;16.463;16.195;16.041;16.028;16.161;16.362;
+7000;28.698;26.927;25.359;23.998;22.751;21.637;20.642;19.719;18.963;18.28;17.642;17.071;16.555;16.13;15.772;15.522;15.39;15.394;15.524;15.718;
+7500;27.129;25.496;24.023;22.748;21.574;20.527;19.596;18.761;18.027;17.387;16.805;16.273;15.797;15.41;15.095;14.869;14.757;14.775;14.901;15.084;
+8000;25.681;24.123;22.741;21.546;20.443;19.462;18.59;17.809;17.123;16.527;15.996;15.499;15.065;14.712;14.428;14.232;14.146;14.175;14.294;14.465;
+8500;24.298;22.787;21.51;20.393;19.357;18.438;17.622;16.892;16.252;15.697;15.214;14.751;14.356;14.032;13.782;13.61;13.547;13.587;13.704;13.865;
+9000;22.914;21.547;20.335;19.288;18.315;17.456;16.692;16.011;15.413;14.897;14.427;14.029;13.668;13.369;13.152;13.013;12.961;13.014;13.126;13.28;
+9500;21.598;20.341;19.208;18.226;17.316;16.513;15.8;15.164;14.606;14.125;13.695;13.329;13.005;12.736;12.54;12.424;12.387;12.452;12.562;12.708;
+10000;20.383;19.189;18.13;17.21;16.359;15.609;14.943;14.331;13.831;13.384;13.015;12.652;12.36;12.119;11.947;11.847;11.828;11.897;12.011;12.15;
+10500;19.225;18.073;17.098;16.237;15.443;14.743;14.122;13.554;13.086;12.671;12.327;12.001;11.735;11.52;11.371;11.291;11.288;11.353;11.466;11.605;
+11000;18.075;17.036;16.115;15.308;14.567;13.915;13.336;12.808;12.371;11.986;11.665;11.372;11.131;10.937;10.813;10.75;10.76;10.827;10.93;11.068;
+11500;16.708;15.746;14.895;14.149;13.465;12.863;12.329;11.841;11.439;11.083;10.788;10.517;10.294;10.119;10.003;9.9442;9.9547;10.018;10.114;10.242;
+12000;15.441;14.554;13.77;13.08;12.448;11.893;11.4;10.95;10.578;10.25;9.9774;9.7256;9.521;9.3601;9.2528;9.1995;9.2098;9.2691;9.3586;9.4789;
+12500;14.266;13.453;12.729;12.092;11.509;10.997;10.542;10.125;9.7829;9.4809;9.2303;8.9986;8.8104;8.6613;8.5617;8.5118;8.5209;8.5764;8.66;8.7727;
+13000;13.175;12.435;11.766;11.178;10.64;10.167;9.7473;9.3638;9.0483;8.77;8.5396;8.3261;8.1532;8.0157;7.9245;7.8794;7.8881;7.9388;8.0155;8.1191;
+13500;12.192;11.494;10.877;10.334;9.8367;9.4009;9.0135;8.6597;8.3691;8.1127;7.9007;7.7038;7.545;7.4184;7.335;7.2941;7.3031;7.3508;7.4232;7.5189;
+14000;11.279;10.625;10.055;9.5537;9.0945;8.6925;8.3351;8.0086;7.7409;7.5047;7.3097;7.1283;6.9821;6.8658;6.7894;6.7527;6.7618;6.8067;6.8748;6.9641;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;49.593;45.921;42.705;39.878;37.364;35.076;32.929;31.034;29.252;27.56;25.939;24.304;22.854;21.502;20.258;19.148;18.17;17.419;16.887;16.659;
+500;47.317;43.837;40.786;38.104;35.718;33.549;31.516;29.725;28.042;26.445;24.916;23.393;22.012;20.744;19.584;18.549;17.647;16.962;16.49;16.304;
+1000;45.123;41.826;38.933;36.39;34.125;32.069;30.142;28.447;26.861;25.359;23.922;22.504;21.189;20.002;18.919;17.951;17.126;16.504;16.086;15.939;
+1500;42.954;39.889;37.149;34.739;32.591;30.641;28.815;27.211;25.714;24.297;22.947;21.634;20.453;19.273;18.265;17.373;16.614;16.045;15.678;15.568;
+2000;41.031;38.022;35.426;33.146;31.109;29.265;27.536;26.021;24.608;23.27;22.001;20.775;19.657;18.561;17.622;16.796;16.104;15.586;15.266;15.189;
+2500;39.016;36.222;33.767;31.609;29.679;27.935;26.298;24.869;23.539;22.276;21.088;19.944;18.883;17.854;16.983;16.231;15.598;15.13;14.851;14.805;
+3000;37.094;34.487;32.166;30.126;28.3;26.652;25.107;23.756;22.503;21.316;20.202;19.139;18.133;17.17;16.356;15.694;15.085;14.674;14.435;14.415;
+3500;35.311;32.817;30.624;28.697;26.969;25.413;23.955;22.68;21.501;20.385;19.342;18.353;17.405;16.504;15.794;15.138;14.598;14.209;14.015;14.024;
+4000;33.604;31.212;29.14;27.322;25.687;24.218;22.844;21.642;20.532;19.483;18.509;17.58;16.694;15.854;15.156;14.592;14.1;13.752;13.585;13.627;
+4500;31.888;29.668;27.713;25.998;24.452;23.067;21.77;20.64;19.595;18.611;17.696;16.83;16.002;15.219;14.614;14.057;13.611;13.301;13.162;13.223;
+5000;30.278;28.184;26.341;24.725;23.263;21.958;20.736;19.673;18.693;17.767;16.911;16.102;15.33;14.603;14.043;13.532;13.128;12.856;12.743;12.819;
+5500;28.739;26.757;25.021;23.5;22.121;20.891;19.741;18.741;17.822;16.955;16.152;15.397;14.676;14.002;13.486;13.017;12.651;12.414;12.326;12.416;
+6000;27.267;25.343;23.752;22.321;21.022;19.862;18.781;17.842;16.98;16.172;15.421;14.716;14.007;13.418;12.91;12.511;12.18;11.975;11.91;12.013;
+6500;25.812;24.069;22.532;21.188;19.964;18.875;17.858;16.976;16.168;15.414;14.712;14.055;13.41;12.888;12.412;12.017;11.718;11.543;11.497;11.609;
+7000;24.425;22.805;21.36;20.098;18.945;17.924;16.968;16.141;15.384;14.678;14.027;13.416;12.83;12.336;11.899;11.539;11.269;11.118;11.09;11.205;
+7500;23.105;21.59;20.234;19.049;17.966;17.007;16.113;15.335;14.625;13.971;13.363;12.8;12.266;11.8;11.399;11.071;10.832;10.703;10.692;10.807;
+8000;21.848;20.424;19.153;18.041;17.025;16.124;15.288;14.559;13.897;13.29;12.721;12.203;11.716;11.278;10.911;10.614;10.403;10.295;10.3;10.417;
+8500;20.649;19.306;18.115;17.072;16.119;15.276;14.495;13.813;13.195;12.633;12.102;11.623;11.176;10.771;10.436;10.168;9.9824;9.8936;9.914;10.032;
+9000;19.507;18.235;17.121;16.144;15.251;14.462;13.732;13.097;12.519;12.001;11.506;11.062;10.653;10.279;9.9743;9.7338;9.5712;9.4997;9.5329;9.6481;
+9500;18.389;17.208;16.168;15.253;14.417;13.679;12.999;12.408;11.869;11.393;10.931;10.519;10.144;9.8013;9.5254;9.3098;9.1693;9.1137;9.1568;9.2692;
+10000;17.328;16.227;15.256;14.4;13.619;12.929;12.295;11.744;11.244;10.781;10.378;9.9956;9.6527;9.3337;9.0901;8.8967;8.7766;8.7352;8.7864;8.8953;
+10500;16.318;15.29;14.384;13.584;12.854;12.21;11.619;11.106;10.644;10.217;9.8448;9.4916;9.1782;8.8976;8.6702;8.4806;8.3937;8.3651;8.4219;8.527;
+11000;15.354;14.394;13.55;12.803;12.123;11.522;10.973;10.492;10.064;9.6732;9.33;9.0063;8.7203;8.471;8.2617;8.1076;8.0209;8.0033;8.0636;8.1649;
+11500;14.19;13.304;12.525;11.835;11.207;10.654;10.146;9.7036;9.3079;8.9466;8.6292;8.3296;8.065;7.8319;7.6415;7.4994;7.4197;7.404;7.4607;7.5553;
+12000;13.11;12.297;11.578;10.941;10.362;9.8496;9.3805;8.9728;8.6089;8.2753;7.9831;7.7067;7.4629;7.2498;7.0707;6.9386;6.864;6.8502;6.9032;6.9914;
+12500;12.105;11.366;10.703;10.114;9.5787;9.1067;8.6739;8.2983;7.9623;7.6545;7.3855;7.1306;6.9061;6.7098;6.5446;6.4232;6.3551;6.3416;6.3894;6.4694;
+13000;11.204;10.506;9.8936;9.3497;8.8557;8.4201;8.0206;7.6747;7.3646;7.0805;6.8329;6.5985;6.3911;6.2099;6.0578;5.9464;5.8842;5.8726;5.9177;5.9928;
+13500;10.367;9.6981;9.1452;8.6433;8.1875;7.7855;7.4167;7.0981;6.8119;6.5498;6.3216;6.1048;5.9148;5.747;5.6076;5.5051;5.4484;5.4383;5.4811;5.5514;
+14000;9.5712;8.9762;8.4544;7.9905;7.5698;7.1989;6.8584;6.5647;6.3009;6.059;5.849;5.6493;5.474;5.3181;5.1907;5.0968;5.0451;5.0366;5.0769;5.1428;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;41.926;38.568;35.628;33.045;30.734;28.624;26.658;24.848;23.132;21.444;19.79;18.252;16.789;15.303;13.898;12.555;11.396;10.417;9.5765;8.9892;
+500;40.01;36.818;34.026;31.573;29.379;27.38;25.518;23.809;22.189;20.522;19.037;17.578;16.197;14.815;13.5;12.249;11.155;10.232;9.4734;8.9437;
+1000;38.153;35.127;32.48;30.152;28.073;26.179;24.413;22.796;21.266;19.711;18.305;16.921;15.617;14.329;13.091;11.94;10.907;10.04;9.3557;8.8809;
+1500;36.367;33.491;30.985;28.782;26.811;25.016;23.345;21.818;20.37;18.914;17.587;16.279;15.051;13.85;12.689;11.629;10.707;9.8849;9.2263;8.8017;
+2000;34.632;31.916;29.544;27.459;25.591;23.893;22.309;20.87;19.505;18.14;16.887;15.647;14.497;13.381;12.295;11.317;10.451;9.6906;9.0857;8.7082;
+2500;32.972;30.399;28.154;26.181;24.413;22.808;21.31;19.952;18.665;17.387;16.206;15.086;13.951;12.909;11.909;11.002;10.194;9.4879;8.9345;8.6002;
+3000;31.385;28.938;26.816;24.95;23.278;21.76;20.344;19.064;17.851;16.657;15.546;14.487;13.42;12.443;11.518;10.672;9.8883;9.2845;8.7778;8.4787;
+3500;29.867;27.481;25.533;23.764;22.183;20.749;19.41;18.206;17.063;15.947;14.901;13.903;12.901;11.993;11.133;10.342;9.6275;9.0688;8.62;8.3532;
+4000;28.343;26.18;24.286;22.622;21.128;19.774;18.511;17.376;16.3;15.256;14.279;13.334;12.394;11.548;10.751;10.02;9.3626;8.8432;8.4389;8.2166;
+4500;26.918;24.878;23.092;21.522;20.111;18.834;17.641;16.574;15.563;14.587;13.674;12.781;11.9;11.112;10.374;9.6966;9.0944;8.6165;8.2506;8.0576;
+5000;25.557;23.627;21.943;20.463;19.133;17.93;16.805;15.803;14.852;13.94;13.081;12.244;11.418;10.685;10.001;9.3762;8.8241;8.3857;8.0575;7.8907;
+5500;24.258;22.377;20.841;19.444;18.19;17.057;15.997;15.057;14.166;13.314;12.508;11.724;10.95;10.267;9.6278;9.0577;8.5508;8.1509;7.8585;7.7174;
+6000;22.971;21.268;19.775;18.464;17.282;16.217;15.219;14.337;13.503;12.707;11.951;11.218;10.495;9.8598;9.2733;8.7438;8.2715;7.9141;7.6549;7.5379;
+6500;21.749;20.158;18.754;17.521;16.409;15.407;14.468;13.641;12.86;12.117;11.411;10.726;10.054;9.4621;8.9216;8.4371;8.0074;7.6791;7.4477;7.3532;
+7000;20.589;19.093;17.773;16.615;15.569;14.628;13.745;12.971;12.241;11.547;10.888;10.248;9.6217;9.075;8.5762;8.1316;7.741;7.4456;7.2434;7.1656;
+7500;19.488;18.071;16.832;15.746;14.762;13.878;13.049;12.325;11.644;10.996;10.381;9.7852;9.2353;8.6959;8.237;7.8302;7.4757;7.2116;7.0365;6.9779;
+8000;18.442;17.067;15.931;14.91;13.987;13.158;12.379;11.702;11.068;10.463;9.8914;9.312;8.7966;8.3284;7.9045;7.5325;7.2127;6.9774;6.8276;6.7867;
+8500;17.393;16.153;15.064;14.108;13.244;12.467;11.737;11.104;10.512;9.9487;9.4176;8.8869;8.4293;7.9681;7.5792;7.2395;6.9545;6.744;6.6171;6.5926;
+9000;16.398;15.256;14.236;13.339;12.53;11.804;11.119;10.529;9.9792;9.4523;8.9593;8.4745;8.0442;7.6186;7.2613;6.9509;6.6984;6.5114;6.4052;6.3956;
+9500;15.481;14.396;13.442;12.603;11.845;11.167;10.525;9.9764;9.4649;8.9741;8.5187;8.0749;7.6707;7.2781;6.9506;6.6658;6.4412;6.2792;6.191;6.1971;
+10000;14.589;13.574;12.683;11.898;11.189;10.555;9.9556;9.4444;8.971;8.5141;8.0924;7.688;7.308;6.9458;6.666;6.3904;6.1865;6.0491;5.9778;5.996;
+10500;13.732;12.791;11.959;11.224;10.562;9.9699;9.4104;8.9354;8.4951;8.0708;7.6789;7.3089;6.957;6.624;6.3692;6.1353;5.948;5.8204;5.7649;5.7937;
+11000;12.924;12.041;11.266;10.58;9.9633;9.4107;8.8882;8.4458;8.0372;7.6462;7.2845;6.942;6.6178;6.3309;6.0636;5.8688;5.7029;5.5938;5.5522;5.5896;
+11500;11.944;11.129;10.414;9.7803;9.2101;8.7;8.2185;7.8108;7.4338;7.0722;6.7385;6.4227;6.1239;5.8591;5.6267;5.4306;5.2761;5.1748;5.1366;5.1719;
+12000;11.033;10.287;9.626;9.0408;8.5141;8.0436;7.5997;7.2235;6.8759;6.5411;6.2338;5.9425;5.6669;5.4227;5.2085;5.0277;4.8856;4.7917;4.7552;4.7861;
+12500;10.189;9.5077;8.8976;8.3573;7.8715;7.4371;7.0276;6.6804;6.3593;6.0504;5.7672;5.4984;5.2442;5.0189;4.8215;4.6553;4.5243;4.438;4.4049;4.4343;
+13000;9.4291;8.7879;8.2248;7.7258;7.2774;6.8765;6.4988;6.1782;5.8815;5.5963;5.3357;5.0878;4.8531;4.6453;4.4635;4.3102;4.1897;4.1106;4.0806;4.1084;
+13500;8.7233;8.1081;7.6032;7.1421;6.7283;6.3581;6.0098;5.7135;5.4395;5.177;4.9365;4.7075;4.4913;4.2996;4.1321;3.9909;3.8801;3.8075;3.7804;3.8067;
+14000;8.0682;7.5;7.0282;6.6026;6.2207;5.879;5.5576;5.2836;5.0312;4.7891;4.5672;4.3562;4.1566;3.98;3.8255;3.6955;3.5934;3.5269;3.5023;3.5273;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;35.09;31.974;29.303;26.958;24.856;22.922;21.137;19.38;17.746;16.162;14.558;13.037;11.449;9.9196;8.4878;7.094;5.7785;4.5649;3.488;2.5884;
+500;33.446;30.521;27.988;25.763;23.768;21.935;20.246;18.585;17.04;15.542;14.018;12.591;11.103;9.66;8.3093;7.022;5.7675;4.634;3.6317;2.8008;
+1000;31.891;29.118;26.716;24.605;22.715;20.977;19.377;17.803;16.346;14.937;13.504;12.214;10.764;9.4018;8.1251;6.9002;5.7434;4.6859;3.7546;2.9879;
+1500;30.37;27.764;25.488;23.488;21.696;20.05;18.535;17.052;15.611;14.28;12.992;11.769;10.428;9.1426;7.9431;6.7767;5.7085;4.7219;3.8581;3.1519;
+2000;28.942;26.458;24.304;22.409;20.713;19.154;17.721;16.323;14.967;13.707;12.488;11.327;10.084;8.8806;7.7576;6.654;5.669;4.7478;3.9427;3.2933;
+2500;27.582;25.2;23.162;21.369;19.764;18.288;16.932;15.614;14.344;13.15;11.995;10.899;9.7428;8.6084;7.5624;6.5276;5.6181;4.7618;4.0164;3.4178;
+3000;26.21;23.989;22.062;20.366;18.847;17.452;16.17;14.928;13.736;12.605;11.515;10.483;9.4065;8.3268;7.3603;6.3867;5.5533;4.763;4.0751;3.5276;
+3500;24.94;22.823;21.002;19.398;17.963;16.644;15.433;14.263;13.145;12.079;11.042;10.076;9.0739;8.0516;7.1132;6.2472;5.4967;4.7633;4.1182;3.6195;
+4000;23.677;21.699;19.98;18.467;17.111;15.865;14.723;13.624;12.573;11.569;10.635;9.677;8.7497;7.7831;6.9192;6.1042;5.3972;4.7219;4.1311;3.6897;
+4500;22.474;20.618;18.996;17.568;16.289;15.114;14.038;13.005;12.021;11.074;10.195;9.292;8.4259;7.5243;6.724;5.9569;5.2895;4.6706;4.1305;3.7294;
+5000;21.335;19.579;18.05;16.703;15.497;14.39;13.376;12.406;11.486;10.595;9.7675;8.9175;8.1098;7.2791;6.5248;5.7983;5.1776;4.6118;4.118;3.7545;
+5500;20.247;18.58;17.139;15.87;14.733;13.691;12.737;11.827;10.966;10.129;9.3506;8.5523;7.8007;7.0355;6.3306;5.6855;5.0648;4.5535;4.0951;3.7671;
+6000;19.175;17.618;16.263;15.068;13.998;13.017;12.12;11.267;10.461;9.6734;8.9453;8.1959;7.4987;6.7914;6.1372;5.5335;4.952;4.4882;4.0649;3.7681;
+6500;18.16;16.695;15.421;14.298;13.291;12.369;11.525;10.726;9.9732;9.2296;8.5515;7.8491;7.2025;6.5488;5.9413;5.3794;4.8383;4.4112;4.0251;3.7606;
+7000;17.184;15.81;14.612;13.557;12.61;11.743;10.951;10.204;9.5008;8.8009;8.1694;7.5119;6.9121;6.3084;5.7432;5.1933;4.7212;4.323;3.9772;3.745;
+7500;16.255;14.925;13.84;12.845;11.956;11.142;10.399;9.7003;9.044;8.3874;7.7986;7.1848;6.6275;6.0711;5.546;5.0458;4.6033;4.2319;3.9296;3.7192;
+8000;15.356;14.147;13.091;12.162;11.327;10.564;9.8683;9.2154;8.6032;7.9883;7.4107;6.866;6.3478;5.8356;5.348;4.8939;4.4846;4.1375;3.8695;3.6846;
+8500;14.499;13.367;12.378;11.506;10.724;10.009;9.3572;8.7476;8.1769;7.6028;7.0681;6.5582;6.0745;5.6044;5.1547;4.7393;4.363;4.0412;3.7968;3.6414;
+9000;13.673;12.621;11.695;10.878;10.146;9.4748;8.8662;8.2978;7.7658;7.2316;6.7355;6.2584;5.8089;5.3762;4.9623;4.5835;4.2342;3.9441;3.73;3.5902;
+9500;12.898;11.907;11.041;10.277;9.5913;8.9652;8.3952;7.865;7.3707;6.8731;6.4144;5.9669;5.5502;5.1517;4.7732;4.4263;4.1049;3.8453;3.6528;3.5318;
+10000;12.162;11.224;10.415;9.7009;9.0599;8.4753;7.9431;7.4498;6.9879;6.5329;6.1043;5.7058;5.2974;4.9319;4.5868;4.2689;3.9783;3.7415;3.5705;3.4667;
+10500;11.435;10.572;9.8164;9.1499;8.551;8.0058;7.5093;7.0504;6.621;6.2021;5.8062;5.4336;5.0554;4.7181;4.402;4.109;3.8499;3.6341;3.484;3.3958;
+11000;10.748;9.9496;9.2447;8.623;8.0647;7.5562;7.0941;6.6666;6.2684;5.8828;5.518;5.1701;4.8203;4.5105;4.2221;3.9574;3.7208;3.5239;3.3934;3.3201;
+11500;9.9382;9.1958;8.5449;7.9707;7.4553;6.9858;6.5594;6.1649;5.7972;5.4407;5.1038;4.7832;4.4603;4.1744;3.9082;3.6633;3.4458;3.2642;3.1423;3.0728;
+12000;9.1862;8.499;7.8982;7.368;6.8921;6.4584;6.0651;5.701;5.3614;5.0321;4.7211;4.4254;4.127;3.8634;3.6177;3.3918;3.1908;3.0238;2.9114;2.8476;
+12500;8.489;7.8553;7.3005;6.8108;6.3717;5.971;5.6079;5.2718;4.9586;4.6545;4.3668;4.0944;3.8188;3.5758;3.3489;3.1405;2.9543;2.8011;2.6976;2.6391;
+13000;7.8453;7.2604;6.748;6.2958;5.8903;5.5203;5.1854;4.8755;4.5866;4.3056;4.0393;3.7883;3.5338;3.3093;3.1003;2.9079;2.7362;2.5944;2.4996;2.446;
+13500;7.2509;6.7104;6.2373;5.8198;5.4455;5.1039;4.7944;4.5085;4.2414;3.9825;3.7376;3.5052;3.2703;3.0631;2.8703;2.6927;2.5342;2.4031;2.3162;2.2668;
+14000;6.6991;6.202;5.7654;5.3798;5.0343;4.7191;4.4332;4.1694;3.923;3.6836;3.4565;3.2433;3.0269;2.8356;2.6575;2.4936;2.3471;2.2337;2.1464;2.101;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;28.726;26.005;23.607;21.504;19.619;17.882;16.235;14.605;13.1;11.606;10.053;8.4952;6.898;5.3916;3.9533;2.493;1.0736;-9999;-9999;-9999;
+500;27.472;24.83;22.555;20.558;18.769;17.126;15.566;14.03;12.599;11.175;9.7203;8.2637;6.7502;5.3099;3.9659;2.5898;1.2569;-9999;-9999;-9999;
+1000;26.259;23.618;21.549;19.644;17.947;16.387;14.909;13.461;12.104;10.753;9.3938;8.003;6.6006;5.2283;3.9692;2.6772;1.4248;0.23434;-9999;-9999;
+1500;24.979;22.601;20.556;18.759;17.151;15.671;14.275;12.906;11.62;10.337;9.0652;7.7577;6.4449;5.2074;3.9623;2.7501;1.5774;0.4626;-9999;-9999;
+2000;23.758;21.544;19.609;17.906;16.382;14.978;13.656;12.369;11.149;9.9307;8.7405;7.5075;6.2783;5.1129;3.9458;2.8088;1.711;0.66898;-9999;-9999;
+2500;22.608;20.525;18.693;17.081;15.639;14.309;13.059;11.845;10.69;9.5369;8.4215;7.2607;6.107;5.0064;3.9154;2.8555;1.8291;0.85731;-9999;-9999;
+3000;21.551;19.543;17.811;16.285;14.921;13.662;12.477;11.338;10.246;9.1518;8.1091;7.0172;5.9343;4.8968;3.8729;2.8797;1.9276;1.0263;0.19483;-9999;
+3500;20.498;18.597;16.96;15.517;14.228;13.037;11.924;10.847;9.8145;8.7779;7.8036;6.7771;5.7513;4.7839;3.8453;2.8956;2.0048;1.1685;0.40544;-9999;
+4000;19.491;17.687;16.139;14.776;13.558;12.434;11.385;10.372;9.3967;8.4175;7.5296;6.5425;5.557;4.668;3.7782;2.9011;2.07;1.2895;0.58135;-9999;
+4500;18.5;16.808;15.348;14.062;12.913;11.851;10.863;9.9109;8.9906;8.0666;7.2294;6.3115;5.4169;4.552;3.7066;2.8971;2.1206;1.3953;0.7377;0.17072;
+5000;17.555;15.962;14.587;13.373;12.289;11.288;10.358;9.4632;8.5937;7.725;6.9364;6.0831;5.2466;4.4346;3.636;2.8888;2.1632;1.487;0.87757;0.35488;
+5500;16.659;15.15;13.853;12.71;11.688;10.745;9.87;9.0276;8.212;7.3933;6.6514;5.8586;5.0764;4.3157;3.5618;2.8738;2.1983;1.5699;1.0033;0.52082;
+6000;15.81;14.335;13.153;12.07;11.108;10.219;9.397;8.6074;7.8405;7.0712;6.373;5.6368;4.9069;4.1564;3.4867;2.8515;2.2238;1.6412;1.1177;0.67266;
+6500;14.94;13.616;12.468;11.455;10.55;9.7134;8.9412;8.1989;7.4806;6.7912;6.1026;5.4208;4.7021;4.0424;3.4101;2.8226;2.2402;1.7008;1.2179;0.80979;
+7000;14.141;12.894;11.816;10.863;10.012;9.2266;8.5017;7.804;7.1316;6.487;5.839;5.2083;4.5436;3.9271;3.3316;2.7876;2.2478;1.749;1.3047;0.93126;
+7500;13.372;12.202;11.189;10.294;9.4952;8.7566;8.0777;7.4226;6.7941;6.192;5.5846;5;4.3868;3.8101;3.2508;2.7472;2.2475;1.787;1.3787;1.0381;
+8000;12.637;11.539;10.589;9.748;8.9982;8.3052;7.669;7.0564;6.4679;5.9052;5.3372;4.7955;4.2293;3.6919;3.1614;2.7146;2.24;1.8157;1.441;1.1309;
+8500;11.93;10.903;10.012;9.2246;8.5212;7.8712;7.2759;6.7009;6.1526;5.6275;5.0963;4.5952;4.0718;3.5717;3.1053;2.656;2.2404;1.8352;1.4919;1.2103;
+9000;11.26;10.294;9.4598;8.7228;8.0641;7.4553;6.8982;6.3609;5.8494;5.36;4.862;4.4163;3.9149;3.4519;3.0169;2.5952;2.216;1.8461;1.5324;1.2775;
+9500;10.625;9.688;8.9328;8.241;7.6247;7.0552;6.5359;6.0333;5.5569;5.0804;4.6382;4.2195;3.7635;3.3302;2.9273;2.5312;2.1919;1.8496;1.5635;1.3334;
+10000;9.9923;9.1531;8.4235;7.7795;7.2031;6.671;6.1867;5.7181;5.255;4.8353;4.4195;4.0288;3.6125;3.2111;2.839;2.4697;2.1479;1.8539;1.586;1.3793;
+10500;9.3949;8.6208;7.9396;7.3377;6.7992;6.3025;5.8512;5.4136;4.9882;4.5947;4.2065;3.8436;3.4646;3.0919;2.7495;2.4069;2.1148;1.8468;1.6014;1.4149;
+11000;8.8411;8.1112;7.4758;6.915;6.413;5.9497;5.5294;5.1228;4.7305;4.3639;4.0194;3.6638;3.3181;2.9702;2.6423;2.3432;2.0836;1.8297;1.611;1.4452;
+11500;8.1695;7.4965;6.9097;6.3919;5.9285;5.5006;5.1124;4.7374;4.3744;4.0361;3.7182;3.39;3.0703;2.7492;2.4461;2.1706;1.9313;1.6963;1.494;1.3408;
+12000;7.5469;6.9285;6.3866;5.9085;5.4805;5.0854;4.7271;4.381;4.045;3.733;3.4398;3.1367;2.8411;2.5449;2.2641;2.0108;1.7903;1.5727;1.3856;1.244;
+12500;6.9696;6.4036;5.9031;5.4616;5.0663;4.7013;4.3709;4.0515;3.7409;3.4519;3.1822;2.9024;2.6294;2.356;2.0961;1.8626;1.6597;1.4582;1.2851;1.1543;
+13000;6.4346;5.9185;5.4562;5.0485;4.6837;4.3466;4.0412;3.7467;3.4596;3.1937;2.944;2.6857;2.4328;2.1812;1.9408;1.7252;1.5388;1.3521;1.192;1.0711;
+13500;5.9712;5.4701;5.0432;4.6667;4.3299;4.0186;3.7368;3.465;3.1994;2.9542;2.7237;2.4853;2.2512;2.0196;1.7968;1.5981;1.4262;1.2535;1.1057;0.99397;
+14000;5.5085;5.0556;4.6615;4.3139;4.0029;3.7154;3.4554;3.2044;2.9588;2.7326;2.5201;2.2999;2.0832;1.87;1.6764;1.4809;1.3152;1.159;1.0256;0.92245;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;23.131;20.61;18.494;16.646;14.977;13.384;11.946;10.514;9.1007;7.6587;6.18;4.6383;3.1688;1.7187;0.20979;-9999;-9999;-9999;-9999;-9999;
+500;22.74;19.682;17.671;15.917;14.339;12.826;11.465;10.107;8.7702;7.4092;6.0107;4.5605;3.1585;1.8003;0.37984;-9999;-9999;-9999;-9999;-9999;
+1000;21.071;18.791;16.886;15.215;13.72;12.283;10.992;9.7046;8.4427;7.1621;5.8411;4.4793;3.1398;1.8705;0.53429;-9999;-9999;-9999;-9999;-9999;
+1500;20.109;17.929;16.124;14.538;13.12;11.758;10.535;9.3165;8.1217;6.9141;5.6663;4.3948;3.1842;1.9271;0.673;-9999;-9999;-9999;-9999;-9999;
+2000;19.111;17.098;15.386;13.883;12.54;11.25;10.093;8.9375;7.809;6.6694;5.4919;4.3007;3.1546;1.9755;0.79823;-9999;-9999;-9999;-9999;-9999;
+2500;18.217;16.296;14.675;13.25;11.979;10.758;9.66;8.5696;7.5041;6.4304;5.3193;4.1976;3.1168;2.0066;0.90513;-9999;-9999;-9999;-9999;-9999;
+3000;17.34;15.523;13.988;12.639;11.437;10.282;9.2454;8.2134;7.2074;6.1964;5.1485;4.0743;3.0745;2.0299;0.99556;-9999;-9999;-9999;-9999;-9999;
+3500;16.478;14.776;13.326;12.05;10.914;9.8207;8.8418;7.8679;6.9189;5.9684;4.9816;3.9464;3.0283;2.0459;1.0756;0.10999;-9999;-9999;-9999;-9999;
+4000;15.665;14.055;12.687;11.481;10.408;9.3756;8.4519;7.5315;6.6378;5.7631;4.8166;3.8867;2.9799;2.0568;1.1446;0.24036;-9999;-9999;-9999;-9999;
+4500;14.878;13.365;12.072;10.932;9.9188;8.9449;8.0734;7.2052;6.364;5.5356;4.652;3.7797;2.9249;2.0616;1.2065;0.36061;-9999;-9999;-9999;-9999;
+5000;14.129;12.7;11.479;10.403;9.4465;8.5277;7.7068;6.8879;6.0966;5.3129;4.4895;3.6717;2.8673;2.0599;1.2593;0.46861;-9999;-9999;-9999;-9999;
+5500;13.402;12.057;10.907;9.892;8.9906;8.1247;7.3515;6.5802;5.8366;5.0969;4.3265;3.5623;2.807;2.0521;1.3036;0.56476;-9999;-9999;-9999;-9999;
+6000;12.713;11.439;10.357;9.4001;8.551;7.7355;7.008;6.2825;5.5837;4.8852;4.1681;3.452;2.744;2.0391;1.3397;0.65024;-9999;-9999;-9999;-9999;
+6500;12.035;10.847;9.8274;8.9268;8.1274;7.3921;6.6729;5.9936;5.3381;4.6814;4.0135;3.3423;2.6781;2.027;1.3687;0.72537;0.098335;-9999;-9999;-9999;
+7000;11.388;10.278;9.3193;8.4686;7.7195;7.0267;6.3528;5.7141;5.0993;4.4858;3.861;3.2321;2.6105;1.9964;1.3899;0.79063;0.20785;-9999;-9999;-9999;
+7500;10.78;9.7301;8.8298;8.0331;7.3263;6.6748;6.0434;5.4155;4.8672;4.2947;3.7109;3.0962;2.5415;1.9624;1.4044;0.84749;0.30644;-9999;-9999;-9999;
+8000;10.204;9.2043;8.3602;7.6122;6.9488;6.3355;5.7459;5.1609;4.6444;4.1091;3.5644;2.9953;2.4399;1.9276;1.4124;0.89488;0.39303;-9999;-9999;-9999;
+8500;9.6222;8.7014;7.9093;7.2078;6.5855;6.0098;5.459;4.9128;4.4279;3.9297;3.4222;2.8965;2.3751;1.8883;1.415;0.93458;0.46975;0.025268;-9999;-9999;
+9000;9.0716;8.2196;7.4769;6.8195;6.2362;5.6965;5.1814;4.6758;4.2179;3.7538;3.2811;2.7972;2.3111;1.8491;1.4146;0.96894;0.53774;0.12706;-9999;-9999;
+9500;8.5631;7.7557;7.0614;6.4461;5.901;5.3946;4.9143;4.4418;4.0145;3.5823;3.1431;2.6976;2.2441;1.809;1.4091;0.99678;0.59827;0.2197;-9999;-9999;
+10000;8.0857;7.3113;6.6632;6.0876;5.5768;5.1041;4.6565;4.2181;3.818;3.414;3.008;2.5978;2.1757;1.79;1.3988;1.0179;0.65037;0.30216;-9999;-9999;
+10500;7.591;6.8886;6.2821;5.745;5.2672;4.8248;4.4085;4.0019;3.6276;3.2487;2.8758;2.498;2.1056;1.746;1.3845;1.033;0.6944;0.37431;0.079744;-9999;
+11000;7.1389;6.483;5.9172;5.4164;4.9706;4.5574;4.1702;3.7932;3.4431;3.0885;2.7462;2.3906;2.0354;1.7;1.3663;1.0424;0.73099;0.43748;0.16848;-9999;
+11500;6.5946;5.9915;5.4689;5.0065;4.5948;4.2132;3.8555;3.5069;3.1843;2.8572;2.5404;2.212;1.8835;1.5741;1.2802;0.96669;0.67858;0.40715;0.15825;-9999;
+12000;6.0898;5.5373;5.0546;4.6277;4.2474;3.8952;3.5646;3.2424;2.9449;2.643;2.3501;2.0529;1.7429;1.4577;1.1728;0.89611;0.63005;0.37894;0.14847;-9999;
+12500;5.622;5.1175;4.6717;4.2774;3.9263;3.6023;3.2958;2.9979;2.7236;2.4451;2.1742;1.8991;1.6131;1.3499;1.0866;0.83088;0.58488;0.35268;0.13947;-9999;
+13000;5.2065;4.7295;4.3181;3.9541;3.6295;3.3304;3.0465;2.7719;2.5189;2.2621;2.0114;1.757;1.493;1.2501;1.0068;0.77045;0.54306;0.32837;0.13095;-9999;
+13500;4.8225;4.3607;3.9924;3.6547;3.3552;3.0793;2.818;2.5629;2.3297;2.0928;1.8609;1.6255;1.3818;1.1577;0.93291;0.71449;0.50426;0.30572;0.12308;-9999;
+14000;4.4464;4.0397;3.6885;3.3782;3.1016;2.8467;2.6049;2.3709;2.1547;1.9364;1.7217;1.504;1.279;1.0722;0.8645;0.66263;0.46833;0.28465;0.11565;-9999;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;21.027;18.643;16.636;14.884;13.302;11.796;10.397;9.0527;7.6877;6.2623;4.7819;3.3802;1.9109;0.42018;-9999;-9999;-9999;-9999;-9999;-9999;
+500;20.951;17.806;15.9;14.237;12.737;11.307;9.9826;8.71;7.4174;6.0733;4.6939;3.3473;1.9616;0.55663;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;19.199;16.995;15.191;13.61;12.19;10.832;9.578;8.3706;7.1052;5.8868;4.5986;3.3083;2.0034;0.67972;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;18.246;16.217;14.507;13.007;11.662;10.372;9.1846;8.0407;6.8406;5.6943;4.49;3.2617;2.0398;0.79081;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;17.385;15.466;13.845;12.422;11.15;9.927;8.8076;7.7203;6.5814;5.5044;4.3584;3.2083;2.048;0.88754;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;16.607;14.742;13.207;11.858;10.654;9.4961;8.4368;7.4089;6.3328;5.3178;4.2364;3.0917;2.0556;0.96712;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;15.76;14.043;12.591;11.314;10.175;9.0793;8.0777;7.1064;6.0906;5.1346;4.1149;3.0408;2.0527;1.0374;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;14.96;13.369;11.997;10.788;9.7123;8.6753;7.7303;6.8117;5.8524;4.9548;3.9945;2.9879;2.0455;1.0983;0.12062;-9999;-9999;-9999;-9999;-9999;
+4000;14.249;12.72;11.423;10.28;9.2645;8.2849;7.3932;6.5255;5.6599;4.777;3.8732;2.931;2.0347;1.1525;0.23557;-9999;-9999;-9999;-9999;-9999;
+4500;13.574;12.096;10.87;9.7901;8.8319;7.9064;7.0662;6.2465;5.4317;4.6029;3.7523;2.8728;2.0201;1.1984;0.33987;-9999;-9999;-9999;-9999;-9999;
+5000;12.854;11.493;10.337;9.3165;8.4128;7.5403;6.7481;5.9755;5.2093;4.4317;3.632;2.8144;2.0021;1.2365;0.43289;-9999;-9999;-9999;-9999;-9999;
+5500;12.173;10.913;9.8232;8.8611;8.0091;7.1863;6.4405;5.7123;4.9921;4.2634;3.5125;2.7496;1.982;1.2669;0.51585;-9999;-9999;-9999;-9999;-9999;
+6000;11.561;10.356;9.329;8.4218;7.6195;6.8445;6.1433;5.4576;4.7808;4.0982;3.3935;2.6795;1.996;1.2896;0.59004;-9999;-9999;-9999;-9999;-9999;
+6500;10.98;9.82;8.8534;7.9992;7.2438;6.5146;5.8552;5.2101;4.5751;3.9362;3.2756;2.6098;1.9667;1.3067;0.65291;0.0014878;-9999;-9999;-9999;-9999;
+7000;10.372;9.3055;8.3968;7.5927;6.8823;6.1965;5.5767;4.9701;4.3748;3.7774;3.1586;2.5265;1.935;1.3181;0.70811;0.102;-9999;-9999;-9999;-9999;
+7500;9.7971;8.8114;7.9579;7.202;6.5345;5.8906;5.3097;4.7396;4.1816;3.6229;3.0437;2.4361;1.8995;1.3244;0.75581;0.19246;-9999;-9999;-9999;-9999;
+8000;9.2753;8.3379;7.5363;6.8264;6.1998;5.595;5.0507;4.5159;3.9939;3.4818;2.9315;2.3904;1.8623;1.3264;0.7966;0.27217;-9999;-9999;-9999;-9999;
+8500;8.7849;7.8836;7.1316;6.4655;5.8774;5.3104;4.8004;4.2994;3.8115;3.3298;2.8205;2.3167;1.8222;1.3248;0.83175;0.34412;-9999;-9999;-9999;-9999;
+9000;8.2711;7.4478;6.7435;6.1191;5.5678;5.0367;4.5594;4.0901;3.6344;3.1822;2.711;2.242;1.7802;1.3187;0.86095;0.40819;-9999;-9999;-9999;-9999;
+9500;7.7867;7.0296;6.3707;5.786;5.2694;4.7728;4.3272;3.8881;3.4626;3.038;2.6014;2.1666;1.7363;1.3084;0.88392;0.46463;0.055702;-9999;-9999;-9999;
+10000;7.3481;6.6297;6.0133;5.4664;4.9833;4.5376;4.1013;3.6925;3.2962;2.8986;2.4961;2.0911;1.6907;1.2974;0.90146;0.51344;0.13537;-9999;-9999;-9999;
+10500;6.9339;6.2477;5.6714;5.1602;4.7081;4.291;3.8853;3.5037;3.1349;2.7645;2.3927;2.0156;1.6436;1.275;0.91339;0.55509;0.20613;-9999;-9999;-9999;
+11000;6.5067;5.8808;5.3433;4.8663;4.4446;4.0547;3.6776;3.3214;2.9785;2.6355;2.2906;1.9237;1.5955;1.2496;0.92041;0.58988;0.2687;-9999;-9999;-9999;
+11500;6.0094;5.4348;4.9385;4.4979;4.1085;3.7486;3.4;3.0713;2.7547;2.4372;2.119;1.7801;1.477;1.158;0.8532;0.54771;0.25061;-9999;-9999;-9999;
+12000;5.5483;5.0227;4.5644;4.1576;3.798;3.4656;3.1434;2.84;2.5476;2.2542;1.9602;1.6462;1.3674;1.0732;0.7909;0.50848;0.23377;-9999;-9999;-9999;
+12500;5.1348;4.642;4.2186;3.843;3.511;3.2041;2.9062;2.6263;2.3562;2.0849;1.8135;1.538;1.266;0.99454;0.73313;0.47215;0.21813;-9999;-9999;-9999;
+13000;4.7508;4.2902;3.8991;3.5522;3.2455;2.9623;2.6871;2.4286;2.1792;1.9284;1.6777;1.4233;1.1722;0.92204;0.67979;0.43845;0.20355;-9999;-9999;-9999;
+13500;4.3941;3.9521;3.6058;3.2834;3.0001;2.7389;2.4845;2.2459;2.0155;1.7836;1.5522;1.3173;1.0854;0.85493;0.63032;0.40719;0.18994;-9999;-9999;-9999;
+14000;4.0526;3.6643;3.3307;3.0351;2.7734;2.5319;2.2968;2.077;1.8642;1.65;1.4361;1.2192;1.005;0.79264;0.58451;0.3782;0.1774;-9999;-9999;-9999;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;19.032;16.784;14.895;13.233;11.728;10.309;8.9408;7.6938;6.368;4.9783;3.5882;2.1773;0.70708;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;18.197;16.021;14.233;12.658;11.233;9.8862;8.594;7.4106;6.1601;4.836;3.5235;2.195;0.80904;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;17.323;15.305;13.595;12.104;10.755;9.475;8.2516;7.1279;5.9507;4.6953;3.4578;2.2039;0.89979;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;16.487;14.613;12.984;11.568;10.292;9.0772;7.9197;6.8539;5.7391;4.5544;3.3866;2.2042;0.98008;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;15.756;13.927;12.393;11.05;9.8431;8.6909;7.5961;6.5867;5.5327;4.4181;3.3119;2.1959;1.0451;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;14.997;13.269;11.823;10.549;9.4094;8.317;7.282;6.3267;5.3307;4.2807;3.2366;2.1829;1.1009;0.0055764;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;14.272;12.646;11.273;10.066;8.9887;7.9548;6.9784;6.0736;5.1339;4.1463;3.1606;2.1665;1.1484;0.11929;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;13.587;12.045;10.741;9.5998;8.5827;7.6044;6.6832;5.8274;4.9412;4.0121;3.0836;2.1467;1.1908;0.22315;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;12.915;11.454;10.229;9.1492;8.1893;7.2647;6.3963;5.5871;4.7514;3.8798;2.967;2.1221;1.2256;0.31758;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;12.281;10.89;9.7357;8.715;7.81;6.9348;6.1177;5.3529;4.5664;3.748;2.8993;2.094;1.2535;0.40309;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;11.643;10.351;9.2591;8.2952;7.4424;6.6158;5.8478;5.1252;4.3636;3.619;2.8307;2.0624;1.2751;0.47754;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;11.04;9.8317;8.8001;7.8906;7.0874;6.3087;5.5873;4.9044;4.1863;3.4898;2.7569;2.0279;1.2908;0.54423;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;10.477;9.3283;8.3585;7.5014;6.7447;6.0103;5.3315;4.6897;4.0161;3.3617;2.6797;1.9902;1.302;0.60287;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;9.9253;8.8471;7.934;7.1261;6.4148;5.7229;5.0845;4.4802;3.8477;3.2353;2.5944;1.9506;1.3003;0.65381;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;9.4028;8.3847;7.5259;6.7657;6.0968;5.4463;4.8471;4.2791;3.6821;3.1127;2.5114;1.9083;1.2954;0.69752;0.083757;-9999;-9999;-9999;-9999;-9999;
+7500;8.9095;7.9407;7.133;6.4188;5.7903;5.179;4.6189;4.0837;3.5219;2.9928;2.4296;1.8404;1.2891;0.73463;0.16294;-9999;-9999;-9999;-9999;-9999;
+8000;8.4063;7.5142;6.7565;6.0849;5.495;4.9212;4.3961;3.8941;3.3658;2.8747;2.348;1.803;1.2791;0.76698;0.23411;-9999;-9999;-9999;-9999;-9999;
+8500;7.9328;7.1051;6.3945;5.7642;5.2109;4.6726;4.1814;3.7105;3.2382;2.7583;2.267;1.7616;1.2676;0.79323;0.2981;-9999;-9999;-9999;-9999;-9999;
+9000;7.4869;6.7131;6.0474;5.4564;4.9377;4.4337;3.9736;3.5323;3.0915;2.6451;2.1862;1.7168;1.2539;0.81389;0.35432;-9999;-9999;-9999;-9999;-9999;
+9500;7.0662;6.3371;5.714;5.1605;4.6749;4.2028;3.7736;3.3605;2.9487;2.5336;2.1058;1.6706;1.2346;0.82908;0.40331;-9999;-9999;-9999;-9999;-9999;
+10000;6.6696;5.9774;5.3946;4.8767;4.4223;3.9809;3.5801;3.1936;2.8104;2.4247;2.0262;1.6225;1.2376;0.83949;0.4453;0.052215;-9999;-9999;-9999;-9999;
+10500;6.272;5.6337;5.0888;4.6044;4.179;3.7673;3.3936;3.0326;2.6759;2.3179;1.9476;1.572;1.2149;0.84605;0.48101;0.11808;-9999;-9999;-9999;-9999;
+11000;5.8984;5.3046;4.7956;4.3435;3.9466;3.5624;3.2143;2.877;2.5452;2.2133;1.8695;1.5107;1.1902;0.84879;0.5109;0.17603;-9999;-9999;-9999;-9999;
+11500;5.449;4.9019;4.4322;4.0146;3.6483;3.2934;2.9716;2.6604;2.354;2.0472;1.7295;1.4004;1.1021;0.78657;0.47433;0.16477;-9999;-9999;-9999;-9999;
+12000;5.032;4.5299;4.0965;3.7105;3.3724;3.0447;2.7474;2.4602;2.1771;1.8936;1.6002;1.2981;1.0206;0.72899;0.4405;0.15413;-9999;-9999;-9999;-9999;
+12500;4.6556;4.1868;3.7862;3.4296;3.1175;2.8148;2.5399;2.275;2.0136;1.7516;1.4806;1.2028;0.94508;0.67563;0.40911;0.14431;-9999;-9999;-9999;-9999;
+13000;4.3061;3.8698;3.4993;3.17;2.882;2.6023;2.3482;2.1039;1.8624;1.6203;1.37;1.1147;0.87537;0.62634;0.37997;0.13508;-9999;-9999;-9999;-9999;
+13500;3.9765;3.5759;3.2342;2.9299;2.6641;2.4058;2.1713;1.9456;1.7226;1.4989;1.2676;1.0335;0.81076;0.58059;0.353;0.1266;-9999;-9999;-9999;-9999;
+14000;3.6709;3.3045;2.9892;2.7083;2.4628;2.2243;2.0076;1.7993;1.5933;1.3866;1.173;0.9579;0.75096;0.53827;0.32785;0.11863;-9999;-9999;-9999;-9999;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;17.158;15.011;13.194;11.692;10.255;8.9339;7.6923;6.4345;5.1377;3.8032;2.4361;1.0453;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;16.396;14.333;12.624;11.129;9.7795;8.567;7.3933;6.2035;4.981;3.7112;2.4245;1.1122;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;15.609;13.7;12.118;10.694;9.4132;8.2178;7.1017;5.975;4.8212;3.6211;2.3899;1.1698;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;14.891;13.078;11.569;10.222;9.0116;7.8758;6.8169;5.7513;4.6612;3.5264;2.3629;1.217;0.011454;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;14.13;12.477;11.04;9.7656;8.6222;7.5436;6.5412;5.5335;4.5043;3.4322;2.3073;1.2536;0.11927;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;13.516;11.894;10.528;9.3247;8.2452;7.2221;6.2734;5.3227;4.3503;3.3375;2.3206;1.2857;0.2163;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;12.865;11.33;10.035;8.8987;7.8811;6.9104;6.0123;5.1158;4.1996;3.2443;2.2875;1.312;0.30652;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;12.249;10.788;9.5623;8.4876;7.5264;6.6081;5.7588;4.914;4.0506;3.1514;2.2504;1.3329;0.38533;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;11.664;10.211;9.0828;8.0921;7.1845;6.3161;5.5117;4.7158;3.9036;3.0551;2.2104;1.3486;0.45686;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;11.057;9.7603;8.6687;7.707;6.8533;6.0308;5.2716;4.5242;3.7593;2.9604;2.1671;1.3593;0.52045;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;10.484;9.2741;8.2452;7.3367;6.5328;5.756;5.0389;4.3367;3.6196;2.8654;2.1187;1.3617;0.57647;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;9.9431;8.8068;7.8376;6.9801;6.2234;5.4899;4.8133;4.1548;3.4817;2.7683;2.0695;1.3599;0.62481;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;9.4456;8.3588;7.4457;6.6366;5.9244;5.2332;4.5959;3.9763;3.3459;2.6768;2.02;1.3542;0.66694;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;8.9729;7.896;7.0787;6.3062;5.6369;4.9854;4.3626;3.8042;3.2121;2.5871;1.9689;1.3449;0.70259;0.053304;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;8.4752;7.5146;6.7059;5.9889;5.3598;4.7461;4.163;3.6369;3.0816;2.4985;1.9178;1.333;0.73321;0.12671;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;8.0053;7.1169;6.3573;5.6832;5.0927;4.5153;3.9687;3.4745;2.9539;2.4096;1.866;1.3185;0.75928;0.19344;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;7.5812;6.7359;6.0223;5.3891;4.8355;4.2922;3.7818;3.3166;2.8294;2.3214;1.7853;1.3006;0.78007;0.25294;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;7.1819;6.3462;5.7079;5.1056;4.587;4.0772;3.6009;3.1635;2.6981;2.2355;1.7404;1.2806;0.79608;0.30547;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;6.7624;6.0195;5.3919;4.835;4.3486;3.8702;3.4259;3.0142;2.5788;2.1494;1.6934;1.258;0.8075;0.35129;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;6.3688;5.6826;5.0955;4.5732;4.1182;3.6708;3.2553;2.8706;2.4644;2.0639;1.6446;1.2331;0.81702;0.39141;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;5.9996;5.3602;4.8113;4.3219;3.8961;3.4785;3.0912;2.7308;2.3516;1.9803;1.5943;1.2063;0.81576;0.42538;0.028206;-9999;-9999;-9999;-9999;-9999;
+10500;5.6518;5.0523;4.5389;4.0816;3.6831;3.2932;2.9322;2.5954;2.2405;1.898;1.5386;1.1781;0.81208;0.45402;0.086375;-9999;-9999;-9999;-9999;-9999;
+11000;5.3251;4.7575;4.2783;3.8514;3.4796;3.1155;2.7796;2.4644;2.1322;1.8167;1.4827;1.1312;0.80742;0.47757;0.13844;-9999;-9999;-9999;-9999;-9999;
+11500;4.9148;4.3969;3.954;3.5595;3.2163;2.8802;2.5699;2.2789;1.9724;1.6805;1.372;1.0464;0.74859;0.44323;0.12907;-9999;-9999;-9999;-9999;-9999;
+12000;4.5346;4.0636;3.6544;3.2898;2.9733;2.6627;2.3754;2.1075;1.825;1.5545;1.2696;0.96855;0.69386;0.41142;0.12102;-9999;-9999;-9999;-9999;-9999;
+12500;4.2004;3.7554;3.3776;3.0407;2.7486;2.4616;2.1961;1.949;1.6883;1.4379;1.1749;0.89648;0.64353;0.38191;0.11348;-9999;-9999;-9999;-9999;-9999;
+13000;3.8894;3.4707;3.1217;2.8104;2.5409;2.2758;2.0303;1.8024;1.5621;1.3301;1.0872;0.8437;0.59623;0.35457;0.10645;-9999;-9999;-9999;-9999;-9999;
+13500;3.587;3.2074;2.8851;2.5976;2.349;2.104;1.8769;1.6668;1.4453;1.2305;1.0062;0.78126;0.55301;0.32924;0.099844;-9999;-9999;-9999;-9999;-9999;
+14000;3.3075;2.9642;2.6666;2.4009;2.1714;1.9452;1.7354;1.5416;1.3372;1.1384;0.93119;0.72348;0.51316;0.30576;0.093699;-9999;-9999;-9999;-9999;-9999;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;15.37;13.347;11.649;10.259;8.8912;7.6487;6.4748;5.2689;4.0096;2.7215;1.3942;0.014939;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;14.705;12.679;11.138;9.8146;8.5228;7.3434;6.2303;5.0883;3.8995;2.6807;1.4263;0.12585;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;13.999;12.18;10.649;9.3865;8.1671;7.0457;5.9907;4.9084;3.787;2.6349;1.4505;0.22554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;13.326;11.629;10.174;8.9727;7.822;6.7563;5.7571;4.7318;3.6733;2.5841;1.4662;0.31515;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;12.724;11.096;9.7152;8.5726;7.4873;6.4754;5.5281;4.5594;3.5606;2.5316;1.4765;0.39155;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;12.164;10.534;9.2692;8.1873;7.1631;6.2025;5.3071;4.3921;3.4504;2.4784;1.4826;0.46122;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;11.536;10.085;8.898;7.8115;6.8499;5.938;5.0917;4.2281;3.3409;2.4239;1.4856;0.52534;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;10.943;9.6069;8.4757;7.4526;6.5458;5.6815;4.8819;4.0673;3.2317;2.3668;1.4833;0.58074;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;10.437;9.1449;8.0694;7.105;6.2512;5.4319;4.677;3.9092;3.1234;2.3087;1.4773;0.6293;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;9.9597;8.6623;7.6435;6.7711;5.9657;5.1899;4.4776;3.7554;3.0159;2.2485;1.4674;0.67178;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;9.4355;8.247;7.3063;6.424;5.6878;4.9582;4.2845;3.6043;2.9099;2.1887;1.4538;0.70802;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;8.9371;7.8503;6.9374;6.1323;5.4207;4.7318;4.0974;3.4571;2.8048;2.1275;1.4204;0.73869;0.015453;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;8.473;7.451;6.5916;5.8324;5.1634;4.5134;3.9162;3.3156;2.7021;2.0658;1.4022;0.76387;0.087105;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;8.0348;7.0673;6.2587;5.5431;4.9148;4.3021;3.7399;3.1767;2.6015;2.0042;1.3786;0.7853;0.15171;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;7.6196;6.6626;5.9202;5.2663;4.6747;4.0992;3.5695;3.0413;2.5023;1.9423;1.3759;0.80297;0.21057;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;7.1947;6.3439;5.6306;4.9968;4.4429;3.9016;3.4042;2.9096;2.4047;1.8803;1.3514;0.81605;0.26257;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;6.7941;6.0036;5.3346;4.7389;4.2182;3.711;3.2442;2.7808;2.3089;1.8181;1.3246;0.82517;0.30829;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;6.4165;5.6775;5.0503;4.4896;4.0027;3.5268;3.0891;2.6559;2.2148;1.7561;1.2962;0.83132;0.34823;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;6.0606;5.3654;4.7764;4.2515;3.796;3.3496;2.9387;2.5344;2.1225;1.6944;1.2653;0.83263;0.38285;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;5.7233;5.066;4.5144;4.0225;3.5963;3.1781;2.7934;2.4166;2.0332;1.6312;1.2316;0.82975;0.41222;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;5.4054;4.7586;4.2686;3.8026;3.4045;3.013;2.6526;2.3023;1.946;1.57;1.1982;0.82345;0.43685;0.045624;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;5.0784;4.5056;4.0229;3.5923;3.2198;2.8538;2.5166;2.1899;1.8595;1.51;1.1644;0.81578;0.45713;0.094448;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;4.7722;4.2432;3.7924;3.3903;3.044;2.701;2.3861;2.0828;1.7744;1.4507;1.1291;0.80529;0.47347;0.13768;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;4.4093;3.9208;3.5051;3.1333;2.813;2.4971;2.1951;1.9257;1.6412;1.342;1.045;0.74594;0.43925;0.12891;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;4.0794;3.6238;3.2394;2.8959;2.6004;2.3086;2.0286;1.7808;1.5181;1.2421;0.96717;0.69101;0.40753;0.12066;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;3.7729;3.3494;2.9939;2.6765;2.4039;2.1343;1.876;1.6467;1.4042;1.1484;0.8948;0.64017;0.37809;0.11301;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;3.4842;3.095;2.7671;2.4737;2.2223;1.9732;1.7348;1.5229;1.2989;1.0624;0.82858;0.59284;0.35105;0.10582;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;3.2169;2.8599;2.5575;2.2864;2.0546;1.8242;1.6043;1.4083;1.2015;0.98293;0.76696;0.54956;0.32558;0.099524;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.9747;2.6433;2.3637;2.1132;1.8994;1.6866;1.4837;1.3024;1.1115;0.90941;0.70998;0.50926;0.30214;0.092855;-9999;-9999;-9999;-9999;-9999;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.698;11.803;10.202;8.8471;7.6402;6.4759;5.3268;4.2061;2.9683;1.7294;0.43833;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;13.126;11.222;9.7568;8.4724;7.324;6.2207;5.1309;4.0711;2.9031;1.7309;0.51139;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;12.469;10.771;9.3304;8.1094;7.0176;5.9718;4.9382;3.935;2.8319;1.7264;0.57603;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.903;10.282;8.9157;7.757;6.7201;5.7291;4.7494;3.8014;2.7626;1.7159;0.63008;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;11.3;9.8113;8.5145;7.4172;6.4322;5.4952;4.5653;3.6705;2.6923;1.7023;0.67825;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.807;9.3539;8.1262;7.0871;6.1544;5.2683;4.3859;3.5433;2.6193;1.687;0.721;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;10.341;8.9136;7.752;6.816;5.8875;5.0499;4.2143;3.4176;2.5492;1.6681;0.75814;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.7856;8.4922;7.3906;6.5011;5.6289;4.8345;4.0448;3.2929;2.4766;1.6462;0.78927;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;9.308;8.0851;7.042;6.1968;5.3781;4.6249;3.88;3.1714;2.4036;1.6214;0.81527;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;8.8554;7.6919;6.7051;5.9031;5.1343;4.4218;3.7173;3.0517;2.3305;1.5943;0.83634;0.047955;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;8.3994;7.314;6.3851;5.6176;4.8948;4.2253;3.5578;2.9345;2.2573;1.5649;0.85233;0.11393;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.9673;6.951;6.0729;5.3462;4.6722;4.0354;3.4046;2.8203;2.1851;1.5341;0.86466;0.17335;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;7.5594;6.5978;5.8067;5.0835;4.4527;3.8514;3.2555;2.709;2.1136;1.5021;0.87472;0.22718;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;7.1702;6.2603;5.5106;4.8323;4.2403;3.6733;3.112;2.5999;2.0424;1.4684;0.88086;0.27558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;6.7834;5.9354;5.226;4.5901;4.0351;3.5008;2.9996;2.4939;1.9716;1.4336;0.88314;0.3179;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;6.4193;5.6207;4.9526;4.357;3.8369;3.3342;2.8637;2.3894;1.9013;1.3973;0.88237;0.35497;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;6.068;5.3207;4.6914;4.1328;3.6457;3.173;2.7317;2.2876;1.8316;1.36;0.87864;0.38692;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;5.7372;5.0326;4.4418;3.9173;3.4616;3.0172;2.6037;2.1883;1.7626;1.3216;0.87209;0.41416;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;5.4144;4.755;4.2025;3.7104;3.2844;2.8675;2.4795;2.0916;1.6944;1.2825;0.86322;0.43674;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;5.114;4.4887;3.9724;3.5112;3.113;2.7219;2.3598;1.996;1.6269;1.2432;0.83989;0.45572;0.045685;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.8121;4.2351;3.7527;3.3201;2.9469;2.5814;2.2435;1.9057;1.5609;1.2029;0.82844;0.47063;0.08987;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;4.5292;3.9928;3.5409;3.1369;2.7895;2.4468;2.131;1.8162;1.4953;1.1621;0.81522;0.48205;0.12895;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;4.2637;3.7599;3.3386;2.9611;2.6375;2.3171;2.0225;1.7294;1.431;1.1209;0.79204;0.49041;0.16329;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.94;3.4749;3.0854;2.7367;2.438;2.1422;1.87;1.5992;1.3237;1.0372;0.73541;0.4546;0.15232;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.6398;3.2115;2.8517;2.5291;2.2541;1.9805;1.7158;1.4779;1.2244;0.95987;0.6832;0.42149;0.14215;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;3.3617;2.9681;2.6351;2.3362;2.0839;1.831;1.5869;1.3667;1.1326;0.88818;0.63437;0.39083;0.13266;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;3.1024;2.7434;2.4359;2.1602;1.9266;1.6927;1.4677;1.2641;1.0477;0.82203;0.58742;0.36243;0.12384;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.8634;2.5357;2.2514;1.9965;1.7811;1.5651;1.3577;1.169;0.96914;0.76;0.54377;0.33612;0.11566;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.6427;2.3438;2.0809;1.8455;1.6469;1.447;1.2559;1.0813;0.89665;0.70405;0.50441;0.31217;0.10803;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.976;11.06;9.5307;8.2144;7.0537;5.9276;4.8116;3.7116;2.4841;1.2091;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.355;10.513;9.1134;7.8672;6.7632;5.6961;4.6367;3.5973;2.438;1.245;0.078938;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.755;10.096;8.7163;7.5309;6.4812;5.4703;4.4646;3.4825;2.3883;1.2688;0.16396;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.211;9.6383;8.3296;7.2051;6.2077;5.251;4.2958;3.3684;2.3371;1.2856;0.23782;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.65;9.1965;7.9555;6.8902;5.9428;5.0367;4.1315;3.2571;2.2849;1.2921;0.30445;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.182;8.7692;7.5943;6.6348;5.6875;4.8302;3.9728;3.1479;2.2322;1.306;0.36503;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.6913;8.3581;7.2448;6.3332;5.4397;4.6289;3.8178;3.04;2.1783;1.3151;0.41798;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.2271;7.961;6.9076;6.0422;5.1996;4.433;3.6663;2.9327;2.1225;1.3093;0.46515;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.7888;7.5376;6.5792;5.7612;4.967;4.2426;3.5186;2.8277;2.0657;1.3001;0.50624;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;8.3313;7.2085;6.2674;5.4894;4.7445;4.0594;3.3746;2.7245;2.0089;1.2881;0.54185;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.8701;6.8552;5.9648;5.2285;4.5295;3.881;3.2337;2.6229;1.9529;1.2735;0.57242;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.509;6.5144;5.6738;4.9762;4.3186;3.7079;3.0967;2.5242;1.8953;1.2573;0.59892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;7.1208;6.1867;5.393;4.7336;4.119;3.54;2.9669;2.4271;1.8375;1.2389;0.62157;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.7533;5.8714;5.1225;4.4997;3.9239;3.3774;2.839;2.3318;1.78;1.2184;0.64;0.036964;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;6.4069;5.5334;4.86;4.2747;3.7351;3.22;2.7142;2.2384;1.7224;1.1959;0.65442;0.091492;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;6.0485;5.2767;4.6402;4.0566;3.5528;3.0678;2.5937;2.147;1.6648;1.1717;0.66499;0.14006;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.712;4.9966;4.3935;3.8481;3.3767;2.9208;2.4773;2.0575;1.6073;1.1458;0.6724;0.18306;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;5.4015;4.7258;4.1575;3.6476;3.2068;2.7779;2.3606;1.9701;1.55;1.1186;0.67653;0.22087;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;5.1112;4.4661;3.9315;3.4553;3.0435;2.6407;2.2486;1.8846;1.4932;1.0901;0.67774;0.25385;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.8128;4.2168;3.7164;3.2701;2.8855;2.5077;2.1403;1.8015;1.4367;1.0606;0.67621;0.28234;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.5328;3.9782;3.5103;3.0924;2.7333;2.3795;2.0357;1.72;1.381;1.0305;0.67239;0.30667;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;4.2715;3.7499;3.3131;2.9219;2.5868;2.2558;1.9342;1.6407;1.3257;0.99919;0.66645;0.32701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;4.026;3.5314;3.1239;2.7585;2.4464;2.1369;1.8367;1.5634;1.2711;0.96725;0.65822;0.34388;0.018769;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.7132;3.2643;2.8873;2.5494;2.2616;1.9756;1.699;1.4459;1.1757;0.89509;0.60957;0.31913;0.018713;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.4241;3.0172;2.6684;2.3566;2.0908;1.8265;1.5717;1.3373;1.0875;0.82835;0.56462;0.29621;0.018591;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;3.1719;2.7869;2.4662;2.1774;1.9332;1.6886;1.454;1.2368;1.006;0.76669;0.52301;0.27496;0.018328;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.9378;2.5747;2.2794;2.0123;1.7874;1.5612;1.3451;1.1439;0.93059;0.70953;0.48451;0.25525;0.018081;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.7206;2.3792;2.1068;1.8597;1.6525;1.4434;1.2445;1.0581;0.8609;0.6567;0.44887;0.23698;0.017732;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.5023;2.1995;1.9471;1.7188;1.5278;1.3346;1.1513;0.97859;0.79643;0.60783;0.41587;0.22006;0.017464;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.151;10.276;8.8727;7.6085;6.4925;5.404;4.33;3.2409;2.0386;0.83182;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;11.618;9.8364;8.4888;7.288;6.2264;5.1952;4.1731;3.1466;2.0116;0.87206;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.099;9.4085;8.116;6.9775;5.9679;4.9908;4.0197;3.0506;1.9798;0.90612;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;10.545;9.0219;7.7607;6.6767;5.7168;4.7922;3.8691;2.9564;1.9419;0.93212;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;9.9889;8.609;7.4128;6.3854;5.4742;4.5998;3.7234;2.8629;1.9043;0.95265;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.5748;8.2098;7.0765;6.104;5.2398;4.412;3.5808;2.7712;1.8649;0.97055;0.019395;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.1026;7.8244;6.7515;5.8312;5.0126;4.2295;3.4427;2.6801;1.8244;0.93515;0.089135;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.6733;7.4535;6.4379;5.6094;4.7926;4.0521;3.3093;2.5896;1.7852;0.9512;0.15218;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.2472;7.0951;6.1347;5.3479;4.5788;3.8794;3.1756;2.5005;1.7442;0.96569;0.20881;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.8371;6.75;5.8423;5.098;4.3718;3.7121;3.046;2.4121;1.7021;0.97564;0.2598;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.4414;6.4176;5.561;4.8551;4.1729;3.5502;2.9227;2.3259;1.6588;0.98029;0.30473;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.0686;6.0977;5.2895;4.6216;3.9801;3.3928;2.8023;2.2414;1.6167;0.9836;0.34489;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.6993;5.7903;5.0282;4.3966;3.7995;3.242;2.6842;2.1581;1.573;0.98312;0.38009;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.3516;5.4956;4.7766;4.1796;3.6209;3.0944;2.5695;2.0761;1.5292;0.97954;0.41025;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;6.0127;5.2122;4.5343;3.9706;3.4466;2.9521;2.4578;1.9955;1.484;0.96903;0.43628;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.6906;4.9398;4.3012;3.7695;3.2798;2.8127;2.3495;1.9164;1.4387;0.95629;0.45803;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.3878;4.6781;4.077;3.5761;3.1182;2.6786;2.2444;1.8387;1.3929;0.9415;0.47591;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;5.1026;4.4039;3.8597;3.3901;2.9622;2.549;2.1424;1.7626;1.3468;0.92487;0.49019;0.036145;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.7941;4.1858;3.6765;3.2103;2.8122;2.424;2.0433;1.6881;1.3007;0.90659;0.50114;0.078814;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.5294;3.9541;3.473;3.0386;2.6669;2.3029;1.9475;1.6155;1.2547;0.88691;0.50903;0.11685;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.2682;3.7301;3.2785;2.8735;2.5271;2.1858;1.8543;1.5441;1.2089;0.8661;0.51426;0.15015;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;4.0239;3.5164;3.094;2.7157;2.3923;2.0728;1.7639;1.4744;1.163;0.84376;0.51673;0.17906;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.7944;3.2956;2.9061;2.5648;2.2631;1.9643;1.6767;1.4064;1.1174;0.82046;0.51664;0.20412;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.4893;3.0574;2.6964;2.3695;2.0924;1.816;1.5501;1.3007;1.0337;0.75936;0.47874;0.18989;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.2292;2.828;2.492;2.1897;1.9345;1.679;1.4331;1.203;0.95625;0.70285;0.44367;0.17668;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.9879;2.617;2.3031;2.0237;1.7889;1.5523;1.3249;1.1127;0.88461;0.65057;0.41118;0.16442;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.7611;2.415;2.1287;1.8701;1.6536;1.4352;1.225;1.0292;0.81837;0.60222;0.3811;0.15302;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.5514;2.2298;1.9675;1.7283;1.529;1.327;1.1325;0.95196;0.75713;0.55749;0.35326;0.14244;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.3549;2.0625;1.8184;1.5973;1.4137;1.2269;1.047;0.88054;0.70042;0.51608;0.32747;0.13262;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;11.396;9.6683;8.3296;7.0291;5.956;4.9034;3.8489;2.7788;1.603;0.40254;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;10.905;9.1839;7.8892;6.7336;5.7131;4.7162;3.719;2.708;1.5938;0.46057;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;10.428;8.7943;7.5446;6.4476;5.477;4.5325;3.5894;2.634;1.5804;0.51282;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;9.9004;8.4284;7.2149;6.1711;5.248;4.3543;3.4693;2.5609;1.5638;0.55777;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;9.3821;8.0428;6.8906;5.9016;5.0266;4.1807;3.3409;2.4884;1.5459;0.59767;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;8.9902;7.6705;6.5795;5.643;4.8121;4.0122;3.2143;2.4131;1.5255;0.63313;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;8.5421;7.3108;6.278;5.3918;4.6045;3.848;3.091;2.338;1.5016;0.66282;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.1444;6.9645;5.987;5.1489;4.4029;3.6882;2.9733;2.2633;1.477;0.68775;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;7.7441;6.63;5.7051;4.9126;4.2077;3.5321;2.8542;2.1887;1.4478;0.7083;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.4044;6.3079;5.4341;4.7222;4.0195;3.3819;2.7401;2.115;1.4175;0.72403;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;6.9895;5.9977;5.1728;4.4983;3.8373;3.2357;2.6281;2.0433;1.3855;0.73586;0.044864;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;6.5987;5.6995;4.9208;4.2819;3.6608;3.094;2.5213;1.9722;1.353;0.74488;0.098809;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.2907;5.4118;4.678;4.0736;3.4902;2.9563;2.4164;1.9019;1.3215;0.75152;0.14706;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;5.9628;5.1353;4.4441;3.8729;3.3252;2.8229;2.3146;1.8325;1.2894;0.72587;0.18923;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.6536;4.8365;4.2171;3.6798;3.1657;2.6936;2.2155;1.764;1.2563;0.73302;0.22708;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.3626;4.595;4.0007;3.4937;3.0187;2.569;2.1191;1.6966;1.2223;0.73712;0.26018;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.0452;4.3706;3.7942;3.3144;2.8709;2.4476;2.0254;1.6302;1.1877;0.73759;0.2887;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.7759;4.1363;3.5942;3.1421;2.728;2.3301;1.9341;1.5649;1.1527;0.73546;0.31273;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.5094;3.9117;3.4022;2.9769;2.5906;2.2169;1.8455;1.5008;1.1169;0.73161;0.33297;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.259;3.696;3.2176;2.8186;2.4577;2.107;1.7599;1.4381;1.0806;0.72124;0.34985;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.0235;3.4696;3.0385;2.665;2.3294;2.0005;1.6766;1.3764;1.0445;0.70947;0.36353;0.00060933;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.7763;3.2907;2.887;2.5177;2.2058;1.8979;1.5958;1.3159;1.0077;0.69574;0.37438;0.037851;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.5456;3.0998;2.7205;2.3774;2.0874;1.7993;1.5176;1.2567;0.97096;0.68064;0.38213;0.070859;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.2843;2.8641;2.5138;2.1969;1.93;1.6635;1.4032;1.1624;0.89827;0.63006;0.35439;0.066652;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.0417;2.6297;2.3116;2.0309;1.7845;1.538;1.2973;1.0751;0.83091;0.58336;0.32872;0.062708;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.8166;2.436;2.1366;1.8768;1.65;1.422;1.1994;0.99447;0.76871;0.54008;0.30486;0.058993;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.5904;2.2606;1.9839;1.7336;1.5256;1.3148;1.1089;0.91989;0.71121;0.50007;0.28281;0.055576;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.3821;2.09;1.8336;1.6022;1.4111;1.2156;1.0252;0.85092;0.65804;0.46302;0.26237;0.052273;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.2134;1.9306;1.6947;1.4806;1.3044;1.124;0.94783;0.78714;0.60884;0.42874;0.24342;0.049206;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;10.649;9.0136;7.725;6.4754;5.4438;4.4282;3.3874;2.3452;1.1907;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;10.218;8.5565;7.3958;6.2046;5.2229;4.2616;3.2792;2.2899;1.1993;0.071124;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;9.7962;8.2297;7.0722;5.9417;5.0081;4.0971;3.1689;2.233;1.2026;0.14099;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;9.2792;7.7888;6.6864;5.687;4.8002;3.9376;3.061;2.176;1.2022;0.20199;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;8.7812;7.4986;6.3915;5.4407;4.5987;3.7827;2.9553;2.1178;1.1982;0.25723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;8.4263;7.1521;6.103;5.2024;4.4038;3.6321;2.8518;2.0602;1.1914;0.30705;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;8.0224;6.8174;5.8238;4.9716;4.2149;3.485;2.7496;2.0031;1.1836;0.35071;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;7.639;6.4442;5.5505;4.7479;4.0318;3.3411;2.6576;1.9464;1.1742;0.39077;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;7.2455;6.1828;5.2935;4.5316;3.8533;3.2019;2.5531;1.8888;1.161;0.42574;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;6.8983;5.8827;5.0426;4.3231;3.682;3.0668;2.4513;1.8313;1.1476;0.45576;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;6.5775;5.5937;4.8004;4.1564;3.5163;2.936;2.3536;1.7749;1.1294;0.48233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;6.2175;5.3156;4.567;3.9573;3.3557;2.8088;2.2584;1.7166;1.111;0.50519;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;5.8977;5.0478;4.342;3.765;3.2001;2.6852;2.1658;1.6586;1.0916;0.52425;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;5.5954;4.7565;4.1232;3.5799;3.0497;2.5652;2.0751;1.6011;1.0703;0.53959;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.3104;4.5216;3.9147;3.4014;2.9043;2.4488;1.9871;1.5441;1.0462;0.55093;0.024809;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.0105;4.3046;3.7159;3.2293;2.7638;2.3359;1.9016;1.4877;1.0203;0.55894;0.068377;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;4.7289;4.076;3.5228;3.064;2.6282;2.2265;1.8184;1.4319;0.9938;0.56413;0.10723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.4648;3.8565;3.3372;2.905;2.5041;2.1213;1.7376;1.3768;0.96768;0.56678;0.14157;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.2172;3.6474;3.1594;2.7524;2.379;2.0191;1.6591;1.3226;0.94175;0.54522;0.17119;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.9846;3.4466;2.9883;2.6056;2.2578;1.9199;1.5826;1.2695;0.91469;0.54815;0.19742;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.7665;3.2315;2.8222;2.4646;2.1405;1.8238;1.509;1.2168;0.88747;0.54937;0.21992;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.5409;3.0692;2.6665;2.3293;2.0274;1.731;1.4369;1.165;0.85943;0.54777;0.23895;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.3299;2.8924;2.5155;2.1995;1.9191;1.6418;1.3673;1.1143;0.83105;0.54404;0.25425;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.0807;2.672;2.3249;2.0326;1.7746;1.5179;1.2642;1.0307;0.76886;0.50273;0.23618;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.8514;2.4515;2.1485;1.8782;1.6409;1.4035;1.1687;0.9534;0.71148;0.46447;0.21939;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.6292;2.2839;2.0001;1.7348;1.5174;1.2976;1.0806;0.88196;0.65805;0.42962;0.2038;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.4295;2.111;1.8481;1.6031;1.4031;1.1998;0.99886;0.81588;0.60895;0.39685;0.18932;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.2451;1.9512;1.7077;1.4814;1.2974;1.1095;0.92362;0.75474;0.56349;0.36669;0.17593;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.0748;1.8032;1.5781;1.3688;1.2;1.0258;0.8632;0.69844;0.52137;0.33896;0.16338;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;9.9888;8.3013;7.1552;5.95;4.9535;3.9742;2.9548;1.9358;0.79676;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;9.5585;7.9569;6.7631;5.7025;4.7548;3.8267;2.8616;1.8979;0.8233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;9.1012;7.5848;6.4687;5.4614;4.561;3.6822;2.7685;1.8571;0.84411;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;8.6967;7.3111;6.259;5.2277;4.3728;3.5417;2.6779;1.8155;0.8616;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;8.274;6.9126;5.9089;5.0004;4.1912;3.4053;2.5886;1.7747;0.87238;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;7.8684;6.6543;5.647;4.7821;4.0149;3.2703;2.5019;1.7239;0.88174;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;7.5053;6.2862;5.3845;4.5705;3.8442;3.1392;2.4159;1.6885;0.88773;0.059308;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;7.1659;6.0432;5.14;4.3658;3.6775;3.0128;2.3307;1.6441;0.88949;0.11034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;6.7912;5.7034;4.8959;4.1674;3.5164;2.8905;2.2469;1.5994;0.88868;0.15766;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;6.4261;5.4743;4.6675;3.9764;3.3607;2.7683;2.1647;1.5545;0.88554;0.20006;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;6.1295;5.2058;4.4436;3.7917;3.2103;2.6516;2.0844;1.51;0.88119;0.23861;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;5.8465;4.9471;4.228;3.6133;3.0644;2.5378;2.0136;1.4661;0.87472;0.27282;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;5.518;4.6982;4.0202;3.4707;2.9236;2.4275;1.9314;1.4215;0.86623;0.30272;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;5.2093;4.4587;3.8199;3.2999;2.787;2.3202;1.8517;1.3774;0.85612;0.32943;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;4.9535;4.2284;3.6273;3.1354;2.6549;2.216;1.7742;1.3331;0.84413;0.35223;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;4.7108;4.0071;3.4415;2.9772;2.5272;2.1149;1.6986;1.2888;0.83063;0.37143;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;4.4338;3.7945;3.263;2.825;2.4039;2.0169;1.6251;1.244;0.81555;0.38726;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.1744;3.5904;3.0914;2.6785;2.2849;1.9219;1.5536;1.1985;0.79895;0.39997;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;3.9565;3.395;2.9268;2.538;2.1703;1.8303;1.4846;1.1534;0.78132;0.4098;0.015432;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.7504;3.2073;2.7682;2.4028;2.0596;1.741;1.4167;1.1094;0.76176;0.41662;0.050103;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.5182;3.0273;2.6162;2.2729;1.96;1.6555;1.3511;1.0653;0.741;0.42098;0.080819;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.3025;2.856;2.4708;2.1484;1.8571;1.5719;1.2875;1.0218;0.71896;0.42286;0.10792;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.1179;2.6918;2.3312;2.029;1.7588;1.4917;1.2259;0.97897;0.69774;0.42274;0.13126;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.8867;2.488;2.1544;1.8752;1.6264;1.3792;1.1333;0.90566;0.6457;0.3917;0.12224;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.6722;2.2898;1.9904;1.7324;1.5043;1.2753;1.0478;0.8378;0.59747;0.36297;0.11385;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.4758;2.1255;1.8405;1.6007;1.3906;1.1791;0.96904;0.77516;0.55299;0.33637;0.10606;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.2736;1.9646;1.7012;1.4788;1.2863;1.0903;0.89594;0.71702;0.51209;0.31174;0.098816;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.088;1.8158;1.5723;1.3667;1.1897;1.0081;0.82843;0.66338;0.4741;0.28891;0.092085;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.9419;1.6785;1.4532;1.2629;1.1003;0.93217;0.76603;0.61375;0.43907;0.26779;0.085834;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;9.3063;7.7767;6.6013;5.4433;4.4871;3.546;2.5446;1.5408;0.41556;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;8.9201;7.3775;6.3189;5.2177;4.3083;3.4166;2.4703;1.5223;0.46061;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;8.4983;7.0372;6.0415;4.9985;4.1344;3.2889;2.3956;1.4997;0.49457;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;8.143;6.7834;5.7725;4.7859;3.9658;3.1654;2.3222;1.4751;0.52871;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;7.7249;6.4138;5.5165;4.5814;3.8031;3.045;2.2493;1.4497;0.5601;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;7.337;6.1749;5.2656;4.3823;3.6443;2.9273;2.1764;1.4222;0.58197;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;7.0078;5.8334;4.9692;4.19;3.4903;2.8122;2.1034;1.3926;0.60189;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;6.6934;5.6101;4.797;4.0029;3.3406;2.6993;2.0315;1.361;0.6184;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;6.3413;5.2935;4.52;3.8225;3.1965;2.5899;1.9604;1.3291;0.63138;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;6.0129;5.0828;4.3091;3.6462;3.0551;2.4877;1.8912;1.2972;0.64206;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;5.7235;4.7905;4.0989;3.4773;2.9192;2.3813;1.8236;1.2646;0.64882;0.0084643;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;5.447;4.594;3.904;3.315;2.7875;2.2805;1.7567;1.2314;0.65389;0.054238;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;5.1528;4.3246;3.7092;3.1572;2.66;2.1826;1.6916;1.1977;0.65568;0.095151;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;4.8752;4.1406;3.5277;3.0049;2.5365;2.0874;1.6274;1.1634;0.65522;0.13156;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;4.6258;3.9271;3.35;2.8821;2.4173;1.9949;1.5642;1.1288;0.65263;0.16378;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;4.3896;3.7218;3.179;2.7369;2.3018;1.9051;1.5022;1.0939;0.64796;0.19206;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;4.1407;3.5245;3.0144;2.5972;2.1903;1.8179;1.446;1.0594;0.6417;0.21679;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;3.9071;3.3351;2.8561;2.4628;2.0825;1.7333;1.3827;1.0242;0.63385;0.23793;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;3.6951;3.1538;2.7045;2.3334;1.9787;1.6517;1.3212;0.98953;0.62499;0.25634;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.4952;2.9796;2.5583;2.2095;1.8784;1.5722;1.2617;0.95535;0.61461;0.27204;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.2859;2.8122;2.4179;2.0902;1.7814;1.495;1.2033;0.92075;0.60319;0.28511;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.0912;2.6524;2.2836;1.9759;1.6879;1.4203;1.1475;0.88608;0.59028;0.29518;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.9121;2.4993;2.1547;1.8662;1.6053;1.349;1.0933;0.85073;0.57632;0.30283;0.01258;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.6884;2.3098;1.9915;1.7239;1.4849;1.2474;1.0109;0.78708;0.53343;0.2807;0.012517;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.4816;2.1347;1.8407;1.593;1.3736;1.1534;0.93474;0.7282;0.49372;0.26019;0.012433;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.298;1.9733;1.7012;1.472;1.2705;1.0666;0.86433;0.67375;0.45702;0.2412;0.01233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.1289;1.8115;1.5719;1.3601;1.175;0.98619;0.79925;0.62327;0.42306;0.2236;0.012202;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.9639;1.686;1.4533;1.2566;1.087;0.91196;0.73896;0.5765;0.39159;0.20733;0.012038;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.8121;1.5585;1.3433;1.161;1.0054;0.84329;0.6835;0.53325;0.36251;0.19225;0.011836;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;8.6775;7.207;6.0825;4.967;4.0429;3.1471;2.1501;1.1617;0.049901;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;8.3191;6.8341;5.7328;4.7582;3.8841;3.0393;2.0929;1.1575;0.10876;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;7.9169;6.511;5.4849;4.5607;3.7308;2.9261;2.045;1.1512;0.16054;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;7.4863;6.2849;5.324;4.3689;3.5818;2.8183;1.9928;1.1439;0.20782;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;7.198;5.9359;5.0125;4.1817;3.4339;2.7106;1.9332;1.1345;0.25586;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;6.855;5.7207;4.7944;4.0004;3.2919;2.6029;1.8748;1.1211;0.30009;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;6.5293;5.3993;4.5695;3.8249;3.1539;2.5024;1.8088;1.1057;0.33059;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;6.2121;5.1457;4.3589;3.6545;3.0204;2.4039;1.7481;1.0891;0.3562;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;5.9086;4.9003;4.1565;3.4893;2.8894;2.3077;1.691;1.0709;0.38178;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;5.6196;4.7073;3.9663;3.3316;2.7639;2.215;1.6356;1.0519;0.40422;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;5.3326;4.4349;3.7732;3.1781;2.642;2.1245;1.5804;1.032;0.42396;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;5.0603;4.215;3.5911;3.0299;2.5239;2.0363;1.5257;1.0107;0.44041;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;4.8024;4.0055;3.4162;2.8869;2.4094;1.9503;1.4709;0.98769;0.45385;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;4.5582;3.8359;3.2491;2.7487;2.2986;1.8666;1.4167;0.96368;0.46424;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;4.311;3.6057;3.0826;2.6147;2.1912;1.7855;1.3637;0.93893;0.47204;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;4.077;3.4152;2.9253;2.4856;2.0873;1.7062;1.311;0.91336;0.47774;0.022694;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;3.8592;3.2372;2.7746;2.3807;1.987;1.6292;1.2594;0.88736;0.4801;0.056609;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;3.6533;3.0904;2.6313;2.2579;1.89;1.5544;1.2086;0.86098;0.4805;0.086478;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;3.4438;2.9228;2.4919;2.1391;1.7965;1.4822;1.1594;0.8342;0.47896;0.11267;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.2469;2.7358;2.3555;2.0256;1.706;1.4117;1.1113;0.80762;0.47612;0.13561;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.0625;2.6065;2.2284;1.9163;1.6185;1.3433;1.0683;0.78074;0.47163;0.15567;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.8903;2.4584;2.1049;1.8116;1.5341;1.2771;1.0184;0.75325;0.46532;0.17287;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.7148;2.3173;1.9867;1.7111;1.4533;1.2133;0.97052;0.72571;0.4581;0.18675;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.5003;2.1417;1.8362;1.5806;1.3434;1.1222;0.89784;0.67139;0.42422;0.17346;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.3185;1.9801;1.697;1.4604;1.242;1.0374;0.83009;0.62116;0.39326;0.1613;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.1503;1.8288;1.5685;1.3492;1.1482;0.95932;0.76776;0.57472;0.36392;0.14975;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.9768;1.6901;1.4497;1.2464;1.0695;0.88749;0.71029;0.53174;0.33711;0.13911;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.8294;1.5622;1.3399;1.1515;0.98944;0.8207;0.6569;0.49201;0.31227;0.12931;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.6937;1.4334;1.238;1.0639;0.9154;0.75895;0.6076;0.45527;0.2892;0.11997;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;7.9909;6.5033;5.4747;4.4438;3.5413;2.6717;1.7063;0.71437;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;7.6642;6.2481;5.2076;4.2927;3.4213;2.6045;1.6902;0.75189;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;7.3478;6.0026;5.0261;4.1479;3.3054;2.5362;1.6716;0.78095;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;7.0213;5.7404;4.813;3.9793;3.2162;2.4678;1.6508;0.80729;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;6.7249;5.5103;4.6018;3.8158;3.0851;2.3868;1.6102;0.82794;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;6.3778;5.2852;4.3979;3.6474;2.9571;2.2985;1.5663;0.83746;0.016799;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;6.0708;4.9844;4.19;3.4875;2.8332;2.2116;1.5221;0.8342;0.064273;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;5.7705;4.8026;4.0055;3.3258;2.7153;2.1277;1.4773;0.8298;0.10442;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;5.4948;4.5252;3.8104;3.1776;2.5993;2.0468;1.4333;0.822;0.14324;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;5.2329;4.3498;3.6395;3.0338;2.4879;1.9679;1.3919;0.81504;0.17708;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;4.9591;4.0961;3.4605;2.8945;2.3789;1.8873;1.3534;0.80699;0.20801;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;4.6983;3.8876;3.2921;2.76;2.2736;1.8104;1.3132;0.79716;0.2365;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;4.4656;3.6994;3.1333;2.6299;2.1714;1.7313;1.268;0.78528;0.26258;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;4.2453;3.5451;2.9826;2.5043;2.0724;1.6583;1.2196;0.77168;0.28482;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;4.0089;3.331;2.8292;2.383;1.9765;1.5872;1.1743;0.75705;0.29832;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;3.7846;3.15;2.6843;2.2659;1.8836;1.5181;1.132;0.7416;0.31256;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;3.588;2.9901;2.5475;2.1531;1.7938;1.4506;1.0899;0.72503;0.32284;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;3.4028;2.8567;2.4173;2.0631;1.7071;1.3851;1.0483;0.70762;0.33173;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;3.2033;2.6778;2.287;1.9556;1.6235;1.3219;1.0072;0.68913;0.33966;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.0156;2.5254;2.1634;1.8507;1.5424;1.2601;0.96676;0.67001;0.34499;0.0061049;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;2.8483;2.4096;2.0478;1.7509;1.4638;1.1999;0.9263;0.64993;0.34821;0.03374;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.692;2.273;1.9345;1.6554;1.388;1.1415;0.88669;0.62954;0.3492;0.057396;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.5251;2.1425;1.8252;1.5637;1.3157;1.0854;0.84815;0.60885;0.34824;0.078296;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.338;1.9661;1.6868;1.4445;1.2163;1.0037;0.7846;0.56334;0.32273;0.073103;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.1648;1.8201;1.5588;1.3344;1.1244;0.92819;0.72584;0.52132;0.29834;0.067686;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;1.9929;1.6913;1.4412;1.2326;1.0395;0.85839;0.67151;0.48244;0.27756;0.06397;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.8349;1.5631;1.332;1.1387;0.96106;0.79375;0.62121;0.44649;0.25709;0.060039;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.7019;1.4448;1.2317;1.0518;0.88852;0.73406;0.57505;0.41336;0.23835;0.056319;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.579;1.3278;1.1382;0.97177;0.83089;0.67947;0.5319;0.38267;0.22101;0.052833;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;7.0844;5.7966;4.7882;3.8392;3.0155;2.1695;1.2211;0.26684;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;6.8484;5.5907;4.6179;3.6605;2.9288;2.1277;1.2323;0.32775;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;6.5761;5.3123;4.4227;3.5618;2.8411;2.0826;1.2442;0.3821;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;6.3139;5.1752;4.3054;3.4524;2.7578;2.0362;1.2483;0.43005;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;6.0632;4.9735;4.1527;3.3384;2.674;1.9879;1.2473;0.47182;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;5.8215;4.7333;3.9195;3.2249;2.5725;1.9354;1.2407;0.50677;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;5.5765;4.5431;3.781;3.1204;2.4779;1.8839;1.2258;0.53485;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;5.3434;4.3627;3.6405;3.0108;2.3936;1.8319;1.2062;0.55629;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;5.098;4.1673;3.4852;2.8826;2.3097;1.7805;1.1869;0.57296;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;4.8454;3.9669;3.3259;2.7532;2.2272;1.7221;1.1607;0.58701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;4.6023;3.7737;3.2174;2.6278;2.1309;1.6556;1.1258;0.5983;0.0050532;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;4.3664;3.5854;3.0184;2.508;2.0374;1.5902;1.0935;0.5971;0.041625;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;4.1418;3.4436;2.8761;2.3913;1.9471;1.5262;1.0605;0.59439;0.0747;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;3.9284;3.2685;2.7298;2.2782;1.8594;1.4635;1.0276;0.58982;0.10455;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;3.7251;3.1006;2.5933;2.1656;1.7742;1.4021;0.99425;0.58393;0.13121;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;3.5204;2.9089;2.4572;2.0582;1.6917;1.343;0.961;0.57707;0.15493;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;3.331;2.7829;2.3351;1.9563;1.612;1.2848;0.92879;0.56937;0.17577;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;3.1463;2.6079;2.2098;1.8577;1.5339;1.2284;0.89762;0.56018;0.19197;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;2.9718;2.4915;2.0964;1.78;1.4593;1.1734;0.86575;0.55004;0.20733;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;2.804;2.3316;1.9813;1.6858;1.3871;1.1176;0.8331;0.53853;0.22135;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;2.6465;2.2219;1.8756;1.5948;1.3171;1.0653;0.79735;0.52617;0.23227;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.4892;2.0765;1.7699;1.5082;1.2495;1.0134;0.76515;0.51297;0.23704;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.3437;1.9585;1.6711;1.4284;1.185;0.9645;0.73394;0.49906;0.2429;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.1691;1.812;1.5452;1.3192;1.0956;0.89257;0.67856;0.46192;0.22538;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.0074;1.6765;1.4287;1.2184;1.0133;0.82516;0.62788;0.42756;0.20915;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;1.8493;1.56;1.3211;1.1261;0.93658;0.76328;0.581;0.39579;0.19558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.7042;1.442;1.2209;1.0396;0.8659;0.70606;0.53787;0.36643;0.18225;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.5803;1.3209;1.1276;0.95798;0.80049;0.65315;0.4991;0.33931;0.16876;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.4598;1.2318;1.0433;0.88561;0.74019;0.60419;0.46189;0.31425;0.15622;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;6.2275;5.0131;4.086;3.2674;2.485;1.6627;0.76584;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;5.9919;4.7601;3.9218;3.1647;2.425;1.6491;0.84264;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;5.807;4.6927;3.8275;3.0664;2.3625;1.6329;0.8104;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;5.5797;4.458;3.6962;2.9679;2.3009;1.608;0.8306;0.046836;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;5.3639;4.3642;3.6086;2.8254;2.2386;1.5817;0.84577;0.10556;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;5.1604;4.1432;3.4376;2.7401;2.1751;1.5528;0.85693;0.15715;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;4.9637;4.052;3.346;2.6676;2.1107;1.5215;0.86626;0.20366;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;4.759;3.84;3.194;2.5822;2.0463;1.4888;0.8707;0.24423;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;4.5629;3.691;3.0606;2.4885;1.974;1.4547;0.87187;0.28079;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;4.3708;3.5441;2.9269;2.3999;1.9071;1.4198;0.87057;0.31289;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;4.1855;3.402;2.8148;2.3151;1.843;1.3837;0.86754;0.34109;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;3.9966;3.2555;2.7067;2.2347;1.7795;1.3462;0.8616;0.36651;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;3.8171;3.1489;2.6021;2.1474;1.7165;1.308;0.854;0.38666;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;3.6352;2.9713;2.484;2.0629;1.6499;1.2691;0.84496;0.40473;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;3.4432;2.819;2.3602;1.9594;1.5821;1.2279;0.83427;0.41924;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;3.261;2.6746;2.2407;1.8634;1.5097;1.1741;0.80999;0.42995;0.011707;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;3.0879;2.5374;2.1279;1.7714;1.4392;1.1244;0.77936;0.42855;0.034519;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;2.9242;2.4173;2.0217;1.6824;1.3707;1.0767;0.74974;0.42293;0.058547;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;2.7509;2.2671;1.9128;1.6127;1.3048;1.0298;0.72346;0.41916;0.0804;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;2.5872;2.1645;1.8134;1.523;1.241;0.9836;0.70023;0.41405;0.099933;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;2.4336;2.0431;1.7124;1.4427;1.1796;0.9383;0.67476;0.40842;0.11655;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.3034;1.9076;1.6155;1.3687;1.1201;0.89419;0.64931;0.40154;0.13098;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.1695;1.8;1.5257;1.2929;1.062;0.85231;0.62443;0.39403;0.14282;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.0075;1.6653;1.4104;1.1941;0.98195;0.78818;0.57793;0.36485;0.13305;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;1.8524;1.537;1.3031;1.1025;0.90792;0.72889;0.53493;0.3376;0.12379;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;1.7097;1.435;1.2065;1.0161;0.83925;0.67431;0.49455;0.31291;0.11526;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.5785;1.3266;1.1165;0.93982;0.77643;0.62366;0.45839;0.28989;0.10733;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.4627;1.214;1.031;0.86902;0.71766;0.57728;0.42436;0.26864;0.099982;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.3561;1.1251;0.95379;0.80354;0.66328;0.53412;0.39286;0.24896;0.093108;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;5.4292;4.2333;3.4442;2.649;1.9746;1.2779;0.3877;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;5.2322;4.093;3.3484;2.5954;1.9396;1.2689;0.37554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;5.0018;3.975;3.2592;2.5728;1.9013;1.2549;0.47153;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;4.8578;3.8211;3.153;2.4929;1.8758;1.2543;0.50182;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;4.6751;3.6873;3.0549;2.4214;1.821;1.2194;0.53969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;4.4862;3.6164;2.9379;2.348;1.7783;1.1691;0.55771;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;4.2876;3.4612;2.8397;2.2743;1.7342;1.1762;0.57759;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;4.164;3.3114;2.7416;2.1987;1.6869;1.1622;0.59227;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;4.0044;3.2436;2.6486;2.1274;1.6419;1.1451;0.58845;0.0070825;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;3.8504;3.0811;2.5525;2.0549;1.5936;1.1188;0.593;0.049842;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;3.6954;3.0037;2.4677;1.9821;1.5469;1.0996;0.59955;0.091648;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;3.5381;2.8461;2.366;1.8798;1.4993;1.0778;0.6053;0.12982;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;3.3898;2.7679;2.2794;1.8279;1.4519;1.0539;0.6106;0.16271;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;3.2391;2.619;2.1724;1.7671;1.4112;1.028;0.61319;0.19199;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;3.0949;2.5089;2.072;1.7048;1.3506;1.0013;0.61303;0.21747;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;2.9519;2.3987;1.991;1.6437;1.2941;0.9738;0.61067;0.23936;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;2.8171;2.3151;1.9124;1.5736;1.2485;0.94579;0.60596;0.2579;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;2.6759;2.1848;1.822;1.5059;1.2036;0.91751;0.59919;0.27327;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;2.562;2.1018;1.7417;1.4443;1.1589;0.8887;0.59104;0.286;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;2.397;1.9633;1.6429;1.3674;1.1051;0.85636;0.5771;0.29646;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;2.2432;1.8745;1.5579;1.2954;1.0506;0.81908;0.55944;0.30062;0.011301;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.1281;1.749;1.4692;1.2262;0.99593;0.78215;0.54541;0.30032;0.030833;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.0186;1.6668;1.3905;1.1692;0.94528;0.7449;0.52767;0.29951;0.050898;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;1.8533;1.5256;1.2831;1.0804;0.87431;0.68991;0.48846;0.27696;0.046952;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;1.7112;1.4091;1.185;0.99783;0.80849;0.63866;0.45086;0.25587;0.043515;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;1.5806;1.3168;1.0986;0.91803;0.74759;0.59075;0.4155;0.23705;0.041287;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.4619;1.2174;1.0156;0.84907;0.693;0.54653;0.38371;0.22;0.03921;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.3513;1.1131;0.93663;0.78532;0.64085;0.50555;0.3555;0.20421;0.037154;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.2498;1.04;0.86796;0.72637;0.59281;0.46761;0.3294;0.1896;0.035362;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/V2527-A5_St45_T.csv b/engine/test/stubs/V2527-A5/V2527-A5_St45_T.csv
new file mode 100644
index 00000000..82cde459
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/V2527-A5_St45_T.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1255.2;1255.5;1255.8;1256.5;1257.5;1259.1;1261.3;1264.1;1267.5;1271.7;1276.9;1282.7;1289.3;1296.6;1304.6;1313.2;1322.4;1331.9;1341.5;1350.9;
+500;1250.4;1250.8;1251.2;1251.8;1252.9;1254.3;1256.3;1258.8;1262;1265.9;1270.6;1276.1;1282.4;1289.5;1297.3;1305.8;1314.9;1324.5;1334.4;1344.2;
+1000;1245.6;1246;1246.5;1247.2;1248.3;1249.8;1251.8;1254.1;1257;1260.6;1264.7;1269.8;1275.7;1282.5;1290;1298.4;1307.3;1316.9;1326.9;1337.1;
+1500;1240.8;1241;1241.5;1242.3;1243.5;1245.2;1247.2;1249.6;1252.5;1255.8;1259.8;1264.2;1269.4;1275.7;1282.9;1291;1299.8;1309.3;1319.3;1329.7;
+2000;1235.3;1235.5;1236.1;1237;1238.4;1240.2;1242.4;1245;1248;1251.2;1255;1259.2;1263.9;1269.4;1276.1;1283.8;1292.3;1301.6;1311.5;1322;
+2500;1229.3;1229.6;1230.2;1231.3;1232.9;1234.9;1237.2;1240;1243.2;1246.6;1250.2;1254.4;1258.9;1263.9;1269.8;1276.8;1284.9;1294;1303.8;1314.1;
+3000;1222.8;1223.1;1223.8;1225;1226.8;1229;1231.6;1234.7;1238.1;1241.7;1245.5;1249.8;1254.1;1258.9;1264.2;1270.5;1278;1286.5;1296;1306.2;
+3500;1215.9;1216.2;1217;1218.3;1220.2;1222.5;1225.4;1228.7;1232.4;1236.3;1240.4;1245;1249.4;1254;1259.1;1264.8;1271.6;1279.5;1288.3;1298.3;
+4000;1208.7;1209;1209.8;1211.2;1213.2;1215.6;1218.7;1222.2;1226.2;1230.5;1234.9;1239.8;1244.5;1249.3;1254.2;1259.6;1265.7;1272.9;1281.3;1290.6;
+4500;1201.5;1202.1;1203;1204.3;1206.3;1208.7;1211.7;1215.3;1219.4;1224;1229.1;1234.1;1239.2;1244.3;1249.4;1254.7;1260.4;1266.8;1274.5;1283.4;
+5000;1194.2;1194.9;1195.8;1197.3;1199.3;1201.9;1205;1208.7;1212.7;1217.2;1222.4;1227.8;1233.4;1238.9;1244.3;1249.8;1255.3;1261.4;1268.2;1276.4;
+5500;1187;1187.3;1188.2;1189.7;1191.9;1194.6;1197.9;1201.7;1206;1210.7;1215.9;1221.3;1226.9;1233;1238.8;1244.6;1250.4;1256.2;1262.6;1269.9;
+6000;1179.7;1179.8;1180.2;1181.8;1184;1186.9;1190.3;1194.4;1198.8;1203.7;1209.2;1214.8;1220.7;1226.7;1232.8;1239.1;1245.2;1251.2;1257.3;1264;
+6500;1172.2;1172.4;1173.2;1174;1176.1;1178.9;1182.3;1186.5;1191.2;1196.5;1202.1;1207.9;1214.1;1220.4;1226.9;1233.3;1239.6;1246;1252.2;1258.6;
+7000;1166.2;1166.5;1167.2;1168.5;1170.2;1172.5;1174.9;1178.9;1183.4;1188.6;1194.4;1200.6;1207;1213.7;1220.5;1227.3;1234.1;1240.5;1246.9;1253.4;
+7500;1160.2;1160.5;1161.3;1162.5;1164.3;1166.5;1169.3;1172.6;1176;1181.3;1186.9;1192.9;1199.6;1206.5;1213.6;1220.8;1228.1;1235.1;1241.8;1248.1;
+8000;1154.3;1154.4;1155.3;1156.5;1158.3;1160.6;1163.3;1166.6;1170.3;1174.6;1179.5;1185.7;1192.3;1199.1;1206.3;1213.9;1221.5;1229.1;1236.4;1243.2;
+8500;1148.3;1148.4;1149.3;1150.5;1152.3;1154.5;1157.3;1160.5;1164.2;1168.4;1173.2;1178;1184.9;1192;1199.3;1206.7;1214.5;1222.5;1230.4;1237.9;
+9000;1142.6;1142.7;1143.4;1144.6;1146.4;1148.6;1151.3;1154.4;1158.1;1162.3;1167;1172.2;1177.8;1184.4;1192.1;1199.9;1207.7;1215.4;1223.7;1231.8;
+9500;1136.9;1136.7;1137.6;1138.7;1140.4;1142.6;1145.3;1148.4;1152.1;1156.2;1160.9;1165.9;1171.5;1177.5;1184.3;1192.5;1200.8;1208.9;1217;1225.1;
+10000;1131.1;1131.3;1132;1133.1;1134.7;1136.7;1139.3;1142.6;1146.2;1150.3;1154.8;1159.8;1165.2;1171.1;1177.5;1184.6;1193.3;1201.9;1210.4;1218.8;
+10500;1125.3;1125.9;1126.6;1127.7;1129.3;1131.2;1133.7;1136.5;1140.2;1144.2;1148.7;1153.7;1159.1;1164.9;1171.1;1177.9;1185.2;1194.3;1203.4;1212.2;
+11000;1120.4;1120.6;1121.3;1122.3;1123.9;1125.8;1128.2;1131;1134.3;1138.1;1142.6;1147.5;1152.9;1158.7;1164.9;1171.5;1178.6;1186.2;1195.7;1205;
+11500;1123.9;1124.2;1124.8;1125.9;1127.5;1129.4;1131.8;1134.6;1137.9;1141.6;1146.3;1151.2;1156.6;1162.3;1168.6;1175.2;1182.3;1189.9;1199.3;1208.5;
+12000;1127.4;1127.8;1128.5;1129.5;1131.1;1133;1135.4;1138.3;1141.5;1145.3;1149.9;1154.9;1160.2;1166;1172.3;1179;1186.1;1193.7;1203.1;1212.3;
+12500;1131.2;1131.4;1132.1;1133.2;1134.7;1136.7;1139.1;1141.9;1145.2;1148.9;1153.6;1158.6;1164;1169.8;1176;1182.7;1189.9;1197.5;1206.9;1216.2;
+13000;1135;1135.1;1135.8;1136.9;1138.4;1140.4;1142.8;1145.6;1148.9;1152.6;1157.3;1162.3;1167.7;1173.5;1179.8;1186.5;1193.7;1201.4;1210.7;1220;
+13500;1138.6;1138.8;1139.5;1140.6;1142.1;1144.1;1146.5;1149.4;1152.7;1156.4;1161.1;1166.1;1171.5;1177.3;1183.6;1190.4;1197.6;1205.2;1214.6;1223.9;
+14000;1142.6;1142.8;1143.5;1144.5;1146.1;1148;1150.4;1153.2;1156.5;1160.2;1164.8;1169.8;1175.3;1181.2;1187.5;1194.2;1201.4;1209.1;1218.5;1227.9;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1200.2;1200.4;1200.9;1201.7;1203.1;1204.9;1207.3;1210.3;1214.2;1218.8;1224.2;1230;1236;1242.4;1249.2;1256.5;1264.3;1272.8;1282.1;1292.4;
+500;1193.4;1193.4;1193.9;1194.8;1196;1197.8;1200.1;1203.1;1207.1;1212;1217.4;1223.4;1229.7;1236.2;1243;1250.2;1257.9;1266.1;1275.1;1285;
+1000;1186.3;1186.5;1187;1187.9;1189.1;1190.8;1193.2;1196.3;1200.2;1204.8;1210.4;1216.5;1223;1229.8;1236.7;1243.9;1251.5;1259.6;1268.3;1277.8;
+1500;1179.2;1179.8;1180.3;1181.1;1182.3;1184;1186.3;1189.4;1193.3;1198.2;1203.5;1209.5;1216;1223;1230.2;1237.5;1245.1;1253.2;1261.6;1270.8;
+2000;1173.2;1173.3;1173.7;1174.5;1175.7;1177.3;1179.6;1182.6;1186.5;1191.3;1196.7;1202.7;1209.1;1216;1223.4;1231;1238.7;1246.7;1255.1;1264;
+2500;1167;1167.1;1167.6;1168.3;1169.4;1170.9;1173.1;1176.1;1179.8;1184.5;1189.8;1195.7;1202.2;1209.1;1216.5;1224.1;1232.1;1240.2;1248.5;1257.3;
+3000;1160.9;1161.5;1161.9;1162.5;1163.5;1164.9;1167;1169.9;1173.4;1177.7;1183;1188.8;1195.2;1202.1;1209.5;1217.3;1225.3;1233.5;1241.9;1250.6;
+3500;1156.1;1156.3;1156.6;1157.2;1158.1;1159.5;1161.4;1164;1167.3;1171.3;1176.4;1181.9;1188.1;1195;1202.4;1210.3;1218.5;1226.9;1235.2;1243.9;
+4000;1151.5;1151.6;1151.9;1152.4;1153.2;1154.4;1156.2;1158.6;1161.6;1165.3;1170.1;1175.3;1181.2;1187.9;1195.2;1203.1;1211.4;1220;1228.7;1237.2;
+4500;1146.8;1147.4;1147.7;1148.2;1149.1;1150.3;1151.9;1153.9;1156.5;1159.8;1164.1;1168.9;1174.6;1180.9;1188;1195.8;1204.1;1212.8;1221.8;1230.7;
+5000;1143;1143.1;1143.4;1144;1145;1146.3;1148;1150;1152.4;1155.3;1158.7;1163;1168.2;1174.2;1181;1188.5;1196.7;1205.4;1214.5;1223.8;
+5500;1138.3;1138.4;1138.8;1139.6;1140.6;1142.1;1143.9;1146;1148.5;1151.3;1154.5;1158.3;1162.6;1167.8;1174.1;1181.3;1189.3;1198;1207.1;1216.5;
+6000;1133.2;1133.4;1133.9;1134.7;1135.9;1137.5;1139.5;1141.8;1144.4;1147.3;1150.5;1154.1;1158;1162.5;1168;1174.4;1182;1190.4;1199.5;1209;
+6500;1128.2;1128.8;1129.3;1130.2;1131.4;1133;1134.9;1137.2;1140.1;1143.1;1146.4;1149.9;1153.8;1157.9;1162.8;1168.5;1175.2;1183;1191.8;1201.3;
+7000;1123.6;1123.8;1124.3;1125.3;1126.7;1128.5;1130.6;1133.2;1135.9;1138.9;1142.1;1145.9;1149.7;1153.7;1158.1;1163.2;1169.3;1176.4;1184.4;1193.5;
+7500;1118.2;1118.4;1119;1120.1;1121.6;1123.5;1125.8;1128.6;1131.6;1134.9;1138.3;1142;1145.6;1149.6;1153.9;1158.5;1163.9;1170.3;1177.8;1186.2;
+8000;1112.4;1112.7;1113.4;1114.5;1116.1;1118.1;1120.6;1123.5;1126.8;1130.3;1134;1138.1;1142;1145.9;1149.8;1154.2;1159.1;1164.8;1171.6;1179.4;
+8500;1106.5;1106.6;1107.3;1108.5;1110.1;1112.3;1114.9;1118;1121.5;1125.2;1129.2;1133.6;1137.9;1142.2;1146.5;1150.6;1154.8;1159.9;1165.9;1173.1;
+9000;1099.9;1100.2;1101;1102.2;1104;1106.2;1109;1112.2;1115.7;1119.7;1124.1;1128.6;1133.3;1138;1142.6;1147.2;1151.6;1156;1160.9;1167.2;
+9500;1093.2;1093.3;1094.1;1095.4;1097.3;1099.7;1102.6;1106;1109.8;1113.9;1118.5;1123.2;1128.1;1133.2;1138.3;1143.3;1148.1;1152.7;1157.3;1162.4;
+10000;1087.1;1087.3;1088;1089.1;1090.7;1092.7;1095.8;1099.4;1103.3;1107.8;1112.5;1117.4;1122.6;1127.9;1133.4;1138.9;1144.1;1149.2;1154;1158.8;
+10500;1080.9;1081.5;1082.2;1083.3;1084.9;1086.9;1089.5;1092.1;1096.3;1101.1;1106;1111.2;1116.7;1122.3;1128.1;1133.8;1139.6;1145.1;1150.5;1155.4;
+11000;1075.5;1075.7;1076.4;1077.5;1079.1;1081.1;1083.7;1086.6;1090.1;1093.6;1099;1104.5;1110.3;1116.2;1122.3;1128.5;1134.6;1140.6;1146.4;1151.9;
+11500;1078.9;1079.2;1079.9;1081;1082.6;1084.6;1087.2;1090.1;1093.6;1097.2;1102.5;1108;1113.8;1119.8;1125.9;1132.1;1138.2;1144.2;1149.9;1155.3;
+12000;1082.3;1082.7;1083.4;1084.5;1086.1;1088.1;1090.7;1093.7;1097.1;1100.7;1106.1;1111.6;1117.4;1123.4;1129.5;1135.7;1141.8;1147.9;1153.6;1158.9;
+12500;1086;1086.2;1086.9;1088;1089.6;1091.7;1094.3;1097.3;1100.7;1104.3;1109.6;1115.2;1121;1127;1133.1;1139.3;1145.5;1151.6;1157.3;1162.6;
+13000;1089.7;1089.8;1090.5;1091.6;1093.2;1095.3;1097.8;1100.8;1104.3;1107.8;1113.2;1118.8;1124.6;1130.7;1136.8;1143;1149.2;1155.3;1161;1166.4;
+13500;1093.2;1093.5;1094.1;1095.3;1096.8;1098.9;1101.4;1104.4;1107.9;1111.4;1116.8;1122.4;1128.3;1134.3;1140.5;1146.7;1152.9;1159;1164.7;1170.1;
+14000;1097.1;1097.4;1098;1099.2;1100.7;1102.8;1105.3;1108.2;1111.6;1115.2;1120.5;1126.1;1132;1138;1144.2;1150.5;1156.7;1162.8;1168.5;1173.9;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1150.6;1150.7;1150.9;1151.4;1152.3;1153.4;1154.9;1156.9;1159.5;1163.2;1167.8;1173.3;1179.7;1186.8;1194.5;1202.7;1211.3;1220.5;1230.3;1240.6;
+500;1144.7;1144.8;1145.1;1145.6;1146.4;1147.5;1148.9;1150.7;1153.3;1156.9;1161.2;1166.6;1172.8;1179.8;1187.4;1195.6;1204.2;1213.3;1223;1233.2;
+1000;1138.8;1139;1139.3;1139.8;1140.6;1141.7;1143.1;1145;1147.4;1150.6;1154.9;1160;1166;1172.9;1180.4;1188.5;1197.1;1206.2;1215.7;1225.8;
+1500;1132.8;1133;1133.3;1133.9;1134.7;1135.8;1137.3;1139.3;1141.7;1144.9;1149;1153.9;1159.5;1166;1173.4;1181.3;1189.9;1198.9;1208.4;1218.4;
+2000;1126.6;1126.7;1127.1;1127.7;1128.6;1129.9;1131.4;1133.5;1136;1139.2;1143.4;1148.1;1153.5;1159.5;1166.4;1174.2;1182.6;1191.6;1201.1;1211;
+2500;1120.4;1120.4;1120.6;1121.3;1122.3;1123.6;1125.4;1127.5;1130.2;1133.5;1137.7;1142.4;1147.7;1153.6;1160;1167.1;1175.4;1184.3;1193.7;1203.6;
+3000;1113.2;1113.3;1113.7;1114.5;1115.6;1117;1118.9;1121.3;1124.2;1127.7;1132;1136.8;1142;1147.7;1153.9;1160.8;1168.4;1176.9;1186.2;1196.1;
+3500;1106;1106.3;1106.8;1107.5;1108.7;1110.2;1112.2;1114.8;1117.9;1121.7;1126.2;1131;1136.3;1141.9;1148;1154.6;1161.9;1169.9;1178.8;1188.5;
+4000;1099.6;1099.8;1100.2;1100.9;1102;1103.5;1105.4;1107.9;1111.3;1115.4;1120.1;1125.1;1130.5;1136.1;1142.2;1148.6;1155.6;1163.3;1171.8;1181;
+4500;1093.2;1093.3;1093.6;1094.4;1095.4;1096.9;1099;1101.6;1104.8;1108.9;1113.6;1118.9;1124.5;1130.2;1136.3;1142.7;1149.5;1156.9;1165;1173.9;
+5000;1086.6;1086.7;1087.1;1087.8;1088.9;1090.4;1092.4;1095.1;1098.5;1102.6;1107.4;1112.7;1118.2;1124.2;1130.3;1136.7;1143.5;1150.7;1158.4;1166.9;
+5500;1080;1080.4;1080.8;1081.5;1082.5;1084;1086;1088.6;1092;1096.2;1101.1;1106.4;1112.1;1118.1;1124.2;1130.7;1137.5;1144.5;1152.1;1160.2;
+6000;1074.9;1075;1075.3;1075.8;1076.7;1077.9;1079.7;1082.3;1085.7;1089.7;1094.7;1100;1105.8;1111.9;1118.3;1124.8;1131.3;1138.4;1145.8;1153.7;
+6500;1070.2;1070.3;1070.6;1071;1071.8;1072.9;1074.6;1076.8;1079.8;1083.5;1088.2;1093.5;1099.3;1105.5;1112;1118.8;1125.6;1132.5;1139.6;1147.4;
+7000;1066.2;1066.2;1066.5;1066.8;1067.5;1068.5;1070;1072.1;1074.9;1078.3;1082.6;1087.3;1092.7;1098.9;1105.5;1112.4;1119.6;1126.8;1133.9;1141.2;
+7500;1062.1;1062.7;1062.9;1063.2;1063.8;1064.7;1066;1067.9;1070.4;1073.5;1077.4;1081.9;1086.9;1092.6;1098.8;1105.8;1113.1;1120.6;1128.1;1135.5;
+8000;1059.3;1059.4;1059.6;1059.9;1060.5;1061.4;1062.7;1064.3;1066.5;1069.2;1072.8;1076.8;1081.5;1086.9;1092.9;1099.5;1106.5;1114.1;1122;1129.6;
+8500;1056.2;1056.1;1056.4;1056.8;1057.4;1058.3;1059.6;1061.2;1063.2;1065.6;1068.5;1072.2;1076.5;1081.5;1087.2;1093.5;1100.5;1107.8;1115.3;1123.5;
+9000;1052.6;1052.6;1052.9;1053.5;1054.2;1055.3;1056.7;1058.3;1060.2;1062.5;1065;1068.3;1072;1076.5;1081.7;1087.7;1094.4;1101.7;1109.3;1117.2;
+9500;1048.6;1048.8;1049.1;1049.7;1050.7;1052;1053.5;1055.3;1057.4;1059.7;1062.1;1064.8;1068.1;1072;1076.7;1082.2;1088.5;1095.5;1103.1;1111.1;
+10000;1044.2;1044.4;1044.8;1045.6;1046.7;1048.1;1049.8;1051.9;1054.2;1056.7;1059.3;1061.9;1065.1;1068.4;1072.3;1077.2;1082.9;1089.6;1096.9;1104.8;
+10500;1039.4;1039.5;1040;1040.9;1042.1;1043.7;1045.7;1048;1050.5;1053.2;1056.1;1059;1062.2;1065.3;1068.8;1072.9;1077.9;1083.9;1090.8;1098.5;
+11000;1034.1;1034.3;1034.9;1035.8;1037.2;1038.9;1041;1043.5;1046.3;1049.3;1052.6;1055.9;1059.1;1062.4;1065.8;1069.4;1073.7;1078.9;1085.1;1092.3;
+11500;1037.4;1037.7;1038.2;1039.2;1040.5;1042.3;1044.4;1046.8;1049.7;1052.7;1056;1059.3;1062.6;1065.8;1069.2;1072.9;1077.1;1082.4;1088.6;1095.7;
+12000;1040.7;1041;1041.6;1042.6;1043.9;1045.7;1047.8;1050.3;1053.1;1056.1;1059.4;1062.7;1066;1069.3;1072.6;1076.3;1080.6;1085.9;1092.1;1099.3;
+12500;1044.3;1044.5;1045;1046;1047.3;1049.1;1051.2;1053.7;1056.5;1059.5;1062.9;1066.2;1069.5;1072.7;1076.1;1079.8;1084.1;1089.4;1095.7;1102.9;
+13000;1047.8;1047.9;1048.5;1049.4;1050.8;1052.5;1054.7;1057.2;1060;1063;1066.4;1069.7;1073;1076.2;1079.6;1083.3;1087.7;1093;1099.3;1106.5;
+13500;1051.3;1051.5;1052.1;1053;1054.4;1056.1;1058.2;1060.7;1063.5;1066.5;1069.9;1073.2;1076.5;1079.8;1083.2;1086.9;1091.2;1096.6;1102.9;1110.1;
+14000;1055.2;1055.3;1055.9;1056.9;1058.2;1059.9;1062;1064.5;1067.2;1070.2;1073.5;1076.7;1080;1083.3;1086.7;1090.5;1094.9;1100.2;1106.6;1113.8;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1101.4;1101.5;1101.9;1102.5;1103.5;1104.8;1106.6;1109;1111.8;1115.3;1119.4;1124.4;1130.2;1137.1;1144.7;1153;1162;1171.4;1181.4;1191.7;
+500;1095;1095;1095.4;1096;1096.9;1098.1;1099.8;1102;1104.9;1108.4;1112.5;1117.4;1123.2;1130;1137.6;1145.8;1154.7;1164;1173.9;1184.3;
+1000;1088.5;1088.5;1088.9;1089.4;1090.3;1091.5;1093.2;1095.4;1098.2;1101.6;1105.6;1110.6;1116.3;1123;1130.5;1138.6;1147.4;1156.6;1166.4;1176.8;
+1500;1082;1082.1;1082.4;1082.9;1083.8;1085;1086.6;1088.8;1091.6;1095;1099.1;1103.8;1109.4;1116.1;1123.4;1131.4;1140;1149.2;1158.9;1169.2;
+2000;1075.4;1075.6;1075.9;1076.5;1077.3;1078.4;1080;1082.2;1085;1088.4;1092.6;1097.4;1102.9;1109.3;1116.4;1124.2;1132.7;1141.8;1151.4;1161.6;
+2500;1069.2;1069.3;1069.6;1070.1;1070.9;1072;1073.5;1075.7;1078.5;1081.9;1086;1090.9;1096.5;1102.8;1109.7;1117.1;1125.4;1134.4;1143.9;1153.9;
+3000;1063.1;1063.2;1063.4;1063.9;1064.6;1065.6;1067.1;1069.2;1071.9;1075.3;1079.5;1084.4;1090;1096.3;1103.2;1110.5;1118.4;1127;1136.4;1146.3;
+3500;1057.4;1057.5;1057.7;1058.1;1058.7;1059.6;1060.8;1062.8;1065.5;1068.8;1073;1077.9;1083.5;1089.8;1096.6;1103.9;1111.6;1119.9;1128.8;1138.6;
+4000;1051.8;1052.2;1052.4;1052.8;1053.3;1054.2;1055.3;1057;1059.4;1062.4;1066.5;1071.4;1077;1083.2;1090;1097.3;1104.9;1113.1;1121.8;1131.1;
+4500;1046.8;1046.9;1047.1;1047.5;1048;1048.9;1050;1051.6;1053.8;1056.7;1060.5;1065;1070.5;1076.7;1083.4;1090.6;1098.2;1106.3;1114.8;1123.9;
+5000;1041.8;1041.9;1041.8;1042.2;1042.8;1043.6;1044.7;1046.2;1048.5;1051.3;1054.9;1059.3;1064.4;1070.3;1076.8;1083.9;1091.4;1099.5;1107.9;1116.8;
+5500;1036.8;1036.8;1037;1037.4;1037.9;1038.7;1039.7;1041;1043.2;1046;1049.4;1053.8;1058.7;1064.3;1070.5;1077.3;1084.7;1092.6;1101;1109.8;
+6000;1031.9;1032;1032.2;1032.6;1033.2;1034;1035.1;1036.5;1038.5;1041;1044.2;1048.4;1053.1;1058.5;1064.4;1071.1;1078.2;1085.8;1094;1102.8;
+6500;1026.6;1026.7;1027;1027.5;1028.2;1029.1;1030.4;1031.9;1034;1036.6;1039.8;1043.7;1048;1052.9;1058.6;1064.9;1071.9;1079.4;1087.3;1095.7;
+7000;1021.4;1021.4;1021.5;1022;1022.8;1023.9;1025.3;1027.1;1029.3;1032;1035.5;1039.3;1043.5;1048.2;1053.3;1059;1065.7;1073;1080.8;1089.1;
+7500;1015.3;1015.4;1015.7;1016.3;1017.1;1018.3;1019.8;1021.8;1024.3;1027.3;1031;1034.9;1039.1;1043.7;1048.6;1054;1059.9;1066.7;1074.4;1082.5;
+8000;1009.5;1009.6;1010;1010.5;1011.3;1012.5;1014.1;1016.3;1018.9;1022.2;1026.2;1030.3;1034.6;1039.2;1044;1049.3;1054.9;1061.2;1068.1;1076;
+8500;1003.9;1004;1004.3;1004.8;1005.7;1006.9;1008.5;1010.6;1013.4;1016.8;1020.9;1025.3;1029.9;1034.6;1039.5;1044.7;1050.2;1056.1;1062.7;1069.9;
+9000;998.17;998.43;998.74;999.28;1000.1;1001.3;1002.9;1005.1;1007.9;1011.4;1015.6;1020.1;1024.8;1029.8;1034.9;1040.1;1045.5;1051.3;1057.5;1064.4;
+9500;992.36;993.11;993.39;993.89;994.67;995.8;997.41;999.6;1002.6;1005.9;1010.1;1014.7;1019.6;1024.7;1030;1035.4;1040.9;1046.5;1052.6;1059.1;
+10000;988.15;988.24;988.48;988.92;989.62;990.67;992.19;994.29;997.1;1000.5;1004.6;1009.1;1014.1;1019.4;1024.9;1030.6;1036.2;1041.8;1047.8;1054.1;
+10500;983.97;984.03;984.21;984.56;985.14;986.06;987.43;989.41;992.01;995.21;999.25;1003.6;1008.5;1013.7;1019.4;1025.3;1031.4;1037.2;1043.1;1049.2;
+11000;980.41;980.46;980.62;980.92;981.41;982.18;983.37;985.11;987.41;990.32;994.08;998.23;1002.9;1008.1;1013.7;1019.7;1026;1032.3;1038.5;1044.6;
+11500;983.63;983.7;983.86;984.15;984.65;985.43;986.62;988.37;990.68;993.6;997.38;1001.5;1006.2;1011.4;1017.1;1023.1;1029.4;1035.8;1041.9;1048;
+12000;986.84;986.96;987.11;987.41;987.91;988.7;989.89;991.65;993.98;996.92;1000.7;1004.8;1009.5;1014.7;1020.4;1026.5;1032.8;1039.2;1045.4;1051.5;
+12500;990.2;990.25;990.41;990.71;991.21;992;993.2;994.97;997.31;1000.3;1004;1008.2;1012.9;1018.1;1023.8;1029.9;1036.3;1042.7;1048.9;1055;
+13000;993.56;993.63;993.73;994.04;994.54;995.33;996.54;998.32;1000.7;1003.6;1007.4;1011.5;1016.3;1021.5;1027.3;1033.4;1039.8;1046.2;1052.4;1058.5;
+13500;997.19;997.23;997.37;997.66;998.13;998.89;1000.1;1001.8;1004;1007.1;1010.7;1014.9;1019.7;1025;1030.7;1036.9;1043.3;1049.7;1055.9;1062.1;
+14000;1000.9;1000.9;1001.1;1001.4;1001.8;1002.6;1003.8;1005.5;1007.8;1010.8;1014.4;1018.5;1023.2;1028.4;1034.2;1040.4;1046.8;1053.2;1059.5;1065.7;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1057.5;1057.6;1058;1058.8;1060;1061.6;1063.2;1065.3;1067.8;1071;1074.7;1079.3;1084.6;1090.5;1097.2;1104.9;1113.1;1121.8;1130.8;1140.3;
+500;1050.7;1050.8;1051.2;1052;1053.1;1054.6;1056.1;1058.1;1060.6;1063.8;1067.6;1072.2;1077.5;1083.5;1090.3;1098;1106.3;1115;1124.1;1133.5;
+1000;1043.9;1044.1;1044.5;1045.2;1046.3;1047.7;1049.3;1051.3;1053.7;1056.6;1060.4;1065.1;1070.4;1076.4;1083.3;1091.1;1099.5;1108.2;1117.2;1126.7;
+1500;1037;1037.4;1037.8;1038.5;1039.5;1041;1042.5;1044.5;1046.9;1049.8;1053.6;1058.1;1063.2;1069.4;1076.3;1084.1;1092.4;1101.2;1110.3;1119.7;
+2000;1030.7;1030.8;1031.2;1031.8;1032.8;1034.2;1035.7;1037.7;1040.2;1043.1;1046.9;1051.3;1056.4;1062.3;1069.3;1077;1085.3;1094.1;1103.3;1112.7;
+2500;1024.3;1024.2;1024.6;1025.2;1026.1;1027.5;1029;1031;1033.4;1036.3;1040.1;1044.5;1049.6;1055.6;1062.4;1069.9;1078.2;1086.9;1096.1;1105.6;
+3000;1017.7;1017.8;1018.1;1018.7;1019.5;1020.8;1022.3;1024.3;1026.7;1029.6;1033.4;1037.7;1042.9;1048.8;1055.7;1063.1;1071.1;1079.7;1088.9;1098.4;
+3500;1011.5;1011.7;1012;1012.5;1013.3;1014.5;1015.9;1017.8;1020;1022.9;1026.7;1031;1036.1;1042.1;1048.9;1056.3;1064.3;1072.7;1081.5;1091.1;
+4000;1005.5;1005.6;1005.9;1006.4;1007.2;1008.3;1009.7;1011.6;1013.9;1016.6;1020.1;1024.3;1029.4;1035.4;1042.1;1049.5;1057.4;1065.7;1074.5;1083.7;
+4500;999.74;999.82;1000.1;1000.5;1001.2;1002.1;1003.6;1005.5;1007.7;1010.5;1013.9;1018;1022.9;1028.6;1035.3;1042.6;1050.4;1058.7;1067.4;1076.6;
+5000;994.27;994.35;994.59;995.01;995.66;996.58;997.94;999.68;1001.8;1004.4;1007.8;1011.9;1016.7;1022.4;1028.8;1035.8;1043.5;1051.7;1060.4;1069.4;
+5500;988.82;988.94;989.16;989.56;990.18;991.06;992.42;994.18;996.34;998.98;1002.1;1005.9;1010.6;1016.2;1022.4;1029.3;1036.7;1044.7;1053.2;1062.3;
+6000;983.37;983.61;983.82;984.19;984.77;985.61;986.94;988.71;990.88;993.55;996.75;1000.6;1005.1;1010.3;1016.2;1022.9;1030.2;1037.9;1046.1;1055;
+6500;978.31;978.37;978.56;978.91;979.46;980.25;981.53;983.28;985.46;988.14;991.39;995.27;999.8;1004.9;1010.6;1016.8;1023.7;1031.3;1039.4;1048;
+7000;973.26;973.36;973.53;973.82;974.3;975.01;976.2;977.92;980.07;982.76;986.11;989.96;994.51;999.65;1005.2;1011.3;1017.8;1024.9;1032.7;1041.2;
+7500;969.3;968.79;968.91;969.15;969.52;970.1;971.08;972.68;974.75;977.42;980.79;984.69;989.24;994.34;999.93;1005.9;1012.2;1019.1;1026.5;1034.4;
+8000;964.44;964.48;964.6;964.82;965.17;965.7;966.55;967.98;969.82;972.25;975.49;979.42;984;989.04;994.57;1000.5;1006.7;1013.4;1020.6;1028.3;
+8500;959.59;960.22;960.35;960.57;960.92;961.44;962.21;963.54;965.3;967.59;970.64;974.39;978.8;983.77;989.22;995.07;1001.3;1007.8;1014.8;1022.3;
+9000;955.88;955.93;956.07;956.31;956.68;957.23;958;959.24;960.96;963.16;966.08;969.66;973.92;978.76;984.01;989.66;995.82;1002.3;1009.2;1016.5;
+9500;951.45;951.5;951.66;951.94;952.36;952.96;953.79;955;956.7;958.87;961.65;965.19;969.23;973.85;979.02;984.58;990.48;996.8;1003.6;1010.7;
+10000;947;947.07;946.99;947.33;947.83;948.52;949.45;950.71;952.45;954.66;957.44;960.91;964.79;969.18;974.07;979.53;985.39;991.58;998.14;1005;
+10500;941.54;941.62;941.87;942.29;942.91;943.76;944.86;946.24;948.09;950.42;953.3;956.75;960.53;964.73;969.37;974.53;980.27;986.42;992.9;999.73;
+11000;936.07;936.07;936.34;936.82;937.53;938.5;939.8;941.44;943.51;946.04;949.17;952.58;956.35;960.44;964.9;969.79;975.21;981.23;987.65;994.41;
+11500;939.13;939.24;939.51;939.99;940.7;941.68;942.98;944.63;946.69;949.24;952.39;955.81;959.59;963.69;968.16;973.07;978.5;984.54;990.97;997.74;
+12000;942.19;942.43;942.71;943.19;943.9;944.88;946.18;947.84;949.92;952.48;955.63;959.06;962.86;966.97;971.45;976.38;981.83;987.87;994.32;1001.1;
+12500;945.57;945.66;945.93;946.41;947.13;948.12;949.42;951.07;953.17;955.73;958.9;962.34;966.15;970.27;974.77;979.71;985.17;991.24;997.7;1004.4;
+13000;949.08;949.16;949.42;949.88;950.57;951.53;952.78;954.39;956.45;959.02;962.19;965.65;969.46;973.61;978.12;983.07;988.54;994.63;1001.1;1007.8;
+13500;952.77;952.85;953.12;953.59;954.28;955.24;956.51;958.13;960.17;962.68;965.78;969.14;972.84;976.96;981.49;986.45;991.94;998.04;1004.4;1011.1;
+14000;956.48;956.61;956.88;957.35;958.05;959.02;960.3;961.94;963.99;966.52;969.65;973.03;976.76;980.8;985.19;989.99;995.36;1001.5;1007.8;1014.5;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1017;1017;1017.5;1018.2;1019.5;1020.8;1021.9;1023.5;1025.6;1028.1;1031.2;1034.4;1038;1042.1;1047;1052.7;1059.5;1067.1;1075.1;1083.8;
+500;1010.2;1010.3;1010.7;1011.5;1012.7;1013.9;1015;1016.5;1018.6;1021.1;1024.3;1027.7;1031.4;1035.6;1040.6;1046.5;1053.4;1061;1069.1;1077.6;
+1000;1003.4;1003.5;1004;1004.7;1005.9;1007.1;1008.2;1009.7;1011.8;1014.2;1017.4;1020.9;1024.7;1029.1;1034.2;1040.2;1047.2;1054.9;1063;1071.4;
+1500;996.58;996.72;997.15;997.94;999.15;1000.3;1001.5;1003;1005.1;1007.6;1010.7;1014.3;1018;1022.5;1027.7;1033.9;1041;1048.7;1056.8;1065.3;
+2000;989.7;989.84;990.28;991.06;992.26;993.36;994.6;996.2;998.32;1000.9;1004;1007.7;1011.5;1015.9;1021.1;1027.4;1034.6;1042.4;1050.5;1059;
+2500;982.82;982.97;983.39;984.17;985.35;986.43;987.7;989.32;991.23;994.06;997.3;1001.1;1005;1009.5;1014.8;1021;1028.2;1036;1044.2;1052.7;
+3000;976.33;976.46;976.86;977.58;978.69;979.68;980.9;982.46;984.39;987.21;990.47;994.31;998.52;1003.1;1008.5;1014.7;1021.8;1029.6;1037.7;1046.2;
+3500;969.82;970.01;970.37;971.07;972.14;973.12;974.36;975.94;977.8;980.5;983.64;987.5;991.84;996.58;1002.1;1008.5;1015.5;1023.2;1031.2;1039.7;
+4000;964;964.12;964.47;965.1;966.06;966.94;968.07;969.52;971.32;974;977.15;980.88;985.19;989.95;995.63;1002.2;1009.2;1016.8;1024.8;1033.1;
+4500;958.18;958.24;958.58;959.2;960.12;961.01;962.16;963.62;965.37;967.82;970.8;974.5;978.8;983.54;989.12;995.69;1002.9;1010.4;1018.4;1026.7;
+5000;952.31;952.41;952.74;953.33;954.22;955.12;956.28;957.76;959.55;961.95;964.96;968.55;972.61;977.21;982.87;989.35;996.4;1004;1011.9;1020.2;
+5500;946.45;946.65;946.97;947.53;948.38;949.29;950.45;951.94;953.74;956.27;959.13;962.73;966.81;971.48;976.9;983.09;990.14;997.6;1005.4;1013.6;
+6000;940.86;940.96;941.26;941.79;942.59;943.5;944.66;946.15;947.96;950.47;953.32;956.93;961.05;965.77;971.25;977.43;984.12;991.26;999.06;1007.1;
+6500;935.28;935.36;935.63;936.12;936.87;937.77;938.93;940.4;942.22;944.7;947.55;951.15;955.29;960.08;965.6;971.76;978.4;985.45;992.84;1000.7;
+7000;930.72;930.19;930.44;930.87;931.54;932.36;933.42;934.8;936.54;938.98;941.82;945.4;949.54;954.37;959.94;966.07;972.68;979.66;987.02;994.71;
+7500;925;925.07;925.31;925.72;926.34;927.16;928.23;929.6;931.29;933.59;936.24;939.7;943.82;948.67;954.26;960.37;966.93;973.86;981.16;988.82;
+8000;919.28;919.98;920.2;920.59;921.18;922.01;923.09;924.46;926.16;928.24;931.13;934.45;938.39;943.04;948.56;954.65;961.16;968.04;975.27;982.87;
+8500;914.84;914.92;915.13;915.49;916.05;916.88;917.98;919.38;921.1;923.19;926;929.27;933.2;937.85;943.17;949;955.36;962.19;969.38;976.91;
+9000;910.41;909.9;910.09;910.44;910.97;911.79;912.91;914.33;916.08;918.2;920.96;924.18;928.06;932.7;937.96;943.72;949.89;956.42;963.45;970.93;
+9500;904.86;904.91;905.09;905.41;905.91;906.72;907.86;909.3;911.09;913.27;916;919.2;923.03;927.6;932.78;938.45;944.54;951.02;957.84;964.98;
+10000;899.28;899.98;900.15;900.45;900.92;901.7;902.85;904.29;906.11;908.34;911.01;914.29;918.12;922.61;927.65;933.21;939.19;945.58;952.36;959.47;
+10500;894.96;895.02;895.18;895.46;895.91;896.65;897.83;899.3;901.15;903.42;906.15;909.42;913.27;917.71;922.64;928.02;933.88;940.16;946.84;953.91;
+11000;890.64;890.28;890.4;890.63;891.02;891.67;892.8;894.26;896.14;898.47;901.34;904.59;908.46;912.86;917.71;922.96;928.62;934.76;941.33;948.3;
+11500;893.29;893.32;893.45;893.69;894.07;894.73;895.88;897.34;899.23;901.54;904.38;907.63;911.51;915.92;920.78;926.04;931.72;937.87;944.45;951.44;
+12000;895.93;896.4;896.53;896.77;897.15;897.82;898.98;900.43;902.29;904.59;907.44;910.71;914.59;919.01;923.87;929.14;934.83;940.99;947.6;954.61;
+12500;899.76;899.8;899.91;900.12;900.46;901.07;902.13;903.49;905.35;907.67;910.47;913.8;917.69;922.12;926.99;932.27;937.97;944.16;950.78;957.8;
+13000;903.41;903.44;903.55;903.76;904.11;904.73;905.81;907.19;908.97;911.19;913.95;917.08;920.81;925.25;930.14;935.43;941.14;947.34;953.98;961.03;
+13500;907.06;907.14;907.26;907.47;907.83;908.47;909.56;910.95;912.75;914.98;917.75;920.91;924.67;928.94;933.64;938.72;944.34;950.56;957.21;964.28;
+14000;910.72;910.89;911.01;911.23;911.59;912.24;913.34;914.75;916.56;918.82;921.61;924.8;928.58;932.88;937.61;942.73;948.26;954.24;960.63;967.56;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;977.16;977.31;977.65;978.27;979.22;979.75;980.5;981.25;982.77;984.4;985.97;987.59;989.48;991.67;994.63;998.83;1004.1;1010.6;1018.4;1026.9;
+500;970.18;970.48;970.85;971.49;972.13;972.9;973.61;974.36;975.92;977.63;979.37;981.05;983.06;985.43;988.24;992.64;997.99;1004.6;1012.4;1020.8;
+1000;963.55;963.69;964.06;964.72;965.37;966.16;966.92;967.7;969.23;970.91;972.57;974.51;976.62;979.15;982.14;986.48;991.84;998.58;1006.3;1014.7;
+1500;956.92;956.9;957.28;957.95;958.6;959.41;960.21;961.04;962.62;964.38;966.1;968.02;970.18;972.86;976.03;980.34;985.74;992.48;1000.3;1008.5;
+2000;950;950.12;950.5;951.2;951.85;952.68;953.5;954.39;956.01;957.85;959.67;961.7;963.91;966.6;969.88;974.2;979.69;986.41;994.1;1002.4;
+2500;943.39;943.52;943.9;944.58;945.18;945.98;946.8;947.73;949.41;951.31;953.24;955.37;957.68;960.49;963.92;968.05;973.64;980.37;987.97;996.15;
+3000;937.35;937.47;937.82;938.45;939.28;939.7;940.42;941.27;942.89;944.76;946.8;949.02;951.45;954.37;957.98;962.17;967.66;974.35;981.86;989.92;
+3500;931.35;931.51;931.87;932.52;933.35;933.79;934.54;935.35;936.86;938.61;940.52;942.74;945.21;948.21;952.01;956.37;961.82;968.47;975.76;983.71;
+4000;925.38;925.58;925.94;926.6;927.42;927.88;928.66;929.53;931.06;932.87;934.83;936.93;939.22;942.13;945.93;950.54;956;962.65;969.9;977.56;
+4500;919.41;919.67;920.04;920.7;921.51;921.98;922.78;923.69;925.24;927.12;929.34;931.38;933.79;936.62;940.23;944.73;950.26;956.82;964.03;971.6;
+5000;913.67;913.78;914.15;914.81;915.6;916.1;916.92;917.86;919.39;921.35;923.65;925.83;928.34;931.28;934.98;939.47;944.74;951.01;958.13;965.65;
+5500;907.92;907.92;908.28;908.94;909.71;910.23;911.07;912.05;913.56;915.58;917.93;920.28;922.89;925.96;929.84;934.36;939.77;945.83;952.31;959.67;
+6000;902.24;902.34;902.68;903.28;903.98;904.43;905.23;906.24;907.73;909.8;912.19;914.73;917.4;920.58;924.57;929.22;934.75;940.84;947.31;954.07;
+6500;896.8;896.9;897.24;897.85;898.54;899.03;899.84;900.78;902.12;904.07;906.45;909.15;911.89;915.19;919.27;924.04;929.66;935.8;942.26;948.99;
+7000;891.3;891.41;891.74;892.34;893.02;893.54;894.38;895.37;896.73;898.78;901.1;903.75;906.35;909.77;913.92;918.84;924.52;930.68;937.16;943.88;
+7500;885.8;885.91;886.24;886.83;887.49;888.05;888.91;889.95;891.53;893.39;895.77;898.61;901.33;904.63;908.58;913.57;919.32;925.5;931.97;938.71;
+8000;880.29;880.38;880.73;881.31;881.96;882.55;883.45;884.51;886.12;888;890.42;893.3;896.23;899.73;903.77;908.61;914.1;920.25;926.74;933.47;
+8500;874.82;874.92;875.23;875.79;876.43;877.06;877.99;879.1;880.72;882.62;885.06;887.96;891.07;894.71;898.93;903.83;909.35;915.27;921.43;928.17;
+9000;869.35;869.46;869.76;870.3;870.93;871.59;872.53;873.68;875.31;877.24;879.7;882.63;885.9;889.61;893.96;899.04;904.55;910.47;916.66;923.07;
+9500;863.93;864.03;864.31;864.82;865.44;866.13;867.09;868.27;869.9;871.85;874.33;877.28;880.69;884.47;888.93;894.1;899.73;905.6;911.79;918.23;
+10000;858.51;858.6;858.9;859.38;859.99;860.69;861.67;862.87;864.32;866.47;868.96;872.02;875.44;879.33;883.87;889.09;894.75;900.71;906.85;913.29;
+10500;853.2;853.28;853.54;853.99;854.58;855.29;856.27;857.49;858.97;861.08;863.6;866.68;870.16;874.16;878.8;884.02;889.69;895.67;901.87;908.28;
+11000;847.9;847.99;848.23;848.64;849.22;849.94;850.92;852.14;853.65;855.7;858.27;861.34;864.88;868.97;873.69;878.93;884.56;890.53;896.79;903.22;
+11500;850.82;850.87;851.1;851.52;852.09;852.82;853.8;855.03;856.54;858.62;861.17;864.27;867.82;871.91;876.65;881.89;887.53;893.51;899.77;906.15;
+12000;854.07;854.14;854.36;854.74;855.25;855.91;856.8;857.93;859.46;861.55;864.11;867.22;870.78;874.89;879.63;884.87;890.52;896.51;902.72;909.11;
+12500;857.75;857.82;858.03;858.42;858.94;859.61;860.51;861.65;863.06;865.03;867.54;870.4;873.77;877.88;882.63;887.88;893.54;899.54;905.69;912.09;
+13000;861.47;861.56;861.78;862.17;862.7;863.37;864.28;865.43;866.85;868.85;871.39;874.28;877.68;881.6;886.11;891.1;896.59;902.54;908.69;915.1;
+13500;865.21;865.33;865.55;865.95;866.48;867.17;868.1;869.27;870.71;872.73;875.3;878.22;881.65;885.6;890.14;895.16;900.54;906.12;911.93;918.15;
+14000;869.1;869.17;869.4;869.81;870.35;871.05;871.99;873.18;874.63;876.69;879.28;882.23;885.69;889.67;894.25;899.3;904.62;910.23;916.08;922.15;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;937.9;937.94;938.15;938.49;938.9;939.06;939.18;939.48;939.93;940.27;940.47;940.69;940.98;942.71;945.1;948.37;952.6;957.92;964.46;972.44;
+500;931.11;931.35;931.56;931.9;932.28;932.41;932.5;932.76;933.29;933.74;934.01;934.34;934.72;936.39;938.82;942.12;946.39;951.76;958.39;966.36;
+1000;924.68;924.75;924.97;925.32;925.7;925.85;925.97;926.27;926.79;927.25;927.55;927.99;928.46;930.08;932.53;935.87;940.18;945.6;952.31;960.27;
+1500;918.05;918.13;918.36;918.73;919.1;919.28;919.44;919.78;920.35;920.91;921.24;921.69;922.2;923.78;926.26;929.63;933.97;939.44;946.22;954.17;
+2000;911.42;911.77;911.96;912.27;912.57;912.7;912.9;913.28;913.92;914.39;914.99;915.52;916.08;917.51;919.99;923.4;927.78;933.28;940.11;948.05;
+2500;905.99;905.83;906.03;906.36;906.65;906.75;906.82;907.07;907.59;908.03;908.7;909.34;910;911.43;913.87;917.2;921.61;927.15;934;941.91;
+3000;899.8;899.88;900.09;900.45;900.74;900.88;900.98;901.27;901.85;902.24;902.73;903.23;903.95;905.37;907.84;911.2;915.52;921.03;927.91;935.74;
+3500;893.49;893.77;894.01;894.39;894.71;894.87;895.03;895.36;896.03;896.56;897.14;897.7;898.33;899.22;901.83;904.99;909.56;915.04;921.81;929.59;
+4000;887.63;887.69;887.94;888.34;888.66;888.86;889.06;889.43;890.21;890.84;891.5;892.14;892.9;893.88;896.28;899.41;903.62;909.12;915.89;923.47;
+4500;881.75;881.64;881.9;882.34;882.65;882.87;883.12;883.53;884.4;885.29;885.86;886.6;887.46;888.57;890.9;894.04;898.16;903.36;909.98;917.49;
+5000;875.53;875.66;875.9;876.37;876.68;876.93;877.2;877.64;878.58;879.56;880.23;881.07;882.06;883.29;885.57;888.71;892.87;898.13;904.45;911.53;
+5500;870.12;870.2;870.45;870.88;871.13;871.3;871.48;871.78;872.76;873.82;874.6;875.54;876.66;878.02;880.28;883.43;887.61;892.92;899.3;906.18;
+6000;864.71;864.74;865;865.46;865.71;865.91;866.14;866.47;867.41;868.37;869.06;870.02;871.26;872.78;875.03;878.22;882.39;887.73;894.08;900.99;
+6500;859.29;859.39;859.55;860.05;860.29;860.53;860.8;861.16;862.17;863.22;864.03;864.94;866.02;867.53;869.59;873.06;877.24;882.56;888.87;895.72;
+7000;853.75;853.85;854.13;854.64;854.88;855.15;855.46;855.85;856.94;858.07;859.01;860.02;861.23;862.83;864.75;867.93;872.14;877.47;883.67;890.43;
+7500;848.22;848.41;848.7;849.23;849.47;849.76;850.12;850.79;851.7;852.9;854.01;855.1;856.43;858.19;860.3;863.41;867.35;872.43;878.53;885.15;
+8000;842.87;842.97;843.28;843.82;844.06;844.39;844.78;845.5;846.46;847.73;849;850.17;851.62;853.54;855.81;858.95;862.99;867.99;873.65;879.93;
+8500;837.53;837.63;837.83;838.41;838.64;839.01;839.45;840.2;841.21;842.55;843.99;845.23;846.8;848.84;851.33;854.32;858.64;863.65;869.26;875.24;
+9000;831.97;832.08;832.4;832.97;833.21;833.61;834.1;834.9;835.96;837.37;838.74;840.28;841.96;844.1;846.78;849.99;854.28;859.35;864.88;870.78;
+9500;826.41;826.62;826.94;827.51;827.77;828.2;828.74;829.57;830.68;832.16;833.66;835.32;837.13;839.51;842.2;845.59;849.92;855.03;860.53;866.33;
+10000;821.06;821.16;821.49;822.03;822.31;822.78;823.35;824;825.38;826.92;828.77;830.32;832.27;834.76;837.61;841.28;845.62;850.66;856.16;861.91;
+10500;815.7;815.79;816.02;816.56;816.86;817.35;817.97;818.67;820.07;821.67;823.58;825.31;827.39;829.97;833.09;836.81;841.29;846.31;851.74;857.48;
+11000;810.16;810.26;810.58;811.08;811.4;811.93;812.58;813.34;814.75;816.38;818.36;820.26;822.48;825.04;828.41;832.29;836.9;841.97;847.32;853;
+11500;813.42;813.47;813.77;814.21;814.46;814.91;815.47;816.1;817.49;819.12;821.11;822.99;825.2;827.89;831.15;835.02;839.63;844.7;850.06;855.75;
+12000;816.99;817.08;817.38;817.82;818.07;818.53;819.1;819.75;821.04;822.55;824.36;826.04;828.01;830.65;833.92;837.78;842.38;847.46;852.82;858.53;
+12500;820.57;820.75;821.05;821.49;821.75;822.22;822.8;823.46;824.79;826.33;828.18;829.87;831.86;834.3;837.28;840.83;845.17;850.24;855.6;861.34;
+13000;824.14;824.5;824.8;825.24;825.5;826;826.59;827.28;828.63;830.18;832.05;833.76;835.77;838.22;841.22;844.79;849.04;853.74;858.71;864.17;
+13500;828.23;828.33;828.64;829.08;829.35;829.85;830.46;831.16;832.53;834.1;835.98;837.7;839.73;842.21;845.22;848.8;853.08;857.77;862.77;868.1;
+14000;832.32;832.23;832.54;832.99;833.26;833.78;834.4;835.11;836.49;838.08;839.98;841.71;843.75;846.26;849.29;852.89;857.18;861.89;866.9;872.25;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;898.64;898.69;898.78;898.89;898.93;898.72;898.25;897.96;897.44;896.7;895.94;895.33;895.86;896.98;898.7;900.99;903.82;907.5;912.16;918.15;
+500;892.06;892.1;892.2;892.33;892.34;892.11;891.64;891.35;890.91;890.25;889.54;888.96;889.45;890.61;892.39;894.77;897.76;901.59;906.32;912.39;
+1000;885.48;885.56;885.64;885.75;885.78;885.58;885.15;884.92;884.48;883.82;883.13;882.59;883.04;884.24;886.07;888.48;891.59;895.57;900.49;906.62;
+1500;878.88;879.39;879.48;879.59;879.56;879.3;878.81;878.53;878.1;877.51;876.85;876.27;876.9;877.84;879.72;882.24;885.43;889.49;894.51;900.86;
+2000;873.45;873.38;873.46;873.56;873.52;873.25;872.75;872.53;872.1;871.43;870.67;870.05;870.62;871.49;873.36;875.95;879.24;883.38;888.5;894.96;
+2500;867.38;867.42;867.51;867.62;867.59;867.36;866.88;866.67;866.25;865.58;864.87;864.2;864.57;865.28;867.11;869.67;873.04;877.26;882.47;889.03;
+3000;861.31;861.44;861.55;861.68;861.66;861.45;861.03;860.86;860.51;859.91;859.23;858.53;858.8;859.52;861.18;863.71;866.85;871.12;876.43;883.08;
+3500;855.43;855.47;855.58;855.73;855.72;855.55;855.17;855.05;854.78;854.24;853.64;852.97;853.2;853.86;855.68;858.04;861.13;865.06;870.35;877.1;
+4000;849.54;849.5;849.62;849.78;849.78;849.63;849.3;849.24;849.03;848.58;848.04;847.44;847.62;848.3;849.96;852.47;855.54;859.54;864.62;871.12;
+4500;843.74;843.77;843.86;843.97;843.89;843.72;843.42;843.41;843.28;842.9;842.45;841.91;842.05;842.74;844.65;847;850.12;854.08;859.16;865.63;
+5000;838.38;838.4;838.49;838.61;838.53;838.34;837.94;837.83;837.6;837.22;836.85;836.38;836.49;837.2;839.14;841.52;844.71;848.74;853.85;860.23;
+5500;833.01;833.04;833.14;833.27;833.19;833.02;832.67;832.61;832.44;832.04;831.53;830.92;830.96;831.69;833.64;836.06;839.29;843.39;848.57;854.98;
+6000;827.63;827.74;827.79;827.94;827.86;827.71;827.39;827.39;827.29;826.97;826.56;826.03;825.54;826.3;827.96;830.61;833.87;838.04;843.28;849.72;
+6500;822.29;822.34;822.45;822.61;822.53;822.4;822.12;822.16;822.13;821.89;821.56;821.13;820.74;821.74;823.2;825.37;828.5;832.72;838;844.44;
+7000;816.95;816.98;817.1;817.28;817.21;817.11;816.85;816.94;816.97;816.82;816.58;816.29;815.99;816.93;818.42;820.61;823.61;827.53;832.74;839.16;
+7500;811.59;811.61;811.75;811.94;811.88;811.81;811.59;811.72;811.84;811.79;811.64;811.45;811.25;812.13;813.64;815.88;818.91;822.87;827.92;833.9;
+8000;806.21;806.23;806.38;806.58;806.55;806.5;806.34;806.53;806.71;806.77;806.69;806.61;806.52;807.36;808.89;811.16;814.23;818.23;823.34;829.31;
+8500;800.83;800.86;801.02;801.24;801.23;801.23;801.11;801.33;801.6;801.76;801.75;801.78;801.8;802.61;804.17;806.47;809.56;813.61;818.75;824.7;
+9000;795.32;795.4;795.58;795.82;795.82;795.85;795.77;796.05;796.38;796.67;796.72;796.86;797.01;797.82;799.46;801.81;804.94;809.01;814.18;820.09;
+9500;789.84;789.91;790.11;790.35;790.37;790.44;790.4;790.74;791.14;791.56;791.67;791.91;792.19;792.98;794.67;797.1;800.34;804.45;809.62;815.47;
+10000;784.36;784.41;784.63;784.88;784.92;785.01;785.02;785.42;785.89;786.25;786.63;786.97;787.41;788;789.91;792.37;795.67;799.91;805.09;810.86;
+10500;778.85;778.93;779.15;779.4;779.46;779.59;779.64;780.09;780.65;781.1;781.59;782.03;782.62;783.37;785.24;787.47;791.03;795.32;800.58;806.27;
+11000;774.02;774.08;774.29;774.5;774.5;774.56;774.54;774.87;775.35;775.95;776.54;777.1;777.84;778.76;780.58;783.08;786.43;790.75;795.99;801.71;
+11500;777.64;777.7;777.91;778.11;778.13;778.2;778.19;778.54;779.03;779.42;779.77;780.07;780.53;781.22;783.13;785.63;788.98;793.31;798.55;804.22;
+12000;781.26;781.39;781.6;781.8;781.82;781.91;781.92;782.3;782.81;783.19;783.54;783.84;784.28;784.87;786.42;788.58;791.57;795.89;801.11;806.75;
+12500;784.88;785.19;785.4;785.6;785.63;785.72;785.73;786.12;786.63;787.03;787.38;787.66;788.1;788.67;790.22;792.38;795.38;799.33;804.08;809.3;
+13000;789;789.07;789.29;789.48;789.51;789.6;789.62;790.02;790.52;790.92;791.26;791.55;791.97;792.53;794.09;796.25;799.24;803.13;807.87;813.11;
+13500;793.14;793.24;793.23;793.43;793.46;793.55;793.56;793.97;794.47;794.87;795.21;795.49;795.92;796.46;798.02;800.16;803.08;806.96;811.72;816.98;
+14000;796.96;797.04;797.26;797.45;797.48;797.57;797.58;797.99;798.49;798.88;799.22;799.49;799.91;800.44;801.95;804.04;806.97;810.85;815.63;820.91;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;859.04;859.08;859.01;858.82;858.43;857.72;856.77;855.66;854.33;853.19;852.16;851.94;852.1;852.29;852.85;853.75;855.44;857.82;860.73;864.79;
+500;853.04;852.89;852.78;852.56;852.12;851.37;850.34;849.25;847.99;846.55;845.84;845.61;845.8;846.1;846.72;847.71;849.42;851.85;854.91;859.1;
+1000;847.02;846.83;846.75;846.56;846.16;845.45;844.45;843.31;841.93;840.37;839.54;839.28;839.5;839.89;840.56;841.67;843.4;845.88;849.07;853.36;
+1500;840.87;840.85;840.78;840.6;840.21;839.52;838.58;837.5;836.15;834.64;833.68;833.2;833.23;833.68;834.41;835.62;837.48;839.96;843.23;847.63;
+2000;835.02;835.02;834.96;834.79;834.41;833.72;832.77;831.72;830.41;828.94;827.95;827.46;827.49;827.78;828.37;829.57;831.48;834.02;837.39;841.88;
+2500;829.17;829.18;829.14;828.99;828.63;827.98;827.06;826.07;824.8;823.34;822.27;821.97;821.77;822.14;822.77;823.84;825.61;828.09;831.55;836.13;
+3000;823.3;823.35;823.31;823.18;822.84;822.23;821.36;820.41;819.21;817.8;816.71;816.37;816.15;816.49;817.22;818.36;819.94;822.48;825.79;830.36;
+3500;817.42;817.52;817.51;817.38;817.06;816.47;815.64;814.77;813.62;812.27;811.16;810.8;810.59;811.01;811.75;812.87;814.53;817.07;820.38;824.86;
+4000;812.11;812.1;812.04;811.88;811.5;810.82;809.94;809.11;808.02;806.74;805.63;805.25;805.05;805.51;806.32;807.53;809.21;811.71;815.08;819.56;
+4500;806.87;806.86;806.81;806.68;806.31;805.67;804.79;803.88;802.67;801.25;800.12;799.69;799.5;800.02;800.89;802.18;803.95;806.5;809.84;814.35;
+5000;801.62;801.62;801.58;801.47;801.12;800.52;799.66;798.81;797.62;796.23;794.89;794.2;793.82;794.4;795.35;796.73;798.62;801.28;804.7;809.23;
+5500;796.27;796.38;796.26;796.15;795.81;795.22;794.4;793.62;792.51;791.18;789.86;789.13;788.7;789.06;789.76;791.24;793.2;795.95;799.52;804.16;
+6000;790.88;790.88;790.86;790.78;790.46;789.91;789.13;788.41;787.39;786.12;784.82;784.07;783.65;784.04;784.87;786.1;787.76;790.58;794.23;799.05;
+6500;785.51;785.48;785.47;785.41;785.11;784.6;783.85;783.21;782.25;781.06;779.8;779.01;778.61;779.02;779.92;781.25;783.03;785.57;788.93;793.82;
+7000;780.18;780.07;780.08;780.04;779.76;779.28;778.57;778;777.12;775.99;774.78;773.95;773.56;774.02;774.97;776.38;778.25;780.88;784.29;788.83;
+7500;774.83;774.67;774.68;774.66;774.39;773.95;773.28;772.78;771.98;770.91;769.76;768.9;768.81;769;770.01;771.5;773.46;776.19;779.69;784.31;
+8000;769.44;769.54;769.29;769.27;769.02;768.61;767.99;767.55;766.84;765.84;764.74;763.61;763.51;764.01;765.05;766.61;768.67;771.49;775.08;779.79;
+8500;763.83;763.85;763.88;763.88;763.65;763.26;762.68;762.32;761.69;760.76;759.73;758.64;758.77;759.01;760.09;761.72;763.89;766.78;770.47;775.27;
+9000;758.21;758.44;758.48;758.49;758.28;757.92;757.37;757.07;756.54;755.67;754.72;753.69;753.76;754.02;755.14;756.82;759.11;762.06;765.85;770.75;
+9500;753;753.03;753.08;753.09;752.9;752.57;752.05;751.82;751.36;750.59;749.72;748.74;748.77;749.05;750.19;751.91;754.31;757.35;761.22;766.21;
+10000;748.09;748.09;748.11;748.06;747.79;747.37;746.75;746.56;746.19;745.49;744.72;743.81;743.8;744.1;745.49;747.05;749.49;752.65;756.6;761.67;
+10500;743.17;743.42;743.44;743.4;743.16;742.76;742.18;741.92;741.44;740.61;739.71;738.9;738.86;739.17;740.6;742.38;744.81;747.95;751.99;757.11;
+11000;738.74;738.74;738.78;738.75;738.53;738.18;737.63;737.44;737.04;736.32;735.51;734.53;734.18;734.53;735.5;737.54;740.03;743.24;747.36;752.54;
+11500;742.34;742.33;742.37;742.34;742.12;741.78;741.25;741.06;740.65;739.9;739.06;738.05;737.71;738.03;738.92;740.42;742.57;745.58;749.71;754.9;
+12000;745.95;746;746.04;746.01;745.79;745.45;744.92;744.73;744.31;743.54;742.68;741.63;741.29;741.6;742.49;743.99;746.14;748.97;752.71;757.47;
+12500;749.55;749.75;749.79;749.75;749.54;749.19;748.64;748.44;748.02;747.24;746.35;745.28;744.92;745.23;746.12;747.61;749.76;752.6;756.34;761.12;
+13000;753.54;753.56;753.6;753.56;753.34;752.98;752.43;752.22;751.79;750.98;750.08;748.98;748.62;748.91;749.79;751.28;753.43;756.27;760.02;764.81;
+13500;757.54;757.63;757.48;757.43;757.21;756.84;756.29;756.06;755.62;754.79;753.87;752.75;752.37;752.65;753.53;755.01;757.16;760;763.75;768.55;
+14000;761.53;761.62;761.41;761.36;761.14;760.76;760.2;759.97;759.51;758.66;757.71;756.57;756.19;756.46;757.32;758.8;760.94;763.78;767.54;772.34;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;821.16;820.96;820.71;820.2;819.44;818.28;816.81;814.94;813.47;812.47;811.59;810.86;809.95;809.32;809.24;809.37;809.56;809.94;810.73;812.23;
+500;815.09;814.98;814.74;814.25;813.48;812.32;810.85;808.99;807.52;806.41;805.41;804.65;803.78;803.18;803.16;803.46;803.66;804.18;805.12;806.8;
+1000;809.1;809.02;808.78;808.31;807.56;806.44;805;803.16;801.66;800.5;799.48;798.93;797.83;797.12;797;797.33;797.7;798.36;799.48;801.35;
+1500;803.12;803.18;802.94;802.47;801.71;800.59;799.14;797.32;795.5;794.34;793.53;792.91;791.88;791.23;791.14;791.33;791.65;792.43;793.71;795.77;
+2000;797.35;797.29;797.06;796.59;795.85;794.72;793.29;791.47;789.64;788.42;787.57;786.99;786.08;785.42;785.32;785.54;786;786.72;787.93;790.15;
+2500;791.54;791.34;791.11;790.67;789.94;788.84;787.45;785.67;783.88;782.64;781.75;781.17;780.33;779.71;779.59;779.76;780.36;781.19;782.53;784.68;
+3000;785.46;785.38;785.17;784.75;784.05;782.97;781.62;779.9;778.14;776.86;775.99;775.45;774.71;774.02;773.93;774.12;774.76;775.67;777.15;779.44;
+3500;780.19;779.97;779.74;779.27;778.5;777.33;775.86;774.13;772.43;771.16;770.26;769.76;769.09;768.41;768.23;768.57;769.41;770.33;771.77;774.21;
+4000;774.71;774.66;774.44;773.98;773.24;772.11;770.72;768.96;767.1;765.61;764.82;764.08;763.5;762.85;762.73;763.09;763.96;764.96;766.45;768.97;
+4500;769.22;769.36;769.14;768.72;768.03;766.94;765.61;763.9;762.09;760.57;759.69;758.73;757.97;757.32;757.27;757.61;758.5;759.63;761.23;763.8;
+5000;764.16;764.1;763.91;763.51;762.84;761.8;760.5;758.85;757.08;755.54;754.64;753.7;753.01;752.27;751.98;752.12;753.07;754.31;756.02;758.7;
+5500;759.09;758.86;758.68;758.31;757.65;756.64;755.4;753.8;752.07;750.53;749.61;748.68;748.06;747.41;747.16;747.35;747.84;749.04;750.81;753.6;
+6000;753.67;753.62;753.45;753.1;752.47;751.5;750.3;748.76;747.07;745.5;744.57;743.64;743.11;742.56;742.35;742.57;743.09;744.26;745.77;748.49;
+6500;748.23;748.38;748.22;747.88;747.28;746.34;745.19;743.71;742.07;740.46;739.53;738.61;738.16;737.69;737.54;737.8;738.37;739.62;741.24;743.74;
+7000;743.17;743.13;742.98;742.67;742.09;741.19;740.08;738.66;737.07;735.44;734.51;733.59;733.21;732.82;732.72;732.86;733.65;734.95;736.71;739.33;
+7500;738.1;738.2;737.77;737.45;736.9;736.03;734.97;733.61;732.07;730.44;729.48;728.56;728.22;727.94;727.89;728.11;728.92;730.28;732.15;734.92;
+8000;732.66;732.63;732.5;732.23;731.7;730.86;729.84;728.54;727.05;725.41;724.17;723.54;723.23;723.03;723.04;723.38;724.21;725.62;727.62;730.5;
+8500;727.38;727.35;727.24;726.98;726.47;725.66;724.7;723.47;722.03;720.4;719.17;718.51;718.23;718.14;718.22;718.63;719.5;720.97;723.14;726.07;
+9000;722.09;722.33;722.18;721.87;721.28;720.44;719.56;718.4;717.01;715.41;714.18;713.5;713.24;713.22;713.4;713.89;714.77;716.34;718.56;721.64;
+9500;717.84;717.79;717.66;717.37;716.81;715.95;714.93;713.66;712.18;710.4;709.19;708.47;708.24;708.29;708.57;709.14;710.06;711.7;714.05;717.21;
+10000;713.57;713.26;713.14;712.87;712.33;711.51;710.54;709.33;707.88;706.19;704.7;703.98;703.26;703.36;703.74;704.39;705.41;707.08;709.52;712.78;
+10500;708.76;708.73;708.62;708.37;707.86;707.08;706.16;705.01;703.62;702;700.49;699.73;699.01;698.91;699.1;699.56;700.74;702.47;704.99;708.35;
+11000;703.94;704.21;704.11;703.88;703.4;702.65;701.78;700.69;699.35;697.76;696.21;695.39;694.67;694.62;694.89;695.45;696.37;697.84;700.47;703.92;
+11500;707.7;707.67;707.57;707.33;706.84;706.08;705.2;704.11;702.76;701.16;699.63;698.81;698.08;698.02;698.27;698.83;699.76;701.19;703.42;706.46;
+12000;711.47;711.18;711.08;710.83;710.34;709.56;708.68;707.57;706.19;704.57;703.03;702.22;701.48;701.42;701.65;702.18;703.08;704.52;706.74;709.78;
+12500;714.79;714.76;714.65;714.4;713.89;713.1;712.2;711.08;709.68;708.04;706.46;705.65;704.89;704.82;705.04;705.55;706.42;707.89;710.09;713.13;
+13000;718.16;718.39;718.28;718.02;717.5;716.7;715.79;714.65;713.24;711.56;709.95;709.13;708.34;708.26;708.46;708.96;709.83;711.27;713.49;716.53;
+13500;722.11;722.07;721.96;721.69;721.17;720.35;719.43;718.26;716.82;715.14;713.54;712.67;711.87;711.75;711.95;712.42;713.27;714.7;716.94;719.97;
+14000;726.06;725.81;725.7;725.42;724.89;724.06;723.13;721.94;720.48;718.77;717.12;716.27;715.45;715.31;715.48;715.94;716.76;718.29;720.42;723.45;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;784.08;784.15;783.83;783.2;782.3;781;779.27;777.34;776.35;775.36;774.07;772.49;771.08;770.23;769.41;768.09;766.34;764.16;761.61;759;
+500;778.1;778.05;777.73;777.1;776.2;774.9;773.16;771.21;770.19;769.19;767.98;766.44;765.05;764.19;763.36;762.01;760.35;758.4;756.16;753.92;
+1000;772.11;772.22;771.68;771.03;770.13;768.83;767.12;765.2;764.11;763.05;761.9;760.42;759.04;758.15;757.42;756.19;754.62;752.72;750.68;748.79;
+1500;766.11;766.01;765.69;765.07;764.16;762.85;761.14;759.21;758.09;757.02;755.91;754.4;753.02;752.36;751.49;750.38;748.96;747.28;745.43;743.68;
+2000;760.11;760.06;759.74;759.12;758.22;756.93;755.24;753.36;752.18;751.05;749.97;748.47;747.1;746.37;745.57;744.56;743.29;741.81;740.24;738.81;
+2500;754.1;754.12;753.81;753.2;752.32;751.03;749.36;747.49;746.3;745.17;744.13;742.64;741.26;740.49;739.71;738.75;737.63;736.36;735.05;733.93;
+3000;748.88;748.75;748.4;747.73;746.76;745.36;743.55;741.63;740.44;739.29;738.32;736.86;735.51;734.73;733.97;733.05;732;730.88;729.82;729.01;
+3500;743.57;743.46;743.11;742.45;741.49;740.11;738.34;736.34;734.97;733.61;732.52;731.11;729.76;728.99;728.35;727.42;726.46;725.43;724.57;724.05;
+4000;738.26;738.19;737.84;737.19;736.24;734.88;733.14;731.15;729.76;728.4;727.37;725.72;724.09;723.28;722.66;721.82;720.99;720.1;719.35;719.04;
+4500;733.04;732.92;732.58;731.94;731.04;729.66;727.96;725.98;724.57;723.19;722.18;720.59;719.17;718.07;717.18;716.29;715.51;714.77;714.2;714.05;
+5000;727.76;727.66;727.33;726.7;725.78;724.45;722.76;720.81;719.36;717.99;717;715.47;714.11;713.02;712.17;711.3;710.32;709.43;709.03;709.1;
+5500;722.46;722.39;722.07;721.45;720.55;719.25;717.59;715.65;714.2;712.8;711.83;710.37;709.07;708;707.16;706.42;705.53;704.66;704;704.12;
+6000;717.2;717.3;716.84;716.21;715.33;714.03;712.4;710.51;709.03;707.63;706.67;705.33;704.07;702.78;702.2;701.55;700.75;700.02;699.49;699.5;
+6500;712.05;711.87;711.56;710.98;710.11;708.83;707.23;705.37;703.88;702.69;701.56;700.31;698.81;697.79;697.17;696.59;695.88;695.26;694.89;695.06;
+7000;706.71;706.61;706.32;705.75;704.9;703.66;702.09;700.25;698.73;697.52;696.36;695.16;693.73;692.71;692.08;691.61;690.99;690.5;690.28;690.63;
+7500;701.45;701.37;701.08;700.54;699.71;698.46;696.91;695.04;693.51;692.29;691.13;690.01;688.66;687.66;687.01;686.63;686.11;685.74;685.68;686.2;
+8000;696.08;696.11;695.79;695.24;694.42;693.19;691.68;689.86;688.3;687.07;685.89;684.87;683.6;682.62;681.93;681.78;681.25;681;681.09;681.77;
+8500;691.65;691.55;691.23;690.63;689.72;688.39;686.77;684.8;683.11;681.86;680.69;679.75;678.55;677.59;677.11;676.78;676.52;676.26;676.5;677.34;
+9000;687.21;686.99;686.68;686.1;685.21;683.91;682.32;680.39;678.66;677.2;675.79;674.82;673.5;672.58;672.11;671.8;671.67;671.53;671.9;672.91;
+9500;682.75;682.84;682.17;681.59;680.73;679.45;677.9;675.99;674.27;672.54;671.39;670.41;669.09;667.94;667.21;666.82;666.88;666.83;667.32;668.48;
+10000;678.02;677.93;677.64;677.1;676.25;675;673.5;671.63;669.63;668.19;666.98;666.03;664.8;663.75;663.03;662.48;662.17;662.16;662.75;664.05;
+10500;673.28;673.42;673.14;672.62;671.79;670.57;669.11;667.26;665.32;663.82;662.59;661.66;660.55;659.55;658.86;658.34;658.15;658.23;658.51;659.61;
+11000;668.99;668.91;668.65;668.15;667.34;666.15;664.73;662.94;661.03;659.49;658.47;657.31;656.29;655.29;654.57;654.23;654.26;654.29;654.73;655.92;
+11500;672.35;672.27;672;671.49;670.67;669.46;668.01;666.2;664.26;662.7;661.67;660.49;659.44;658.43;657.69;657.36;657.36;657.36;657.78;658.94;
+12000;675.72;675.67;675.39;674.87;674.04;672.82;671.35;669.51;667.53;665.95;664.91;663.7;662.63;661.61;660.83;660.52;660.49;660.46;660.85;661.98;
+12500;679.08;679.12;678.84;678.31;677.46;676.22;674.74;672.87;670.87;669.24;668.19;666.95;665.86;664.82;664.01;663.69;663.66;663.59;663.95;665.06;
+13000;682.45;682.62;682.33;681.79;680.93;679.67;678.16;676.28;674.24;672.62;671.52;670.26;669.12;668.07;667.23;666.88;666.87;666.75;667.08;668.16;
+13500;686.71;686.16;685.87;685.32;684.45;683.17;681.65;679.74;677.67;676.02;674.91;673.61;672.44;671.36;670.48;670.11;670.09;669.95;670.24;671.29;
+14000;689.85;689.76;689.46;688.91;688.02;686.72;685.18;683.25;681.15;679.47;678.34;677.01;675.8;674.7;674;673.4;673.19;673.1;673.43;674.45;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;748.19;747.62;747.34;746.76;745.96;744.69;743.11;741.9;741.05;739.94;738.28;736.62;735.45;733.95;731.51;728;722.9;715.61;705.76;690.64;
+500;748.64;741.52;741.41;740.83;740.02;738.72;737.13;735.87;735.03;733.96;732.33;730.69;729.54;728.13;725.81;722.48;717.71;710.96;701.81;688.07;
+1000;736.07;735.82;735.54;734.94;734.13;732.81;731.23;729.94;729.07;728;726.37;724.77;723.6;722.32;720.1;716.96;712.5;706.23;697.78;685.72;
+1500;730.28;730;729.72;729.13;728.3;726.99;725.39;724.09;723.19;722.11;720.48;718.87;717.92;716.48;714.39;711.42;707.24;701.43;693.34;682.79;
+2000;724.27;724.18;723.89;723.3;722.49;721.18;719.59;718.27;717.36;716.31;714.68;713.06;712.07;710.66;708.68;705.88;701.97;696.5;689.05;679.59;
+2500;719.02;718.83;718.5;717.84;716.93;715.52;713.79;712.46;711.55;710.52;708.91;707.33;706.31;704.93;703;700.32;696.57;691.46;684.65;676.17;
+3000;713.71;713.63;713.29;712.63;711.72;710.31;708.6;707.12;706.05;704.87;703.15;701.52;700.59;699.23;697.33;694.7;691.11;686.37;680.16;672.56;
+3500;708.53;708.42;708.08;707.42;706.52;705.11;703.41;701.92;700.85;699.68;697.88;695.92;694.83;693.41;691.61;689.07;685.71;681.25;675.58;668.76;
+4000;703.33;703.21;702.88;702.22;701.32;699.92;698.19;696.62;695.52;694.34;692.57;690.89;689.56;688.07;686.1;683.48;680.26;676.13;670.88;664.56;
+4500;698.05;697.95;697.6;696.93;696.01;694.57;692.84;691.28;690.18;688.99;687.26;685.61;684.27;682.85;680.97;678.41;675.06;670.95;666.13;660.33;
+5000;692.69;692.61;692.26;691.58;690.66;689.24;687.52;685.94;684.83;683.64;681.96;680.33;678.99;677.63;675.83;673.43;670.25;666.26;661.36;656;
+5500;687.39;687.27;686.92;686.25;685.33;683.91;682.2;680.61;679.49;678.31;676.66;675.06;673.71;672.4;670.69;668.43;665.44;661.67;657.09;651.88;
+6000;682.08;681.94;681.59;680.92;680;678.58;676.87;675.28;674.16;672.97;671.38;669.79;668.44;667.18;665.54;663.4;660.56;656.99;652.78;648.04;
+6500;676.72;676.62;676.26;675.59;674.68;673.35;671.56;669.96;668.84;667.65;666.12;664.52;663.13;661.93;660.33;658.3;655.64;652.33;648.46;644.14;
+7000;671.34;671.35;670.96;670.23;669.36;668.03;666.26;664.65;663.5;662.35;660.8;659.18;657.79;656.56;655.11;653.19;650.71;647.66;644.07;640.18;
+7500;666.89;666.76;666.35;665.61;664.59;663.15;661.22;659.16;658.1;656.95;655.45;653.64;652.46;651.24;649.9;648.11;645.8;642.94;639.66;636.17;
+8000;662.44;662.12;661.72;660.96;659.93;658.46;656.55;654.53;653.41;652.07;650.4;648.42;646.89;645.96;644.71;643.02;640.89;638.26;635.24;632.11;
+8500;657.58;657.46;657.06;656.31;655.29;653.82;651.93;649.9;648.76;647.43;645.83;643.89;642.19;640.98;639.58;637.93;635.97;633.56;630.81;628;
+9000;652.72;652.82;652.41;651.67;650.65;649.19;647.32;645.33;644.13;642.81;641.27;639.39;637.69;636.43;635.12;633.35;631.25;628.86;626.38;623.87;
+9500;648.32;648.18;647.78;647.04;646.04;644.58;642.72;640.71;639.53;638.22;636.74;634.92;633.2;631.91;630.68;628.99;627.02;624.74;622.23;619.74;
+10000;643.98;643.55;643.17;642.44;641.44;640;638.17;636.18;634.96;633.63;632.22;630.46;628.74;627.62;626.24;624.64;622.8;620.73;618.47;616.25;
+10500;639.1;638.99;638.6;637.89;636.89;635.46;633.65;631.66;630.4;629.04;627.69;625.98;624.27;623.14;621.83;620.31;618.58;616.69;614.69;612.78;
+11000;634.56;634.44;634.05;633.35;632.35;630.92;629.13;627.15;625.85;624.46;623.17;621.5;619.84;618.69;617.45;616;614.38;612.64;610.89;609.27;
+11500;637.72;637.61;637.21;636.5;635.49;634.03;632.22;630.21;628.89;627.48;626.16;624.46;622.76;621.61;620.45;618.85;617.18;615.39;613.59;611.91;
+12000;640.89;640.82;640.42;639.7;638.67;637.2;635.35;633.32;631.98;630.54;629.19;627.47;625.72;624.57;623.25;621.72;620.01;618.16;616.31;614.57;
+12500;644.05;644.09;643.68;642.95;641.9;640.4;638.53;636.47;635.11;633.65;632.26;630.5;628.73;627.56;626.2;624.63;622.86;620.95;619.03;617.24;
+13000;647.54;647.41;647;646.26;645.18;643.66;641.74;639.66;638.29;636.8;635.38;633.57;631.77;630.58;629.19;627.57;625.75;623.78;621.78;619.94;
+13500;651.11;651.2;650.38;649.6;648.52;646.98;645.05;642.9;641.52;640;638.53;636.68;634.85;633.64;632.21;630.54;628.66;626.63;624.56;622.64;
+14000;654.34;654.2;653.78;653.01;651.91;650.34;648.37;646.23;644.79;643.25;641.74;639.84;637.98;636.74;635.27;633.56;631.62;629.51;627.36;625.36;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;733.46;733.39;733.14;732.6;731.87;730.66;729.13;728.2;727.42;726.11;724.3;723.12;721.69;719.55;716.34;711.44;703.91;692.34;672.48;638.26;
+500;735.38;727.52;727.26;726.71;725.97;724.73;723.17;722.2;721.41;720.16;718.44;717.21;715.84;713.8;710.74;706.13;699.07;688.29;670.4;640.49;
+1000;722.02;721.68;721.43;720.87;720.13;718.87;717.3;716.3;715.33;714.23;712.54;711.28;709.98;708.04;705.14;700.78;694.05;684.11;667.98;641.99;
+1500;715.95;715.9;715.65;715.09;714.32;713.07;711.51;710.48;709.48;708.39;706.7;705.36;704.05;702.27;699.51;695.28;688.97;679.79;665.21;642.33;
+2000;710.25;710.16;709.86;709.29;708.54;707.28;705.73;704.68;703.67;702.62;700.98;699.55;698.17;696.41;693.72;689.74;683.84;675.08;662.17;641.94;
+2500;705.26;704.97;704.67;704.04;703.19;701.84;700.16;698.94;697.83;696.78;695.11;693.42;692.28;690.58;687.97;684.17;678.67;670.58;659.13;640.98;
+3000;699.87;699.77;699.46;698.81;697.95;696.55;694.82;693.59;692.38;691.23;689.38;687.54;686.41;684.81;682.27;678.67;673.46;666;655.58;639.52;
+3500;694.33;694.44;694.12;693.48;692.61;691.21;689.5;688.25;687.04;685.92;684.1;682.23;680.86;679.12;676.61;673.14;668.27;661.29;651.83;637.61;
+4000;689.2;689.11;688.79;688.13;687.28;685.88;684.17;682.91;681.89;680.6;678.8;676.97;675.6;673.94;671.38;667.79;662.99;656.51;647.78;635.23;
+4500;684.06;683.78;683.46;682.8;681.95;680.55;678.86;677.57;676.56;675.3;673.51;671.7;670.33;668.76;666.31;662.88;658.16;651.74;643.61;632.51;
+5000;678.56;678.46;678.13;677.46;676.62;675.23;673.54;672.24;671.22;669.99;668.23;666.46;665.07;663.57;661.23;657.95;653.51;647.46;639.35;629.31;
+5500;673.05;673.14;672.81;672.16;671.3;669.92;668.23;666.9;665.89;664.68;662.94;661.2;659.82;658.38;656.14;653.02;648.82;643.14;635.66;626.32;
+6000;667.92;667.82;667.49;666.83;665.98;664.59;662.92;661.57;660.55;659.37;657.64;655.92;654.79;653.19;651.07;648.08;644.09;638.78;631.87;623.39;
+6500;662.76;662.49;662.16;661.51;660.65;659.27;657.6;656.24;655.22;654.06;652.35;650.66;649.52;647.99;645.96;643.13;639.36;634.39;628.02;620.29;
+7000;658.01;657.87;657.49;656.75;655.78;654.29;652.47;650.94;649.88;648.74;647.05;645.33;644.26;642.78;640.85;638.18;634.6;629.96;624.07;617.06;
+7500;653.24;653.26;652.88;652.14;651.17;649.68;647.87;646.32;645.12;643.8;641.94;639.94;638.99;637.58;635.74;633.23;629.85;625.5;620.05;613.68;
+8000;648.79;648.67;648.28;647.54;646.57;645.08;643.28;641.71;640.49;639.19;637.35;635.59;634.16;632.58;630.64;628.27;625.07;621.01;615.98;610;
+8500;644.38;644.09;643.69;642.96;641.98;640.49;638.69;637.1;635.88;634.57;632.77;631.04;629.57;628.07;626.14;623.68;620.41;616.49;611.87;606.39;
+9000;639.64;639.51;639.12;638.38;637.4;635.9;634.11;632.51;631.28;629.96;628.2;626.48;625.01;623.56;621.7;619.36;616.31;612.47;607.88;602.68;
+9500;634.89;634.94;634.55;633.81;632.83;631.34;629.56;627.92;626.68;625.35;623.66;621.96;620.47;619.06;617.27;615.03;612.2;608.57;604.26;599.49;
+10000;630.51;630.4;630;629.27;628.28;626.87;625;623.35;622.11;620.78;619.16;617.44;615.93;614.52;612.84;610.68;608;604.64;600.65;596.23;
+10500;626.11;625.86;625.45;624.72;623.74;622.33;620.48;618.82;617.57;616.23;614.66;612.94;611.4;610;608.37;606.3;603.78;600.7;596.96;592.91;
+11000;621.46;621.33;620.93;620.21;619.23;617.82;615.98;614.3;613.04;611.72;610.14;608.18;606.83;605.4;603.9;601.93;599.55;596.66;593.23;589.54;
+11500;624.48;624.4;624;623.26;622.27;620.83;618.96;617.26;615.98;614.63;613.05;611.08;609.71;608.26;606.7;604.69;602.25;599.36;595.85;592.06;
+12000;627.5;627.52;627.11;626.36;625.35;623.89;621.99;620.27;618.96;617.58;615.98;613.95;612.62;611.15;609.54;607.47;604.97;602.01;598.5;594.6;
+12500;630.82;630.69;630.27;629.51;628.48;627;625.07;623.32;621.99;620.57;618.94;617.14;615.53;614.02;612.41;610.29;607.72;604.67;601.13;597.16;
+13000;634.14;633.9;633.48;632.71;631.66;630.15;628.19;626.42;625.06;623.61;621.94;620.11;618.47;616.93;615.28;613.13;610.5;607.37;603.75;599.73;
+13500;637.46;637.55;636.75;635.95;634.88;633.36;631.35;629.56;628.18;626.68;624.98;623.12;621.46;619.88;618.18;615.97;613.3;610.09;606.38;602.27;
+14000;640.61;640.47;640.03;639.24;638.15;636.6;634.56;632.76;631.35;629.82;628.07;626.17;624.48;622.86;621.11;618.84;616.1;612.82;609.02;604.82;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;719.52;719.48;719.29;718.76;718.12;716.99;715.53;714.9;714.13;712.59;711.07;709.7;707.82;705.04;700.67;693.42;681.72;659.71;613.18;-9999;
+500;713.67;713.6;713.41;712.9;712.23;711.08;709.61;708.92;708.17;706.66;705.17;703.85;702.06;699.4;695.13;688.31;677.43;657.53;617.73;-9999;
+1000;707.84;707.81;707.59;707.08;706.4;705.24;703.75;703.04;702.27;700.75;699.23;697.91;696.18;693.58;689.55;683.14;673.03;654.98;620.3;-9999;
+1500;702;702.05;701.8;701.29;700.62;699.44;697.91;697.15;696.34;694.81;693.23;691.88;690.22;687.77;683.95;677.93;668.53;652.12;621.74;-9999;
+2000;696.48;696.39;696.12;695.52;694.74;693.48;691.96;691.2;690.4;688.92;687.33;685.96;684.32;681.94;678.32;672.67;663.64;648.97;622.27;-9999;
+2500;690.8;691.06;690.8;690.2;689.42;688.1;686.44;685.53;684.58;683.01;681.45;680.09;678.52;676.19;672.72;667.37;659.03;645.59;622.08;-9999;
+3000;685.84;685.77;685.49;684.89;684.1;682.78;681.12;680.19;679.24;677.68;675.93;674.39;672.72;670.5;667.14;662.08;654.3;642.24;620.96;-9999;
+3500;680.84;680.49;680.19;679.58;678.8;677.47;675.81;674.86;673.91;672.38;670.65;669.11;667.45;665.09;661.63;656.77;649.4;638.3;619.49;588.92;
+4000;675.27;675.17;674.89;674.28;673.49;672.16;670.5;669.53;668.58;667.1;665.15;663.83;662.23;659.96;656.65;651.79;644.49;634.21;617.15;588.7;
+4500;669.68;669.87;669.59;668.97;668.19;666.86;665.2;664.21;663.26;661.82;659.91;658.56;657.01;654.84;651.65;647.01;640.15;630.19;614.51;589.39;
+5000;664.65;664.57;664.28;663.67;662.88;661.55;659.9;658.89;657.82;656.54;654.68;653.28;651.78;649.69;646.65;642.23;635.76;626.51;611.97;589.4;
+5500;659.6;659.28;658.97;658.35;657.57;656.24;654.6;653.56;652.49;651.25;649.43;648;646.55;644.55;641.64;637.43;631.33;622.7;609.46;589.1;
+6000;654.05;653.96;653.66;653.04;652.25;650.92;649.28;648.24;647.16;645.96;644.16;642.72;641.28;639.39;636.61;632.6;626.86;618.59;606.97;588.51;
+6500;649.42;649.3;648.95;648.24;647.34;645.89;644.11;642.9;641.82;640.66;638.97;637.45;636.01;634.24;631.59;627.77;622.35;614.66;604;587.48;
+7000;644.76;644.69;644.33;643.62;642.72;641.26;639.48;638.24;636.96;635.67;633.8;632.19;630.75;629.08;626.55;622.91;617.81;610.62;600.84;586;
+7500;640.09;640.08;639.72;639.01;638.1;636.65;634.88;633.61;632.31;631.05;629.19;627.28;625.83;624.03;621.52;618.06;613.23;606.51;597.47;584.17;
+8000;635.61;635.49;635.12;634.41;633.5;632.04;630.27;628.97;627.66;626.43;624.58;622.69;621.24;619.53;617;613.48;608.66;602.37;593.95;582.04;
+8500;631.11;630.9;630.53;629.82;628.91;627.44;625.67;624.35;623.21;621.82;619.99;618.12;616.66;615.03;612.59;609.26;604.68;598.57;590.55;579.87;
+9000;626.59;626.31;625.94;625.23;624.31;622.85;621.08;619.73;618.58;617.24;615.41;613.56;612.09;610.53;608.18;605.02;600.71;594.86;587.23;577.82;
+9500;622.06;621.75;621.38;620.66;619.73;618.26;616.5;615.13;613.98;612.67;610.85;609.01;607.51;606.02;603.77;600.77;596.63;591.1;584.08;575.54;
+10000;617.52;617.19;616.82;616.1;615.16;613.69;611.93;610.53;609.39;608.1;606.29;604.45;603.2;601.52;599.34;596.39;592.48;587.32;580.85;573.08;
+10500;612.77;612.65;612.27;611.54;610.61;609.15;607.38;605.97;604.82;603.54;601.74;599.9;598.61;596.94;594.8;591.99;588.33;583.54;577.55;570.49;
+11000;608;608.13;607.75;607.03;606.09;604.63;602.86;601.42;600.26;598.96;597.12;595.14;593.94;592.32;590.26;587.59;584.17;579.71;574.2;567.77;
+11500;611.16;611.13;610.74;610.01;609.06;607.57;605.77;604.3;603.12;601.83;600.01;598.02;596.77;595.12;593;590.27;586.76;582.24;576.55;569.95;
+12000;614.33;614.17;613.78;613.03;612.06;610.55;608.72;607.23;606.03;604.71;602.86;600.9;599.64;597.94;595.78;592.98;589.38;584.79;578.93;572.13;
+12500;617.38;617.26;616.85;616.09;615.11;613.57;611.71;610.21;608.97;607.62;605.74;603.76;602.47;600.78;598.59;595.73;592.04;587.35;581.36;574.33;
+13000;620.43;620.4;619.98;619.2;618.2;616.64;614.74;613.23;611.97;610.58;608.65;606.65;605.33;603.59;601.39;598.5;594.74;589.93;583.8;576.54;
+13500;623.72;623.57;623.15;622.37;621.35;619.75;617.82;616.29;615.01;613.58;611.61;609.6;608.22;606.44;604.18;601.27;597.45;592.53;586.26;578.76;
+14000;627.01;626.79;626.37;625.57;624.54;622.91;620.94;619.4;618.08;616.63;614.62;612.59;611.15;609.32;607.01;604.02;600.19;595.16;588.73;581;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;706.3;706.15;705.92;705.52;704.92;703.89;702.78;701.97;701;699.35;697.76;696.18;693.81;689.94;683.3;672.65;651.01;597.29;-9999;-9999;
+500;700.63;700.44;699.82;699.22;698.59;697.67;696.53;695.75;694.9;693.25;691.75;690.25;687.99;684.31;678.08;668.1;648.43;601.7;-9999;-9999;
+1000;694.04;694.06;693.94;693.42;692.82;691.72;690.56;689.77;688.91;687.24;685.7;684.28;682.14;678.67;672.81;663.45;645.53;605.73;-9999;-9999;
+1500;688.19;688.17;688.03;687.51;686.91;685.81;684.65;683.85;682.99;681.33;679.75;678.33;676.28;673;667.49;658.75;642.37;607.63;-9999;-9999;
+2000;682.2;682.71;682.5;681.93;681.25;680.04;678.75;677.95;677.11;675.47;673.82;672.5;670.47;667.31;662.14;653.63;638.94;608.28;-9999;-9999;
+2500;677.45;677.42;677.19;676.63;675.94;674.73;673.43;672.51;671.54;669.76;668.12;666.71;664.75;661.7;656.81;648.76;635.31;608.22;-9999;-9999;
+3000;672.15;672.12;671.88;671.32;670.64;669.42;668.11;667.19;666.23;664.49;662.84;661.27;659.2;656.13;651.42;643.86;631.66;607.45;-9999;-9999;
+3500;666.84;666.81;666.56;666.01;665.33;664.11;662.79;661.87;660.93;659.22;657.59;656.06;654.05;651.04;646.3;638.92;627.53;605.74;561.9;-9999;
+4000;661.51;661.61;661.19;660.71;660.02;658.8;657.47;656.55;655.62;653.92;652.33;650.84;648.91;646.02;641.52;634.44;623.43;603.51;562.33;-9999;
+4500;656.26;656.21;655.96;655.4;654.72;653.48;652.14;651.23;650.31;648.63;647.07;645.62;643.76;640.99;636.7;630;619.7;601.28;565.1;-9999;
+5000;651.02;650.91;650.66;650.1;649.41;648.17;646.82;645.9;645;643.35;641.79;640.38;638.6;635.95;631.86;625.52;615.88;599.02;567.48;-9999;
+5500;645.76;645.61;645.36;644.79;644.1;642.85;641.5;640.58;639.68;638.05;636.51;635.12;633.41;630.88;627;620.98;611.97;596.46;568.15;-9999;
+6000;641.05;640.96;640.65;639.99;639.18;637.81;636.31;635.24;634.36;632.78;631.23;629.86;628.22;625.8;622.11;616.4;607.96;593.66;568.48;-9999;
+6500;636.32;636.42;636.06;635.36;634.55;633.16;631.45;630.54;629.47;627.77;626.02;624.6;623.02;620.71;617.19;611.79;603.58;590.63;568.22;-9999;
+7000;631.83;631.74;631.41;630.75;629.93;628.53;626.82;625.87;624.8;623.16;621.4;619.84;618.1;615.67;612.26;607.15;599.44;587.65;567.27;-9999;
+7500;627.33;627.14;626.82;626.15;625.32;623.91;622.18;621.22;620.14;618.55;616.79;615.23;613.54;611.21;607.79;602.73;595.15;584.27;565.97;-9999;
+8000;622.65;622.55;622.22;621.55;620.72;619.3;617.57;616.58;615.51;613.96;611.94;610.62;608.97;606.72;603.47;598.64;591.42;581.2;564.66;538.01;
+8500;617.95;618.04;617.67;616.95;616.12;614.69;612.97;611.95;610.81;609.38;607.39;606.01;604.41;602.23;599.12;594.45;587.64;578.15;563.17;539.58;
+9000;613.51;613.4;613.06;612.39;611.54;610.09;608.38;607.32;606.18;604.8;602.84;601.41;599.84;597.67;594.64;590.23;583.82;575;561.4;540.76;
+9500;609.05;608.82;608.48;607.79;606.95;605.52;603.79;602.74;601.57;600.23;598.26;596.73;595.1;593.05;590.15;586;579.99;571.53;559.38;540.99;
+10000;604.58;604.25;603.92;603.22;602.39;600.97;599.23;598.1;596.88;595.54;593.59;592.02;590.39;588.45;585.66;581.74;576.14;568.16;557.38;540.85;
+10500;600.09;599.72;599.37;598.67;597.79;596.33;594.55;593.4;592.15;590.86;589.01;587.34;585.7;583.84;581.16;577.48;572.18;564.78;554.9;540.23;
+11000;595.49;595.1;594.74;594.03;593.14;591.68;589.9;588.71;587.44;586.19;584.34;582.43;581.03;579.24;576.67;573.14;568.19;561.31;552.27;539.21;
+11500;598.07;598.1;597.73;597.01;596.11;594.62;592.81;591.6;590.3;589.02;587.14;585.19;583.77;581.94;579.3;575.73;570.68;563.63;554.33;540.82;
+12000;600.63;601.12;600.76;600.04;599.13;597.6;595.74;594.53;593.21;591.88;589.97;587.99;586.54;584.66;581.97;578.31;573.25;565.99;556.39;542.43;
+12500;604.25;604.13;603.76;603.03;602.12;600.61;598.74;597.5;596.16;594.79;592.84;590.81;589.34;587.42;584.67;580.93;575.76;568.35;558.47;544.03;
+13000;607.87;607.18;606.8;606.05;605.13;603.6;601.72;600.51;599.16;597.74;595.76;593.95;592.17;590.21;587.41;583.58;578.3;570.74;560.56;545.62;
+13500;610.4;610.28;609.88;609.12;608.18;606.62;604.71;603.48;602.13;600.71;598.71;596.87;595.06;593.04;590.17;586.26;580.83;573.19;562.66;547.2;
+14000;612.93;613.42;613.02;612.24;611.29;609.69;607.73;606.51;605.12;603.66;601.65;599.82;598;595.91;592.97;588.97;583.41;575.61;564.76;548.77;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;689.92;689.88;689.71;689.38;688.87;687.83;686.89;686.4;685.59;684.07;682.51;680.58;677.55;672.31;663.22;645.03;592.17;-9999;-9999;-9999;
+500;684.47;684.55;684.15;683.81;683.29;682.25;681.28;680.68;679.91;678.4;676.9;675.07;672.18;667.21;658.58;641.96;595.69;-9999;-9999;-9999;
+1000;678.82;678.83;678.63;678.27;677.74;676.69;675.71;675.06;674.28;672.75;671.24;669.5;666.76;662.09;653.87;638.71;598.5;-9999;-9999;-9999;
+1500;673.17;673.3;673.09;672.72;672.2;671.14;670.15;669.48;668.71;667.19;665.67;663.92;661.3;656.86;649.1;634.7;599.84;-9999;-9999;-9999;
+2000;668.32;668.3;668.05;667.62;667.02;665.87;664.76;663.94;663.14;661.64;660.15;658.46;655.89;651.62;644.07;630.96;600.12;-9999;-9999;-9999;
+2500;663.5;663.59;663.02;662.59;661.99;660.83;659.72;658.91;658.05;656.41;654.77;653;650.54;646.44;639.26;626.97;599.5;-9999;-9999;-9999;
+3000;658.26;658.24;658.09;657.53;656.93;655.76;654.65;653.85;653.01;651.39;649.79;648.04;645.47;641.35;634.37;622.77;598.23;-9999;-9999;-9999;
+3500;653.02;653.19;653.01;652.46;651.86;650.67;649.56;648.78;647.96;646.36;644.78;643.1;640.63;636.6;629.75;618.52;596.08;-9999;-9999;-9999;
+4000;648.14;648.12;647.92;647.38;646.78;645.57;644.45;643.69;642.89;641.31;639.76;638.09;635.63;631.68;625.22;614.69;593.89;542.41;-9999;-9999;
+4500;643.26;643.35;642.72;642.29;641.68;640.46;639.33;638.59;637.77;636.14;634.55;632.93;630.57;626.85;620.71;610.76;591.72;546.73;-9999;-9999;
+5000;638.01;637.35;637.51;636.63;636.34;635.16;634.03;633.3;632.48;630.87;629.31;627.75;625.49;621.95;616.14;606.77;589.25;549.92;-9999;-9999;
+5500;633.02;632.98;632.71;632.12;631.44;630.14;628.87;627.99;627.19;625.6;623.96;622.56;620.39;617.03;611.52;602.69;586.5;552.01;-9999;-9999;
+6000;628.4;628.34;628.08;627.49;626.8;625.48;624.19;623.31;622.33;620.58;618.75;617.35;615.28;612.07;606.88;598.51;583.51;553.18;-9999;-9999;
+6500;623.77;623.71;623.44;622.84;622.15;620.83;619.55;618.66;617.68;615.94;614.1;612.62;610.41;607.13;602.19;594.21;580.62;553.22;-9999;-9999;
+7000;619.12;619.21;618.73;618.22;617.51;616.21;614.91;614.01;613.04;611.31;609.62;608.04;605.92;602.78;597.85;589.78;577.37;553.11;-9999;-9999;
+7500;614.54;614.47;614.2;613.59;612.88;611.59;610.27;609.36;608.39;606.68;605;603.45;601.4;598.36;593.62;586.03;574.42;552.65;-9999;-9999;
+8000;609.95;609.86;609.59;608.97;608.26;606.99;605.64;604.71;603.75;602.04;600.38;598.82;596.78;593.85;589.35;582.27;571.35;551.68;515.79;-9999;
+8500;605.35;605.26;604.99;604.36;603.67;602.39;601.02;600.07;599.08;597.34;595.64;594.11;592.13;589.33;585.06;578.41;568.16;550.34;516.27;-9999;
+9000;600.73;600.68;600.41;599.79;599.07;597.73;596.31;595.32;594.32;592.6;590.9;589.39;587.47;584.79;580.76;574.44;564.9;548.67;518.85;-9999;
+9500;596;596.04;595.75;595.12;594.38;593.03;591.59;590.58;589.58;587.87;586.17;584.66;582.81;580.24;576.39;570.46;561.53;546.73;520.73;-9999;
+10000;591.23;591.32;591.14;590.46;589.71;588.35;586.88;585.85;584.84;583.14;581.44;579.92;578.14;575.65;572.02;566.44;558.07;544.54;521.53;-9999;
+10500;586.87;586.78;586.47;585.82;585.05;583.67;582.17;581.1;580.1;578.44;576.72;575.2;573.46;571.07;567.61;562.37;554.29;542.13;521.69;-9999;
+11000;582.49;582.17;581.85;581.18;580.41;579;577.49;576.4;575.37;573.74;572.01;570.48;568.79;566.48;563.18;558.26;550.74;539.77;521.34;-9999;
+11500;584.95;585.07;584.75;584.07;583.27;581.85;580.1;579.21;578.16;576.49;574.73;573.17;571.45;569.1;565.73;560.72;553.05;541.76;522.72;-9999;
+12000;588.13;588.03;587.7;587;586.19;584.74;582.94;582.05;580.98;579.29;577.48;575.9;574.14;571.74;568.31;563.21;555.38;543.75;524.08;-9999;
+12500;591.3;591.03;590.68;589.97;589.15;587.68;585.85;584.93;583.83;582.09;580.26;578.66;576.86;574.42;570.91;565.71;557.72;545.49;525.42;-9999;
+13000;594.17;594.06;593.71;592.99;592.15;590.65;588.8;587.86;586.73;584.94;583.09;581.44;579.62;577.12;573.54;568.24;560.07;547.49;526.75;-9999;
+13500;597.04;597.12;596.77;596.03;595.19;593.66;591.78;590.82;589.66;587.82;585.95;584.28;582.4;579.86;576.2;570.79;562.46;549.49;528.21;-9999;
+14000;600.34;600.24;599.88;599.13;598.26;596.71;594.81;593.82;592.64;590.75;588.83;587.14;585.21;582.61;578.91;573.36;564.85;551.49;529.49;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;672.23;672.22;672.03;671.78;671.79;671.17;670.52;670.14;669.1;667.57;665.77;663.29;659.15;651.67;636.61;593.72;-9999;-9999;-9999;-9999;
+500;667;667.08;666.73;666.44;666.4;665.76;665.08;664.67;663.67;662.15;660.43;658.06;654.12;646.86;633.01;595.85;-9999;-9999;-9999;-9999;
+1000;661.83;661.65;661.45;661.12;661.06;660.4;659.7;659.29;658.28;656.74;655.03;652.78;649.05;642.21;629.28;596.72;-9999;-9999;-9999;-9999;
+1500;656.5;656.51;656.28;655.88;655.72;655.04;654.32;653.93;652.95;651.42;649.73;647.49;643.93;637.51;625.83;596.31;-9999;-9999;-9999;-9999;
+2000;651.04;651.73;651.47;651.08;650.9;650.13;649.28;648.79;647.71;646.09;644.46;642.3;638.84;632.71;621.74;594.94;-9999;-9999;-9999;-9999;
+2500;646.89;646.91;646.64;646.26;646.07;645.28;644.42;643.93;642.88;641.24;639.48;637.23;633.8;627.98;617.5;593.94;-9999;-9999;-9999;-9999;
+3000;642.74;642.07;641.79;641.63;641.21;640.42;639.56;639.06;638.03;636.41;634.7;632.53;629.17;623.43;613.21;591.91;-9999;-9999;-9999;-9999;
+3500;637.17;637.22;636.92;636.75;636.34;635.53;634.66;634.16;633.17;631.57;629.9;627.8;624.58;619.11;609.29;589.54;-9999;-9999;-9999;-9999;
+4000;632.32;632.34;632.03;631.85;631.46;630.63;629.74;629.25;628.28;626.7;625.07;623.06;619.97;614.76;605.36;587.28;-9999;-9999;-9999;-9999;
+4500;627.46;627.43;627.11;626.93;626.54;625.7;624.79;624.31;623.37;621.81;620.21;618.28;615.33;610.38;601.54;584.77;536.28;-9999;-9999;-9999;
+5000;623.07;623.05;622.72;622.39;621.92;620.96;619.87;619.35;618.44;616.9;615.33;613.48;610.65;605.94;597.57;581.99;539.95;-9999;-9999;-9999;
+5500;618.67;618.69;618.4;618.06;617.6;616.61;615.5;614.88;613.82;612.13;610.43;608.64;605.93;601.46;593.34;578.44;542.11;-9999;-9999;-9999;
+6000;614.26;614.32;614.21;613.72;613.25;612.25;611.11;610.5;609.46;607.78;606.09;604.16;601.37;596.91;589.19;575.22;543.53;-9999;-9999;-9999;
+6500;609.83;609.99;609.86;609.38;608.9;607.88;606.7;606.1;605.08;603.41;601.75;599.89;597.14;592.81;585.47;572.44;544.09;-9999;-9999;-9999;
+7000;605.66;605.66;605.5;605.02;604.53;603.49;602.45;601.69;600.69;599.02;597.33;595.49;592.85;588.72;581.77;569.41;543.9;-9999;-9999;-9999;
+7500;601.48;601.31;601.14;600.66;600.16;599.09;598;597.21;596.2;594.52;592.86;591.07;588.53;584.6;577.96;566.26;543.39;-9999;-9999;-9999;
+8000;596.91;596.9;596.7;596.2;595.68;594.58;593.47;592.68;591.68;590;588.36;586.63;584.2;580.4;573.99;563.02;542.37;-9999;-9999;-9999;
+8500;592.29;592.44;592.23;591.72;591.18;590.06;588.93;588.13;587.15;585.47;583.84;582.16;579.81;576.06;569.75;559.67;540.79;496.26;-9999;-9999;
+9000;588;587.96;587.75;587.23;586.67;585.54;584.38;583.57;582.6;580.93;579.31;577.56;575.23;571.63;565.87;556.25;539.04;501.75;-9999;-9999;
+9500;583.75;583.48;583.26;582.73;582.16;581.01;579.83;578.93;577.94;576.24;574.41;572.88;570.61;567.21;561.77;552.82;536.99;504.51;-9999;-9999;
+10000;579.06;579;578.76;578.21;577.52;576.3;575.06;574.18;573.17;571.45;569.67;568.18;566;562.77;557.63;549.07;534.7;506.21;-9999;-9999;
+10500;574.35;574.3;574.05;573.46;572.83;571.59;570.31;569.41;568.41;566.7;564.94;563.48;561.38;558.29;553.45;545.48;532.2;506.9;-9999;-9999;
+11000;569.71;569.63;569.37;568.78;568.13;566.86;565.56;564.65;563.65;561.95;560.12;558.77;556.74;553.79;549.23;541.79;529.53;507.23;-9999;-9999;
+11500;572.58;572.46;572.19;571.58;570.92;569.63;568.3;567.37;566.35;564.62;562.79;561.38;559.32;556.32;551.67;544.09;531.47;508.44;-9999;-9999;
+12000;575.45;575.32;575.04;574.42;573.75;572.43;570.88;570.12;569.08;567.32;565.49;564.03;561.92;558.87;554.14;546.41;533.43;509.61;-9999;-9999;
+12500;578.33;578.21;577.91;577.23;576.61;575.26;573.7;572.9;571.84;570.04;568.2;566.69;564.54;561.44;556.63;548.75;535.38;510.75;-9999;-9999;
+13000;581.21;581.11;580.82;580.2;579.54;578.14;576.65;575.72;574.62;572.79;570.92;569.38;567.19;564.03;559.14;551.11;537.35;511.85;-9999;-9999;
+13500;584.1;583.92;583.63;582.99;582.32;581;579.47;578.56;577.44;575.54;573.65;572.09;569.86;566.65;561.66;553.48;539.32;512.91;-9999;-9999;
+14000;587.02;586.75;586.44;585.81;585.12;583.77;582.23;581.39;580.28;578.4;576.59;574.86;572.56;569.28;564.21;555.87;541.3;514.13;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;663.31;663;663.11;662.92;662.99;662.45;661.88;661.48;660.32;658.59;656.79;653.93;649.02;639.71;619.11;-9999;-9999;-9999;-9999;-9999;
+500;657.73;657.81;657.88;657.69;657.73;657.17;656.57;656.15;655.02;653.33;651.59;648.87;644.2;635.45;616.65;-9999;-9999;-9999;-9999;-9999;
+1000;652.14;652.61;652.68;652.49;652.51;651.93;651.31;650.89;649.75;648.08;646.34;643.76;639.34;631.13;613.68;606.2;-9999;-9999;-9999;-9999;
+1500;647.58;647.66;647.69;647.43;647.36;646.69;646.05;645.64;644.54;642.89;641.18;638.63;634.42;626.72;610.62;-9999;-9999;-9999;-9999;-9999;
+2000;642.91;642.97;642.98;642.73;642.64;641.96;641.2;640.69;639.5;637.7;636.04;633.6;629.53;622.21;607.34;564.31;-9999;-9999;-9999;-9999;
+2500;638.23;638.27;638.26;638.14;637.9;637.2;636.43;635.94;634.78;633.04;631.26;628.73;624.66;617.71;603.79;566.43;-9999;-9999;-9999;-9999;
+3000;633.48;633.55;633.53;633.39;633.14;632.43;631.65;631.16;630.04;628.42;626.59;624.15;620.25;613.27;600.11;567.15;-9999;-9999;-9999;-9999;
+3500;628.72;628.82;628.77;628.62;628.36;627.64;626.85;626.37;625.27;623.67;621.9;619.56;615.83;609.21;597.12;566.6;-9999;-9999;-9999;-9999;
+4000;623.95;624.03;623.99;623.84;623.57;622.83;622.03;621.55;620.49;618.91;617.19;614.93;611.37;605.1;593.49;565.78;-9999;-9999;-9999;-9999;
+4500;619.48;619.51;619.38;619.12;618.75;618;617.19;616.72;615.68;614.12;612.45;610.27;606.86;600.94;589.79;564.74;-9999;-9999;-9999;-9999;
+5000;614.99;615.31;615.16;614.89;614.49;613.6;612.63;612;610.87;609.31;607.68;605.59;602.34;596.65;585.99;563.69;-9999;-9999;-9999;-9999;
+5500;611.07;611.1;610.93;610.64;610.23;609.33;608.32;607.71;606.56;604.87;603.1;600.9;597.74;592.31;582.23;562.09;-9999;-9999;-9999;-9999;
+6000;606.84;606.87;606.68;606.38;605.97;605.04;604.03;603.4;602.28;600.62;598.86;596.68;593.45;588.13;578.56;560.1;-9999;-9999;-9999;-9999;
+6500;602.59;602.63;602.43;602.11;601.69;600.75;599.72;599.08;597.96;596.26;594.52;592.41;589.31;584.26;575.25;558.23;-9999;-9999;-9999;-9999;
+7000;598.3;598.38;598.12;597.78;597.34;596.35;595.28;594.64;593.55;591.86;590.15;588.11;585.15;580.29;571.86;556.07;514.11;-9999;-9999;-9999;
+7500;593.97;593.98;593.87;593.38;592.93;591.93;590.84;590.19;589.12;587.45;585.76;583.79;580.93;576.32;568.22;553.66;517.45;-9999;-9999;-9999;
+8000;589.62;589.59;589.45;588.96;588.5;587.49;586.39;585.72;584.67;583.01;581.35;579.45;576.69;572.31;564.7;551.09;519.31;-9999;-9999;-9999;
+8500;585.35;585.18;585.01;584.53;584.06;583.02;581.89;581.24;580.2;578.55;576.92;575.08;572.43;568.26;561.1;547.96;519.97;-9999;-9999;-9999;
+9000;581.09;580.76;580.57;580.09;579.6;578.55;577.39;576.74;575.72;574.08;572.46;570.69;568.15;564.17;557.42;545.27;520;-9999;-9999;-9999;
+9500;576.35;576.33;576.13;575.64;575.14;574.07;572.88;572.23;571.23;569.59;567.99;566.27;563.83;560.03;553.69;542.17;519.69;-9999;-9999;-9999;
+10000;571.6;571.89;571.69;571.18;570.67;569.58;568.35;567.7;566.72;565.09;563.5;561.84;559.49;555.87;549.88;539.03;518.78;-9999;-9999;-9999;
+10500;567.49;567.45;567.24;566.72;566.19;565.08;563.82;563.17;562.19;560.57;559;557.37;555.12;551.67;545.86;535.83;517.24;472.96;-9999;-9999;
+11000;563.36;563.01;562.79;562.26;561.71;560.58;559.28;558.62;557.66;556.04;554.47;552.89;550.72;547.28;541.73;532.5;515.58;478.61;-9999;-9999;
+11500;565.72;565.64;565.4;564.86;564.3;563.15;561.84;561.16;560.17;558.53;556.94;555.34;553.13;549.8;544.17;534.69;517.22;478.88;-9999;-9999;
+12000;568.08;568.28;568.04;567.49;566.91;565.74;564.43;563.72;562.7;561.04;559.43;557.8;555.56;552.19;546.57;536.89;518.87;-9999;-9999;-9999;
+12500;570.99;570.92;570.69;570.12;569.54;568.35;567.03;566.29;565.25;563.57;561.93;560.28;558.01;554.58;549.04;539.1;520.51;480.42;-9999;-9999;
+13000;573.9;573.58;573.35;572.77;572.19;570.98;569.64;568.88;567.81;566.1;564.45;562.77;560.46;556.99;551.37;541.33;522.15;-9999;-9999;-9999;
+13500;576.82;576.27;576.03;575.44;574.85;573.62;572.28;571.49;570.39;568.65;566.98;565.27;562.93;559.41;553.71;543.58;523.78;475.32;-9999;-9999;
+14000;579.03;578.97;578.72;578.12;577.52;576.27;574.92;574.11;572.99;571.22;569.52;567.79;565.41;561.84;556.06;545.83;525.41;477.61;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;653.73;653.8;653.83;653.66;653.8;653.34;652.85;652.37;651.14;649.51;647.29;643.99;638.26;626.09;594.82;-9999;-9999;-9999;-9999;-9999;
+500;648.54;648.61;648.73;648.56;648.67;648.18;647.67;647.19;645.98;644.37;642.26;639.1;633.52;622.34;593.82;-9999;-9999;-9999;-9999;-9999;
+1000;643.34;643.42;643.66;643.49;643.57;643.07;642.54;642.07;640.85;639.26;637.18;634.18;628.89;618.47;592.61;-9999;-9999;-9999;-9999;-9999;
+1500;638.71;638.79;638.86;638.63;638.63;638.03;637.4;636.96;635.77;634.2;632.17;629.23;624.19;614.48;591.37;-9999;-9999;-9999;-9999;-9999;
+2000;633.99;634.21;634.26;634.03;634.01;633.41;632.74;632.21;630.92;629.24;627.17;624.36;619.53;610.37;589.6;-9999;-9999;-9999;-9999;-9999;
+2500;629.53;629.61;629.64;629.41;629.37;628.75;628.07;627.56;626.3;624.65;622.6;619.72;614.92;606.23;587.15;-9999;-9999;-9999;-9999;-9999;
+3000;625.09;624.98;625;624.77;624.71;624.08;623.39;622.89;621.65;619.85;618.06;615.29;610.71;602.34;584.34;-9999;-9999;-9999;-9999;-9999;
+3500;620.27;620.35;620.35;620.24;620.04;619.4;618.7;618.2;616.99;615.23;613.49;610.84;606.46;598.54;581.62;-9999;-9999;-9999;-9999;-9999;
+4000;615.62;615.69;615.68;615.54;615.34;614.69;613.97;613.49;612.32;610.59;608.89;606.35;602.18;594.61;578.81;-9999;-9999;-9999;-9999;-9999;
+4500;611.42;611.46;611.38;611.16;610.83;610.04;609.22;608.76;607.62;605.92;604.27;601.84;597.83;590.59;575.8;535.35;-9999;-9999;-9999;-9999;
+5000;607.21;607.34;607.24;607;606.66;605.86;604.96;604.35;603.08;601.25;599.63;597.24;593.37;586.44;572.63;537.36;-9999;-9999;-9999;-9999;
+5500;602.99;603.22;603.1;602.85;602.5;601.69;600.78;600.17;598.91;597.07;595.27;592.78;588.95;582.25;569.33;538.55;-9999;-9999;-9999;-9999;
+6000;599.03;599.07;598.93;598.66;598.29;597.44;596.48;595.87;594.63;592.83;591.05;588.66;584.95;578.55;566.59;538.6;-9999;-9999;-9999;-9999;
+6500;595;594.81;594.66;594.37;594.01;593.12;592.16;591.54;590.33;588.64;586.81;584.49;580.94;574.88;563.45;538.12;-9999;-9999;-9999;-9999;
+7000;590.51;590.54;590.37;590.07;589.69;588.8;587.82;587.2;586.01;584.34;582.55;580.31;576.9;571.16;560.49;537.92;-9999;-9999;-9999;-9999;
+7500;586.23;586.25;586.06;585.75;585.36;584.44;583.45;582.83;581.67;580.02;578.27;576.1;572.84;567.39;557.42;537.04;-9999;-9999;-9999;-9999;
+8000;581.94;581.94;581.74;581.41;581.01;580.07;579.07;578.45;577.31;575.67;573.96;571.86;568.73;563.57;554.25;535.67;-9999;-9999;-9999;-9999;
+8500;577.65;577.73;577.39;577.06;576.64;575.69;574.67;574.04;572.93;571.3;569.63;567.6;564.6;559.7;550.99;533.74;-9999;-9999;-9999;-9999;
+9000;573.38;573.28;573.16;572.68;572.26;571.29;570.25;569.62;568.54;566.92;565.27;563.32;560.45;555.78;547.63;531.68;489.02;-9999;-9999;-9999;
+9500;568.92;568.92;568.76;568.29;567.87;566.88;565.82;565.18;564.12;562.51;560.9;559;556.25;551.82;544.18;529.35;492.84;-9999;-9999;-9999;
+10000;564.54;564.54;564.36;563.89;563.45;562.45;561.37;560.73;559.69;558.09;556.5;554.67;552.03;547.82;540.5;526.81;495.23;-9999;-9999;-9999;
+10500;560.16;560.15;559.97;559.49;559.03;558.01;556.9;556.26;555.23;553.64;552.07;550.3;547.77;543.77;536.9;524.07;496.35;-9999;-9999;-9999;
+11000;555.77;555.84;555.49;555.08;554.6;553.55;552.43;551.77;550.77;549.18;547.62;545.91;543.48;539.68;533.23;521.46;496.62;-9999;-9999;-9999;
+11500;558.06;558.24;558.07;557.56;557.08;556.02;554.87;554.21;553.18;551.57;550;548.26;545.8;541.96;535.41;523.47;497.78;-9999;-9999;-9999;
+12000;560.81;560.79;560.58;560.07;559.57;558.49;557.33;556.65;555.6;553.98;552.38;550.63;548.13;544.24;537.6;525.45;499.07;-9999;-9999;-9999;
+12500;563.58;563.35;563.1;562.58;562.09;560.98;559.8;559.11;558.03;556.39;554.78;553;550.48;546.54;539.8;527.2;500.19;-9999;-9999;-9999;
+13000;565.93;565.86;565.64;565.11;564.6;563.49;562.29;561.58;560.48;558.82;557.19;555.39;552.83;548.84;542.01;529.18;501.25;-9999;-9999;-9999;
+13500;568.29;568.39;568.19;567.64;567.13;566;564.79;564.07;562.94;561.26;559.61;557.78;555.2;551.15;544.23;531.15;502.3;-9999;-9999;-9999;
+14000;571.01;570.97;570.74;570.19;569.67;568.52;567.3;566.56;565.41;563.7;562.04;560.19;557.57;553.48;546.46;533.12;503.32;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;644.01;643.94;644.24;643.95;644.11;643.72;643.26;642.72;641.45;639.7;637.23;633.44;626.39;610.26;592.45;-9999;-9999;-9999;-9999;-9999;
+500;638.92;638.99;639.16;639;639.14;638.73;638.26;637.71;636.46;634.73;632.37;628.73;622.1;607.04;591.53;-9999;-9999;-9999;-9999;-9999;
+1000;633.83;633.89;634.22;634.06;634.19;633.76;633.29;632.75;631.49;629.78;627.46;623.98;617.74;603.64;590.4;-9999;-9999;-9999;-9999;-9999;
+1500;629.41;629.51;629.62;629.41;629.46;628.94;628.37;627.8;626.56;624.88;622.62;619.22;613.3;600.47;563.76;-9999;-9999;-9999;-9999;-9999;
+2000;624.95;625.03;625.12;624.91;624.95;624.42;623.85;623.26;621.91;620.14;617.81;614.53;608.88;596.78;564.31;-9999;-9999;-9999;-9999;-9999;
+2500;620.46;620.54;620.61;620.4;620.42;619.88;619.29;618.73;617.41;615.69;613.43;610.13;604.39;593.04;563.74;-9999;-9999;-9999;-9999;-9999;
+3000;615.96;616.03;616.09;615.87;615.88;615.33;614.72;614.18;612.89;611.21;609.03;605.86;600.41;589.55;562.21;-9999;-9999;-9999;-9999;-9999;
+3500;611.41;611.5;611.55;611.33;611.31;610.75;610.15;609.61;608.34;606.7;604.59;601.57;596.31;586.1;561.35;-9999;-9999;-9999;-9999;-9999;
+4000;606.98;607.03;607.01;606.76;606.73;606.15;605.53;605.02;603.77;602.18;600.15;597.19;592.15;582.55;560.17;-9999;-9999;-9999;-9999;-9999;
+4500;603.28;603.03;602.99;602.8;602.52;601.81;601.04;600.42;599.18;597.58;595.57;592.73;587.98;578.9;558.47;-9999;-9999;-9999;-9999;-9999;
+5000;598.94;598.99;598.93;598.72;598.43;597.69;596.86;596.21;594.82;593.09;590.97;588.25;583.67;575.17;556.52;-9999;-9999;-9999;-9999;-9999;
+5500;594.52;594.85;594.78;594.55;594.25;593.5;592.66;592.02;590.65;588.94;586.89;584.1;579.6;571.51;554.42;544.24;-9999;-9999;-9999;-9999;
+6000;590.65;590.69;590.6;590.37;590.06;589.29;588.43;587.8;586.47;584.78;582.78;580.1;575.8;568.16;552.06;546.8;-9999;-9999;-9999;-9999;
+6500;586.48;586.52;586.42;586.17;585.84;585.07;584.19;583.58;582.27;580.41;578.65;576.07;571.96;564.74;549.67;-9999;-9999;-9999;-9999;-9999;
+7000;582.3;582.38;582.21;581.96;581.62;580.83;579.94;579.33;578.05;576.23;574.5;572.01;568.09;561.26;547.11;510.43;-9999;-9999;-9999;-9999;
+7500;578.12;578.19;577.99;577.72;577.39;576.57;575.66;575.06;573.81;572.03;570.33;567.92;564.17;557.57;544.37;512.72;-9999;-9999;-9999;-9999;
+8000;573.94;573.91;573.76;573.48;573.14;572.29;571.37;570.77;569.56;567.81;566.13;563.81;560.23;554.01;541.92;513.46;-9999;-9999;-9999;-9999;
+8500;569.66;569.68;569.51;569.21;568.87;568;567.07;566.47;565.28;563.57;561.91;559.67;556.24;550.37;539.16;513.4;-9999;-9999;-9999;-9999;
+9000;565.4;565.42;565.24;564.93;564.57;563.68;562.74;562.14;560.97;559.38;557.67;555.5;552.22;546.67;536.26;513.34;-9999;-9999;-9999;-9999;
+9500;561.14;561.15;560.95;560.63;560.26;559.35;558.39;557.79;556.64;555.07;553.4;551.31;548.17;542.91;533.24;512.68;-9999;-9999;-9999;-9999;
+10000;556.87;556.94;556.64;556.31;555.93;555;554.02;553.42;552.3;550.73;549.1;547.09;544.08;539.1;530.11;511.46;-9999;-9999;-9999;-9999;
+10500;552.55;552.56;552.43;551.97;551.58;550.64;549.64;549.03;547.94;546.38;544.77;542.83;539.96;535.24;526.86;509.79;-9999;-9999;-9999;-9999;
+11000;548.24;548.24;548.08;547.62;547.21;546.26;545.24;544.62;543.55;542;540.43;538.55;535.8;531.33;523.51;507.64;464.93;-9999;-9999;-9999;
+11500;550.63;550.62;550.45;549.99;549.58;548.6;547.57;546.95;545.86;544.29;542.7;540.8;538.02;533.49;525.56;509.23;465.64;-9999;-9999;-9999;
+12000;553.03;553.1;552.75;552.37;551.95;550.96;549.91;549.28;548.17;546.58;544.98;543.06;540.26;535.67;527.62;510.82;-9999;-9999;-9999;-9999;
+12500;555.44;555.51;555.15;554.76;554.33;553.32;552.26;551.62;550.49;548.89;547.27;545.33;542.5;537.87;529.69;512.4;-9999;-9999;-9999;-9999;
+13000;557.83;557.82;557.63;557.14;556.72;555.7;554.62;553.96;552.81;551.2;549.56;547.6;544.74;540.07;531.76;513.98;-9999;-9999;-9999;-9999;
+13500;560.24;560.25;560.04;559.54;559.12;558.08;556.99;556.32;555.15;553.51;551.84;549.85;546.96;542.28;533.83;515.72;-9999;-9999;-9999;-9999;
+14000;562.68;562.66;562.46;561.95;561.52;560.47;559.35;558.68;557.45;555.8;554.12;552.1;549.19;544.45;535.91;517.3;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;633.71;633.63;633.92;633.66;633.84;633.51;632.95;632.18;630.82;628.88;626.17;622.01;613.46;590.74;-9999;-9999;-9999;-9999;-9999;-9999;
+500;628.78;628.84;629.15;628.88;629.04;628.69;628.21;627.42;626.05;624.15;621.55;617.56;609.47;588.77;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;623.83;624.1;624.38;624.1;624.26;623.89;623.42;622.73;621.35;619.45;616.88;613.06;605.42;586.42;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;619.63;619.69;619.85;619.66;619.75;619.3;618.75;618.06;616.67;614.81;612.29;608.5;601.28;583.75;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;615.4;615.38;615.5;615.3;615.38;614.92;614.37;613.71;612.29;610.36;607.78;604.05;597.08;580.75;561.81;-9999;-9999;-9999;-9999;-9999;
+2500;610.92;611.01;611.11;610.92;610.98;610.52;609.98;609.34;607.96;606.1;603.6;599.94;592.98;577.32;560.83;-9999;-9999;-9999;-9999;-9999;
+3000;606.54;606.63;606.72;606.52;606.57;606.09;605.56;604.93;603.6;601.81;599.39;595.79;589.15;574.29;559.65;-9999;-9999;-9999;-9999;-9999;
+3500;602.14;602.21;602.3;602.11;602.15;601.66;601.13;600.53;599.22;597.44;595.06;591.6;585.27;571.37;558.77;-9999;-9999;-9999;-9999;-9999;
+4000;597.68;598.02;598.02;597.74;597.65;597.14;596.58;595.99;594.7;592.97;590.7;587.31;581.33;568.59;533.46;-9999;-9999;-9999;-9999;-9999;
+4500;593.95;594.01;594;593.71;593.59;592.95;592.22;591.52;590.15;588.45;586.25;583.01;577.33;565.46;533.8;-9999;-9999;-9999;-9999;-9999;
+5000;590.3;589.98;589.96;589.79;589.54;588.88;588.13;587.46;586.03;584.23;581.94;578.69;573.19;562.22;533.72;-9999;-9999;-9999;-9999;-9999;
+5500;585.89;585.94;585.91;585.72;585.47;584.79;584.04;583.37;581.96;580.2;577.98;574.85;569.53;559.27;533.33;-9999;-9999;-9999;-9999;-9999;
+6000;581.83;581.88;581.83;581.64;581.37;580.69;579.92;579.26;577.88;576.15;574;570.98;565.93;556.3;533.19;-9999;-9999;-9999;-9999;-9999;
+6500;577.77;577.84;577.74;577.54;577.26;576.57;575.78;575.14;573.77;572.08;569.99;567.09;562.28;553.24;532.33;-9999;-9999;-9999;-9999;-9999;
+7000;573.69;573.76;573.63;573.42;573.14;572.42;571.63;571;569.65;567.98;565.95;563.17;558.59;550.09;531.03;-9999;-9999;-9999;-9999;-9999;
+7500;569.56;569.6;569.51;569.28;568.99;568.26;567.45;566.83;565.51;563.87;561.89;559.22;554.86;546.87;529.31;-9999;-9999;-9999;-9999;-9999;
+8000;565.42;565.47;565.37;565.12;564.82;564.08;563.25;562.65;561.35;559.73;557.81;555.24;551.08;543.57;527.29;519.03;-9999;-9999;-9999;-9999;
+8500;561.27;561.32;561.2;560.94;560.65;559.88;559.04;558.45;557.17;555.57;553.71;551.23;547.27;540.2;524.85;520.51;-9999;-9999;-9999;-9999;
+9000;557.11;557.16;557.02;556.75;556.45;555.66;554.8;554.22;552.97;551.22;549.58;547.2;543.42;536.76;522.4;483.86;-9999;-9999;-9999;-9999;
+9500;552.94;552.98;552.83;552.55;552.24;551.43;550.55;549.97;548.75;547.03;545.43;543.12;539.52;533.26;520.09;487.26;-9999;-9999;-9999;-9999;
+10000;548.76;548.83;548.61;548.32;548;547.17;546.28;545.7;544.51;542.82;541.25;539.02;535.58;529.57;517.79;488.38;-9999;-9999;-9999;-9999;
+10500;544.56;544.58;544.39;544.09;543.76;542.9;542;541.42;540.24;538.6;537.04;534.9;531.61;525.94;515.07;488.91;-9999;-9999;-9999;-9999;
+11000;540.36;540.34;540.14;539.82;539.48;538.61;537.7;537.1;535.96;534.35;532.8;530.74;527.6;522.26;512.22;488.91;-9999;-9999;-9999;-9999;
+11500;542.45;542.59;542.39;542.06;541.72;540.83;539.91;539.31;538.14;536.51;534.97;532.89;529.72;524.33;514.12;490.27;-9999;-9999;-9999;-9999;
+12000;544.55;544.62;544.64;544.31;543.96;543.06;542.13;541.52;540.35;538.67;537.12;535;531.82;526.41;516.02;491.43;-9999;-9999;-9999;-9999;
+12500;547.12;547.13;547.02;546.55;546.21;545.29;544.35;543.73;542.51;540.83;539.24;537.11;533.9;528.47;517.92;492.56;-9999;-9999;-9999;-9999;
+13000;549.4;549.41;549.29;548.81;548.46;547.54;546.55;545.92;544.66;542.95;541.37;539.22;535.99;530.52;519.82;493.66;-9999;-9999;-9999;-9999;
+13500;551.68;551.68;551.55;551.07;550.71;549.79;548.76;548.08;546.81;545.08;543.49;541.33;538.07;532.55;521.73;494.73;-9999;-9999;-9999;-9999;
+14000;553.98;553.96;553.81;553.31;552.94;551.98;551.06;550.24;548.95;547.21;545.61;543.43;540.16;534.59;523.63;495.77;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;622.78;622.84;623.09;622.86;622.78;622.31;621.63;620.75;619.35;617.29;614.36;609.69;598.94;577.68;-9999;-9999;-9999;-9999;-9999;-9999;
+500;618.11;618.17;618.36;618.24;618.24;617.75;617.08;616.21;614.83;612.8;609.97;605.5;595.36;565.45;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;613.51;613.57;613.73;613.59;613.69;613.2;612.53;611.69;610.31;608.31;605.53;601.26;591.65;563.71;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;609.52;609.37;609.61;609.32;609.43;608.88;608.16;607.25;605.8;603.85;601.15;596.94;587.83;561.62;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;605.06;605.13;605.27;605.09;605.18;604.67;603.97;603.1;601.66;599.64;596.82;592.52;583.95;559.98;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;600.59;600.94;601.06;600.87;600.96;600.46;599.75;598.85;597.45;595.45;592.7;588.55;580.21;558.17;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;596.54;596.61;596.73;596.55;596.63;596.17;595.47;594.61;593.17;591.23;588.55;584.52;576.65;556.42;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;592.54;592.27;592.38;592.19;592.26;591.84;591.16;590.32;588.9;586.97;584.36;580.48;573.03;554.41;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;588.2;588.27;588.28;588.02;587.96;587.44;586.81;585.99;584.6;582.71;580.19;576.4;569.34;552.02;532.35;-9999;-9999;-9999;-9999;-9999;
+4500;583.85;584.36;584.38;584.11;584.04;583.47;582.76;581.81;580.3;578.42;575.98;572.34;565.61;549.48;531.38;-9999;-9999;-9999;-9999;-9999;
+5000;580.38;580.44;580.45;580.18;580.09;579.52;578.84;577.91;576.43;574.49;571.99;568.37;561.94;546.8;531.24;-9999;-9999;-9999;-9999;-9999;
+5500;576.89;576.5;576.5;576.23;576.13;575.54;574.82;574;572.53;570.63;568.2;564.71;558.59;544.54;530.71;-9999;-9999;-9999;-9999;-9999;
+6000;572.51;572.56;572.55;572.38;572.16;571.55;570.83;570.05;568.6;566.74;564.38;561.02;555.2;542.21;530.35;-9999;-9999;-9999;-9999;-9999;
+6500;568.11;568.59;568.57;568.39;568.16;567.54;566.82;566.08;564.64;562.82;560.53;557.3;551.77;539.9;506.78;-9999;-9999;-9999;-9999;-9999;
+7000;564.55;564.61;564.57;564.38;564.15;563.52;562.8;562.08;560.65;558.88;556.65;553.54;548.31;537.26;507.2;-9999;-9999;-9999;-9999;-9999;
+7500;560.99;560.6;560.55;560.35;560.11;559.47;558.74;558.06;556.65;554.91;552.75;549.76;544.78;534.48;507.33;-9999;-9999;-9999;-9999;-9999;
+8000;556.53;556.57;556.51;556.3;556.05;555.39;554.66;554.01;552.62;550.91;548.82;545.94;541.2;531.59;507.37;-9999;-9999;-9999;-9999;-9999;
+8500;552.05;552.53;552.45;552.22;551.97;551.3;550.55;549.93;548.56;546.88;544.85;542.08;537.57;528.61;506.99;-9999;-9999;-9999;-9999;-9999;
+9000;548.42;548.46;548.37;548.13;547.87;547.19;546.42;545.82;544.48;542.83;540.86;538.19;533.89;525.53;505.98;-9999;-9999;-9999;-9999;-9999;
+9500;544.78;544.38;544.27;544.03;543.75;543.05;542.27;541.68;540.37;538.75;536.84;534.27;530.17;522.37;504.48;-9999;-9999;-9999;-9999;-9999;
+10000;540.25;540.28;540.16;539.9;539.64;538.9;538.1;537.52;536.23;534.65;532.79;530.32;526.41;519.12;502.62;-9999;-9999;-9999;-9999;-9999;
+10500;535.71;536.16;536.02;535.75;535.49;534.73;533.91;533.34;532.08;530.52;528.71;526.33;522.61;515.79;500.3;495.51;-9999;-9999;-9999;-9999;
+11000;531.99;532.02;531.87;531.59;531.31;530.54;529.7;529.14;527.9;526.37;524.61;522.32;518.76;512.43;498.27;495.31;-9999;-9999;-9999;-9999;
+11500;534.18;534.15;533.98;533.7;533.42;532.63;531.77;531.18;529.91;528.36;526.59;524.29;520.7;514.3;499.97;496.87;-9999;-9999;-9999;-9999;
+12000;536.38;536.45;536.1;535.81;535.53;534.74;533.83;533.19;531.9;530.35;528.58;526.25;522.64;516.23;501.65;498.53;-9999;-9999;-9999;-9999;
+12500;538.58;538.4;538.23;537.91;537.6;536.8;535.87;535.2;533.9;532.34;530.56;528.22;524.57;518.15;503.33;499.92;-9999;-9999;-9999;-9999;
+13000;540.51;540.53;540.35;540;539.67;538.82;537.88;537.21;535.9;534.33;532.54;530.19;526.51;520.07;504.99;-9999;-9999;-9999;-9999;-9999;
+13500;542.45;542.64;542.46;542.08;541.71;540.84;539.89;539.21;537.89;536.31;534.51;532.15;528.46;521.97;506.65;501.74;-9999;-9999;-9999;-9999;
+14000;544.72;544.72;544.49;544.1;543.73;542.85;541.89;541.21;539.88;538.29;536.49;534.11;530.39;523.84;508.3;504.14;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;611.56;610.87;610.95;610.59;610.44;609.97;609.25;608.28;606.87;604.68;601.56;596.19;581.16;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;606.58;606.64;606.62;606.3;606.16;605.68;604.96;604.01;602.62;600.49;597.41;592.21;578.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;602.37;602.43;602.4;602.06;601.89;601.4;600.7;599.76;598.34;596.21;593.18;588.16;575.3;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;598.76;598.37;598.42;598.06;597.89;597.36;596.59;595.59;594.09;591.92;588.97;584.1;572.14;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;594.22;594.28;594.29;593.98;593.82;593.3;592.54;591.56;590.11;587.93;584.9;580.06;568.94;547.48;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;589.75;590.1;590.2;589.86;589.72;589.19;588.45;587.5;586.06;583.94;581;576.32;565.82;545.35;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;585.84;585.91;585.99;585.71;585.57;585.05;584.33;583.41;581.98;579.91;577.05;572.55;562.68;533.67;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;581.93;581.66;581.82;581.52;581.39;580.87;580.17;579.27;577.87;575.85;573.06;568.73;559.45;532.13;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;577.78;577.84;577.88;577.57;577.32;576.68;575.96;575.1;573.72;571.75;569.05;564.87;556.11;530.63;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;573.59;574.04;574.09;573.79;573.52;572.88;572.08;571.11;569.62;567.61;564.98;560.97;552.72;529.36;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;570.2;570.26;570.29;570.03;569.77;569.11;568.29;567.31;565.86;563.87;561.21;557.27;549.56;528.51;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;566.8;566.46;566.48;566.24;565.98;565.32;564.52;563.55;562.08;560.11;557.54;553.74;546.45;527.23;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;562.58;562.64;562.64;562.4;562.17;561.51;560.71;559.77;558.32;556.39;553.85;550.09;543.31;525.61;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;558.34;558.78;558.79;558.54;558.34;557.67;556.88;555.96;554.53;552.64;550.18;546.55;540.1;523.62;505.48;-9999;-9999;-9999;-9999;-9999;
+7000;554.87;554.92;554.91;554.73;554.48;553.8;553.02;552.13;550.71;548.87;546.47;542.98;536.88;521.47;504.71;-9999;-9999;-9999;-9999;-9999;
+7500;551.38;551.03;551.02;550.83;550.59;549.91;549.14;548.26;546.86;545.06;542.74;539.38;533.6;519.47;504.53;-9999;-9999;-9999;-9999;-9999;
+8000;547.08;547.13;547.1;546.91;546.68;545.99;545.19;544.36;542.98;541.22;538.97;535.74;530.27;517.29;504.06;-9999;-9999;-9999;-9999;-9999;
+8500;542.77;543.2;543.16;542.97;542.74;542.05;541.24;540.44;539.08;537.35;535.17;532.07;526.87;514.94;503.89;-9999;-9999;-9999;-9999;-9999;
+9000;539.21;539.26;539.2;539;538.78;538.08;537.27;536.5;535.14;533.45;531.33;528.36;523.42;512.58;480.43;-9999;-9999;-9999;-9999;-9999;
+9500;535.64;535.29;535.22;535.01;534.78;534.08;533.26;532.52;531.18;529.52;527.47;524.61;519.92;509.89;481.3;-9999;-9999;-9999;-9999;-9999;
+10000;531.26;531.3;531.21;530.99;530.76;530.06;529.24;528.52;527.2;525.57;523.58;520.84;516.29;507.09;481.39;-9999;-9999;-9999;-9999;-9999;
+10500;526.86;527.28;527.19;526.96;526.71;526.01;525.19;524.49;523.19;521.59;519.66;517.02;512.75;504.17;481.58;-9999;-9999;-9999;-9999;-9999;
+11000;523.22;523.25;523.14;522.9;522.64;521.94;521.11;520.43;519.15;517.58;515.71;513.18;509.08;501.15;480.81;-9999;-9999;-9999;-9999;-9999;
+11500;525.28;525.23;525.12;524.83;524.56;523.81;522.97;522.29;521;519.43;517.55;514.99;510.89;502.92;482.06;-9999;-9999;-9999;-9999;-9999;
+12000;527.34;527.19;527.1;526.77;526.45;525.68;524.83;524.15;522.84;521.27;519.39;516.81;512.68;504.68;483.3;-9999;-9999;-9999;-9999;-9999;
+12500;529.13;529.16;528.98;528.64;528.31;527.54;526.68;526;524.69;523.11;521.22;518.63;514.44;506.45;484.51;-9999;-9999;-9999;-9999;-9999;
+13000;530.93;531;530.85;530.51;530.18;529.4;528.54;527.84;526.53;524.94;523.05;520.45;516.22;508.21;485.8;-9999;-9999;-9999;-9999;-9999;
+13500;532.91;532.91;532.72;532.37;532.04;531.25;530.38;529.69;528.37;526.77;524.87;522.27;518.01;509.97;486.98;-9999;-9999;-9999;-9999;-9999;
+14000;534.91;534.77;534.57;534.21;533.89;533.09;532.22;531.52;530.2;528.6;526.7;524.08;519.79;511.7;488.12;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;597.53;597.49;597.45;597.09;596.91;596.76;596.27;595.53;594.11;591.42;587.02;579.41;559.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;593.43;593.49;593.38;593.05;592.84;592.5;591.99;591.27;589.88;587.38;583.51;576.3;557.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;589.49;589.55;589.44;589.09;588.84;588.38;587.81;587.02;585.63;583.15;579.8;573.99;555.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;585.48;585.68;585.67;585.3;585.06;584.58;583.9;583;581.54;578.99;575.82;570.17;553.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;581.83;581.89;581.79;581.46;581.24;580.74;580.02;579.04;577.62;575.27;571.88;566.46;550.91;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;578.19;577.94;577.9;577.59;577.38;576.86;576.14;575.13;573.71;571.53;568.21;562.98;548.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;573.99;574.05;573.97;573.67;573.48;572.97;572.23;571.24;569.78;567.57;564.55;559.46;545.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;569.79;569.85;570.01;569.71;569.53;569.03;568.3;567.33;565.92;563.77;560.83;555.88;543.39;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;566.45;566.51;566.36;566;565.71;565.09;564.32;563.39;562;559.93;557.03;552.26;540.68;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;563.11;562.82;562.75;562.39;562.11;561.5;560.68;559.63;558.15;556.03;553.19;548.6;538.02;517.52;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;559.16;559.22;559.1;558.74;558.47;557.87;557.06;556.04;554.58;552.5;549.68;545.24;535.47;516.03;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;555.21;555.27;555.42;555.07;554.81;554.2;553.42;552.42;550.98;548.95;546.19;541.91;532.92;515.38;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;551.78;551.83;551.71;551.37;551.11;550.51;549.74;548.77;547.35;545.36;542.67;538.55;530.13;503.91;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;548.32;548.05;547.96;547.64;547.39;546.79;546.03;545.08;543.68;541.75;539.13;535.15;527.25;502.58;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;544.35;544.41;544.27;543.92;543.65;543.03;542.26;541.37;539.99;538.1;535.56;531.72;524.31;501.84;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;540.38;540.44;540.54;540.2;539.93;539.31;538.55;537.63;536.24;534.42;531.95;528.25;521.31;501.06;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;536.89;536.95;536.8;536.51;536.19;535.56;534.8;533.91;532.54;530.71;528.29;524.76;518.22;499.77;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;533.4;533.13;533.03;532.74;532.42;531.78;531.03;530.15;528.8;527.02;524.67;521.18;515.04;498.1;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;529.33;529.34;529.23;528.94;528.62;527.98;527.23;526.37;525.03;523.29;521.02;517.67;511.82;496.24;479.21;-9999;-9999;-9999;-9999;-9999;
+9500;525.26;525.32;525.41;525.12;524.8;524.15;523.41;522.57;521.25;519.54;517.34;514.14;508.57;494.41;478.63;-9999;-9999;-9999;-9999;-9999;
+10000;521.67;521.68;521.56;521.26;520.94;520.29;519.53;518.74;517.42;515.76;513.63;510.57;505.26;492.34;477.6;-9999;-9999;-9999;-9999;-9999;
+10500;518.08;517.81;517.68;517.38;517.06;516.4;515.63;514.87;513.57;511.94;509.87;506.91;501.91;490.07;477.72;-9999;-9999;-9999;-9999;-9999;
+11000;513.9;513.9;513.77;513.46;513.14;512.48;511.7;510.97;509.69;508.08;506.08;503.24;498.47;487.62;478.04;-9999;-9999;-9999;-9999;-9999;
+11500;515.57;515.63;515.49;515.17;514.85;514.19;513.42;512.67;511.39;509.78;507.77;504.91;500.15;489.24;479.34;-9999;-9999;-9999;-9999;-9999;
+12000;517.34;517.36;517.2;516.88;516.56;515.89;515.11;514.37;513.09;511.47;509.45;506.59;501.8;490.85;480.61;-9999;-9999;-9999;-9999;-9999;
+12500;519.13;519.06;518.91;518.59;518.27;517.59;516.81;516.06;514.77;513.16;511.15;508.26;503.44;492.46;481.86;-9999;-9999;-9999;-9999;-9999;
+13000;520.95;520.76;520.61;520.28;519.99;519.29;518.5;517.75;516.46;514.85;512.83;509.94;505.08;494.06;483.09;-9999;-9999;-9999;-9999;-9999;
+13500;522.45;522.46;522.3;521.97;521.68;520.97;520.19;519.43;518.14;516.53;514.5;511.61;506.71;495.65;484.4;-9999;-9999;-9999;-9999;-9999;
+14000;523.97;524.03;523.98;523.64;523.36;522.64;521.86;521.11;519.81;518.18;516.13;513.18;508.33;497.23;485.44;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;582.31;582.37;582.33;582.31;582.36;582.08;581.37;580.31;578.33;575.16;570.03;559.56;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;578.6;578.66;578.75;578.62;578.69;578.41;577.73;576.7;574.82;571.72;566.65;557.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;575.23;575.29;575.22;575.08;575.15;574.85;574.15;573.09;571.28;568.26;563.35;554.6;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;571.71;571.78;571.67;571.52;571.7;571.45;570.79;569.77;567.93;564.9;560.02;551.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;568.19;568.25;568.07;567.83;567.98;567.84;567.31;566.44;564.66;561.76;556.98;549.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;564.67;564.51;564.43;564.15;564.19;564.08;563.57;562.78;561.33;558.52;554.1;546.44;528.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;560.85;560.91;560.78;560.47;560.36;560.28;559.78;559.02;557.6;555.08;551.04;543.69;525.34;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;557.03;557.14;557.08;556.76;556.58;556.44;555.94;555.21;553.81;551.36;547.72;540.88;523.49;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;553.79;553.85;553.66;553.28;552.96;552.58;552.06;551.35;549.99;547.6;544.08;538.41;521.92;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;550.55;550.37;550.26;549.89;549.56;549.09;548.48;547.66;546.22;543.8;540.48;535.1;520.55;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;546.94;547;546.83;546.46;546.15;545.61;545.02;544.16;542.74;540.4;537.21;532.05;518.51;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;543.32;543.37;543.36;543.01;542.7;542.14;541.5;540.63;539.24;536.96;533.94;529.12;516.78;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;539.96;540.02;539.86;539.51;539.22;538.64;537.93;537.07;535.71;533.5;530.63;525.95;514.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;536.59;536.41;536.32;535.98;535.7;535.13;534.37;533.47;532.15;530.03;527.06;522.73;512.36;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;532.83;532.89;532.75;532.42;532.15;531.58;530.83;529.85;528.56;526.52;523.7;519.51;509.93;489.83;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;529.06;529.12;529.15;528.83;528.56;528;527.25;526.3;524.98;522.98;520.31;516.26;507.38;488.7;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;525.6;525.65;525.52;525.21;524.95;524.38;523.65;522.72;521.37;519.44;516.89;512.96;504.81;488.07;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;522.12;521.95;521.87;521.6;521.31;520.74;520.02;519.12;517.76;515.92;513.45;509.63;502.04;476.06;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;518.28;518.34;518.19;517.92;517.61;517.06;516.35;515.47;514.16;512.37;509.95;506.27;499.13;474.84;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;514.48;514.54;514.55;514.26;513.96;513.37;512.66;511.78;510.51;508.76;506.41;502.88;496.06;474.43;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;510.97;510.97;510.87;510.58;510.28;509.69;508.98;508.12;506.83;505.1;502.85;499.43;492.93;473.62;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;507.45;507.26;507.15;506.86;506.57;505.97;505.26;504.42;503.15;501.46;499.23;495.83;489.76;472.24;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;503.51;503.52;503.4;503.12;502.82;502.22;501.52;500.7;499.42;497.75;495.57;492.31;486.53;470.59;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;505.03;505.08;504.96;504.67;504.37;503.77;503.07;502.24;500.98;499.32;497.12;493.85;488.05;471.93;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;506.55;506.61;506.51;506.21;505.92;505.31;504.61;503.79;502.48;500.83;498.63;495.5;489.57;473.25;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;508.18;508.18;508.05;507.75;507.46;506.85;506.15;505.33;504.14;502.51;500.3;497.1;491.09;474.56;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;509.82;509.72;509.59;509.28;508.99;508.38;507.68;507;505.85;504.25;502.02;498.63;492.67;475.85;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;511.24;511.24;511.11;510.8;510.51;509.91;509.32;508.73;507.58;505.97;503.74;500.12;493.99;477.13;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;512.68;512.74;512.62;512.31;512.06;511.49;511.02;510.46;509.3;507.69;505.46;501.8;495.47;478.38;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;566.26;566.24;566.24;565.99;565.98;565.64;564.82;563.57;561.38;557.79;552.55;544.8;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;562.74;562.82;562.85;562.66;562.57;562.26;561.48;560.26;558.13;554.64;549.39;539.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;559.6;559.66;559.73;559.51;559.37;559.04;558.26;557;554.85;551.45;546.22;536.01;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;556.45;556.42;556.53;556.32;556.22;555.9;555.17;553.96;551.82;548.41;543.05;532.66;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;553.28;553.16;553.32;553.1;552.98;552.71;552.02;550.86;548.8;545.5;540.17;529.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;549.81;549.87;549.98;549.84;549.79;549.48;548.84;547.74;545.71;542.55;537.3;527.15;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;546.47;546.53;546.66;546.54;546.56;546.23;545.62;544.56;542.62;539.57;534.33;524.94;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;543.12;543.18;543.3;543.2;543.25;542.95;542.35;541.34;539.49;536.55;531.42;522.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;539.93;540;540.1;539.94;539.96;539.63;539.04;538.09;536.31;533.5;528.62;520.61;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;536.66;536.72;536.85;536.69;536.74;536.48;535.91;534.92;533.16;530.44;525.87;518.48;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;533.48;533.54;533.48;533.39;533.47;533.21;532.63;531.77;530.32;527.68;523.35;516.17;499.79;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;530.3;530.36;530.24;530.07;530.15;529.91;529.34;528.5;527.08;524.68;520.8;513.75;496.84;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;527.1;526.94;526.86;526.7;526.8;526.56;526;525.19;523.79;521.45;517.98;511.29;495.13;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;523.9;523.64;523.52;523.31;523.4;523.17;522.63;521.84;520.47;518.18;514.83;509.15;493.55;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;520.69;520.3;520.19;519.88;519.96;519.74;519.22;518.45;517.1;514.87;511.63;506.05;492.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;516.94;517;516.82;516.49;516.48;516.27;515.76;515.03;513.71;511.53;508.4;503.04;490.34;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;513.24;513.52;513.42;513.09;512.97;512.75;512.27;511.56;510.28;508.14;505.13;499.99;488.47;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;510.07;510.12;509.97;509.65;509.44;509.21;508.75;508.05;506.78;504.71;501.77;496.86;486.5;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;506.89;506.58;506.48;506.21;505.91;505.62;505.17;504.5;503.27;501.27;498.42;493.68;484.18;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;503.06;503.12;502.97;502.69;502.41;502.02;501.57;500.91;499.71;497.76;494.99;490.47;481.73;462.14;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;499.2;499.49;499.4;499.13;498.84;498.38;497.88;497.24;496.06;494.2;491.52;487.2;479.11;461.63;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;495.83;495.89;495.75;495.48;495.21;494.66;494.17;493.53;492.36;490.59;488.01;483.9;476.41;460.77;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;492.45;492.5;492.05;491.81;491.53;490.98;490.42;489.79;488.65;486.93;484.46;480.71;473.49;448.48;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;493.52;493.57;493.47;493.22;492.94;492.49;492.01;491.41;490.26;488.55;486.07;482.09;474.69;449.51;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;494.59;494.65;494.87;494.63;494.4;494.07;493.62;493.01;491.87;490.15;487.67;483.46;476.11;450.4;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;496.37;496.38;496.28;496.07;495.98;495.67;495.22;494.61;493.48;491.75;489.27;485.05;477.45;451.3;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;498.17;497.78;497.65;497.58;497.57;497.27;496.82;496.22;495.09;493.35;490.87;486.62;478.78;452.15;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;499.19;499.25;499.19;499.08;499.15;498.85;498.42;497.83;496.69;494.93;492.46;488.19;480.1;465.54;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;500.63;500.71;500.74;500.64;500.7;500.41;500.01;499.42;498.28;496.51;494.03;489.75;481.4;466.53;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;548.6;548.49;548.49;548.23;548.09;547.71;546.83;545.46;543.11;539.43;535.32;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;545.45;545.51;545.32;545.25;545.1;544.68;543.78;542.48;540.2;536.56;532.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;542.86;542.66;542.67;542.42;542.31;541.89;541;539.62;537.27;533.61;528.92;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;539.79;539.85;539.82;539.54;539.48;539.07;538.2;536.85;534.55;530.82;525.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;536.7;536.83;536.78;536.74;536.6;536.19;535.36;534.04;531.8;528.12;523.03;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;533.84;533.9;533.89;533.77;533.66;533.28;532.5;531.21;529.01;525.4;520.19;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;530.96;530.81;530.8;530.71;530.67;530.33;529.55;528.33;526.17;522.66;517.36;509.87;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;527.71;527.77;527.8;527.69;527.63;527.32;526.58;525.41;523.3;519.89;514.53;505.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;524.88;524.94;524.89;524.56;524.47;524.27;523.56;522.43;520.4;517.09;511.74;502.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;522.04;522.1;522.07;521.78;521.76;521.45;520.69;519.53;517.54;514.38;509.24;500.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;519.19;519.25;519.22;519.04;518.97;518.67;517.95;516.84;514.91;511.82;506.64;497.66;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;516.29;516.35;516.34;516.15;516.2;515.85;515.18;514.12;512.2;509.26;504.29;495.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;513.38;513.41;513.42;513.25;513.32;513;512.37;511.36;509.52;506.68;501.91;493.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;510.35;510.41;510.48;510.34;510.38;510.11;509.53;508.58;506.82;504.08;499.49;491.83;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;507.17;507.23;507.31;507.17;507.22;507.1;506.67;505.75;504.06;501.44;497.01;489.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;503.98;504.04;504.09;503.97;504.02;503.85;503.44;502.69;501.31;498.75;494.49;487.14;471.35;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;500.78;500.84;500.85;500.73;500.79;500.6;500.14;499.41;498.06;495.81;491.95;484.71;468.54;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;497.52;497.36;497.5;497.39;497.47;497.25;496.79;496.07;494.76;492.5;489.13;482.24;466.86;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;493.93;493.99;494.1;494.04;494.09;493.88;493.42;492.7;491.42;489.21;485.98;480.02;465.5;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;490.33;490.57;490.65;490.57;490.66;490.45;489.97;489.29;488.03;485.88;482.78;476.95;463.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;486.72;487.1;487.16;487.09;487.18;486.97;486.51;485.83;484.6;482.52;479.55;473.98;462.17;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;483.52;483.57;483.65;483.58;483.66;483.44;483;482.34;481.13;479.14;476.27;471.05;460.37;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;480.11;480.16;480.11;480.03;480.08;479.87;479.44;478.81;477.63;475.71;472.95;467.95;458.27;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;481.34;481.4;481.52;481.46;481.53;481.32;480.89;480.26;479.08;477.15;474.4;469.37;459.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;482.83;482.89;482.94;482.88;482.97;482.76;482.34;481.73;480.56;478.62;475.69;470.78;460.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;484.33;484.31;484.36;484.28;484.4;484.2;483.81;483.22;482.06;480.13;477.14;472.19;461.93;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;485.83;485.72;485.77;485.7;485.82;485.64;485.27;484.71;483.55;481.62;478.64;473.6;463.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;487.04;487.1;487.18;487.12;487.23;487.1;486.74;486.18;485.03;483.11;480.12;475;464.23;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;488.27;488.33;488.57;488.51;488.68;488.56;488.2;487.64;486.5;484.58;481.6;476.38;465.3;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;528.94;529.01;528.62;528.45;528.05;527.46;526.69;525.41;523.23;521.11;532.1;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;526.42;526.49;526.02;526.07;525.73;525.13;524.32;522.95;520.69;518.16;524.55;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;523.82;523.9;523.68;523.55;523.43;522.87;521.99;520.57;518.18;515.27;517.49;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;521.45;521.52;521.34;521.08;521.03;520.57;519.63;518.19;515.79;512.57;512.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;518.87;518.93;518.81;518.56;518.46;518.04;517.21;515.74;513.32;509.97;507.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;516.26;516.2;516.2;515.98;515.87;515.56;514.61;513.23;510.89;507.34;503.96;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;513.65;513.47;513.54;513.33;513.24;512.91;511.99;510.61;508.37;504.79;500.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;510.75;510.81;510.85;510.61;510.56;510.21;509.33;508.05;505.8;502.13;497.99;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;507.91;508.16;508.16;507.87;507.83;507.48;506.74;505.48;503.19;499.53;495.38;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;505.61;505.68;505.67;505.36;505.3;504.87;504.08;502.81;500.62;497.11;492.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;503.31;503;502.97;502.82;502.78;502.39;501.61;500.39;498.21;494.82;489.99;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;500.39;500.45;500.5;500.3;500.22;499.86;499.09;497.9;495.76;492.45;487.38;482.07;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;497.41;497.71;497.72;497.63;497.58;497.26;496.52;495.37;493.29;490.05;484.81;477.45;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;494.95;495.01;495.1;494.98;494.82;494.61;493.91;492.8;490.78;487.62;482.23;474.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;492.48;492.54;492.33;492.27;492.15;491.92;491.25;490.19;488.24;485.16;479.84;471.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;489.37;489.44;489.51;489.44;489.45;489.18;488.55;487.54;485.66;482.68;477.54;468.84;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;486.25;486.6;486.66;486.57;486.68;486.4;485.81;484.86;483.05;480.17;475.21;466.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;483.65;483.72;483.78;483.7;483.86;483.59;483.04;482.13;480.36;477.64;472.84;465.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;481.04;480.75;480.86;480.8;480.99;480.75;480.25;479.36;477.68;475.06;470.46;462.88;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;477.53;477.6;477.71;477.63;477.82;477.75;477.37;476.57;474.95;472.44;468.04;460.49;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;474.02;474.4;474.48;474.41;474.57;474.51;474.1;473.45;472.14;469.78;465.62;458.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;471.07;471.13;471.22;471.14;471.29;471.2;470.85;470.18;468.91;466.78;463.21;455.72;440.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;468.12;467.83;467.91;467.87;467.98;467.85;467.5;466.87;465.64;463.54;460.3;454.27;439.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;468.96;469.02;469.16;469.15;469.28;469.17;468.85;468.21;466.97;464.92;461.63;455.36;440.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;470.25;470.31;470.45;470.45;470.58;470.5;470.17;469.57;468.32;466.26;462.95;456.58;441.07;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;471.55;471.6;471.72;471.7;471.86;471.82;471.54;470.95;469.73;467.58;464.28;457.79;441.91;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;472.85;472.88;472.99;472.97;473.17;473.16;472.86;472.34;471.14;468.96;465.59;458.99;442.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;474.04;474.11;474.24;474.24;474.48;474.52;474.23;473.72;472.52;470.27;466.9;460.18;443.77;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;475.25;475.37;475.49;475.48;475.83;475.87;475.58;475.08;473.89;471.66;468.2;461.41;444.64;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/V2527-A5_St5_T.csv b/engine/test/stubs/V2527-A5/V2527-A5_St5_T.csv
new file mode 100644
index 00000000..b5f2fe89
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/V2527-A5_St5_T.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;837.02;837.3;837.61;838.16;839.06;840.36;842.21;844.6;847.53;851.1;855.55;860.5;866.12;872.4;879.32;886.85;894.89;903.24;911.64;920;
+500;832.79;833.2;833.52;834.09;834.95;836.21;837.91;840.04;842.78;846.17;850.18;854.86;860.22;866.26;872.97;880.33;888.3;896.74;905.4;914.05;
+1000;828.65;829.04;829.39;830.01;830.95;832.27;833.95;836;838.5;841.54;845.15;849.5;854.52;860.28;866.74;873.88;881.69;890.08;898.9;907.81;
+1500;824.51;824.65;825.06;825.77;826.82;828.24;829.97;832.05;834.53;837.4;840.88;844.64;849.13;854.51;860.67;867.55;875.12;883.37;892.16;901.3;
+2000;819.83;819.99;820.46;821.26;822.44;823.97;825.83;828.03;830.59;833.39;836.74;840.33;844.37;849.11;854.82;861.37;868.68;876.69;885.35;894.52;
+2500;814.83;815.02;815.55;816.46;817.76;819.4;821.4;823.76;826.48;829.38;832.49;836.17;840.04;844.37;849.43;855.42;862.38;870.12;878.55;887.62;
+3000;809.46;809.67;810.26;811.27;812.68;814.48;816.65;819.19;822.06;825.13;828.4;832.1;835.86;839.99;844.61;850.02;856.41;863.69;871.85;880.7;
+3500;803.86;804.08;804.71;805.77;807.25;809.15;811.48;814.25;817.3;820.57;824.03;827.92;831.73;835.78;840.17;845.1;850.88;857.67;865.29;873.85;
+4000;797.97;798.21;798.89;800.02;801.56;803.55;805.99;808.89;812.14;815.65;819.34;823.46;827.48;831.59;835.92;840.57;845.81;851.98;859.19;867.21;
+4500;791.99;792.57;793.24;794.35;795.9;797.89;800.32;803.24;806.6;810.29;814.5;818.66;822.93;827.28;831.68;836.27;841.18;846.75;853.35;860.97;
+5000;786.21;786.74;787.44;788.59;790.2;792.27;794.82;797.82;801.14;804.73;808.99;813.45;818.02;822.64;827.3;831.97;836.8;842;847.91;854.95;
+5500;780.4;780.65;781.37;782.57;784.24;786.39;789.03;792.12;795.59;799.4;803.68;808.04;812.68;817.64;822.6;827.53;832.45;837.52;843;849.31;
+6000;774.83;774.6;775.05;776.28;778.01;780.24;782.98;786.16;789.73;793.68;798.19;802.75;807.5;812.44;817.52;822.78;827.97;833.13;838.42;844.2;
+6500;768.84;769.04;769.61;770.25;771.86;773.95;776.63;779.91;783.6;787.86;792.33;797.11;802.11;807.25;812.54;817.85;823.17;828.59;833.97;839.49;
+7000;764.36;764.55;765.13;766.07;767.42;769.16;771.03;774.07;777.52;781.57;786.18;791.12;796.34;801.76;807.26;812.88;818.47;823.88;829.4;834.96;
+7500;759.91;760.09;760.66;761.6;762.93;764.67;766.83;769.36;771.97;776.07;780.4;785.02;790.23;795.87;801.68;807.52;813.45;819.3;824.91;830.35;
+8000;755.56;755.37;756.19;757.14;758.47;760.2;762.32;764.81;767.71;770.97;774.8;779.58;784.64;789.91;795.69;801.86;808.03;814.24;820.31;826.09;
+8500;751.15;750.98;751.73;752.62;753.95;755.69;757.81;760.31;763.13;766.36;770.1;773.84;779.07;784.55;790.21;796.01;802.29;808.75;815.22;821.49;
+9000;746.71;746.77;747.31;748.22;749.52;751.21;753.27;755.71;758.55;761.79;765.44;769.41;773.77;778.86;784.74;790.76;796.9;803.01;809.69;816.39;
+9500;742.33;742.25;742.92;743.8;745.09;746.74;748.78;751.19;753.99;757.15;760.81;764.7;768.99;773.66;778.94;785.2;791.57;798.02;804.37;810.81;
+10000;738.12;738.28;738.79;739.64;740.84;742.34;744.26;746.94;749.7;752.82;756.29;760.11;764.29;768.83;773.8;779.29;785.91;792.61;799.35;805.91;
+10500;733.92;734.28;734.79;735.63;736.81;738.32;740.17;742.35;745.23;748.32;751.76;755.54;759.68;764.15;768.98;774.19;779.9;786.86;793.87;800.86;
+11000;730.14;730.32;730.82;731.65;732.81;734.3;736.11;738.26;740.74;743.78;747.22;750.98;755.07;759.49;764.26;769.36;774.84;780.75;788.04;795.34;
+11500;733.16;733.42;733.92;734.76;735.92;737.41;739.24;741.39;743.88;746.69;750.38;754.15;758.26;762.7;767.48;772.61;778.11;784.03;791.25;798.49;
+12000;736.17;736.55;737.05;737.89;739.06;740.55;742.38;744.55;747.05;749.87;753.56;757.34;761.47;765.93;770.73;775.88;781.4;787.35;794.61;801.84;
+12500;739.53;739.7;740.21;741.05;742.22;743.73;745.57;747.74;750.25;753.08;756.77;760.57;764.72;769.19;774.01;779.17;784.72;790.7;798;805.19;
+13000;742.88;742.73;743.4;744.24;745.42;746.93;748.77;750.95;753.46;756.32;760;763.83;767.98;772.48;777.32;782.5;788.08;794.07;801.38;808.56;
+13500;745.95;746.12;746.62;747.46;748.64;750.15;752;754.19;756.72;759.58;763.27;767.11;771.28;775.8;780.66;785.86;791.46;797.49;804.76;811.97;
+14000;749.33;749.52;750.03;750.87;752.03;753.53;755.36;757.53;760.02;762.86;766.56;770.42;774.61;779.15;784.03;789.25;794.87;800.91;808.16;815.4;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;804.1;804.18;804.59;805.27;806.32;807.8;809.77;812.3;815.53;819.5;824.28;829.33;834.69;840.38;846.51;853.06;860.06;867.68;876.09;885.24;
+500;798.2;798.08;798.5;799.2;800.21;801.64;803.55;806.06;809.37;813.62;818.29;823.52;829.06;834.82;840.9;847.41;854.32;861.71;869.78;878.66;
+1000;791.86;792.02;792.42;793.11;794.11;795.56;797.53;800.12;803.38;807.35;812.2;817.47;823.16;829.12;835.27;841.73;848.6;855.87;863.65;872.18;
+1500;785.54;786.13;786.52;787.18;788.16;789.58;791.52;794.11;797.46;801.65;806.26;811.41;817.05;823.17;829.52;836.02;842.84;850.07;857.69;865.88;
+2000;780.34;780.46;780.84;781.48;782.42;783.78;785.69;788.24;791.54;795.7;800.35;805.46;811.05;817.04;823.5;830.21;837.06;844.24;851.81;859.78;
+2500;775.12;775.09;775.46;776.06;776.95;778.24;780.08;782.58;785.77;789.81;794.36;799.48;805.03;811.03;817.43;824.15;831.2;838.36;845.88;853.78;
+3000;769.78;770.13;770.49;771.03;771.85;773.05;774.79;777.19;780.21;783.86;788.47;793.43;798.97;804.93;811.35;818.13;825.21;832.45;839.93;847.78;
+3500;765.46;765.6;765.89;766.4;767.17;768.29;769.89;772.12;774.92;778.38;782.76;787.51;792.86;798.8;805.17;811.98;819.13;826.53;833.94;841.75;
+4000;761.33;761.42;761.68;762.13;762.8;763.9;765.44;767.47;770.03;773.21;777.29;781.78;786.89;792.62;798.96;805.72;812.9;820.41;828.09;835.73;
+4500;757.07;757.69;757.95;758.43;759.15;760.19;761.61;763.38;765.56;768.46;772.16;776.31;781.12;786.59;792.7;799.43;806.56;814.11;821.94;829.88;
+5000;753.78;753.88;754.18;754.7;755.49;756.62;758.08;759.85;761.96;764.5;767.44;771.21;775.64;780.77;786.59;793.08;800.19;807.68;815.57;823.71;
+5500;749.69;749.82;750.17;750.77;751.68;752.93;754.47;756.31;758.47;760.94;763.69;767.05;770.78;775.25;780.7;786.88;793.74;801.21;809.07;817.28;
+6000;745.37;745.51;745.91;746.6;747.62;748.97;750.62;752.59;754.88;757.41;760.12;763.29;766.72;770.68;775.37;780.9;787.43;794.67;802.49;810.69;
+6500;741.35;741.83;742.23;742.92;743.93;745.21;746.76;748.63;751.05;753.69;756.52;759.51;762.96;766.61;770.81;775.76;781.54;788.25;795.86;804.01;
+7000;737.78;737.94;738.38;739.15;740.24;741.64;743.35;745.38;747.64;750.06;752.68;756.05;759.33;762.83;766.7;771.14;776.38;782.48;789.38;797.29;
+7500;733.62;733.79;734.28;735.11;736.27;737.76;739.59;741.77;744.22;746.85;749.6;752.71;755.73;759.17;762.9;766.99;771.67;777.21;783.64;790.89;
+8000;729.21;729.39;729.93;730.81;732.03;733.61;735.55;737.84;740.42;743.23;746.23;749.55;752.76;756.06;759.34;763.14;767.45;772.39;778.23;785.01;
+8500;724.84;724.77;725.32;726.24;727.51;729.17;731.22;733.64;736.32;739.27;742.44;746.03;749.51;753.01;756.57;760.06;763.63;768.08;773.28;779.45;
+9000;719.73;719.96;720.54;721.5;722.84;724.57;726.68;729.16;731.94;735.02;738.55;742.12;745.85;749.66;753.43;757.24;760.93;764.67;768.88;774.35;
+9500;714.89;714.7;715.47;716.48;717.88;719.68;721.9;724.48;727.37;730.55;734.2;737.9;741.83;745.88;750;754.04;758.07;761.94;765.85;770.18;
+10000;710.28;710.44;710.95;711.79;712.99;714.5;716.8;719.48;722.5;725.99;729.63;733.5;737.56;741.77;746.11;750.53;754.82;759.05;763.09;767.16;
+10500;705.66;706.16;706.67;707.51;708.7;710.24;712.17;714.2;717.3;720.93;724.72;728.77;733.02;737.44;741.97;746.57;751.22;755.75;760.17;764.35;
+11000;701.72;701.89;702.4;703.24;704.42;705.96;707.87;710.1;712.69;715.41;719.49;723.7;728.15;732.77;737.53;742.38;747.26;752.11;756.84;761.41;
+11500;704.63;704.87;705.37;706.21;707.4;708.96;710.86;713.11;715.71;718.45;722.55;726.78;731.25;735.89;740.67;745.54;750.43;755.3;759.96;764.46;
+12000;707.55;707.86;708.37;709.22;710.4;711.96;713.89;716.15;718.76;721.5;725.63;729.88;734.37;739.03;743.83;748.71;753.62;758.51;763.19;767.69;
+12500;710.71;710.89;711.4;712.25;713.45;715.01;716.94;719.21;721.82;724.59;728.74;733.02;737.52;742.21;747.02;751.93;756.85;761.75;766.44;770.95;
+13000;713.9;713.94;714.45;715.31;716.51;718.08;720.02;722.29;724.93;727.71;731.88;736.18;740.7;745.41;750.24;755.16;760.1;765.02;769.73;774.24;
+13500;716.9;717.08;717.58;718.43;719.62;721.17;723.12;725.42;728.07;730.85;735.05;739.37;743.91;748.64;753.49;758.43;763.39;768.32;773.05;777.56;
+14000;720.18;720.36;720.87;721.72;722.92;724.48;726.41;728.69;731.3;734.23;738.25;742.59;747.16;751.89;756.77;761.73;766.7;771.66;776.38;780.91;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;777.18;777.29;777.5;777.87;778.48;779.35;780.54;782.14;784.21;787.31;791.33;796.17;801.81;808.02;814.77;822.02;829.76;838;846.76;856;
+500;771.64;771.81;772.03;772.41;772.99;773.81;774.93;776.45;778.5;781.68;785.41;790.11;795.69;801.92;808.59;815.76;823.42;831.57;840.21;849.37;
+1000;766.19;766.3;766.53;766.94;767.54;768.4;769.56;771.11;773.1;775.84;779.68;784.26;789.61;795.74;802.41;809.5;817.07;825.14;833.67;842.72;
+1500;760.63;760.72;760.97;761.41;762.06;762.96;764.18;765.79;767.85;770.55;774.33;778.67;783.74;789.61;796.17;803.24;810.73;818.7;827.15;836.07;
+2000;754.89;755;755.28;755.77;756.48;757.45;758.74;760.43;762.59;765.31;769.13;773.4;778.28;783.74;789.95;796.93;804.38;812.26;820.61;829.43;
+2500;749.34;749.15;749.35;749.89;750.69;751.78;753.2;755;757.29;760.12;763.97;768.21;772.99;778.3;784.13;790.61;798;805.82;814.08;822.81;
+3000;742.77;742.89;743.23;743.81;744.67;745.85;747.41;749.4;751.86;754.88;758.78;763.03;767.77;772.95;778.61;784.81;791.68;799.37;807.54;816.16;
+3500;736.33;736.64;737;737.61;738.51;739.76;741.41;743.53;746.2;749.48;753.5;757.81;762.55;767.66;773.19;779.2;785.77;793.05;801;809.52;
+4000;730.71;730.83;731.16;731.73;732.58;733.78;735.39;737.5;740.31;743.91;748.02;752.49;757.27;762.38;767.83;773.7;780.06;787;794.69;802.95;
+4500;725.14;724.95;725.41;725.98;726.84;728.04;729.68;731.84;734.63;738.09;742.28;746.93;751.88;757.03;762.48;768.27;774.47;781.18;788.5;796.59;
+5000;719.34;719.45;719.77;720.33;721.17;722.37;724.01;726.2;729.03;732.55;736.8;741.37;746.25;751.56;757.07;762.85;768.96;775.49;782.54;790.25;
+5500;713.61;714.02;714.32;714.86;715.67;716.84;718.46;720.64;723.49;726.97;731.25;735.85;740.83;746.09;751.56;757.36;763.46;769.88;776.74;784.14;
+6000;709.31;709.4;709.63;710.03;710.68;711.64;713.11;715.25;718.09;721.46;725.68;730.24;735.23;740.58;746.22;752.02;757.91;764.31;771.03;778.21;
+6500;705.48;705.54;705.74;706.1;706.69;707.58;708.87;710.7;713.14;716.12;720.18;724.62;729.54;734.9;740.62;746.61;752.72;758.88;765.37;772.39;
+7000;702.13;702.19;702.35;702.65;703.15;703.93;705.12;706.86;709.1;711.87;715.46;719.39;723.87;729.14;734.86;740.93;747.25;753.65;760.07;766.71;
+7500;698.63;699.2;699.36;699.64;700.1;700.81;701.89;703.44;705.44;707.98;711.29;714.95;719.14;723.85;729.04;735.09;741.49;748.13;754.78;761.45;
+8000;696.33;696.39;696.55;696.85;697.32;698.04;699.11;700.52;702.27;704.51;707.48;710.82;714.71;719.17;724.16;729.67;735.6;742.3;749.22;756.1;
+8500;693.69;693.65;693.84;694.18;694.7;695.47;696.53;697.89;699.57;701.59;703.98;707.08;710.6;714.72;719.44;724.73;730.54;736.77;743.31;750.51;
+9000;690.65;690.74;690.98;691.4;692.04;692.95;694.1;695.47;697.09;699;701.17;703.88;706.94;710.64;714.97;719.95;725.52;731.63;738.15;744.93;
+9500;687.47;687.57;687.86;688.36;689.09;690.14;691.44;692.96;694.71;696.63;698.71;701;703.83;707.02;710.89;715.44;720.68;726.53;732.92;739.73;
+10000;683.93;684.06;684.41;685.02;685.91;687.05;688.42;690.11;692.05;694.13;696.3;698.59;701.27;704.05;707.31;711.34;716.11;721.61;727.74;734.42;
+10500;680.1;680.24;680.64;681.32;682.3;683.57;685.12;686.96;689.01;691.26;693.65;696.11;698.85;701.52;704.45;707.85;711.99;716.97;722.72;729.13;
+11000;676.02;676.17;676.61;677.36;678.42;679.76;681.43;683.41;685.66;688.08;690.86;693.56;696.32;699.09;701.93;705;708.55;712.87;718.02;724.01;
+11500;678.91;679.13;679.57;680.32;681.37;682.73;684.4;686.39;688.65;691.07;693.87;696.57;699.33;702.06;704.88;707.96;711.53;715.88;721.07;727.01;
+12000;681.79;682.11;682.55;683.31;684.37;685.73;687.4;689.4;691.66;694.09;696.9;699.61;702.32;705.03;707.86;710.95;714.55;718.94;724.14;730.13;
+12500;684.97;685.11;685.56;686.32;687.38;688.75;690.43;692.44;694.71;697.15;699.96;702.62;705.32;708.03;710.86;713.98;717.6;722.02;727.26;733.29;
+13000;688.14;688.14;688.6;689.36;690.43;691.8;693.49;695.5;697.78;700.22;702.97;705.64;708.34;711.06;713.91;717.04;720.68;725.12;730.41;736.49;
+13500;691.16;691.32;691.76;692.52;693.57;694.92;696.58;698.59;700.86;703.25;706.02;708.69;711.39;714.13;716.99;720.14;723.79;728.27;733.6;739.72;
+14000;694.48;694.62;695.07;695.83;696.88;698.24;699.9;701.84;704.03;706.38;709.13;711.77;714.49;717.24;720.11;723.26;726.94;731.45;736.82;742.98;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;751.97;752.07;752.28;752.66;753.3;754.21;755.43;757.13;759.26;761.91;765.16;769.38;774.35;780.35;787.17;794.66;802.62;810.95;819.75;828.97;
+500;745.97;746;746.21;746.58;747.16;747.99;749.09;750.74;752.9;755.59;758.89;763.08;768.04;774.01;780.78;788.18;796.11;804.45;813.19;822.35;
+1000;740;739.97;740.17;740.54;741.11;741.92;743;744.66;746.76;749.37;752.64;756.84;761.81;767.72;774.4;781.71;789.54;797.89;806.58;815.71;
+1500;733.9;733.97;734.17;734.54;735.09;735.9;736.96;738.62;740.76;743.39;746.63;750.73;755.63;761.5;768.05;775.24;782.97;791.22;799.97;809;
+2000;727.85;728.01;728.22;728.58;729.12;729.92;730.95;732.6;734.76;737.43;740.85;744.86;749.72;755.37;761.77;768.81;776.42;784.55;793.2;802.29;
+2500;722.1;722.17;722.36;722.7;723.22;723.99;725.01;726.63;728.81;731.48;734.97;739.03;743.91;749.51;755.72;762.44;769.89;777.9;786.43;795.47;
+3000;716.42;716.47;716.65;716.96;717.46;718.18;719.16;720.72;722.91;725.59;729.09;733.2;738.12;743.67;749.8;756.41;763.52;771.27;779.67;788.59;
+3500;711.1;711.15;711.3;711.56;711.98;712.6;713.47;714.92;717.06;719.74;723.26;727.39;732.33;737.85;743.9;750.42;757.4;764.88;772.93;781.72;
+4000;705.71;706.1;706.25;706.51;706.92;707.52;708.35;709.6;711.54;713.99;717.45;721.61;726.54;732.03;738.02;744.44;751.32;758.67;766.52;774.93;
+4500;701.06;701.12;701.27;701.54;701.95;702.57;703.41;704.59;706.47;708.84;712.06;715.98;720.76;726.2;732.13;738.47;745.26;752.5;760.2;768.41;
+5000;696.37;696.21;696.23;696.52;696.96;697.61;698.51;699.68;701.51;703.87;707.01;710.83;715.34;720.51;726.23;732.52;739.2;746.34;753.93;761.97;
+5500;691.73;691.69;691.83;692.07;692.44;692.98;693.75;694.78;696.58;699;701.98;705.86;710.19;715.15;720.67;726.64;733.17;740.2;747.67;755.59;
+6000;687.18;687.24;687.41;687.69;688.12;688.73;689.58;690.69;692.27;694.46;697.22;701.03;705.23;709.97;715.25;721.1;727.4;734.11;741.43;749.24;
+6500;682.47;682.54;682.75;683.1;683.62;684.34;685.3;686.55;688.19;690.43;693.27;696.79;700.63;704.98;710.02;715.61;721.79;728.4;735.41;742.9;
+7000;677.92;677.75;677.85;678.24;678.84;679.67;680.79;682.24;684.03;686.38;689.48;692.85;696.65;700.8;705.27;710.31;716.21;722.71;729.63;736.93;
+7500;672.47;672.56;672.81;673.23;673.88;674.78;676.01;677.62;679.67;682.22;685.48;688.91;692.7;696.79;701.2;705.93;711.13;717.04;723.85;731.07;
+8000;667.45;667.53;667.77;668.19;668.84;669.77;671.07;672.79;675.01;677.79;681.27;684.87;688.72;692.8;697.15;701.81;706.8;712.26;718.3;725.2;
+8500;662.53;662.61;662.85;663.28;663.94;664.88;666.2;667.94;670.24;673.14;676.73;680.57;684.6;688.76;693.11;697.73;702.62;707.86;713.59;719.92;
+9000;657.67;657.85;658.09;658.5;659.14;660.07;661.38;663.16;665.53;668.49;672.11;676.01;680.17;684.56;689.02;693.64;698.51;703.62;709.11;715.1;
+9500;652.8;653.37;653.59;653.97;654.58;655.47;656.74;658.52;661.04;663.8;667.45;671.36;675.61;680.11;684.76;689.49;694.37;699.47;704.8;710.53;
+10000;649.23;649.3;649.48;649.82;650.37;651.2;652.4;654.11;656.41;659.21;662.79;666.64;670.87;675.45;680.29;685.25;690.19;695.28;700.6;706.14;
+10500;645.73;645.77;645.92;646.19;646.64;647.36;648.46;650.07;652.21;654.85;658.26;661.96;666.1;670.64;675.53;680.68;685.94;691.15;696.39;701.87;
+11000;642.73;642.77;642.89;643.13;643.52;644.14;645.1;646.53;648.42;650.81;653.99;657.44;661.39;665.8;670.64;675.83;681.28;686.83;692.28;697.73;
+11500;645.51;645.58;645.7;645.93;646.33;646.95;647.92;649.36;651.26;653.67;656.87;660.35;664.32;668.76;673.62;678.84;684.32;689.89;695.36;700.81;
+12000;648.28;648.41;648.54;648.77;649.17;649.8;650.78;652.22;654.14;656.57;659.79;663.29;667.29;671.75;676.64;681.88;687.39;692.98;698.46;703.87;
+12500;651.24;651.28;651.41;651.64;652.04;652.68;653.66;655.11;657.04;659.49;662.73;666.27;670.29;674.77;679.68;684.96;690.48;696.09;701.56;706.95;
+13000;654.2;654.07;654.3;654.54;654.94;655.58;656.57;658.04;659.99;662.45;665.71;669.27;673.31;677.82;682.76;688.06;693.61;699.24;704.65;710.06;
+13500;657.26;657.31;657.42;657.65;658.03;658.65;659.62;661.06;662.96;665.64;668.73;672.3;676.37;680.9;685.87;691.19;696.77;702.36;707.77;713.2;
+14000;660.48;660.51;660.63;660.86;661.25;661.87;662.85;664.3;666.23;668.9;671.95;675.49;679.5;684.01;689;694.36;699.95;705.49;710.92;716.37;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;731.61;731.69;731.9;732.3;732.97;734.12;734.95;736.28;737.93;740.19;742.82;746.43;750.56;755.41;761.24;768.08;775.6;783.6;791.99;800.81;
+500;725.3;725.38;725.6;725.99;726.6;727.64;728.46;729.72;731.41;733.7;736.34;739.98;744.19;749.1;755;761.86;769.38;777.35;785.72;794.46;
+1000;719.04;719.12;719.33;719.72;720.32;721.31;722.18;723.46;725.08;726.99;729.9;733.55;737.79;742.79;748.74;755.63;763.11;771.06;779.4;788.12;
+1500;712.8;712.92;713.13;713.51;714.1;715.05;715.93;717.23;718.87;720.82;723.65;727.21;731.39;736.47;742.48;749.35;756.81;764.72;773.03;781.72;
+2000;706.67;706.75;706.96;707.33;707.9;708.8;709.72;711.02;712.69;714.7;717.67;721.08;725.22;730.21;736.22;743.04;750.47;758.32;766.6;775.27;
+2500;700.56;700.63;700.83;701.19;701.74;702.6;703.54;704.85;706.53;708.58;711.54;714.97;719.13;724.15;730.1;736.73;744.09;751.91;760.12;768.76;
+3000;694.46;694.52;694.7;695.03;695.53;696.34;697.34;698.68;700.4;702.49;705.43;708.87;713.07;718.11;724.07;730.66;737.79;745.44;753.62;762.19;
+3500;688.6;688.67;688.85;689.16;689.65;690.37;691.32;692.58;694.21;696.36;699.34;702.81;707.02;712.09;718.04;724.6;731.64;739.12;747.06;755.59;
+4000;682.8;682.87;683.04;683.34;683.81;684.49;685.48;686.75;688.4;690.47;693.29;696.7;701;706.1;712.01;718.51;725.49;732.89;740.73;749;
+4500;677.36;677.4;677.52;677.75;678.1;678.66;679.67;680.98;682.65;684.77;687.54;690.9;695.07;700.14;705.99;712.43;719.33;726.65;734.4;742.58;
+5000;672.34;672.38;672.5;672.72;673.07;673.56;674.44;675.6;677.09;679.08;681.87;685.23;689.36;694.4;700.14;706.34;713.15;720.41;728.08;736.16;
+5500;667.31;667.41;667.53;667.74;668.08;668.55;669.45;670.64;672.17;674.11;676.54;679.76;683.75;688.73;694.38;700.59;707.1;714.15;721.74;729.73;
+6000;662.28;662.52;662.63;662.83;663.16;663.62;664.49;665.73;667.28;669.28;671.76;674.97;678.8;683.39;688.68;694.77;701.3;708.14;715.43;723.3;
+6500;657.69;657.72;657.82;658.02;658.33;658.77;659.61;660.86;662.43;664.46;667.02;670.26;674.11;678.64;683.72;689.26;695.42;702.25;709.42;717.02;
+7000;653.01;653.11;653.2;653.36;653.63;654.03;654.81;656.06;657.63;659.68;662.42;665.59;669.48;673.96;678.94;684.35;690.2;696.52;703.44;710.92;
+7500;649.3;648.83;648.89;649.01;649.23;649.56;650.18;651.37;652.91;654.96;657.74;660.98;664.89;669.33;674.23;679.53;685.23;691.37;697.99;704.93;
+8000;644.76;644.78;644.84;644.96;645.17;645.49;646.02;647.1;648.5;650.4;653.1;656.38;660.32;664.72;669.56;674.76;680.34;686.32;692.75;699.66;
+8500;640.25;640.79;640.86;640.99;641.2;641.55;642.03;643.04;644.41;646.23;648.82;652;655.81;660.14;664.91;670.03;675.51;681.37;687.63;694.34;
+9000;636.76;636.8;636.88;637.03;637.27;637.65;638.16;639.11;640.47;642.25;644.77;647.85;651.55;655.78;660.36;665.32;670.72;676.47;682.59;689.12;
+9500;632.7;632.73;632.83;633.02;633.31;633.73;634.32;635.24;636.61;638.4;640.75;643.9;647.44;651.49;656.01;660.87;666.05;671.62;677.63;684.01;
+10000;628.8;628.67;628.62;628.86;629.2;629.71;630.4;631.36;632.77;634.62;637;640.1;643.52;647.39;651.69;656.46;661.59;667.03;672.81;678.96;
+10500;623.85;623.91;624.09;624.4;624.85;625.48;626.32;627.38;628.88;630.84;633.32;636.4;639.74;643.46;647.56;652.1;657.12;662.49;668.19;674.21;
+11000;619.08;619.08;619.28;619.63;620.16;620.9;621.9;623.19;624.86;626.97;629.73;632.71;636.04;639.66;643.6;647.93;652.7;657.96;663.58;669.52;
+11500;621.74;621.86;622.06;622.41;622.94;623.68;624.69;625.98;627.65;629.79;632.55;635.55;638.89;642.52;646.48;650.82;655.61;660.89;666.51;672.46;
+12000;624.4;624.66;624.86;625.22;625.75;626.49;627.5;628.81;630.49;632.64;635.41;638.41;641.76;645.41;649.38;653.74;658.54;663.84;669.47;675.43;
+12500;627.42;627.49;627.69;628.05;628.58;629.34;630.35;631.65;633.35;635.5;638.29;641.3;644.66;648.32;652.31;656.69;661.5;666.81;672.46;678.43;
+13000;630.45;630.52;630.72;631.06;631.58;632.31;633.28;634.55;636.23;638.39;641.2;644.22;647.59;651.26;655.27;659.65;664.48;669.81;675.48;681.46;
+13500;633.64;633.7;633.9;634.25;634.77;635.5;636.49;637.77;639.43;641.55;644.32;647.27;650.57;654.23;658.25;662.65;667.49;672.84;678.52;684.52;
+14000;636.78;636.93;637.14;637.48;638.01;638.75;639.76;641.05;642.73;644.87;647.65;650.63;653.95;657.56;661.48;665.76;670.53;675.89;681.58;687.59;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;714.42;714.32;714.5;714.85;715.64;716.36;716.78;717.57;718.76;720.21;722.31;724.59;727.36;730.53;734.6;739.59;745.73;752.75;760.31;768.45;
+500;707.94;707.94;708.11;708.48;709.24;709.89;710.29;711.07;712.29;713.79;715.91;718.34;721.21;724.53;728.69;733.8;740.06;747.11;754.66;762.6;
+1000;701.57;701.57;701.75;702.12;702.9;703.51;703.97;704.78;705.96;707.41;709.53;712.08;715.04;718.49;722.75;727.99;734.34;741.42;748.96;756.83;
+1500;695.11;695.11;695.3;695.67;696.48;697.07;697.58;698.45;699.7;701.21;703.32;706.1;708.84;712.41;716.77;722.17;728.58;735.68;743.2;751.05;
+2000;688.55;688.62;688.81;689.19;690;690.56;691.12;692.02;693.3;694.88;697.07;699.95;702.81;706.35;710.75;716.29;722.78;729.88;737.39;745.22;
+2500;682.02;682.14;682.33;682.72;683.52;684.05;684.66;685.59;686.56;688.52;690.76;693.65;696.76;700.45;704.89;710.37;716.94;724.03;731.51;739.34;
+3000;675.91;675.97;676.16;676.51;677.26;677.71;678.3;679.18;680.21;682.16;684.44;687.34;690.65;694.39;699.07;704.61;711.09;718.14;725.58;733.39;
+3500;669.82;669.89;670.04;670.37;671.1;671.54;672.16;673.08;674.09;675.94;678.13;681.04;684.5;688.34;693.1;698.86;705.33;712.31;719.62;727.38;
+4000;664.38;664.43;664.57;664.85;665.46;665.81;666.32;667.09;668.06;669.9;672.12;674.91;678.4;682.25;687.11;692.97;699.52;706.48;713.78;721.38;
+4500;658.94;658.98;659.13;659.4;659.98;660.36;660.9;661.69;662.63;664.21;666.28;669.09;672.5;676.36;681.16;687.02;693.59;700.6;707.88;715.48;
+5000;653.55;653.59;653.73;654;654.54;654.95;655.51;656.35;657.35;658.88;661;663.72;666.83;670.57;675.45;681.23;687.61;694.61;701.92;709.51;
+5500;648.17;648.27;648.41;648.67;649.17;649.6;650.18;651.03;652.08;653.84;655.75;658.5;661.65;665.45;670.08;675.53;681.89;688.66;695.86;703.48;
+6000;642.96;643.01;643.15;643.4;643.86;644.29;644.9;645.77;646.86;648.6;650.53;653.31;656.52;660.38;665.08;670.51;676.46;682.86;689.94;697.37;
+6500;637.83;637.86;637.97;638.2;638.62;639.07;639.68;640.55;641.68;643.41;645.36;648.15;651.42;655.35;660.09;665.5;671.4;677.68;684.29;691.44;
+7000;633.64;633.04;633.14;633.34;633.69;634.1;634.66;635.47;636.56;638.28;640.24;643.03;646.32;650.32;655.11;660.5;666.35;672.55;679.12;686;
+7500;628.23;628.27;628.37;628.55;628.87;629.3;629.89;630.71;631.79;633.42;635.26;637.98;641.28;645.31;650.14;655.5;661.29;667.43;673.92;680.76;
+8000;622.84;623.52;623.62;623.8;624.09;624.54;625.16;626;627.11;628.49;630.74;633.29;636.47;640.38;645.16;650.49;656.23;662.31;668.72;675.48;
+8500;618.77;618.82;618.91;619.08;619.35;619.82;620.48;621.35;622.5;623.94;626.12;628.68;631.87;635.81;640.43;645.56;651.16;657.17;663.52;670.2;
+9000;614.68;614.16;614.25;614.41;614.66;615.13;615.82;616.74;617.93;619.43;621.59;624.13;627.32;631.28;635.85;640.91;646.35;652.11;658.32;664.94;
+9500;609.5;609.53;609.61;609.77;610.01;610.46;611.2;612.15;613.39;614.97;617.13;619.69;622.87;626.8;631.31;636.28;641.63;647.35;653.37;659.7;
+10000;604.34;604.95;605.04;605.2;605.42;605.86;606.63;607.6;608.88;610.52;612.58;615.31;618.52;622.41;626.82;631.69;636.94;642.56;648.53;654.82;
+10500;600.41;600.46;600.54;600.68;600.9;601.31;602.09;603.08;604.4;606.1;608.23;610.98;614.24;618.1;622.42;627.15;632.28;637.79;643.67;649.91;
+11000;596.32;596.05;596.1;596.22;596.42;596.77;597.57;598.59;599.96;601.68;604.01;606.69;609.99;613.83;618.09;622.7;627.68;633.06;638.83;644.96;
+11500;598.7;598.74;598.8;598.92;599.11;599.48;600.27;601.28;602.63;604.36;606.69;609.37;612.69;616.53;620.8;625.42;630.41;635.81;641.59;647.75;
+12000;601.06;601.42;601.48;601.6;601.79;602.16;602.95;603.95;605.31;607.05;609.39;612.08;615.41;619.26;623.53;628.16;633.17;638.57;644.39;650.56;
+12500;604.29;604.32;604.36;604.46;604.62;604.95;605.7;606.64;608.01;609.77;612;614.81;618.14;622;626.28;630.93;635.94;641.38;647.21;653.4;
+13000;607.42;607.43;607.49;607.59;607.75;608.1;608.86;609.82;611.12;612.81;615.09;617.69;620.9;624.77;629.06;633.72;638.74;644.2;650.05;656.27;
+13500;610.52;610.61;610.66;610.77;610.95;611.3;612.07;613.04;614.37;616.07;618.36;620.98;624.21;627.95;632.11;636.62;641.58;647.06;652.92;659.16;
+14000;613.58;613.83;613.89;614;614.17;614.54;615.32;616.31;617.64;619.36;621.67;624.32;627.57;631.34;635.53;640.06;644.97;650.27;655.94;662.09;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;697.83;697.92;698.02;698.22;698.82;698.72;698.89;698.8;699.58;700.42;701.25;702.13;703.34;704.87;707.14;710.57;715.14;721.07;728.29;736.26;
+500;691.14;691.39;691.51;691.73;691.93;692.21;692.35;692.28;693.09;693.99;695.03;695.96;697.3;699.03;701.16;704.84;709.43;715.42;722.62;730.5;
+1000;684.84;684.9;685.02;685.26;685.47;685.77;685.97;685.94;686.73;687.62;688.48;689.76;691.16;693.07;695.45;699.12;703.76;709.79;716.96;724.76;
+1500;678.58;678.43;678.55;678.82;679.03;679.35;679.57;679.6;680.43;681.38;682.31;683.59;685.04;687.09;689.64;693.3;698.08;704.19;711.29;719.02;
+2000;671.93;671.96;672.09;672.39;672.6;672.94;673.2;673.28;674.15;675.15;676.19;677.55;679.06;681.13;683.81;687.49;692.38;698.58;705.64;713.27;
+2500;665.61;665.66;665.79;666.09;666.26;666.57;666.83;666.97;667.88;668.92;670.08;671.54;673.12;675.28;678.04;681.68;686.7;692.89;700.01;707.52;
+3000;659.91;659.94;660.04;660.3;660.8;660.62;660.76;660.83;661.7;662.71;663.97;665.5;667.2;669.42;672.37;676.04;681.05;687.24;694.28;701.8;
+3500;654.28;654.34;654.44;654.73;655.23;655.08;655.26;655.29;656.01;656.89;658.01;659.53;661.28;663.55;666.69;670.51;675.51;681.71;688.55;696.01;
+4000;648.7;648.76;648.88;649.18;649.67;649.54;649.75;649.86;650.61;651.54;652.7;654.06;655.61;657.76;660.99;664.97;669.97;676.22;683.01;690.22;
+4500;643.15;643.2;643.33;643.65;644.13;644.03;644.26;644.43;645.18;646.19;647.67;648.89;650.55;652.6;655.58;659.46;664.52;670.7;677.48;684.59;
+5000;637.64;637.68;637.8;638.14;638.6;638.53;638.8;639.01;639.74;640.84;642.36;643.73;645.49;647.65;650.69;654.54;659.3;665.16;671.9;678.98;
+5500;632.15;632.18;632.31;632.65;633.09;633.05;633.35;633.63;634.32;635.5;637.04;638.61;640.44;642.75;645.92;649.82;654.71;660.29;666.36;673.33;
+6000;626.89;626.92;627.03;627.34;627.71;627.64;627.92;628.24;628.92;630.16;631.73;633.5;635.37;637.82;641.08;645.09;650.08;655.69;661.69;668.03;
+6500;621.78;621.81;621.92;622.25;622.6;622.57;622.85;623.15;623.71;624.88;626.42;628.38;630.29;632.87;636.23;640.36;645.42;651.05;657.02;663.27;
+7000;616.7;616.71;616.83;617.15;617.49;617.5;617.81;618.17;618.73;619.99;621.45;623.41;625.22;627.9;631.35;635.63;640.73;646.36;652.32;658.54;
+7500;611.66;611.63;611.74;612.06;612.39;612.45;612.79;613.22;614.08;615.08;616.57;618.67;620.56;623.16;626.49;630.85;636.02;641.64;647.57;653.78;
+8000;606.65;606.51;606.66;606.98;607.3;607.4;607.78;608.25;609.15;610.19;611.73;613.83;615.92;618.64;622.05;626.33;631.3;636.88;642.8;648.97;
+8500;601.45;601.49;601.61;601.91;602.22;602.38;602.79;603.33;604.25;605.32;606.9;608.98;611.27;614.14;617.64;621.95;626.96;632.35;637.98;644.13;
+9000;596.19;596.38;596.51;596.8;597.11;597.32;597.77;598.36;599.33;600.46;602.08;604.17;606.65;609.58;613.2;617.6;622.57;627.96;633.6;639.46;
+9500;591.24;591.28;591.4;591.68;591.98;592.22;592.7;593.33;594.33;595.5;597.2;599.36;602;605.02;608.73;613.22;618.18;623.51;629.15;635.02;
+10000;586.32;586.18;586.34;586.6;586.89;587.17;587.67;588.33;589.1;590.56;592.29;594.63;597.27;600.46;604.26;608.78;613.76;619.05;624.64;630.5;
+10500;581.18;581.23;581.33;581.56;581.85;582.16;582.68;583.37;584.2;585.62;587.41;589.79;592.51;595.81;599.8;604.33;609.3;614.57;620.09;625.93;
+11000;576.07;576.28;576.38;576.59;576.87;577.21;577.74;578.45;579.33;580.7;582.57;584.97;587.77;591.14;595.23;599.87;604.8;610.03;615.54;621.29;
+11500;578.81;578.82;578.93;579.14;579.42;579.76;580.29;581.01;581.89;583.31;585.14;587.57;590.38;593.77;597.86;602.45;607.38;612.63;618.15;623.91;
+12000;581.64;581.67;581.76;581.95;582.18;582.47;582.93;583.58;584.48;585.9;587.76;590.2;593.01;596.42;600.51;605.05;610;615.26;620.78;626.56;
+12500;584.8;584.83;584.92;585.11;585.35;585.65;586.13;586.78;587.58;588.92;590.83;593;595.67;599.08;603.13;607.68;612.64;617.91;623.44;629.23;
+13000;587.98;588.05;588.14;588.34;588.58;588.88;589.37;590.03;590.85;592.21;594.15;596.34;599.04;602.26;606.1;610.46;615.31;620.58;626.12;631.93;
+13500;591.15;591.3;591.39;591.59;591.84;592.16;592.66;593.34;594.17;595.56;597.52;599.74;602.42;605.64;609.51;613.9;618.67;623.71;629;634.67;
+14000;594.57;594.6;594.7;594.91;595.16;595.49;596.01;596.7;597.55;598.97;600.93;603.13;605.82;609.07;612.99;617.4;622.19;627.27;632.59;638.15;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;681.88;681.89;681.88;681.88;681.94;681.6;681.17;680.85;680.7;680.49;680.15;679.92;679.67;680.75;682.42;684.94;688.43;693.05;699.03;706.41;
+500;675.2;675.46;675.45;675.47;675.49;675.15;674.71;674.36;674.29;674.19;673.9;673.77;673.65;674.66;676.37;678.93;682.47;687.17;693.22;700.74;
+1000;669.03;669.03;669.03;669.07;669.09;668.77;668.36;668.05;667.99;667.92;667.65;667.63;667.65;668.58;670.32;672.93;676.53;681.28;687.42;694.94;
+1500;662.59;662.6;662.61;662.66;662.69;662.4;662.03;661.75;661.75;661.78;661.53;661.53;661.6;662.51;664.3;666.96;670.6;675.41;681.64;689.13;
+2000;656.16;656.45;656.43;656.43;656.37;656.02;655.69;655.45;655.5;655.35;655.47;655.54;655.67;656.48;658.29;661;664.69;669.55;675.83;683.32;
+2500;650.96;650.75;650.74;650.77;650.69;650.32;649.87;649.47;649.4;649.19;649.39;649.54;649.76;650.6;652.41;655.08;658.82;663.73;670.05;677.5;
+3000;645.06;645.06;645.06;645.11;645.05;644.72;644.29;643.93;643.9;643.66;643.67;643.64;643.89;644.75;646.6;649.32;653.01;657.93;664.29;671.66;
+3500;639.19;639.36;639.37;639.46;639.4;639.1;638.73;638.38;638.44;638.32;638.4;638.43;638.56;638.81;640.83;643.28;647.3;652.23;658.53;665.85;
+4000;633.7;633.69;633.7;633.82;633.77;633.5;633.17;632.86;633.02;633;633.14;633.24;633.49;633.9;635.65;638.07;641.63;646.58;652.9;660.06;
+4500;628.24;628.04;628.08;628.24;628.18;627.93;627.66;627.37;627.61;627.94;627.88;628.06;628.43;629.01;630.67;633.11;636.54;641.13;647.28;654.38;
+5000;622.42;622.48;622.5;622.7;622.64;622.43;622.18;621.9;622.21;622.61;622.64;622.91;623.39;624.13;625.74;628.2;631.68;636.28;642.09;648.72;
+5500;617.34;617.33;617.36;617.55;617.42;617.16;616.86;616.47;616.81;617.28;617.41;617.76;618.35;619.24;620.84;623.33;626.84;631.52;637.31;643.73;
+6000;612.29;612.2;612.23;612.46;612.33;612.09;611.84;611.47;611.8;612.18;612.26;612.63;613.31;614.33;615.97;618.53;622.06;626.78;632.54;638.88;
+6500;607.27;607.14;607.1;607.37;607.24;607.04;606.84;606.49;606.88;607.33;607.52;607.86;608.39;609.44;610.92;613.78;617.33;622.07;627.8;634.06;
+7000;601.94;601.96;602.02;602.31;602.17;602;601.84;601.51;601.98;602.48;602.8;603.23;603.86;604.99;606.44;609.04;612.65;617.42;623.06;629.24;
+7500;596.56;596.78;596.85;597.18;597.03;596.88;596.78;596.81;597.02;597.56;598.09;598.57;599.31;600.59;602.25;604.79;608.21;612.82;618.38;624.43;
+8000;591.54;591.57;591.65;592.01;591.85;591.74;591.68;591.76;592.01;592.61;593.31;593.84;594.69;596.11;597.94;600.6;604.14;608.68;613.9;619.67;
+8500;586.56;586.43;586.43;586.83;586.67;586.6;586.59;586.72;587.01;587.66;588.53;589.11;590.08;591.58;593.61;596.18;600.08;604.63;609.81;615.34;
+9000;581.11;581.14;581.25;581.65;581.49;581.46;581.5;581.68;582.02;582.72;583.45;584.41;585.47;587.02;589.24;592.04;595.93;600.63;605.72;611.18;
+9500;575.7;575.93;576.05;576.44;576.31;576.32;576.4;576.63;577.03;577.77;578.64;579.69;580.9;582.67;584.86;587.82;591.77;596.55;601.68;607.03;
+10000;570.7;570.73;570.86;571.23;571.13;571.17;571.3;571.27;572.02;572.83;574.11;574.96;576.31;578.18;580.5;583.69;587.65;592.4;597.59;602.92;
+10500;565.73;565.6;565.67;566.03;565.95;566.04;566.2;566.25;567.02;567.89;569.2;570.23;571.7;573.68;576.23;579.47;583.56;588.23;593.39;598.8;
+11000;560.33;560.37;560.52;560.84;560.79;560.91;561.12;561.25;562.03;562.95;564.28;565.5;567.08;569.03;571.86;575.23;579.44;584.14;589.16;594.54;
+11500;563.17;563.18;563.31;563.58;563.46;563.53;563.67;563.7;564.47;565.39;566.74;567.94;569.52;571.62;574.32;577.69;581.89;586.6;591.63;597.02;
+12000;566.26;566.28;566.43;566.69;566.58;566.67;566.81;566.86;567.54;568.37;569.59;570.63;572.03;574.09;576.8;580.17;584.37;589.09;594.12;599.54;
+12500;569.33;569.46;569.6;569.86;569.76;569.85;570.01;570.06;570.79;571.64;572.89;573.95;575.37;577.28;579.76;582.89;586.88;591.6;596.64;602.04;
+13000;572.37;572.7;572.85;573.1;573.01;573.12;573.29;573.36;574.11;574.97;576.25;577.33;578.76;580.69;583.18;586.33;590.26;594.69;599.42;604.54;
+13500;575.98;576.01;576.17;576.43;576.33;576.46;576.64;576.71;577.49;578.37;579.67;580.75;582.21;584.15;586.66;589.83;593.78;598.22;602.91;607.91;
+14000;579.57;579.39;579.55;579.81;579.72;579.86;580.05;580.13;580.93;581.82;583.14;584.23;585.7;587.67;590.2;593.39;597.36;601.77;606.44;611.46;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;666.05;666.04;665.93;665.75;665.44;664.84;663.87;663.18;662.26;661.14;660.02;658.85;658.76;659.18;660.14;661.71;663.85;666.96;671.07;676.61;
+500;659.72;659.68;659.59;659.42;659.1;658.49;657.53;656.85;656;654.95;653.88;652.78;652.64;653.1;654.12;655.75;657.99;661.21;665.4;671.02;
+1000;653.4;653.38;653.26;653.09;652.78;652.2;651.28;650.65;649.82;648.78;647.73;646.72;646.52;647.03;648.1;649.75;652.12;655.43;659.73;665.43;
+1500;647.12;647.51;647.39;647.21;646.85;646.2;645.21;644.5;643.67;642.69;641.68;640.69;640.76;640.93;642.06;643.82;646.26;649.65;654.03;659.85;
+2000;642.01;641.76;641.65;641.47;641.09;640.44;639.44;638.79;637.95;636.87;635.75;634.74;634.74;634.89;636.02;637.84;640.39;643.86;648.34;654.24;
+2500;636.1;636.07;635.96;635.8;635.43;634.82;633.84;633.21;632.38;631.3;630.24;629.2;628.98;628.95;630.06;631.89;634.52;638.06;642.63;648.63;
+3000;630.23;630.37;630.27;630.13;629.78;629.2;628.27;627.67;626.91;625.89;624.87;623.84;623.51;623.5;624.43;626.28;628.65;632.26;636.92;643.01;
+3500;624.7;624.68;624.59;624.47;624.12;623.58;622.7;622.14;621.45;620.5;619.54;618.57;618.21;618.16;619.36;620.96;623.29;626.52;631.19;637.38;
+4000;619.2;618.99;618.91;618.82;618.47;617.97;617.12;616.62;615.98;615.1;614.23;613.31;612.92;612.9;613.87;615.73;618.05;621.35;625.79;631.76;
+4500;613.54;613.51;613.41;613.29;612.87;612.36;611.55;611.09;610.52;609.71;608.9;608.05;607.65;607.65;608.95;610.58;612.97;616.25;620.71;626.63;
+5000;608.37;608.32;608.23;608.12;607.71;607.18;606.3;605.78;605.13;604.32;603.58;602.8;602.39;602.43;603.78;605.45;607.91;611.25;615.75;621.61;
+5500;603.23;603.16;603.07;602.99;602.57;602.07;601.23;600.75;600.17;599.33;598.46;597.55;597.1;597.17;598.58;600.33;602.85;606.27;610.84;616.73;
+6000;598.06;597.95;597.88;597.81;597.39;596.89;596.08;595.63;595.1;594.35;593.56;592.71;591.72;591.97;593.04;595.13;597.74;601.29;605.92;611.84;
+6500;592.7;592.68;592.61;592.56;592.15;591.68;590.9;590.5;590.03;589.36;588.64;587.89;587.05;587.59;588.5;590.09;592.63;596.27;601.03;606.94;
+7000;587.38;587.42;587.35;587.34;586.92;586.49;585.74;585.38;584.96;584.37;583.76;583.12;582.44;582.89;583.84;585.47;587.92;591.34;596.09;602.06;
+7500;582.09;582.15;582.11;582.11;581.71;581.3;580.6;580.27;579.93;579.45;578.91;578.38;577.83;578.21;579.19;580.88;583.38;586.85;591.49;597.15;
+8000;576.85;576.89;576.86;576.88;576.5;576.12;575.48;575.2;574.92;574.56;574.05;573.65;573.24;573.56;574.57;576.31;578.86;582.39;587.1;592.75;
+8500;571.64;571.65;571.64;571.67;571.32;570.99;570.39;570.15;569.93;569.68;569.22;568.92;568.62;568.93;569.99;571.77;574.36;577.95;582.72;588.35;
+9000;566.48;566.45;566.46;566.49;566.16;565.85;565.3;565.11;564.93;564.8;564.39;564.18;564;564.31;565.43;567.26;569.9;573.53;578.35;583.93;
+9500;561.24;561.24;561.27;561.32;561;560.73;560.22;560.08;559.94;559.95;559.58;559.44;559.39;559.72;560.89;562.78;565.47;569.16;573.99;579.53;
+10000;556.04;556.05;556.11;556.15;555.85;555.61;555.15;555.05;554.97;554.82;554.8;554.72;554.8;554.98;556.39;558.31;561.08;564.82;569.66;575.13;
+10500;550.87;550.89;550.96;551;550.72;550.51;550.09;550.03;550.03;549.96;550.03;550.03;550.24;550.63;551.97;553.64;556.72;560.53;565.36;570.75;
+11000;546.22;546.22;546.29;546.3;545.98;545.72;545.27;545.09;545.05;545.11;545.26;545.36;545.69;546.27;547.58;549.56;552.41;556.27;561.08;566.4;
+11500;549.29;549.29;549.37;549.38;549.07;548.82;548.37;548.22;548.17;548.09;548.05;547.95;548.07;548.46;549.84;551.82;554.68;558.54;563.36;568.7;
+12000;552.34;552.43;552.51;552.51;552.21;551.97;551.53;551.42;551.39;551.3;551.27;551.16;551.27;551.59;552.68;554.41;556.99;560.85;565.67;571.02;
+12500;555.36;555.66;555.74;555.74;555.45;555.22;554.78;554.68;554.65;554.57;554.54;554.42;554.53;554.85;555.94;557.68;560.27;563.84;568.35;573.36;
+13000;558.97;558.97;559.06;559.06;558.76;558.53;558.09;558.01;557.97;557.9;557.88;557.77;557.87;558.17;559.26;561.01;563.6;567.18;571.7;576.74;
+13500;562.58;562.46;562.43;562.43;562.14;561.92;561.47;561.4;561.37;561.29;561.26;561.15;561.26;561.54;562.65;564.38;566.98;570.57;575.12;580.18;
+14000;565.79;565.8;565.89;565.88;565.59;565.36;564.92;564.85;564.82;564.74;564.72;564.6;564.71;564.97;566.08;567.81;570.42;574.03;578.6;583.67;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;649.87;649.9;649.67;649.24;648.59;647.62;646.36;645;643.45;641.93;640.44;639.68;639.32;638.92;638.87;639.09;640.16;642;644.4;648.03;
+500;644.14;643.94;643.68;643.22;642.51;641.49;640.15;638.81;637.33;635.45;634.37;633.59;633.25;632.96;632.97;633.3;634.36;636.22;638.78;642.51;
+1000;638.43;638.13;637.88;637.46;636.79;635.79;634.47;633.07;631.47;629.51;628.31;627.51;627.18;626.98;627.02;627.5;628.57;630.46;633.16;636.98;
+1500;632.46;632.37;632.14;631.72;631.06;630.09;628.82;627.48;625.9;624.01;622.7;621.68;621.15;621.01;621.1;621.7;622.97;624.82;627.54;631.46;
+2000;626.81;626.75;626.53;626.13;625.47;624.5;623.23;621.91;620.36;618.55;617.21;616.18;615.66;615.38;615.31;615.91;617.21;619.13;621.93;625.93;
+2500;621.19;621.12;620.91;620.53;619.9;618.97;617.72;616.46;614.96;613.17;611.78;611;610.19;609.98;609.98;610.45;611.59;613.44;616.33;620.41;
+3000;615.59;615.5;615.3;614.94;614.33;613.43;612.22;611.01;609.56;607.84;606.45;605.64;604.82;604.57;604.68;605.22;606.13;608.11;610.82;614.89;
+3500;610.01;609.91;609.72;609.36;608.76;607.89;606.71;605.57;604.17;602.53;601.13;600.3;599.48;599.31;599.44;599.97;600.99;602.98;605.7;609.66;
+4000;604.69;604.63;604.41;604.04;603.39;602.46;601.23;600.13;598.75;597.14;595.74;594.87;594.05;593.93;594.14;594.75;595.84;597.83;600.68;604.65;
+4500;599.57;599.5;599.3;598.94;598.29;597.37;596.11;594.93;593.45;591.74;590.34;589.43;588.63;588.56;588.83;589.52;590.71;592.75;595.6;599.7;
+5000;594.36;594.28;594.08;593.75;593.12;592.23;591;589.89;588.45;586.81;585.27;584.15;583.21;583.19;583.53;584.28;585.56;587.67;590.6;594.74;
+5500;589.17;589.08;588.87;588.54;587.93;587.07;585.88;584.83;583.46;581.9;580.37;579.23;578.26;578.06;578.19;579.05;580.4;582.58;585.59;589.82;
+6000;583.84;583.79;583.61;583.33;582.73;581.91;580.75;579.76;578.48;576.96;575.47;574.32;573.36;573.2;573.45;574.12;575.21;577.49;580.58;584.89;
+6500;578.59;578.55;578.38;578.12;577.55;576.75;575.62;574.7;573.48;572.04;570.58;569.41;568.49;568.34;568.67;569.44;570.65;572.7;575.57;579.96;
+7000;573.4;573.31;573.15;572.91;572.35;571.59;570.5;569.64;568.49;567.11;565.7;564.52;563.6;563.52;563.89;564.73;566.04;568.17;571.11;575.23;
+7500;568.24;568.07;567.92;567.7;567.16;566.43;565.37;564.58;563.5;562.18;560.82;559.63;559.08;558.68;559.11;560.03;561.42;563.65;566.68;570.9;
+8000;563.11;563.02;562.71;562.49;561.97;561.27;560.24;559.51;558.52;557.25;555.95;554.45;553.89;553.88;554.34;555.33;556.82;559.14;562.26;566.56;
+8500;557.63;557.59;557.47;557.28;556.78;556.11;555.12;554.45;553.53;552.33;551.09;549.68;549.4;549.07;549.58;550.63;552.25;554.63;557.84;562.24;
+9000;552.17;552.36;552.25;552.07;551.59;550.96;549.99;549.38;548.56;547.4;546.23;544.93;544.58;544.28;544.83;545.93;547.68;550.12;553.43;557.93;
+9500;547.16;547.13;547.04;546.86;546.4;545.8;544.86;544.31;543.57;542.48;541.4;540.18;539.78;539.51;540.1;541.23;543.09;545.64;549.02;553.61;
+10000;542.35;542.3;542.18;541.95;541.44;540.77;539.75;539.25;538.58;537.56;536.57;535.46;535;534.76;535.69;536.62;538.51;541.18;544.65;549.3;
+10500;537.56;537.68;537.57;537.35;536.86;536.22;535.24;534.69;533.94;532.83;531.74;530.74;530.27;530.05;531.03;532.25;534.11;536.72;540.29;545;
+11000;533.1;533.05;532.97;532.76;532.3;531.7;530.74;530.26;529.6;528.59;527.58;526.45;525.75;525.69;526.1;527.64;529.58;532.26;535.92;540.7;
+11500;536.22;536.16;536.07;535.86;535.4;534.81;533.88;533.4;532.73;531.7;530.67;529.51;528.82;528.75;529.19;530.2;531.85;534.39;538.05;542.83;
+12000;539.32;539.33;539.25;539.04;538.58;538;537.07;536.59;535.92;534.86;533.81;532.64;531.94;531.86;532.3;533.31;534.97;537.36;540.71;545.14;
+12500;542.41;542.58;542.5;542.29;541.84;541.25;540.31;539.83;539.14;538.08;537.02;535.81;535.11;535.03;535.47;536.48;538.14;540.54;543.89;548.35;
+13000;545.92;545.89;545.82;545.6;545.15;544.55;543.61;543.12;542.43;541.34;540.27;539.05;538.34;538.24;538.68;539.69;541.36;543.76;547.12;551.59;
+13500;549.43;549.33;549.19;548.97;548.52;547.91;546.96;546.46;545.76;544.66;543.58;542.34;541.62;541.51;541.95;542.96;544.63;547.03;550.4;554.88;
+14000;552.93;552.83;552.63;552.4;551.94;551.33;550.38;549.87;549.15;548.04;546.94;545.68;544.96;544.85;545.28;546.29;547.95;550.36;553.73;558.22;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;635.05;634.79;634.41;633.73;632.77;631.43;629.81;627.75;626.03;624.62;623.2;622.12;620.85;619.81;619.22;618.82;618.61;618.72;619.37;620.84;
+500;629.03;628.96;628.59;627.92;626.97;625.63;624.03;621.97;620.27;618.76;617.2;616.07;614.84;613.84;613.3;613.11;612.85;613.07;613.84;615.45;
+1000;623.27;623.15;622.79;622.14;621.21;619.9;618.33;616.29;614.58;613.05;611.51;610.66;609.14;608.02;607.37;607.17;607.08;607.4;608.3;610.05;
+1500;617.48;617.45;617.09;616.44;615.51;614.21;612.64;610.66;608.61;607.11;605.88;604.96;603.54;602.47;601.84;601.45;601.32;601.74;602.75;604.64;
+2000;611.87;611.77;611.42;610.79;609.88;608.59;607.06;605.11;603.06;601.52;600.26;599.33;598.01;596.9;596.27;595.88;595.89;596.22;597.14;599.2;
+2500;606.32;606.09;605.75;605.15;604.26;603;601.49;599.57;597.54;595.94;594.62;593.67;592.42;591.34;590.73;590.29;590.43;590.86;591.89;593.83;
+3000;600.54;600.43;600.1;599.5;598.62;597.35;595.85;593.94;591.96;590.33;589.03;588.11;586.96;585.79;585.25;584.83;585.02;585.52;586.67;588.72;
+3500;595.46;595.11;594.76;594.12;593.18;591.83;590.23;588.33;586.41;584.8;583.45;582.58;581.51;580.32;579.65;579.46;579.9;580.42;581.46;583.62;
+4000;589.97;589.88;589.53;588.91;587.99;586.68;585.15;583.22;581.18;579.39;578.24;577.05;576.09;574.9;574.34;574.15;574.6;575.19;576.3;578.54;
+4500;584.52;584.65;584.31;583.72;582.85;581.57;580.08;578.21;576.23;574.42;573.2;571.82;570.71;569.53;569.06;568.85;569.3;570.01;571.23;573.51;
+5000;579.56;579.46;579.14;578.58;577.72;576.48;575.02;573.21;571.28;569.46;568.24;566.86;565.81;564.6;563.91;563.53;564.02;564.86;566.17;568.55;
+5500;574.62;574.29;573.98;573.44;572.6;571.4;569.98;568.22;566.34;564.53;563.29;561.91;560.93;559.84;559.18;558.93;558.93;559.78;561.13;563.59;
+6000;569.22;569.12;568.83;568.31;567.49;566.32;564.95;563.24;561.41;559.58;558.34;556.97;556.07;555.07;554.46;554.23;554.25;555.1;556.26;558.65;
+6500;563.85;563.95;563.67;563.17;562.38;561.24;559.9;558.26;556.48;554.61;553.4;552.04;551.21;550.3;549.74;549.56;549.61;550.52;551.79;554.02;
+7000;558.88;558.8;558.53;558.05;557.28;556.16;554.87;553.28;551.56;549.67;548.47;547.12;546.35;545.53;545.02;544.64;544.98;545.91;547.32;549.67;
+7500;553.94;553.9;553.41;552.93;552.18;551.1;549.85;548.32;546.64;544.76;543.56;542.22;541.49;540.77;540.3;540.04;540.38;541.33;542.86;545.33;
+8000;548.57;548.49;548.24;547.81;547.08;546.03;544.83;543.35;541.73;539.85;538.33;537.32;536.62;535.99;535.56;535.44;535.81;536.78;538.45;541.01;
+8500;543.42;543.34;543.1;542.69;541.98;540.96;539.8;538.39;536.82;534.95;533.47;532.44;531.75;531.23;530.86;530.83;531.24;532.25;534.06;536.69;
+9000;538.29;538.41;538.14;537.68;536.92;535.88;534.78;533.43;531.91;530.08;528.61;527.56;526.9;526.44;526.16;526.23;526.63;527.75;529.64;532.38;
+9500;533.96;533.88;533.63;533.19;532.45;531.39;530.19;528.76;527.17;525.21;523.78;522.68;522.04;521.65;521.47;521.61;522.05;523.27;525.25;528.08;
+10000;529.67;529.36;529.12;528.7;527.98;526.96;525.8;524.42;522.84;521.01;519.36;518.34;517.21;516.87;516.79;517;517.54;518.8;520.87;523.79;
+10500;524.91;524.84;524.61;524.21;523.52;522.53;521.41;520.1;518.57;516.81;515.17;514.12;513.01;512.51;512.28;512.33;513.04;514.34;516.49;519.5;
+11000;520.18;520.33;520.12;519.73;519.07;518.11;517.04;515.77;514.31;512.63;511;509.91;508.79;508.35;508.2;508.34;508.84;509.9;512.12;515.23;
+11500;523.41;523.34;523.13;522.74;522.07;521.11;520.02;518.75;517.27;515.55;513.91;512.82;511.71;511.25;511.09;511.23;511.74;512.8;514.73;517.5;
+12000;526.64;526.4;526.19;525.8;525.12;524.14;523.06;521.78;520.27;518.53;516.88;515.78;514.65;514.19;514.03;514.15;514.65;515.73;517.66;520.42;
+12500;529.59;529.52;529.31;528.91;528.23;527.24;526.14;524.84;523.33;521.56;519.88;518.79;517.63;517.18;517;517.11;517.59;518.69;520.61;523.38;
+13000;532.6;532.7;532.48;532.07;531.38;530.38;529.27;527.97;526.45;524.66;522.94;521.84;520.67;520.19;520.01;520.11;520.59;521.67;523.61;526.38;
+13500;535.99;535.91;535.7;535.29;534.59;533.57;532.46;531.14;529.58;527.79;526.09;524.95;523.76;523.27;523.07;523.16;523.63;524.69;526.65;529.41;
+14000;539.37;539.18;538.97;538.55;537.85;536.83;535.7;534.36;532.79;530.97;529.22;528.11;526.91;526.4;526.19;526.26;526.71;527.91;529.73;532.49;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;620.48;620.6;620.17;619.39;618.35;616.92;615.11;613.03;611.66;610.2;608.54;606.78;604.98;603.6;602.44;600.92;599.2;597.31;595.4;593.73;
+500;614.82;614.74;614.31;613.54;612.5;611.09;609.28;607.2;605.81;604.34;602.76;601.07;599.27;597.83;596.62;595.01;593.32;591.62;589.92;588.53;
+1000;609.16;609.1;608.51;607.71;606.68;605.27;603.49;601.46;600.03;598.48;596.92;595.19;593.48;592.01;590.88;589.38;587.73;586.01;584.44;583.3;
+1500;603.29;603.15;602.74;601.98;600.95;599.53;597.71;595.64;594.16;592.6;591.09;589.35;587.67;586.48;585.15;583.75;582.23;580.68;579.22;578.11;
+2000;597.38;597.37;596.94;596.18;595.13;593.71;591.92;589.91;588.38;586.78;585.31;583.58;581.94;580.71;579.44;578.12;576.73;575.32;574.07;573.21;
+2500;591.44;591.53;591.11;590.36;589.33;587.92;586.16;584.16;582.63;581.03;579.62;577.9;576.27;575.02;573.77;572.51;571.23;569.99;568.94;568.3;
+3000;586.27;586.18;585.74;584.93;583.84;582.33;580.44;578.43;576.91;575.29;573.94;572.27;570.68;569.43;568.21;566.98;565.77;564.65;563.79;563.37;
+3500;581.07;580.92;580.48;579.68;578.6;577.11;575.27;573.2;571.52;569.73;568.3;566.66;565.06;563.86;562.83;561.52;560.38;559.33;558.62;558.43;
+4000;575.87;575.68;575.23;574.45;573.39;571.91;570.11;568.06;566.37;564.57;563.28;561.37;559.48;558.31;557.27;556.09;555.05;554.12;553.49;553.45;
+4500;570.59;570.44;570.01;569.24;568.23;566.73;564.97;562.93;561.23;559.42;558.14;556.31;554.63;553.2;551.91;550.7;549.73;548.91;548.42;548.5;
+5000;565.35;565.22;564.8;564.04;563.01;561.56;559.81;557.81;556.07;554.29;553.02;551.25;549.64;548.22;546.95;545.79;544.63;543.7;543.34;543.59;
+5500;560.13;559.99;559.57;558.83;557.82;556.4;554.68;552.69;550.97;549.17;547.9;546.22;544.66;543.27;542;540.97;539.89;538.98;538.39;538.67;
+6000;554.98;554.92;554.39;553.64;552.64;551.23;549.54;547.6;545.86;544.06;542.81;541.22;539.71;538.07;537.08;536.16;535.17;534.36;533.9;534.07;
+6500;549.5;549.55;549.16;548.45;547.47;546.08;544.42;542.49;540.77;539.26;537.75;536.26;534.49;533.2;532.18;531.34;530.44;529.74;529.4;529.71;
+7000;544.48;544.35;543.96;543.27;542.31;540.96;539.32;537.42;535.71;534.21;532.69;531.28;529.6;528.32;527.29;526.54;525.71;525.12;524.9;525.35;
+7500;539.27;539.15;538.78;538.11;537.18;535.83;534.25;532.35;530.66;529.16;527.65;526.31;524.73;523.46;522.42;521.75;521;520.5;520.41;520.99;
+8000;534.08;534.02;533.63;532.97;532.05;530.73;529.18;527.33;525.62;524.13;522.61;521.35;519.85;518.62;517.51;517.13;516.31;515.91;515.94;516.64;
+8500;529.64;529.51;529.11;528.42;527.43;526.02;524.38;522.4;520.6;519.11;517.59;516.41;514.98;513.77;512.95;512.3;511.81;511.32;511.47;512.3;
+9000;525.21;525;524.61;523.94;522.97;521.58;519.98;518.03;516.2;514.55;512.84;511.73;510.12;508.96;508.13;507.47;507.12;506.74;507;507.96;
+9500;520.82;520.76;520.15;519.47;518.52;517.16;515.59;513.66;511.85;509.91;508.5;507.37;505.8;504.43;503.41;502.66;502.51;502.19;502.54;503.63;
+10000;516.14;516.03;515.66;515.02;514.09;512.75;511.22;509.32;507.21;505.62;504.17;503.04;501.58;500.28;499.26;498.35;497.83;497.71;498.07;499.29;
+10500;511.49;511.56;511.2;510.58;509.67;508.36;506.87;504.99;502.95;501.32;499.83;498.69;497.33;496.04;495.07;494.18;493.77;493.71;493.83;494.88;
+11000;507.21;507.1;506.76;506.16;505.27;503.98;502.53;500.7;498.69;496.99;495.74;494.31;493.05;491.74;490.7;490.04;489.88;489.71;489.98;491.11;
+11500;510.12;510.01;509.67;509.06;508.16;506.85;505.38;503.54;501.52;499.83;498.58;497.13;495.84;494.53;493.47;492.83;492.65;492.45;492.7;493.81;
+12000;513.03;512.97;512.62;512.01;511.09;509.77;508.29;506.42;504.37;502.67;501.43;499.99;498.68;497.35;496.26;495.64;495.45;495.22;495.45;496.54;
+12500;515.94;515.97;515.62;515;514.07;512.73;511.24;509.35;507.27;505.54;504.29;502.83;501.53;500.22;499.09;498.47;498.29;498.02;498.23;499.29;
+13000;518.84;519.02;518.66;518.03;517.1;515.74;514.22;512.32;510.21;508.48;507.2;505.72;504.38;503.06;501.93;501.3;501.14;500.84;501.02;502.04;
+13500;522.67;522.12;521.75;521.12;520.17;518.8;517.27;515.34;513.2;511.45;510.16;508.65;507.27;505.95;504.78;504.14;503.96;503.65;503.8;504.8;
+14000;525.38;525.25;524.89;524.25;523.29;521.9;520.36;518.41;516.24;514.47;513.16;511.63;510.22;508.88;507.95;507.03;506.62;506.37;506.62;507.6;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;607.3;606.81;606.4;605.61;604.56;603.04;601.33;599.78;598.32;596.65;594.72;592.64;590.89;588.99;586.39;583.15;578.91;573.38;566.86;557.02;
+500;604.99;600.82;600.58;599.8;598.74;597.17;595.43;593.83;592.39;590.77;588.87;586.84;585.09;583.29;580.79;577.68;573.7;568.54;562.38;553.43;
+1000;595.44;595.12;594.71;593.91;592.85;591.27;589.55;587.95;586.51;584.9;583.01;581.04;579.27;577.6;575.2;572.23;568.47;563.65;557.95;550.35;
+1500;589.64;589.28;588.88;588.08;587.03;585.47;583.74;582.14;580.69;579.09;577.21;575.28;573.77;571.89;569.61;566.77;563.22;558.72;553.01;546.64;
+2000;583.59;583.45;583.04;582.25;581.22;579.67;577.97;576.36;574.93;573.36;571.49;569.59;568.05;566.2;564.01;561.31;557.96;553.75;548.5;542.75;
+2500;578.3;578.04;577.59;576.74;575.65;574.02;572.2;570.59;569.18;567.64;565.8;563.95;562.42;560.6;558.45;555.85;552.67;548.75;543.92;538.74;
+3000;572.98;572.76;572.31;571.47;570.39;568.78;566.98;565.25;563.71;562.05;560.12;558.21;556.81;555.04;552.97;550.45;547.39;543.72;539.29;534.62;
+3500;567.64;567.49;567.05;566.21;565.14;563.54;561.76;560.04;558.51;556.88;554.92;552.74;551.28;549.47;547.49;545.06;542.16;538.69;534.61;530.4;
+4000;562.33;562.22;561.79;560.96;559.91;558.32;556.56;554.81;553.3;551.75;549.77;547.88;546.19;544.32;542.2;539.69;536.91;533.66;529.87;525.65;
+4500;557.09;556.96;556.52;555.7;554.65;553.07;551.33;549.6;548.1;546.54;544.61;542.76;541.08;539.28;537.23;534.78;531.86;528.6;525.11;521.25;
+5000;551.87;551.7;551.26;550.44;549.41;547.84;546.12;544.38;542.89;541.33;539.46;537.65;535.97;534.23;532.27;529.93;527.16;523.97;520.36;516.78;
+5500;546.59;546.44;546.01;545.2;544.18;542.62;540.91;539.18;537.7;536.14;534.31;532.54;530.88;529.19;527.3;525.08;522.45;519.42;516.06;512.53;
+6000;541.33;541.19;540.76;539.97;538.95;537.4;535.71;533.98;532.52;530.94;529.18;527.42;525.79;524.16;522.33;520.22;517.71;514.83;511.72;508.51;
+6500;536.09;535.96;535.53;534.74;533.73;532.36;530.5;528.79;527.34;525.77;524.07;522.32;520.68;519.16;517.33;515.31;512.94;510.26;507.38;504.45;
+7000;530.87;530.78;530.32;529.49;528.53;527.16;525.33;523.62;522.16;520.63;518.93;517.19;515.56;514.02;512.33;510.4;508.18;505.69;503;500.36;
+7500;526.35;526.18;525.72;524.88;523.8;522.33;520.39;518.23;516.95;515.45;513.78;511.83;510.45;508.9;507.34;505.52;503.43;501.07;498.58;496.17;
+8000;521.85;521.57;521.11;520.26;519.19;517.7;515.79;513.68;512.34;510.69;508.89;506.83;505.06;503.83;502.36;500.63;498.65;496.42;494.1;491.94;
+8500;517.09;516.95;516.49;515.66;514.59;513.11;511.23;509.13;507.78;506.16;504.4;502.4;500.5;498.98;497.39;495.65;493.8;491.74;489.62;487.69;
+9000;512.36;512.35;511.89;511.06;510.01;508.53;506.67;504.64;503.23;501.64;499.92;497.97;496.04;494.44;492.95;491.11;489.12;487.06;485.14;483.43;
+9500;507.91;507.75;507.3;506.49;505.45;503.97;502.14;500.09;498.68;497.08;495.38;493.5;491.57;489.93;488.52;486.75;484.88;482.9;480.91;479.17;
+10000;503.56;503.17;502.74;501.94;500.9;499.43;497.59;495.54;494.1;492.49;490.85;489.05;487.12;485.71;484.1;482.41;480.63;478.81;477.02;475.48;
+10500;498.75;498.62;498.18;497.38;496.33;494.84;493.03;491;489.53;487.89;486.31;484.58;482.67;481.26;479.7;478.08;476.39;474.72;473.12;471.81;
+11000;494.17;494.02;493.58;492.79;491.75;490.27;488.48;486.47;484.97;483.3;481.79;480.02;478.25;476.82;475.33;473.77;472.17;470.62;469.21;468.11;
+11500;496.98;496.85;496.4;495.61;494.55;493.05;491.24;489.2;487.69;486.01;484.47;482.68;480.88;479.44;478.13;476.33;474.7;473.1;471.66;470.52;
+12000;499.79;499.73;499.28;498.48;497.4;495.89;494.05;491.98;490.46;488.75;487.19;485.45;483.53;482.1;480.55;478.92;477.25;475.61;474.13;472.95;
+12500;502.55;502.61;502.15;501.36;500.29;498.77;496.9;494.8;493.27;491.54;489.95;488.17;486.23;484.78;483.2;481.54;479.83;478.14;476.61;475.39;
+13000;505.67;505.52;505.07;504.27;503.18;501.66;499.77;497.67;496.12;494.37;492.74;490.93;488.96;487.5;485.89;484.2;482.44;480.7;479.11;477.85;
+13500;508.87;508.81;508.04;507.21;506.11;504.58;502.69;500.56;499.01;497.24;495.58;493.72;491.73;490.26;488.62;486.88;485.08;483.29;481.64;480.33;
+14000;511.65;511.49;511.02;510.21;509.09;507.53;505.61;503.5;501.92;500.17;498.46;496.56;494.54;493.04;491.37;489.6;487.75;485.91;484.19;482.82;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;601.67;601.54;601.13;600.34;599.28;597.75;595.95;594.58;593.12;591.3;589.17;587.5;585.48;583.02;579.85;575.61;569.71;561.88;548.93;528.85;
+500;599.73;595.64;595.22;594.42;593.35;591.82;590.02;588.63;587.19;585.41;583.4;581.67;579.73;577.35;574.31;570.28;564.73;557.42;545.66;527.72;
+1000;590.15;589.73;589.33;588.54;587.48;585.94;584.15;582.76;581.1;579.56;577.61;575.85;573.97;571.69;568.77;564.93;559.69;552.89;542.2;526.51;
+1500;584.01;583.9;583.5;582.71;581.65;580.13;578.36;576.95;575.28;573.76;571.86;570.03;568.22;566.02;563.22;559.56;554.62;548.28;538.56;524.52;
+2000;578.25;578.1;577.67;576.87;575.85;574.33;572.59;571.17;569.5;568.04;566.14;564.32;562.46;560.35;557.66;554.17;549.53;543.17;534.75;522.13;
+2500;573.21;572.81;572.38;571.53;570.44;568.84;567;565.47;563.75;562.32;560.43;558.35;556.79;554.76;552.13;548.78;544.4;538.5;531.18;519.55;
+3000;567.67;567.52;567.09;566.25;565.18;563.57;561.74;560.22;558.44;556.91;554.88;552.7;551.13;549.21;546.65;543.44;539.27;533.78;527.05;516.7;
+3500;562.14;562.22;561.79;560.97;559.9;558.31;556.5;554.97;553.2;551.72;549.73;547.56;545.76;543.74;541.2;538.1;534.17;529;522.81;513.61;
+4000;557.06;556.93;556.5;555.67;554.63;553.05;551.26;549.73;548.23;546.52;544.56;542.45;540.64;538.71;536.12;532.91;529.01;524.18;518.43;510.26;
+4500;552.01;551.65;551.22;550.4;549.37;547.79;546.03;544.49;543.02;541.34;539.41;537.35;535.52;533.68;531.2;528.1;524.24;519.4;513.98;506.97;
+5000;546.52;546.37;545.95;545.11;544.11;542.56;540.8;539.27;537.81;536.17;534.26;532.27;530.41;528.65;526.26;523.28;519.62;515.03;509.29;503.14;
+5500;541.04;541.1;540.69;539.87;538.87;537.32;535.59;534.05;532.6;530.99;529.11;527.17;525.32;523.63;521.32;518.47;514.99;510.65;505.32;499.52;
+6000;535.98;535.85;535.43;534.61;533.63;532.09;530.37;528.82;527.39;525.81;523.95;522.05;520.5;518.6;516.4;513.65;510.31;506.24;501.3;495.93;
+6500;530.93;530.58;530.16;529.36;528.38;526.86;525.15;523.61;522.19;520.64;518.8;516.96;515.41;513.57;511.45;508.83;505.66;501.82;497.19;492.23;
+7000;526.09;525.93;525.47;524.61;523.54;521.92;520.11;518.43;516.99;515.47;513.65;511.77;510.32;508.54;506.5;504.01;500.99;497.33;492.99;488.47;
+7500;521.28;521.3;520.84;519.98;518.92;517.32;515.52;513.84;512.29;510.62;508.67;506.51;505.24;503.51;501.56;499.18;496.25;492.78;488.75;484.63;
+8000;516.83;516.68;516.22;515.37;514.32;512.72;510.94;509.25;507.71;506.12;504.14;502.25;500.54;498.64;496.56;494.27;491.47;488.22;484.48;480.35;
+8500;512.46;512.08;511.62;510.78;509.73;508.14;506.37;504.67;503.14;501.54;499.61;497.71;495.96;494.13;492.07;489.69;486.81;483.64;480.19;476.41;
+9000;507.64;507.48;507.03;506.19;505.15;503.57;501.81;500.11;498.56;496.92;495.01;493.14;491.4;489.62;487.63;485.34;482.64;479.5;476.04;472.42;
+9500;502.85;502.9;502.46;501.62;500.59;498.99;497.22;495.47;493.92;492.27;490.43;488.59;486.85;485.12;483.19;480.99;478.46;475.49;472.23;468.89;
+10000;498.45;498.32;497.86;497.01;495.96;494.51;492.59;490.85;489.31;487.65;485.88;484.05;482.32;480.65;478.76;476.64;474.23;471.47;468.42;465.38;
+10500;494.02;493.68;493.22;492.38;491.34;489.89;488;486.25;484.73;483.07;481.35;479.52;477.79;476.12;474.31;472.27;469.99;467.44;464.62;461.83;
+11000;489.21;489.06;488.61;487.79;486.75;485.31;483.44;481.68;480.16;478.53;476.81;474.74;473.25;471.54;469.87;467.91;465.75;463.39;460.8;458.26;
+11500;491.92;491.83;491.37;490.54;489.49;488.03;486.13;484.35;482.81;481.15;479.43;477.35;475.83;474.11;472.4;470.4;468.18;465.78;463.15;460.52;
+12000;494.63;494.64;494.18;493.34;492.28;490.79;488.86;487.07;485.5;483.81;482.07;479.94;478.45;476.71;474.95;472.91;470.65;468.18;465.51;462.81;
+12500;497.66;497.51;497.03;496.19;495.11;493.6;491.64;489.82;488.24;486.52;484.75;482.86;481.08;479.31;477.54;475.45;473.13;470.6;467.88;465.12;
+13000;500.68;500.41;499.94;499.08;497.98;496.45;494.46;492.62;491.01;489.26;487.47;485.55;483.74;481.96;480.14;478.02;475.65;473.06;470.28;467.44;
+13500;503.65;503.6;502.85;501.97;500.88;499.35;497.32;495.47;493.83;492.05;490.22;488.28;486.44;484.64;482.77;480.6;478.19;475.53;472.69;469.78;
+14000;506.4;506.24;505.75;504.9;503.79;502.24;500.23;498.36;496.7;494.88;493.02;491.05;489.18;487.35;485.43;483.22;480.75;478.03;475.11;472.13;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;596.49;596.4;596.01;595.18;594.1;592.62;590.77;589.63;588.1;586.15;584.23;582.25;579.86;576.89;572.87;567.1;559.02;544.67;517.45;-9999;
+500;590.51;590.4;590.04;589.24;588.16;586.68;584.84;583.67;582.19;580.24;578.37;576.47;574.16;571.3;567.44;561.98;554.39;541.25;517.85;-9999;
+1000;584.62;584.54;584.13;583.34;582.28;580.79;578.96;577.79;576.32;574.36;572.51;570.65;568.43;565.68;562;556.82;549.69;537.67;517.03;-9999;
+1500;578.74;578.7;578.26;577.48;576.43;574.96;573.15;571.96;570.49;568.56;566.69;564.84;562.7;560.06;556.54;551.64;544.95;533.91;515.34;-9999;
+2000;573.16;573.01;572.57;571.73;570.63;569.11;567.31;566.14;564.7;562.82;560.96;559.12;557.01;554.43;551.07;546.43;539.71;529.99;513.51;-9999;
+2500;567.46;567.66;567.25;566.41;565.34;563.77;561.87;560.58;559.02;557.08;555.25;553.44;551.4;548.88;545.63;541.2;534.96;525.95;511.24;-9999;
+3000;562.49;562.37;561.95;561.11;560.05;558.49;556.61;555.31;553.78;551.84;549.86;547.91;545.79;543.37;540.22;536;530.14;522.12;508.44;-9999;
+3500;557.52;557.1;556.65;555.82;554.77;553.22;551.36;550.06;548.54;546.64;544.68;542.76;540.66;538.12;534.86;530.8;525.17;517.75;505.5;487.45;
+4000;551.94;551.78;551.36;550.54;549.5;547.96;546.11;544.81;543.31;541.45;539.28;537.61;535.57;533.11;529.97;525.87;520.25;513.31;502.11;485.08;
+4500;546.37;546.48;546.08;545.26;544.24;542.7;540.88;539.56;538.08;536.27;534.18;532.46;530.48;528.12;525.08;521.13;515.82;508.96;498.54;483.25;
+5000;541.33;541.21;540.8;539.98;538.98;537.45;535.65;534.33;532.71;531.09;529.08;527.33;525.39;523.1;520.18;516.39;511.36;504.94;495.11;481.16;
+5500;536.3;535.94;535.52;534.71;533.72;532.2;530.43;529.09;527.48;525.91;523.96;522.18;520.31;518.09;515.28;511.65;506.87;500.84;491.75;478.98;
+6000;530.78;530.64;530.24;529.43;528.45;526.94;525.19;523.86;522.26;520.73;518.83;517.04;515.23;513.08;510.38;506.89;502.37;496.26;488.64;476.73;
+6500;526.09;525.93;525.48;524.61;523.55;521.94;520.07;518.62;517.04;515.55;513.71;511.92;510.1;508.07;505.48;502.15;497.8;492.05;484.98;474.27;
+7000;521.41;521.27;520.82;519.95;518.9;517.3;515.44;513.98;512.23;510.64;508.66;506.8;504.98;503.06;500.58;497.32;493.16;487.74;481.21;471.58;
+7500;516.75;516.61;516.16;515.3;514.26;512.67;510.84;509.35;507.6;506.06;504.09;501.95;500.17;498.12;495.59;492.47;488.51;483.42;477.36;468.7;
+8000;512.12;511.97;511.53;510.67;509.64;508.05;506.23;504.74;502.98;501.48;499.52;497.4;495.55;493.6;491.06;487.87;483.88;479.07;473.44;465.66;
+8500;507.52;507.34;506.9;506.05;505.02;503.44;501.64;500.14;498.59;496.85;494.88;492.82;490.95;489.09;486.62;483.58;479.77;475.07;469.66;462.82;
+9000;502.94;502.72;502.28;501.43;500.42;498.81;496.99;495.45;493.91;492.22;490.27;488.24;486.37;484.58;482.19;479.29;475.67;471.21;465.79;459.97;
+9500;498.35;498.08;497.63;496.77;495.74;494.13;492.33;490.78;489.26;487.6;485.67;483.67;481.77;480.06;477.76;474.99;471.55;467.32;462.3;456.96;
+10000;493.73;493.4;492.95;492.1;491.07;489.47;487.68;486.12;484.62;482.99;481.07;479.1;477.5;475.55;473.33;470.66;467.41;463.42;458.77;453.87;
+10500;488.88;488.74;488.28;487.44;486.42;484.84;483.06;481.49;480;478.39;476.49;474.54;472.94;471.04;468.88;466.32;463.26;459.54;455.2;450.7;
+11000;484.06;484.1;483.65;482.81;481.8;480.23;478.46;476.87;475.39;473.8;471.91;469.82;468.38;466.53;464.44;461.99;459.1;455.62;451.61;447.48;
+11500;486.87;486.81;486.36;485.51;484.49;482.89;481.09;479.49;477.99;476.38;474.47;472.39;470.89;469.01;466.88;464.38;461.42;457.9;453.76;449.5;
+12000;489.69;489.57;489.12;488.26;487.22;485.6;483.77;482.15;480.63;478.99;477.05;474.97;473.43;471.52;469.35;466.79;463.77;460.19;455.92;451.54;
+12500;492.53;492.38;491.92;491.04;489.99;488.35;486.49;484.85;483.3;481.64;479.67;477.58;476;474.06;471.85;469.24;466.15;462.51;458.13;453.6;
+13000;495.38;495.24;494.76;493.87;492.81;491.14;489.25;487.6;486.02;484.33;482.33;480.22;478.6;476.63;474.38;471.72;468.57;464.83;460.36;455.66;
+13500;498.3;498.13;497.65;496.75;495.67;493.98;492.05;490.39;488.79;487.06;485.02;482.93;481.24;479.22;476.93;474.22;471.01;467.19;462.61;457.75;
+14000;501.2;501.04;500.57;499.67;498.58;496.85;494.89;493.22;491.59;489.84;487.76;485.66;483.91;481.85;479.51;476.75;473.47;469.56;464.87;459.85;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;591.93;591.7;591.21;590.53;589.37;587.95;586.42;584.92;583.16;581.11;579.08;576.92;574.21;570.47;564.9;557.29;543.04;512.65;-9999;-9999;
+500;586.04;585.82;584.97;584.08;582.97;581.71;580.21;578.8;577.19;575.18;573.23;571.15;568.54;564.96;559.68;552.47;539.35;512.28;-9999;-9999;
+1000;579.54;579.48;579.18;578.33;577.25;575.83;574.32;572.92;571.33;569.32;567.35;565.36;562.85;559.44;554.44;547.59;535.51;511.89;-9999;-9999;
+1500;573.7;573.62;573.28;572.45;571.4;569.99;568.49;567.1;565.53;563.54;561.56;559.58;557.16;553.9;549.16;542.7;531.54;510.5;-9999;-9999;
+2000;567.7;568.13;567.74;566.88;565.77;564.26;562.67;561.3;559.76;557.8;555.74;553.91;551.51;548.36;543.86;537.32;527.41;508.48;-9999;-9999;
+2500;562.89;562.8;562.39;561.55;560.47;558.96;557.38;555.92;554.28;552.2;550.22;548.27;545.95;542.89;538.61;532.34;523.19;506.26;-9999;-9999;
+3000;557.55;557.46;557.05;556.22;555.17;553.67;552.09;550.65;549.03;546.99;545.03;542.95;540.53;537.44;533.3;527.38;519.13;503.58;-9999;-9999;
+3500;552.24;552.13;551.71;550.9;549.86;548.37;546.8;545.38;543.8;541.8;539.86;537.84;535.47;532.43;528.24;522.41;514.62;500.54;475.26;-9999;
+4000;546.93;546.9;546.29;545.59;544.56;543.08;541.51;540.11;538.56;536.58;534.7;532.72;530.43;527.49;523.48;517.84;510.17;497.07;473.26;-9999;
+4500;541.59;541.48;541.08;540.27;539.28;537.79;536.23;534.85;533.32;531.37;529.53;527.62;525.37;522.54;518.7;513.32;506.08;493.73;472.32;-9999;
+5000;536.28;536.16;535.77;534.97;533.98;532.51;530.95;529.59;528.09;526.16;524.34;522.48;520.32;517.59;513.91;508.78;501.94;490.46;471.62;-9999;
+5500;530.99;530.86;530.47;529.67;528.7;527.22;525.67;524.33;522.86;520.93;519.15;517.34;515.25;512.63;509.1;504.2;497.71;487.06;469.71;-9999;
+6000;526.26;526.12;525.69;524.81;523.76;522.19;520.51;519.06;517.63;515.75;513.97;512.2;510.18;507.65;504.28;499.59;493.38;483.52;467.94;-9999;
+6500;521.55;521.52;521.04;520.12;519.08;517.5;515.59;514.36;512.79;510.8;508.86;507.07;505.1;502.67;499.43;494.89;488.6;479.85;465.79;-9999;
+7000;516.88;516.74;516.31;515.44;514.41;512.83;510.94;509.7;508.13;506.2;504.27;502.38;500.28;497.7;494.49;490.16;484.22;476.42;463.32;-9999;
+7500;512.23;512.07;511.64;510.78;509.76;508.18;506.29;505.05;503.49;501.62;499.69;497.77;495.69;493.19;489.96;485.65;479.82;472.54;460.63;-9999;
+8000;507.55;507.41;506.98;506.13;505.12;503.53;501.67;500.41;498.86;496.98;494.76;493.13;491.09;488.67;485.58;481.46;475.91;468.97;458.08;442.14;
+8500;502.89;502.86;502.39;501.48;500.49;498.88;497.01;495.7;494.06;492.34;490.17;488.49;486.5;484.15;481.19;477.24;471.97;465.46;455.5;441.18;
+9000;498.24;498.09;497.65;496.8;495.78;494.16;492.32;490.99;489.36;487.69;485.59;483.86;481.92;479.62;476.76;473.02;468.02;461.9;452.77;440.09;
+9500;493.56;493.36;492.93;492.07;491.07;489.47;487.63;486.32;484.7;483.06;481.03;479.23;477.32;475.08;472.33;468.79;464.06;457.91;449.9;438.36;
+10000;488.9;488.65;488.22;487.36;486.39;484.82;482.99;481.65;480.02;478.42;476.44;474.6;472.69;470.56;467.9;464.54;460.12;454.24;447.27;436.59;
+10500;484.26;483.98;483.55;482.71;481.73;480.15;478.33;476.98;475.33;473.79;471.86;470.01;468.08;466.05;463.47;460.29;456.07;450.59;444.12;434.55;
+11000;479.65;479.32;478.89;478.05;477.07;475.5;473.69;472.32;470.66;469.17;467.26;465.16;463.49;461.54;459.06;455.98;452.01;446.88;440.89;432.31;
+11500;481.99;482;481.56;480.7;479.72;478.12;476.28;474.9;473.22;471.69;469.75;467.62;465.93;463.95;461.41;458.3;454.26;449;442.83;433.95;
+12000;484.33;484.72;484.28;483.41;482.41;480.79;478.9;477.51;475.82;474.25;472.28;470.11;468.41;466.38;463.81;460.62;456.62;451.16;444.79;435.58;
+12500;487.62;487.47;487.02;486.14;485.13;483.49;481.58;480.17;478.45;476.85;474.85;472.64;470.92;468.85;466.23;462.98;458.86;453.32;446.76;437.22;
+13000;490.91;490.26;489.8;488.91;487.89;486.22;484.28;482.87;481.13;479.49;477.46;475.49;473.46;471.35;468.68;465.37;461.17;455.52;448.75;438.86;
+13500;493.25;493.1;492.63;491.72;490.69;489;487.02;485.59;483.84;482.16;480.1;478.1;476.04;473.89;471.17;467.79;463.46;457.78;450.74;440.49;
+14000;495.6;495.98;495.51;494.59;493.54;491.81;489.79;488.37;486.59;484.87;482.77;480.75;478.69;476.46;473.68;470.23;465.81;460;452.75;442.13;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;584.97;584.81;584.36;583.72;582.55;581.1;579.64;578.4;576.83;574.88;572.8;570.34;567.12;562.4;555.48;543.28;513.49;-9999;-9999;-9999;
+500;579.36;579.34;578.69;578.05;576.9;575.46;574;572.69;571.16;569.24;567.22;564.85;561.75;557.22;550.57;539.3;512.18;-9999;-9999;-9999;
+1000;573.64;573.52;573.07;572.41;571.28;569.85;568.39;567.05;565.53;563.61;561.6;559.32;556.34;552.05;545.65;535.25;511.15;-9999;-9999;-9999;
+1500;567.93;567.9;567.43;566.77;565.67;564.24;562.81;561.45;559.95;558.05;556.06;553.79;550.91;546.79;540.67;530.73;509.3;-9999;-9999;-9999;
+2000;562.88;562.76;562.26;561.54;560.4;558.9;557.36;555.9;554.38;552.51;550.56;548.35;545.52;541.53;535.36;526.41;507.1;-9999;-9999;-9999;
+2500;557.89;557.87;557.09;556.39;555.27;553.77;552.26;550.81;549.26;547.27;545.2;542.92;540.18;536.34;530.43;521.9;504.48;-9999;-9999;-9999;
+3000;552.54;552.44;552.11;551.2;550.13;548.62;547.12;545.71;544.18;542.22;540.2;537.95;535.12;531.22;525.45;517.32;501.53;-9999;-9999;-9999;
+3500;547.2;547.26;546.91;546.03;544.97;543.46;541.98;540.59;539.1;537.17;535.18;533;530.26;526.43;520.75;512.73;498.24;-9999;-9999;-9999;
+4000;542.17;542.08;541.7;540.84;539.81;538.29;536.82;535.47;534.01;532.1;530.16;527.99;525.29;521.54;516.15;508.54;494.83;465.88;-9999;-9999;
+4500;537.16;537.14;536.35;535.66;534.64;533.12;531.65;530.34;528.87;526.95;525;522.9;520.28;516.74;511.56;504.31;491.56;465.54;-9999;-9999;
+5000;531.8;531.15;531.1;529.96;529.26;527.8;526.37;525.08;523.64;521.74;519.83;517.79;515.26;511.87;506.95;500.04;488.15;464.93;-9999;-9999;
+5500;526.75;526.64;526.21;525.35;524.32;522.76;521.21;519.81;518.4;516.53;514.55;512.68;510.24;506.98;502.3;495.64;484.59;463.79;-9999;-9999;
+6000;522.01;521.9;521.47;520.62;519.6;518.04;516.49;515.11;513.54;511.55;509.42;507.57;505.21;502.09;497.58;491.21;480.9;462.24;-9999;-9999;
+6500;517.29;517.16;516.74;515.89;514.89;513.33;511.8;510.44;508.88;506.91;504.78;502.87;500.4;497.15;492.79;486.74;477.46;460.21;-9999;-9999;
+7000;512.58;512.55;511.91;511.19;510.18;508.65;507.13;505.77;504.23;502.28;500.33;498.28;495.85;492.7;488.37;482.05;473.66;458.16;-9999;-9999;
+7500;507.84;507.72;507.31;506.47;505.49;503.99;502.46;501.11;499.57;497.6;495.64;493.64;491.27;488.24;484.1;478.12;470.15;456.17;-9999;-9999;
+8000;503.12;503.01;502.62;501.77;500.81;499.31;497.75;496.37;494.84;492.89;490.96;488.98;486.67;483.76;479.81;474.2;466.58;453.74;433.02;-9999;
+8500;498.38;498.28;497.89;497.03;496.08;494.58;493.01;491.63;490.11;488.17;486.26;484.34;482.07;479.28;475.5;470.2;462.96;451.15;430.97;-9999;
+9000;493.6;493.52;493.13;492.3;491.36;489.84;488.26;486.89;485.38;483.46;481.57;479.69;477.48;474.78;471.2;466.11;459.3;448.41;430.43;-9999;
+9500;488.84;488.8;488.4;487.57;486.63;485.12;483.53;482.16;480.67;478.75;476.87;475.03;472.88;470.29;466.83;462.03;455.59;445.53;429.57;-9999;
+10000;484.09;484.06;483.75;482.86;481.93;480.41;478.81;477.44;475.97;474.06;472.2;470.36;468.28;465.75;462.47;457.92;451.83;442.53;428.18;-9999;
+10500;479.54;479.41;479.01;478.17;477.23;475.71;474.1;472.72;471.27;469.39;467.53;465.71;463.68;461.23;458.08;453.78;447.67;439.41;426.49;-9999;
+11000;475.01;474.73;474.33;473.49;472.57;471.02;469.41;468.04;466.58;464.73;462.87;461.07;459.08;456.71;453.69;449.62;443.89;436.5;424.49;-9999;
+11500;477.26;477.35;476.94;476.08;475.14;473.58;471.71;470.55;469.08;467.2;465.32;463.49;461.47;459.07;455.99;451.86;446.01;438.4;425.99;-9999;
+12000;480.14;480.01;479.59;478.72;477.77;476.19;474.26;473.11;471.62;469.72;467.79;465.94;463.89;461.45;458.32;454.11;448.15;440.31;427.48;-9999;
+12500;483.02;482.71;482.27;481.39;480.43;478.83;476.88;475.7;474.19;472.23;470.29;468.42;466.34;463.86;460.67;456.39;450.3;441.86;428.94;-9999;
+13000;485.59;485.44;485;484.1;483.13;481.5;479.53;478.34;476.79;474.8;472.85;470.93;468.83;466.3;463.06;458.69;452.46;443.77;430.43;-9999;
+13500;488.15;488.2;487.77;486.86;485.88;484.22;482.23;481.01;479.44;477.41;475.42;473.49;471.34;468.78;465.47;461.01;454.66;445.68;431.99;-9999;
+14000;491.17;491.02;490.58;489.65;488.66;486.98;484.96;483.72;482.12;480.05;478.03;476.07;473.88;471.27;467.93;463.36;456.87;447.61;433.45;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;576.92;576.79;576.27;575.63;574.97;573.8;572.47;571.38;569.61;567.64;565.32;562.45;558.42;552.35;541.75;517.47;-9999;-9999;-9999;-9999;
+500;571.52;571.51;570.8;570.13;569.45;568.28;566.94;565.84;564.11;562.16;559.92;557.14;553.28;547.16;537.45;515.63;-9999;-9999;-9999;-9999;
+1000;565.87;565.86;565.35;564.66;563.97;562.8;561.45;560.37;558.65;556.7;554.49;551.81;548.1;542.29;533.09;513.53;-9999;-9999;-9999;-9999;
+1500;560.66;560.55;560.02;559.26;558.49;557.32;555.98;554.92;553.24;551.31;549.13;546.47;542.9;537.39;529.12;510.75;-9999;-9999;-9999;-9999;
+2000;555.31;555.56;555.02;554.28;553.51;552.27;550.83;549.68;547.93;545.93;543.8;541.22;537.74;532.43;524.52;507.52;-9999;-9999;-9999;-9999;
+2500;550.65;550.55;550.01;549.29;548.52;547.28;545.83;544.72;542.99;540.98;538.75;536.08;532.61;527.53;519.86;504.77;-9999;-9999;-9999;-9999;
+3000;546.01;545.51;544.98;544.51;543.48;542.29;540.86;539.74;538.05;536.07;533.89;531.29;527.87;522.82;515.19;501.61;-9999;-9999;-9999;-9999;
+3500;540.56;540.49;539.94;539.46;538.47;537.27;535.85;534.74;533.1;531.14;529.02;526.49;523.18;518.33;510.89;498.05;-9999;-9999;-9999;-9999;
+4000;535.53;535.43;534.88;534.4;533.45;532.25;530.83;529.74;528.13;526.2;524.12;521.67;518.48;513.82;506.61;494.69;-9999;-9999;-9999;-9999;
+4500;530.51;530.37;529.81;529.33;528.41;527.2;525.77;524.71;523.14;521.24;519.21;516.83;513.75;509.3;502.47;491.21;463.28;-9999;-9999;-9999;
+5000;525.89;525.78;525.22;524.61;523.63;522.34;520.76;519.68;518.14;516.27;514.28;511.98;509;504.73;498.21;487.58;462.9;-9999;-9999;-9999;
+5500;521.28;521.22;520.71;520.09;519.15;517.83;516.24;515.09;513.43;511.44;509.34;507.1;504.23;500.14;493.6;483.35;461.62;-9999;-9999;-9999;
+6000;516.69;516.66;516.38;515.55;514.64;513.32;511.71;510.6;508.96;506.98;504.91;502.55;499.59;495.48;489.23;479.5;460.12;-9999;-9999;-9999;
+6500;512.11;512.14;511.84;511.03;510.13;508.8;507.18;506.08;504.48;502.52;500.49;498.17;495.25;491.25;485.28;476.2;458.4;-9999;-9999;-9999;
+7000;507.68;507.62;507.29;506.49;505.61;504.27;502.88;501.57;499.99;498.02;495.98;493.71;490.88;487.04;481.34;472.61;456.34;-9999;-9999;-9999;
+7500;503.26;503.08;502.74;501.96;501.09;499.74;498.32;496.99;495.41;493.46;491.45;489.24;486.5;482.83;477.32;468.96;454.15;-9999;-9999;-9999;
+8000;498.59;498.52;498.16;497.37;496.49;495.11;493.69;492.37;490.82;488.88;486.91;484.75;482.12;478.54;473.2;465.27;451.7;-9999;-9999;-9999;
+8500;493.87;493.9;493.52;492.74;491.86;490.48;489.06;487.75;486.21;484.3;482.35;480.25;477.69;474.15;468.89;461.52;448.98;423.68;-9999;-9999;
+9000;489.35;489.25;488.89;488.1;487.24;485.85;484.42;483.12;481.6;479.7;477.78;475.64;473.12;469.72;464.87;457.75;446.14;424.41;-9999;-9999;
+9500;484.91;484.61;484.26;483.47;482.61;481.21;479.78;478.42;476.9;475;472.91;470.99;468.53;465.29;460.69;454;443.15;423.72;-9999;-9999;
+10000;480.1;479.99;479.62;478.81;477.87;476.44;474.98;473.66;472.15;470.24;468.21;466.34;463.95;460.85;456.48;449.85;440.03;422.57;-9999;-9999;
+10500;475.3;475.2;474.83;474.01;473.14;471.69;470.21;468.9;467.4;465.51;463.51;461.68;459.37;456.38;452.23;446.02;436.83;421.03;-9999;-9999;
+11000;470.57;470.45;470.08;469.26;468.39;466.93;465.45;464.14;462.66;460.78;458.72;457.02;454.77;451.91;447.96;442.13;433.53;419.34;-9999;-9999;
+11500;473.18;473.01;472.63;471.8;470.92;469.44;467.93;466.6;465.11;463.2;461.14;459.39;457.11;454.2;450.19;444.24;435.38;420.72;-9999;-9999;
+12000;475.79;475.61;475.22;474.37;473.49;471.98;470.2;469.09;467.58;465.65;463.6;461.78;459.47;456.52;452.45;446.38;437.25;422.09;-9999;-9999;
+12500;478.41;478.24;477.82;476.92;476.08;474.56;472.76;471.62;470.08;468.13;466.08;464.21;461.86;458.86;454.72;448.54;439.12;423.45;-9999;-9999;
+13000;481.03;480.9;480.49;479.64;478.76;477.17;475.43;474.18;472.62;470.63;468.55;466.65;464.27;461.23;457.02;450.72;441;424.78;-9999;-9999;
+13500;483.67;483.49;483.08;482.21;481.32;479.8;478.02;476.77;475.19;473.14;471.04;469.12;466.71;463.62;459.33;452.91;442.9;426.1;-9999;-9999;
+14000;486.32;486.1;485.68;484.8;483.91;482.36;480.57;479.37;477.79;475.74;473.7;471.65;469.17;466.02;461.67;455.13;444.8;427.46;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;572.87;572.42;572.17;571.58;570.95;569.83;568.55;567.41;565.56;563.34;561.09;557.95;553.38;546.17;532.6;-9999;-9999;-9999;-9999;-9999;
+500;567.08;567.08;566.74;566.16;565.52;564.39;563.1;561.98;560.15;558.01;555.79;552.76;548.38;541.52;528.96;-9999;-9999;-9999;-9999;-9999;
+1000;561.29;561.61;561.35;560.77;560.12;559;557.7;556.59;554.78;552.67;550.46;547.54;543.35;536.85;525;518.3;-9999;-9999;-9999;-9999;
+1500;556.51;556.45;556.15;555.52;554.81;553.61;552.31;551.22;549.45;547.39;545.2;542.32;538.28;532.12;521;-9999;-9999;-9999;-9999;-9999;
+2000;551.62;551.53;551.23;550.61;549.89;548.7;547.31;546.14;544.29;542.1;539.96;537.18;533.25;527.33;516.9;492.78;-9999;-9999;-9999;-9999;
+2500;546.7;546.61;546.31;545.86;544.97;543.78;542.39;541.25;539.43;537.33;535.06;532.19;528.24;522.57;512.66;491.31;-9999;-9999;-9999;-9999;
+3000;541.74;541.68;541.36;540.9;540.03;538.85;537.46;536.34;534.56;532.57;530.28;527.48;523.67;517.75;508.36;489.15;-9999;-9999;-9999;-9999;
+3500;536.79;536.73;536.41;535.94;535.08;533.9;532.52;531.42;529.68;527.71;525.48;522.77;519.08;513.44;504.88;486.27;-9999;-9999;-9999;-9999;
+4000;531.84;531.84;531.44;530.97;530.12;528.94;527.56;526.48;524.78;522.84;520.67;518.03;514.49;509.09;500.8;483.35;-9999;-9999;-9999;-9999;
+4500;527.1;527.01;526.63;526.06;525.12;523.97;522.6;521.53;519.86;517.95;515.83;513.27;509.84;504.72;496.62;480.61;-9999;-9999;-9999;-9999;
+5000;522.37;522.58;522.19;521.62;520.67;519.4;517.89;516.69;514.95;513.05;510.98;508.5;505.21;500.31;492.38;477.99;-9999;-9999;-9999;-9999;
+5500;518.22;518.14;517.74;517.15;516.21;514.95;513.43;512.26;510.51;508.5;506.31;503.73;500.55;495.8;488.21;475.06;-9999;-9999;-9999;-9999;
+6000;513.76;513.69;513.28;512.67;511.77;510.49;508.98;507.81;506.1;504.12;501.98;499.45;496.16;491.45;484.16;471.99;-9999;-9999;-9999;-9999;
+6500;509.3;509.24;508.81;508.2;507.31;506.03;504.53;503.37;501.69;499.72;497.58;495.08;491.89;487.4;480.46;469.02;-9999;-9999;-9999;-9999;
+7000;504.86;504.85;504.33;503.72;502.84;501.55;500.05;498.88;497.2;495.23;493.12;490.69;487.62;483.25;476.72;465.9;441.55;-9999;-9999;-9999;
+7500;500.36;500.31;500.04;499.2;498.33;497.01;495.48;494.31;492.67;490.71;488.65;486.28;483.3;479.12;472.62;462.65;441.16;-9999;-9999;-9999;
+8000;495.79;495.73;495.42;494.61;493.74;492.42;490.91;489.74;488.12;486.19;484.16;481.86;478.97;474.96;468.81;459.46;440.01;-9999;-9999;-9999;
+8500;491.32;491.14;490.8;490.01;489.15;487.82;486.28;485.15;483.56;481.65;479.66;477.42;474.63;470.78;464.94;455.59;438.21;-9999;-9999;-9999;
+9000;486.88;486.53;486.17;485.4;484.55;483.22;481.67;480.55;478.99;477.1;475.15;472.97;470.26;466.57;461.03;452.39;436.27;-9999;-9999;-9999;
+9500;481.99;481.92;481.56;480.79;479.95;478.61;477.05;475.95;474.42;472.54;470.62;468.5;465.88;462.34;457.08;448.78;434.19;-9999;-9999;-9999;
+10000;477.12;477.31;476.95;476.17;475.34;474;472.42;471.34;469.83;467.97;466.08;464.01;461.48;458.08;453.08;445.17;431.82;-9999;-9999;-9999;
+10500;472.78;472.7;472.34;471.56;470.73;469.38;467.79;466.72;465.24;463.4;461.53;459.51;457.06;453.8;448.93;441.56;429.12;404.25;-9999;-9999;
+11000;468.47;468.09;467.74;466.95;466.13;464.76;463.16;462.1;460.64;458.81;456.96;455;452.62;449.37;444.71;437.87;426.34;405;-9999;-9999;
+11500;470.65;470.52;470.15;469.35;468.52;467.13;465.52;464.44;462.96;461.11;459.24;457.25;454.85;451.68;446.94;439.91;427.99;405.8;-9999;-9999;
+12000;472.84;472.96;472.58;471.77;470.93;469.53;467.91;466.8;465.29;463.43;461.54;459.53;457.1;453.89;449.15;441.97;429.65;-9999;-9999;-9999;
+12500;475.52;475.4;475.03;474.21;473.37;471.94;470.32;469.18;467.65;465.76;463.85;461.82;459.36;456.11;451.42;444.04;431.31;408.11;-9999;-9999;
+13000;478.2;477.86;477.5;476.66;475.83;474.38;472.75;471.58;470.03;468.11;466.18;464.13;461.63;458.34;453.59;446.13;432.98;-9999;-9999;-9999;
+13500;480.9;480.35;479.99;479.14;478.3;476.83;475.2;474;472.42;470.48;468.53;466.45;463.92;460.59;455.78;448.24;434.64;406.85;-9999;-9999;
+14000;482.99;482.87;482.5;481.63;480.79;479.3;477.66;476.44;474.84;472.87;470.9;468.79;466.24;462.86;457.97;450.36;436.31;408.99;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;568.15;568.15;567.75;567.18;566.58;565.5;564.3;563.08;561.2;559.11;556.45;553;548.05;538.92;520.25;-9999;-9999;-9999;-9999;-9999;
+500;562.75;562.75;562.42;561.86;561.24;560.17;558.95;557.75;555.89;553.84;551.26;547.93;542.91;534.6;517.03;-9999;-9999;-9999;-9999;-9999;
+1000;557.35;557.35;557.12;556.56;555.94;554.86;553.64;552.46;550.61;548.59;546.05;542.84;538.04;530.2;513.91;-9999;-9999;-9999;-9999;-9999;
+1500;552.42;552.37;552.09;551.48;550.79;549.64;548.33;547.19;545.37;543.38;540.89;537.74;533.13;525.73;510.98;-9999;-9999;-9999;-9999;-9999;
+2000;547.43;547.53;547.25;546.65;545.96;544.81;543.48;542.27;540.35;538.28;535.75;532.7;528.26;521.19;507.78;-9999;-9999;-9999;-9999;-9999;
+2500;542.74;542.68;542.4;541.8;541.1;539.96;538.63;537.45;535.56;533.53;531.02;527.9;523.43;516.66;504.19;-9999;-9999;-9999;-9999;-9999;
+3000;537.81;537.82;537.53;536.93;536.24;535.1;533.77;532.62;530.75;528.53;526.33;523.3;519;512.39;500.42;-9999;-9999;-9999;-9999;-9999;
+3500;533;532.94;532.65;532.21;531.36;530.23;528.91;527.77;525.94;523.77;521.61;518.68;514.53;508.24;496.8;-9999;-9999;-9999;-9999;-9999;
+4000;528.12;528.06;527.75;527.29;526.48;525.34;524.01;522.91;521.12;519.01;516.88;514.03;510.06;504.06;493.12;-9999;-9999;-9999;-9999;-9999;
+4500;523.66;523.58;523.22;522.68;521.76;520.52;519.1;518.03;516.28;514.22;512.13;509.38;505.57;499.81;489.32;466.35;-9999;-9999;-9999;-9999;
+5000;519.21;519.2;518.84;518.29;517.38;516.14;514.66;513.46;511.59;509.44;507.38;504.71;501.03;495.26;485.45;464.95;-9999;-9999;-9999;-9999;
+5500;514.77;514.82;514.45;513.9;513;511.76;510.3;509.11;507.28;505.18;502.97;500.21;496.48;490.81;481.51;463.41;-9999;-9999;-9999;-9999;
+6000;510.53;510.45;510.07;509.5;508.59;507.37;505.9;504.73;502.94;500.89;498.68;495.95;492.3;486.84;478.21;460.87;-9999;-9999;-9999;-9999;
+6500;506.29;506.05;505.66;505.08;504.2;502.96;501.5;500.34;498.56;496.55;494.31;491.64;488.12;482.91;474.51;458.53;-9999;-9999;-9999;-9999;
+7000;501.71;501.64;501.24;500.65;499.77;498.52;497.03;495.86;494.1;492.12;489.93;487.33;483.93;478.95;471.01;456.54;-9999;-9999;-9999;-9999;
+7500;497.23;497.16;496.74;496.13;495.26;493.99;492.51;491.35;489.63;487.67;485.53;483;479.72;474.95;467.45;454.15;-9999;-9999;-9999;-9999;
+8000;492.74;492.64;492.21;491.59;490.73;489.46;487.97;486.83;485.14;483.21;481.12;478.65;475.48;470.91;463.84;451.48;-9999;-9999;-9999;-9999;
+8500;488.26;488.25;487.65;487.04;486.19;484.91;483.43;482.3;480.64;478.73;476.68;474.29;471.22;466.85;460.18;448.51;-9999;-9999;-9999;-9999;
+9000;483.54;483.56;483.28;482.47;481.64;480.36;478.88;477.76;476.13;474.24;472.23;469.9;466.94;462.75;456.45;445.44;421.1;-9999;-9999;-9999;
+9500;479.06;479;478.68;477.89;477.08;475.79;474.31;473.2;471.61;469.74;467.77;465.5;462.64;458.63;452.66;442.24;420.78;-9999;-9999;-9999;
+10000;474.48;474.43;474.08;473.31;472.51;471.22;469.74;468.63;467.07;465.22;463.29;461.08;458.32;454.48;448.56;438.92;419.81;-9999;-9999;-9999;
+10500;469.93;469.85;469.5;468.73;467.94;466.63;465.16;464.06;462.52;460.69;458.79;456.65;453.98;450.3;444.7;435.51;418.27;-9999;-9999;-9999;
+11000;465.39;465.37;464.81;464.16;463.36;462.04;460.57;459.47;457.96;456.14;454.27;452.19;449.61;446.09;440.79;432.36;416.48;-9999;-9999;-9999;
+11500;467.4;467.56;467.24;466.46;465.67;464.33;462.84;461.73;460.21;458.37;456.48;454.38;451.77;448.21;442.83;434.29;417.83;-9999;-9999;-9999;
+12000;470.02;469.94;469.59;468.79;467.99;466.64;465.13;464.01;462.46;460.61;458.71;456.58;453.95;450.35;444.89;436.19;419.21;-9999;-9999;-9999;
+12500;472.65;472.35;471.94;471.13;470.34;468.97;467.43;466.31;464.74;462.87;460.94;458.8;456.13;452.49;446.96;437.8;420.54;-9999;-9999;-9999;
+13000;474.82;474.68;474.32;473.49;472.7;471.31;469.76;468.62;467.03;465.14;463.2;461.03;458.34;454.65;449.04;439.71;421.85;-9999;-9999;-9999;
+13500;477;477.04;476.71;475.87;475.08;473.67;472.1;470.95;469.33;467.43;465.47;463.27;460.55;456.83;451.14;441.62;423.15;-9999;-9999;-9999;
+14000;479.57;479.48;479.11;478.26;477.47;476.04;474.45;473.29;471.65;469.73;467.75;465.53;462.78;459.01;453.24;443.54;424.45;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;563.34;563.17;563.15;562.38;561.78;560.75;559.59;558.27;556.39;554.19;551.37;547.59;541.81;530.37;519.2;-9999;-9999;-9999;-9999;-9999;
+500;558.04;558.04;557.72;557.17;556.56;555.53;554.37;553.07;551.2;549.04;546.3;542.64;537.14;526.28;516.13;-9999;-9999;-9999;-9999;-9999;
+1000;552.73;552.73;552.52;551.97;551.37;550.34;549.2;547.91;546.04;543.9;541.21;537.66;532.43;522.09;512.87;-9999;-9999;-9999;-9999;-9999;
+1500;547.97;547.91;547.65;547.06;546.39;545.29;544.05;542.76;540.91;538.82;536.17;532.69;527.67;518.28;498.28;-9999;-9999;-9999;-9999;-9999;
+2000;543.17;543.16;542.89;542.3;541.64;540.54;539.3;538.01;536.07;533.89;531.17;527.78;522.94;514;495.48;-9999;-9999;-9999;-9999;-9999;
+2500;538.45;538.39;538.12;537.53;536.87;535.78;534.53;533.28;531.37;529.24;526.58;523.16;518.04;509.77;492.4;-9999;-9999;-9999;-9999;-9999;
+3000;533.49;533.61;533.34;532.75;532.09;531;529.74;528.53;526.65;524.57;521.98;518.66;513.77;505.8;488.75;-9999;-9999;-9999;-9999;-9999;
+3500;528.87;528.82;528.54;527.96;527.29;526.21;524.97;523.77;521.92;519.89;517.36;514.17;509.47;501.9;486.13;-9999;-9999;-9999;-9999;-9999;
+4000;524.17;524.09;523.76;523.15;522.49;521.41;520.15;518.99;517.17;515.19;512.73;509.64;505.14;497.9;483.38;-9999;-9999;-9999;-9999;-9999;
+4500;520.24;519.81;519.47;518.96;518.05;516.85;515.46;514.22;512.42;510.48;508.08;505.09;500.81;493.81;480.32;-9999;-9999;-9999;-9999;-9999;
+5000;515.59;515.51;515.17;514.64;513.74;512.54;511.13;509.89;507.97;505.92;503.43;500.54;496.29;489.66;477.16;-9999;-9999;-9999;-9999;-9999;
+5500;510.95;511.19;510.84;510.31;509.42;508.23;506.82;505.59;503.69;501.68;499.23;496.21;491.99;485.61;473.98;465.67;-9999;-9999;-9999;-9999;
+6000;506.93;506.86;506.5;505.96;505.08;503.89;502.48;501.28;499.4;497.38;494.96;492.02;487.96;481.86;470.69;465.52;-9999;-9999;-9999;-9999;
+6500;502.59;502.51;502.15;501.61;500.74;499.54;498.1;496.9;495.03;492.81;490.67;487.81;483.9;478.08;467.41;-9999;-9999;-9999;-9999;-9999;
+7000;498.22;498.22;497.74;497.18;496.31;495.1;493.65;492.48;490.64;488.49;486.36;483.59;479.81;474.26;464.04;443.38;-9999;-9999;-9999;-9999;
+7500;493.82;493.81;493.28;492.72;491.85;490.65;489.2;488.04;486.25;484.15;482.04;479.34;475.7;470.13;460.58;442.11;-9999;-9999;-9999;-9999;
+8000;489.17;489.21;488.83;488.24;487.39;486.18;484.73;483.6;481.83;479.8;477.71;475.08;471.57;466.27;457.53;440.22;-9999;-9999;-9999;-9999;
+8500;484.81;484.74;484.35;483.75;482.92;481.7;480.26;479.13;477.41;475.43;473.35;470.79;467.41;462.36;454.15;437.86;-9999;-9999;-9999;-9999;
+9000;480.32;480.26;479.85;479.25;478.43;477.2;475.77;474.66;472.96;471.07;468.98;466.49;463.22;458.41;450.69;435.96;-9999;-9999;-9999;-9999;
+9500;475.84;475.77;475.34;474.74;473.93;472.69;471.26;470.16;468.49;466.63;464.59;462.17;459.02;454.42;447.17;433.68;-9999;-9999;-9999;-9999;
+10000;471.38;471.37;470.81;470.21;469.42;468.17;466.74;465.65;464.02;462.18;460.18;457.83;454.79;450.4;443.58;431.09;-9999;-9999;-9999;-9999;
+10500;466.79;466.75;466.45;465.66;464.89;463.64;462.21;461.13;459.53;457.71;455.75;453.46;450.53;446.34;439.92;428.26;-9999;-9999;-9999;-9999;
+11000;462.23;462.21;461.89;461.12;460.36;459.1;457.67;456.6;455.03;453.22;451.31;449.08;446.26;442.25;436.2;425.14;401.05;-9999;-9999;-9999;
+11500;464.51;464.44;464.12;463.34;462.58;461.3;459.85;458.78;457.19;455.37;453.44;451.19;448.34;444.28;438.15;426.75;402.11;-9999;-9999;-9999;
+12000;466.79;466.78;466.23;465.58;464.81;463.52;462.05;460.97;459.36;457.53;455.58;453.32;450.44;446.34;440.11;428.36;-9999;-9999;-9999;-9999;
+12500;469.09;469.08;468.49;467.83;467.06;465.75;464.27;463.17;461.55;459.71;457.74;455.46;452.56;448.41;442.09;429.97;-9999;-9999;-9999;-9999;
+13000;471.29;471.23;470.88;470.08;469.32;467.99;466.49;465.39;463.75;461.89;459.91;457.61;454.68;450.5;444.07;431.58;-9999;-9999;-9999;-9999;
+13500;473.5;473.53;473.17;472.35;471.6;470.25;468.74;467.62;465.96;464.08;462.07;459.74;456.79;452.59;446.06;433.29;-9999;-9999;-9999;-9999;
+14000;475.9;475.82;475.46;474.63;473.88;472.52;470.98;469.87;468.16;466.26;464.24;461.89;458.91;454.67;448.06;434.91;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;558;557.86;557.81;557.07;556.47;555.49;554.24;552.76;550.82;548.5;545.55;541.62;535.02;520.48;-9999;-9999;-9999;-9999;-9999;-9999;
+500;552.85;552.85;552.72;551.99;551.39;550.4;549.23;547.73;545.78;543.49;540.63;536.81;530.49;517.04;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;547.7;547.7;547.67;546.92;546.32;545.34;544.18;542.77;540.82;538.53;535.67;531.98;525.94;513.41;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;543.07;543.08;542.76;542.18;541.53;540.48;539.25;537.85;535.89;533.64;530.82;527.11;521.33;509.61;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;538.43;538.36;538.11;537.53;536.88;535.83;534.62;533.24;531.26;528.95;526.05;522.37;516.76;505.63;494.17;-9999;-9999;-9999;-9999;-9999;
+2500;533.75;533.69;533.43;532.86;532.21;531.17;529.98;528.62;526.68;524.44;521.62;517.97;512.36;501.44;490.89;-9999;-9999;-9999;-9999;-9999;
+3000;529.07;529.01;528.75;528.18;527.53;526.49;525.31;523.98;522.1;519.92;517.18;513.63;508.22;497.59;487.73;-9999;-9999;-9999;-9999;-9999;
+3500;524.38;524.39;524.05;523.49;522.85;521.81;520.65;519.35;517.5;515.38;512.7;509.28;504.06;493.89;484.81;-9999;-9999;-9999;-9999;-9999;
+4000;519.7;519.85;519.53;518.9;518.15;517.11;515.93;514.69;512.86;510.79;508.21;504.83;499.85;490.49;470.81;-9999;-9999;-9999;-9999;-9999;
+4500;515.71;515.63;515.31;514.67;513.91;512.76;511.43;510.09;508.21;506.17;503.64;500.38;495.52;486.69;468.1;-9999;-9999;-9999;-9999;-9999;
+5000;511.81;511.39;511.07;510.58;509.68;508.53;507.19;505.9;503.96;501.83;499.2;495.85;490.95;482.85;465.54;-9999;-9999;-9999;-9999;-9999;
+5500;507.22;507.15;506.82;506.32;505.44;504.29;502.94;501.68;499.76;497.63;495.03;491.76;486.99;479.3;462.97;-9999;-9999;-9999;-9999;-9999;
+6000;502.97;502.89;502.56;502.04;501.18;500.03;498.66;497.39;495.47;493.38;490.84;487.67;483.08;475.78;461.01;-9999;-9999;-9999;-9999;-9999;
+6500;498.68;498.69;498.23;497.71;496.84;495.68;494.3;493.06;491.17;489.12;486.63;483.55;479.15;472.21;458.57;-9999;-9999;-9999;-9999;-9999;
+7000;494.35;494.35;493.86;493.33;492.47;491.31;489.93;488.72;486.84;484.84;482.41;479.42;475.19;468.59;455.89;-9999;-9999;-9999;-9999;-9999;
+7500;489.91;489.83;489.48;488.93;488.08;486.92;485.54;484.36;482.51;480.54;478.16;475.27;471.2;464.92;452.97;-9999;-9999;-9999;-9999;-9999;
+8000;485.47;485.43;485.08;484.52;483.68;482.53;481.14;479.98;478.15;476.22;473.9;471.1;467.18;461.21;449.89;442.82;-9999;-9999;-9999;-9999;
+8500;481.04;481.02;480.66;480.09;479.28;478.12;476.73;475.59;473.79;471.89;469.63;466.9;463.14;457.46;446.55;441.76;-9999;-9999;-9999;-9999;
+9000;476.63;476.6;476.23;475.66;474.86;473.69;472.3;471.19;469.42;467.33;465.34;462.69;459.07;453.66;443.24;422.04;-9999;-9999;-9999;-9999;
+9500;472.22;472.18;471.79;471.21;470.43;469.25;467.85;466.76;465.03;463;461.03;458.45;454.96;449.83;440.15;421.32;-9999;-9999;-9999;-9999;
+10000;467.83;467.82;467.33;466.76;465.99;464.8;463.41;462.33;460.63;458.65;456.7;454.19;450.83;445.72;437.23;419.43;-9999;-9999;-9999;-9999;
+10500;463.34;463.29;462.88;462.29;461.53;460.33;458.95;457.88;456.21;454.29;452.36;449.92;446.68;441.81;433.87;417.47;-9999;-9999;-9999;-9999;
+11000;458.88;458.82;458.41;457.8;457.06;455.85;454.48;453.41;451.78;449.92;447.99;445.62;442.5;437.88;430.45;415.5;-9999;-9999;-9999;-9999;
+11500;460.86;460.95;460.54;459.92;459.18;457.96;456.58;455.5;453.85;451.97;450.04;447.66;444.52;439.84;432.29;416.93;-9999;-9999;-9999;-9999;
+12000;462.86;462.85;462.68;462.05;461.32;460.08;458.68;457.61;455.95;454.02;452.09;449.67;446.51;441.83;434.14;418.25;-9999;-9999;-9999;-9999;
+12500;465.33;465.28;465.01;464.19;463.46;462.21;460.8;459.72;458.01;456.07;454.12;451.69;448.51;443.8;435.99;419.57;-9999;-9999;-9999;-9999;
+13000;467.5;467.45;467.17;466.34;465.62;464.36;462.91;461.81;460.08;458.11;456.16;453.71;450.51;445.77;437.85;420.86;-9999;-9999;-9999;-9999;
+13500;469.68;469.63;469.34;468.5;467.78;466.51;465.02;463.89;462.14;460.15;458.2;455.73;452.51;447.73;439.72;422.14;-9999;-9999;-9999;-9999;
+14000;471.88;471.82;471.51;470.66;469.93;468.63;467.32;465.97;464.21;462.19;460.24;457.76;454.52;449.69;441.59;423.41;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;552.34;552.35;552.14;551.47;550.64;549.54;548.21;546.66;544.71;542.3;539.26;535.22;527.35;514.67;-9999;-9999;-9999;-9999;-9999;-9999;
+500;547.3;547.31;546.97;546.47;545.72;544.62;543.3;541.77;539.85;537.48;534.5;530.59;523.11;507.3;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;542.31;542.32;541.97;541.45;540.8;539.71;538.4;536.9;534.99;532.64;529.71;525.92;518.8;502.97;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;537.92;537.64;537.56;536.81;536.18;535.04;533.69;532.13;530.15;527.85;524.96;521.26;514.42;498.71;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;533.13;533.14;532.8;532.24;531.59;530.5;529.16;527.64;525.68;523.32;520.36;516.41;510.04;495.07;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;528.34;528.52;528.27;527.7;527.06;525.98;524.63;523.09;521.2;518.89;515.99;512.14;505.82;491.65;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;524.01;524.02;523.68;523.14;522.5;521.47;520.16;518.65;516.71;514.45;511.6;507.83;501.81;488.45;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;519.75;519.36;519.11;518.56;517.93;516.94;515.66;514.18;512.26;510.01;507.2;503.53;497.71;485.15;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;515.19;515.2;514.79;514.18;513.42;512.37;511.13;509.67;507.79;505.58;502.83;499.19;493.53;481.62;470.22;-9999;-9999;-9999;-9999;-9999;
+4500;510.64;510.97;510.66;510.04;509.29;508.2;506.89;505.32;503.33;501.13;498.41;494.83;489.37;478.04;466.92;-9999;-9999;-9999;-9999;-9999;
+5000;506.89;506.81;506.5;505.89;505.14;504.05;502.79;501.24;499.26;496.96;494.16;490.57;485.29;474.46;464.5;-9999;-9999;-9999;-9999;-9999;
+5500;503.14;502.65;502.33;501.72;500.98;499.89;498.57;497.09;495.11;492.85;490.11;486.62;481.53;471.32;461.93;-9999;-9999;-9999;-9999;-9999;
+6000;498.52;498.44;498.12;497.62;496.75;495.63;494.32;492.89;490.93;488.72;486.04;482.65;477.75;468.19;459.5;-9999;-9999;-9999;-9999;-9999;
+6500;493.85;494.17;493.84;493.34;492.48;491.36;490.06;488.68;486.74;484.58;481.95;478.65;473.94;465.21;446.69;-9999;-9999;-9999;-9999;-9999;
+7000;489.95;489.88;489.56;489.04;488.19;487.08;485.78;484.45;482.53;480.41;477.84;474.64;470;461.89;444.03;-9999;-9999;-9999;-9999;-9999;
+7500;486.06;485.57;485.24;484.73;483.89;482.78;481.48;480.21;478.3;476.22;473.71;470.6;466.14;458.47;441.74;-9999;-9999;-9999;-9999;-9999;
+8000;481.33;481.25;480.92;480.39;479.57;478.46;477.16;475.94;474.05;472.01;469.56;466.54;462.25;455;439.55;-9999;-9999;-9999;-9999;-9999;
+8500;476.6;476.92;476.58;476.04;475.23;474.13;472.82;471.64;469.78;467.78;465.38;462.45;458.32;451.48;437.42;-9999;-9999;-9999;-9999;-9999;
+9000;472.64;472.57;472.23;471.68;470.88;469.78;468.47;467.31;465.49;463.53;461.18;458.34;454.37;447.9;434.88;-9999;-9999;-9999;-9999;-9999;
+9500;468.69;468.21;467.86;467.31;466.52;465.42;464.1;462.97;461.18;459.26;456.97;454.2;450.38;444.27;432.07;-9999;-9999;-9999;-9999;-9999;
+10000;463.91;463.84;463.48;462.92;462.17;461.04;459.72;458.61;456.85;454.97;452.73;450.04;446.37;440.6;429.07;-9999;-9999;-9999;-9999;-9999;
+10500;459.14;459.45;459.09;458.52;457.78;456.65;455.32;454.24;452.5;450.67;448.48;445.87;442.33;436.87;425.8;421;-9999;-9999;-9999;-9999;
+11000;455.12;455.06;454.68;454.11;453.38;452.24;450.91;449.85;448.14;446.34;444.21;441.68;438.26;432.99;422.87;419.25;-9999;-9999;-9999;-9999;
+11500;457.2;457.09;456.71;456.13;455.41;454.26;452.9;451.82;450.07;448.26;446.12;443.57;440.13;434.95;424.55;420.81;-9999;-9999;-9999;-9999;
+12000;459.3;459.31;458.74;458.15;457.44;456.28;454.88;453.76;452.01;450.18;448.03;445.47;442;436.82;426.24;422.5;-9999;-9999;-9999;-9999;
+12500;461.42;461.19;460.8;460.18;459.45;458.28;456.86;455.71;453.94;452.11;449.95;447.38;443.88;438.68;427.92;423.95;-9999;-9999;-9999;-9999;
+13000;463.31;463.25;462.86;462.2;461.46;460.24;458.81;457.66;455.89;454.04;451.87;449.29;445.77;440.56;429.61;-9999;-9999;-9999;-9999;-9999;
+13500;465.21;465.29;464.9;464.21;463.45;462.21;460.76;459.61;457.83;455.98;453.8;451.2;447.66;442.42;431.29;426.25;-9999;-9999;-9999;-9999;
+14000;467.4;467.33;466.88;466.19;465.43;464.17;462.72;461.56;459.78;457.92;455.73;453.11;449.55;444.26;432.97;428.55;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;546.35;545.69;545.44;544.65;543.74;542.65;541.31;539.71;537.79;535.31;532.2;527.92;517.69;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;541.1;541.11;540.66;539.91;539.03;537.94;536.61;535.03;533.13;530.71;527.66;523.48;513.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;536.44;536.46;536;535.24;534.33;533.24;531.93;530.37;528.47;526.09;523.08;519;509.98;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;532.42;531.9;531.64;530.86;529.97;528.85;527.49;525.89;523.91;521.48;518.54;514.53;506.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;527.57;527.58;527.19;526.46;525.59;524.49;523.15;521.56;519.63;517.19;514.15;510.08;502.17;490.27;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;522.8;522.98;522.78;522.03;521.18;520.09;518.77;517.21;515.29;512.91;509.92;505.96;498.36;486.1;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;518.56;518.57;518.19;517.57;516.74;515.66;514.36;512.84;510.94;508.6;505.67;501.82;494.5;478.92;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;514.32;513.93;513.81;513.09;512.27;511.21;509.93;508.44;506.57;504.27;501.4;497.59;490.58;474.92;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;509.89;509.9;509.49;508.85;507.93;506.76;505.46;504;502.16;499.91;497.04;493.31;486.6;471.17;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;505.48;505.73;505.44;504.79;503.86;502.69;501.33;499.75;497.78;495.44;492.63;489;482.61;467.9;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;501.76;501.77;501.37;500.77;499.86;498.66;497.24;495.63;493.69;491.37;488.51;484.91;478.86;465.37;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;498.01;497.57;497.26;496.67;495.76;494.57;493.17;491.58;489.62;487.3;484.5;480.99;475.2;462.55;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;493.49;493.49;493.08;492.5;491.63;490.45;489.07;487.51;485.57;483.3;480.51;476.86;471.53;459.6;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;488.97;489.22;488.91;488.32;487.49;486.31;484.96;483.42;481.5;479.27;476.55;472.99;467.82;456.48;446.16;-9999;-9999;-9999;-9999;-9999;
+7000;485.11;485.03;484.72;484.22;483.32;482.16;480.82;479.31;477.41;475.23;472.56;469.11;464.15;453.24;442.77;-9999;-9999;-9999;-9999;-9999;
+7500;481.25;480.82;480.51;480;479.14;477.98;476.66;475.17;473.3;471.16;468.55;465.2;460.44;450.27;440.29;-9999;-9999;-9999;-9999;-9999;
+8000;476.67;476.6;476.28;475.77;474.94;473.78;472.44;471.02;469.17;467.07;464.52;461.27;456.7;447.22;437.9;-9999;-9999;-9999;-9999;-9999;
+8500;472.1;472.35;472.03;471.52;470.71;469.57;468.23;466.84;465.01;462.95;460.46;457.31;452.92;444.08;435.68;-9999;-9999;-9999;-9999;-9999;
+9000;468.17;468.09;467.77;467.25;466.47;465.33;463.99;462.65;460.83;458.81;456.38;453.32;449.1;441.08;422.71;-9999;-9999;-9999;-9999;-9999;
+9500;464.24;463.82;463.49;462.97;462.2;461.07;459.73;458.43;456.64;454.66;452.28;449.31;445.25;437.71;420.49;-9999;-9999;-9999;-9999;-9999;
+10000;459.6;459.53;459.2;458.67;457.91;456.79;455.45;454.2;452.42;450.48;448.16;445.29;441.18;434.31;418.12;-9999;-9999;-9999;-9999;-9999;
+10500;454.97;455.22;454.89;454.35;453.6;452.5;451.16;449.95;448.19;446.29;444.01;441.23;437.34;430.81;416.32;-9999;-9999;-9999;-9999;-9999;
+11000;450.97;450.9;450.56;450.02;449.28;448.19;446.85;445.67;443.94;442.07;439.85;437.15;433.38;427.27;413.92;-9999;-9999;-9999;-9999;-9999;
+11500;453;452.82;452.49;451.89;451.15;450.02;448.67;447.49;445.75;443.88;441.65;438.93;435.15;429.01;415.28;-9999;-9999;-9999;-9999;-9999;
+12000;455.03;454.73;454.41;453.78;453;451.85;450.49;449.31;447.56;445.69;443.45;440.71;436.91;430.76;416.63;-9999;-9999;-9999;-9999;-9999;
+12500;456.73;456.66;456.26;455.62;454.84;453.68;452.32;451.13;449.38;447.49;445.25;442.5;438.64;432.51;417.97;-9999;-9999;-9999;-9999;-9999;
+13000;458.44;458.44;458.1;457.45;456.68;455.51;454.14;452.95;451.19;449.3;447.05;444.29;440.4;434.26;419.38;-9999;-9999;-9999;-9999;-9999;
+13500;460.46;460.36;459.95;459.28;458.53;457.34;455.97;454.77;453.01;451.12;448.86;446.09;442.17;436.01;420.7;-9999;-9999;-9999;-9999;-9999;
+14000;462.51;462.2;461.79;461.11;460.37;459.17;457.8;456.59;454.83;452.93;450.67;447.88;443.94;437.74;422.01;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;538.13;537.96;537.62;536.84;535.92;535.18;534.09;532.78;530.92;528.14;524.26;518.82;508.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;533.63;533.65;533.03;532.37;531.43;530.52;529.42;528.12;526.28;523.62;520.1;514.86;503.56;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;529.27;529.29;528.68;528;527.03;526;524.84;523.47;521.64;518.99;515.92;511.41;499.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;524.82;524.92;524.61;523.82;522.87;521.82;520.56;519.08;517.16;514.45;511.51;507.06;496.34;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;520.81;520.83;520.26;519.6;518.67;517.6;516.32;514.76;512.89;510.43;507.08;502.84;492.32;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;516.62;516.41;516.01;515.35;514.45;513.37;512.09;510.5;508.65;506.33;503.03;498.85;488.52;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;512.23;512.24;511.7;511.07;510.19;509.13;507.83;506.28;504.38;501.94;498.96;494.78;485.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;507.83;507.85;507.39;506.76;505.9;504.85;503.56;502.03;500.18;497.76;494.79;490.68;481.77;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;503.98;503.99;503.4;502.71;501.75;500.59;499.26;497.73;495.86;493.51;490.56;486.55;478.19;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;500.12;499.86;499.44;498.74;497.78;496.62;495.23;493.58;491.62;489.22;486.31;482.4;474.71;463.92;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;495.92;495.94;495.38;494.69;493.75;492.61;491.24;489.62;487.68;485.31;482.39;478.56;471.37;459.85;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;491.72;491.74;491.3;490.62;489.7;488.57;487.22;485.63;483.72;481.39;478.51;474.77;468.17;457.01;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;487.72;487.73;487.2;486.53;485.63;484.51;483.18;481.62;479.73;477.44;474.61;470.96;464.67;449.85;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;483.72;483.47;483.07;482.42;481.53;480.42;479.11;477.58;475.72;473.47;470.7;467.13;461.13;446.22;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;479.54;479.55;479.01;478.35;477.45;476.33;475;473.52;471.68;469.48;466.76;463.28;457.57;443.36;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;475.35;475.36;474.94;474.28;473.4;472.28;470.97;469.46;467.61;465.46;462.8;459.4;453.97;440.84;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;471.36;471.37;470.85;470.26;469.33;468.21;466.92;465.43;463.61;461.45;458.8;455.52;450.32;438.01;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;467.38;467.13;466.75;466.16;465.23;464.12;462.84;461.38;459.58;457.47;454.88;451.48;446.62;435.03;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;463.11;463;462.62;462.02;461.12;460.02;458.75;457.31;455.53;453.46;450.94;447.64;442.92;432.06;422.12;-9999;-9999;-9999;-9999;-9999;
+9500;458.84;458.85;458.46;457.87;456.99;455.9;454.64;453.23;451.47;449.44;446.97;443.79;439.23;429.21;419.28;-9999;-9999;-9999;-9999;-9999;
+10000;454.77;454.67;454.29;453.69;452.83;451.75;450.49;449.12;447.37;445.38;442.97;439.91;435.5;426.24;416.42;-9999;-9999;-9999;-9999;-9999;
+10500;450.7;450.47;450.09;449.49;448.65;447.57;446.3;444.99;443.26;441.31;438.95;435.95;431.75;423.17;414.16;-9999;-9999;-9999;-9999;-9999;
+11000;446.35;446.24;445.87;445.27;444.45;443.37;442.1;440.82;439.12;437.2;434.9;432;427.95;420;412.51;-9999;-9999;-9999;-9999;-9999;
+11500;447.93;447.95;447.58;446.96;446.15;445.08;443.81;442.52;440.81;438.89;436.58;433.66;429.6;421.61;413.91;-9999;-9999;-9999;-9999;-9999;
+12000;449.77;449.67;449.29;448.66;447.85;446.77;445.5;444.22;442.51;440.58;438.26;435.33;431.25;423.21;415.29;-9999;-9999;-9999;-9999;-9999;
+12500;451.63;451.37;451;450.36;449.56;448.47;447.2;445.91;444.2;442.27;439.95;437;432.89;424.82;416.65;-9999;-9999;-9999;-9999;-9999;
+13000;453.3;453.07;452.7;452.06;451.3;450.18;448.9;447.6;445.89;443.96;441.64;438.68;434.54;426.42;418;-9999;-9999;-9999;-9999;-9999;
+13500;454.88;454.78;454.4;453.75;453.01;451.87;450.6;449.3;447.59;445.66;443.32;440.37;436.19;428.03;419.39;-9999;-9999;-9999;-9999;-9999;
+14000;456.48;456.48;456.09;455.43;454.71;453.57;452.29;450.99;449.27;447.33;444.98;441.96;437.83;429.62;420.63;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;529.33;529.36;528.87;528.5;527.91;527.11;525.94;524.42;522.19;519.21;514.92;508.12;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;524.98;525.02;524.61;524.2;523.61;522.82;521.67;520.18;518.03;515.1;510.78;504.68;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;521.01;521.05;520.53;520.03;519.47;518.66;517.49;515.96;513.87;510.98;506.75;500.94;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;517;517.03;516.45;515.99;515.47;514.7;513.56;512.06;509.92;506.99;502.71;497.03;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;513.04;513.06;512.4;511.85;511.3;510.61;509.53;508.15;506.07;503.23;498.96;493.26;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;508.9;508.76;508.33;507.73;507.08;506.42;505.36;504.03;502.17;499.31;495.36;489.69;480.01;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;504.81;504.83;504.24;503.63;502.83;502.2;501.15;499.85;497.99;495.27;491.58;486.01;475.19;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;500.71;500.54;500.14;499.49;498.62;497.92;496.86;495.56;493.71;491.06;487.64;482.31;471.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;496.87;496.89;496.23;495.53;494.53;493.59;492.51;491.22;489.42;486.82;483.5;478.86;468.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;493.02;492.84;492.39;491.69;490.68;489.67;488.49;487.08;485.2;482.56;479.4;474.97;465.39;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;489.09;489.1;488.49;487.81;486.82;485.75;484.6;483.16;481.29;478.71;475.66;471.35;462.19;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;485.15;485.17;484.58;483.91;482.94;481.86;480.67;479.22;477.38;474.85;471.93;467.89;459.44;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;481.2;481.22;480.64;479.98;479.04;477.94;476.69;475.25;473.45;470.97;468.16;464.2;456.32;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;477.25;477.09;476.68;476.02;475.1;474.02;472.72;471.25;469.5;467.1;464.09;460.47;453.12;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;473.2;473.22;472.68;472.04;471.14;470.06;468.78;467.24;465.51;463.19;460.31;456.75;449.84;439.11;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;469.15;469.16;468.66;468.03;467.15;466.09;464.82;463.31;461.55;459.27;456.51;453;446.5;435.62;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;465.12;465.13;464.62;464;463.14;462.08;460.83;459.35;457.57;455.35;452.69;449.24;443.28;432.82;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;461.09;460.94;460.57;460.01;459.11;458.06;456.83;455.38;453.59;451.46;448.85;445.45;439.8;425.12;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;457;457.01;456.51;455.94;455.03;454.01;452.8;451.37;449.64;447.55;444.97;441.65;436.24;421.45;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;452.98;452.99;452.5;451.92;451.04;449.99;448.77;447.33;445.63;443.59;441.06;437.83;432.61;419.01;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;448.95;448.84;448.47;447.88;447.02;445.97;444.76;443.35;441.63;439.59;437.14;433.99;428.96;416.49;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;444.93;444.77;444.4;443.81;442.97;441.93;440.73;439.34;437.65;435.65;433.21;429.97;425.3;413.6;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;440.77;440.67;440.3;439.72;438.9;437.87;436.68;435.32;433.64;431.68;429.3;426.16;421.62;410.67;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;442.27;442.28;441.88;441.29;440.47;439.44;438.25;436.89;435.21;433.25;430.84;427.7;423.14;412.07;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;443.78;443.79;443.45;442.85;442.05;441.01;439.82;438.46;436.74;434.78;432.36;429.43;424.66;413.47;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;445.5;445.4;445.03;444.41;443.62;442.59;441.4;440.03;438.42;436.48;434.03;431.03;426.19;414.86;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;447.24;446.96;446.59;445.97;445.18;444.15;442.97;441.73;440.15;438.23;435.77;432.57;427.77;416.24;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;448.63;448.53;448.16;447.53;446.75;445.72;444.64;443.49;441.91;439.98;437.51;433.98;429.1;417.61;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;450.04;450.04;449.71;449.08;448.37;447.35;446.38;445.25;443.67;441.74;439.26;435.68;430.6;418.97;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;520.17;520.08;519.75;519.23;518.66;517.86;516.61;514.97;512.72;509.34;505.46;504.44;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;516.01;515.95;515.64;515.12;514.54;513.76;512.55;510.94;508.73;505.44;501.43;497.81;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;512.19;512.23;511.87;511.34;510.67;509.86;508.64;506.98;504.73;501.51;497.36;492.33;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;508.37;508.23;508.06;507.52;506.88;506.07;504.9;503.27;501.03;497.71;493.29;487.46;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;504.55;504.33;504.22;503.68;503.01;502.24;501.12;499.53;497.3;494.04;489.56;483.15;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;500.5;500.54;500.17;499.79;499.15;498.35;497.26;495.69;493.39;490.36;485.84;479.22;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;496.48;496.52;496.2;495.82;495.21;494.41;493.35;491.83;489.6;486.64;482.05;475.8;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;492.46;492.49;492.19;491.81;491.23;490.45;489.4;487.92;485.77;482.9;478.35;472.45;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;488.68;488.71;488.37;487.91;487.28;486.47;485.43;484;481.92;479.14;474.77;469.24;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;484.89;484.91;484.6;484.14;483.53;482.75;481.66;480.19;478.11;475.39;471.26;466.07;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;481.19;481.22;480.82;480.33;479.75;478.98;477.87;476.49;474.63;471.97;468;462.77;454.91;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;477.49;477.52;476.98;476.52;475.94;475.18;474.08;472.72;470.89;468.28;464.73;459.42;449.94;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;473.79;473.53;473.12;472.66;472.1;471.35;470.27;468.92;467.11;464.56;461.29;456.06;446.38;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;470.09;469.74;469.3;468.79;468.22;467.49;466.42;465.1;463.31;460.81;457.63;452.96;443.09;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;466.38;465.92;465.5;464.88;464.32;463.6;462.55;461.25;459.49;457.04;453.93;449.26;440.15;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;462.21;462.23;461.65;461.03;460.39;459.68;458.65;457.38;455.65;453.24;450.22;445.67;437.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;458.1;458.2;457.8;457.17;456.44;455.73;454.72;453.47;451.78;449.4;446.48;442.07;434.37;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;454.41;454.43;453.89;453.29;452.47;451.75;450.78;449.54;447.86;445.54;442.57;438.44;431.47;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;450.72;450.35;449.97;449.41;448.51;447.75;446.79;445.57;443.93;441.68;438.8;434.8;428.27;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;446.51;446.52;446.01;445.46;444.59;443.74;442.78;441.58;439.99;437.8;435.01;431.14;425.01;414.24;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;442.3;442.4;442.04;441.48;440.64;439.72;438.73;437.57;436.01;433.9;431.18;427.44;421.65;411.36;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;438.49;438.5;438.02;437.48;436.66;435.68;434.7;433.54;431.99;429.97;427.32;423.72;418.35;408.17;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;434.7;434.71;433.99;433.46;432.65;431.68;430.65;429.5;427.97;426.01;423.44;420.13;414.79;400.18;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;435.82;435.83;435.43;434.9;434.09;433.21;432.25;431.13;429.6;427.63;425.06;421.55;415.97;401.57;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;436.95;436.96;436.87;436.33;435.58;434.81;433.87;432.75;431.23;429.26;426.68;422.95;417.42;402.79;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;438.76;438.67;438.31;437.79;437.18;436.43;435.5;434.38;432.88;430.89;428.3;424.55;418.81;404.03;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;440.6;440.09;439.72;439.32;438.79;438.06;437.13;436.02;434.52;432.51;429.92;426.15;420.19;405.26;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;441.65;441.66;441.29;440.9;440.4;439.68;438.78;437.67;436.16;434.13;431.55;427.75;421.56;411.81;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;443.15;443.12;442.89;442.5;442.01;441.29;440.42;439.31;437.79;435.76;433.17;429.35;422.93;412.76;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;509.86;509.68;509.41;508.92;508.37;507.57;506.32;504.59;502.12;498.62;496.68;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;505.94;505.99;505.36;505.11;504.54;503.71;502.51;500.76;498.35;494.91;492.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;502.57;502.32;502.02;501.52;500.97;500.13;498.8;497.03;494.54;491.07;488.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;498.79;498.84;498.39;497.85;497.33;496.48;495.18;493.44;491;487.43;484.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;494.95;494.93;494.58;494.16;493.64;492.79;491.53;489.82;487.44;483.91;480.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;491.26;491.31;490.89;490.42;489.91;489.08;487.87;486.19;483.84;480.37;476.41;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;487.56;487.36;487.04;486.65;486.14;485.35;484.14;482.53;480.22;476.83;472.65;471.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;483.62;483.66;483.29;482.9;482.34;481.58;480.4;478.83;476.58;473.27;468.91;465.57;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;480.08;480.12;479.64;479.06;478.44;477.78;476.63;475.1;472.91;469.69;465.24;460.86;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;476.54;476.59;476.1;475.58;475.02;474.25;473.05;471.48;469.31;466.22;461.89;456.7;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;473.01;473.05;472.59;472.18;471.55;470.79;469.63;468.1;465.98;462.93;458.46;453.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;469.44;469.48;469.06;468.63;468.09;467.3;466.19;464.7;462.49;459.66;455.32;449.88;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;465.88;465.8;465.52;465.06;464.55;463.79;462.72;461.27;459.14;456.37;452.14;446.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;462.22;462.24;461.91;461.5;460.97;460.25;459.24;457.83;455.77;453.07;448.94;443.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;458.49;458.51;458.2;457.8;457.25;456.65;455.74;454.35;452.36;449.74;445.73;440.46;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;454.76;454.78;454.45;454.06;453.52;452.86;451.98;450.72;448.96;446.4;442.52;437.13;429.84;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;451.02;451.05;450.69;450.29;449.77;449.1;448.16;446.93;445.22;442.9;439.29;433.8;424.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;447.29;447.03;446.89;446.49;445.98;445.31;444.36;443.15;441.48;439.06;435.9;430.47;421.39;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;443.27;443.29;443.03;442.71;442.16;441.5;440.55;439.35;437.71;435.33;432.28;427.35;418.36;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;439.25;439.36;439.16;438.79;438.3;437.65;436.7;435.53;433.9;431.59;428.63;423.73;415.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;435.23;435.47;435.25;434.89;434.41;433.76;432.83;431.66;430.07;427.81;424.95;420.23;412.47;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;431.59;431.61;431.33;430.98;430.49;429.83;428.92;427.78;426.21;424.02;421.24;416.8;409.61;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;427.77;427.78;427.39;427.03;426.52;425.88;424.98;423.86;422.33;420.19;417.51;413.21;406.59;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;429.04;429.05;428.85;428.5;428.02;427.39;426.49;425.38;423.84;421.7;419.01;414.67;407.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;430.59;430.61;430.32;429.97;429.53;428.89;428.01;426.91;425.39;423.24;420.29;416.14;409.18;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;432.16;432.02;431.81;431.42;431.02;430.4;429.54;428.46;426.95;424.8;421.81;417.6;410.46;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;433.74;433.49;433.29;432.95;432.52;431.92;431.07;430.01;428.5;426.35;423.36;419.07;411.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;434.99;435.01;434.77;434.44;434.01;433.45;432.62;431.56;430.06;427.91;424.91;420.54;412.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;436.26;436.28;436.25;435.92;435.53;434.98;434.16;433.1;431.6;429.46;426.45;422;414.15;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;498.08;498.15;497.69;497.32;496.86;496.12;494.83;492.9;490;487.91;503.39;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;494.6;494.66;494.04;493.88;493.39;492.62;491.15;489.35;486.48;484.02;494.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;491.03;491.05;490.72;490.45;490.06;489.27;487.93;485.95;483.02;480.2;485.79;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;487.76;487.82;487.41;486.95;486.65;485.96;484.57;482.61;479.75;476.61;479.05;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;484.27;484.33;483.96;483.48;483.08;482.4;481.2;479.15;476.36;473.14;473.41;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;480.75;480.65;480.42;479.99;479.53;478.86;477.62;475.71;473.07;469.64;468.41;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;477.17;477;476.88;476.46;475.99;475.31;474.07;472.17;469.75;466.23;464.12;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;473.56;473.61;473.32;472.87;472.42;471.71;470.5;468.75;466.32;462.72;460.35;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;470.02;470.08;469.82;469.3;468.83;468.1;466.97;465.31;462.87;459.28;456.78;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;466.87;466.92;466.55;466.02;465.51;464.67;463.48;461.82;459.48;456.09;453.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;463.72;463.4;463.09;462.72;462.22;461.42;460.23;458.62;456.32;453.09;449.56;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;460.15;460.19;459.88;459.38;458.91;458.14;456.97;455.41;453.16;449.97;446.06;446.96;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;456.58;456.67;456.4;456.06;455.57;454.83;453.69;452.18;449.97;446.83;442.62;440.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;453.33;453.37;453.07;452.74;452.15;451.48;450.39;448.91;446.76;443.67;439.2;435.67;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;450.09;450.13;449.6;449.36;448.77;448.12;447.05;445.62;443.52;440.5;436.03;431.38;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;446.43;446.48;446.15;445.88;445.37;444.72;443.69;442.3;440.26;437.31;432.92;427.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;442.78;442.91;442.7;442.36;441.95;441.29;440.3;438.95;436.98;434.11;429.8;424.56;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;439.44;439.48;439.19;438.84;438.5;437.84;436.89;435.58;433.56;430.9;426.66;421.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;436.18;435.84;435.66;435.35;435.02;434.37;433.46;432.18;430.24;427.65;423.52;418.23;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;432.2;432.23;431.98;431.66;431.3;430.8;429.97;428.76;426.89;424.37;420.37;414.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;428.23;428.46;428.27;427.95;427.54;427.05;426.21;425.11;423.46;421.07;417.24;411.61;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;424.74;424.77;424.51;424.2;423.78;423.26;422.48;421.35;419.74;417.52;414.13;408.23;400.05;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;421.26;420.92;420.74;420.45;420;419.45;418.67;417.57;416;413.72;410.69;405.73;396.4;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;422.23;422.25;422.08;421.82;421.4;420.86;420.12;419.02;417.44;415.27;412.1;406.85;397.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;423.64;423.66;423.46;423.2;422.79;422.3;421.55;420.49;418.9;416.72;413.51;408.16;398.72;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;425.05;424.99;424.84;424.56;424.18;423.74;423.02;421.98;420.42;418.15;414.94;409.46;399.7;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;426.49;426.36;426.22;425.95;425.62;425.2;424.46;423.49;421.94;419.64;416.36;410.76;400.8;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;427.73;427.76;427.57;427.32;427.05;426.68;425.95;424.99;423.45;420.99;417.78;412.05;401.86;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;429;429.08;428.95;428.69;428.52;428.16;427.44;426.5;424.96;422.51;419.2;413.4;402.93;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/V2527-A5_W25.csv b/engine/test/stubs/V2527-A5/V2527-A5_W25.csv
new file mode 100644
index 00000000..b87cb423
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/V2527-A5_W25.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;72.991;73.084;73.324;73.727;74.292;75.029;75.944;77.038;78.311;79.759;81.41;83.188;85.126;87.227;89.498;91.951;94.601;97.47;100.58;103.93;
+500;69.646;69.742;69.974;70.363;70.913;71.631;72.522;73.583;74.808;76.214;77.819;79.559;81.448;83.489;85.689;88.054;90.598;93.34;96.304;99.506;
+1000;66.409;66.509;66.731;67.106;67.637;68.331;69.186;70.207;71.397;72.759;74.284;76.005;77.852;79.842;81.978;84.266;86.717;89.347;92.175;95.229;
+1500;63.309;63.38;63.596;63.957;64.469;65.136;65.958;66.938;68.082;69.39;70.89;72.532;74.333;76.278;78.359;80.579;82.948;85.478;88.186;91.095;
+2000;60.277;60.348;60.557;60.908;61.404;62.046;62.834;63.776;64.875;66.127;67.566;69.144;70.883;72.785;74.823;76.985;79.282;81.724;84.325;87.106;
+2500;57.332;57.401;57.605;57.947;58.429;59.049;59.812;60.718;61.772;62.972;64.321;65.862;67.532;69.362;71.349;73.476;75.71;78.075;80.582;83.249;
+3000;54.469;54.536;54.735;55.067;55.534;56.137;56.876;57.753;58.769;59.921;61.214;62.687;64.288;66.042;67.955;70.019;72.217;74.522;76.948;79.514;
+3500;51.696;51.76;51.953;52.273;52.724;53.305;54.02;54.872;55.854;56.966;58.209;59.619;61.151;62.831;64.663;66.651;68.785;71.043;73.413;75.891;
+4000;49.011;49.073;49.259;49.567;50.001;50.561;51.25;52.071;53.02;54.096;55.297;56.656;58.121;59.728;61.482;63.385;65.44;67.635;69.946;72.365;
+4500;46.4;46.453;46.633;46.933;47.354;47.897;48.566;49.359;50.27;51.307;52.497;53.785;55.195;56.731;58.408;60.228;62.196;64.311;66.56;68.914;
+5000;43.884;43.918;44.092;44.38;44.785;45.307;45.951;46.716;47.599;48.603;49.751;50.996;52.359;53.839;55.441;57.18;59.06;61.087;63.255;65.548;
+5500;41.413;41.47;41.636;41.913;42.301;42.804;43.423;44.157;45.005;45.969;47.077;48.283;49.605;51.035;52.578;54.239;56.034;57.969;60.049;62.263;
+6000;39.038;39.077;39.266;39.531;39.904;40.386;40.98;41.684;42.498;43.424;44.488;45.645;46.917;48.305;49.805;51.404;53.117;54.963;56.947;59.072;
+6500;36.805;36.852;36.995;37.238;37.594;38.055;38.623;39.297;40.078;40.987;41.987;43.097;44.318;45.65;47.094;48.65;50.306;52.066;53.957;55.985;
+7000;34.704;34.75;34.886;35.112;35.43;35.844;36.361;37.002;37.746;38.614;39.573;40.638;41.808;43.085;44.47;45.965;47.568;49.272;51.077;53.008;
+7500;32.7;32.743;32.87;33.083;33.384;33.775;34.257;34.833;35.509;36.335;37.25;38.266;39.386;40.61;41.937;43.37;44.909;46.552;48.294;50.144;
+8000;30.788;30.818;30.947;31.148;31.431;31.799;32.253;32.795;33.427;34.152;35.015;35.987;37.057;38.225;39.494;40.866;42.34;43.918;45.595;47.368;
+8500;28.962;28.992;29.113;29.302;29.569;29.915;30.342;30.851;31.445;32.127;32.917;33.793;34.815;35.932;37.145;38.454;39.863;41.373;42.984;44.689;
+9000;27.223;27.258;27.364;27.542;27.793;28.119;28.52;28.999;29.557;30.197;30.939;31.759;32.672;33.726;34.884;36.136;37.481;38.921;40.461;42.099;
+9500;25.57;25.596;25.698;25.865;26.101;26.407;26.784;27.233;27.757;28.359;29.055;29.825;30.682;31.631;32.71;33.905;35.191;36.567;38.035;39.597;
+10000;23.989;24.021;24.114;24.271;24.492;24.777;25.13;25.559;26.053;26.62;27.263;27.984;28.787;29.677;30.658;31.76;32.987;34.301;35.704;37.195;
+10500;22.487;22.523;22.611;22.758;22.964;23.231;23.561;23.954;24.422;24.954;25.557;26.233;26.986;27.819;28.738;29.746;30.87;32.123;33.461;34.885;
+11000;21.072;21.1;21.182;21.32;21.513;21.763;22.071;22.438;22.867;23.37;23.934;24.567;25.273;26.053;26.913;27.856;28.887;30.031;31.306;32.664;
+11500;19.45;19.479;19.555;19.682;19.861;20.091;20.376;20.715;21.111;21.565;22.095;22.68;23.331;24.052;24.845;25.716;26.667;27.723;28.899;30.152;
+12000;17.952;17.983;18.054;18.171;18.335;18.548;18.811;19.124;19.489;19.909;20.398;20.938;21.539;22.204;22.936;23.74;24.618;25.593;26.679;27.835;
+12500;16.581;16.602;16.667;16.775;16.927;17.124;17.366;17.655;17.992;18.379;18.831;19.329;19.884;20.498;21.174;21.916;22.727;23.627;24.629;25.697;
+13000;15.315;15.33;15.387;15.487;15.628;15.809;16.033;16.299;16.61;16.968;17.384;17.844;18.357;18.923;19.547;20.232;20.981;21.811;22.736;23.722;
+13500;14.132;14.151;14.206;14.298;14.428;14.595;14.801;15.047;15.335;15.665;16.049;16.474;16.946;17.469;18.045;18.678;19.369;20.136;20.99;21.9;
+14000;13.048;13.065;13.116;13.201;13.32;13.475;13.665;13.892;14.157;14.461;14.817;15.208;15.645;16.127;16.659;17.243;17.881;18.589;19.377;20.217;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;67.787;67.844;68.041;68.37;68.829;69.424;70.161;71.045;72.086;73.293;74.699;76.253;77.982;79.877;81.944;84.187;86.614;89.237;92.068;95.119;
+500;64.85;64.92;65.111;65.428;65.875;66.454;67.17;68.028;69.028;70.208;71.527;73.012;74.662;76.482;78.467;80.621;82.949;85.461;88.168;91.084;
+1000;62.011;62.073;62.258;62.566;62.998;63.559;64.252;65.081;66.054;67.173;68.463;69.878;71.452;73.189;75.094;77.163;79.397;81.804;84.394;87.18;
+1500;59.254;59.297;59.477;59.776;60.197;60.742;61.414;62.218;63.16;64.26;65.482;66.846;68.352;70.008;71.825;73.809;75.954;78.262;80.742;83.405;
+2000;56.527;56.586;56.762;57.054;57.464;57.995;58.65;59.433;60.347;61.411;62.588;63.898;65.342;66.93;68.667;70.559;72.616;74.831;77.207;79.754;
+2500;53.873;53.937;54.109;54.395;54.797;55.315;55.956;56.72;57.609;58.64;59.779;61.04;62.426;63.945;65.605;67.419;69.382;71.505;73.783;76.223;
+3000;51.294;51.355;51.522;51.799;52.19;52.698;53.325;54.074;54.939;55.92;57.046;58.264;59.6;61.057;62.643;64.37;66.251;68.284;70.468;72.804;
+3500;48.797;48.851;49.012;49.279;49.657;50.149;50.758;51.489;52.334;53.29;54.385;55.566;56.856;58.259;59.781;61.429;63.218;65.159;67.258;69.496;
+4000;46.368;46.42;46.575;46.836;47.203;47.678;48.267;48.972;49.789;50.724;51.789;52.937;54.188;55.544;57.008;58.588;60.294;62.138;64.136;66.289;
+4500;44.01;44.06;44.208;44.457;44.81;45.271;45.844;46.527;47.322;48.222;49.254;50.374;51.59;52.904;54.319;55.839;57.471;59.229;61.125;63.174;
+5000;41.739;41.787;41.928;42.166;42.504;42.946;43.495;44.149;44.911;45.784;46.764;47.871;49.056;50.334;51.705;53.172;54.742;56.422;58.226;60.17;
+5500;39.55;39.596;39.732;39.961;40.284;40.707;41.23;41.855;42.585;43.419;44.357;45.422;46.575;47.828;49.161;50.583;52.096;53.71;55.433;57.279;
+6000;37.435;37.479;37.611;37.832;38.145;38.551;39.05;39.646;40.343;41.139;42.034;43.051;44.157;45.365;46.672;48.063;49.528;51.083;52.735;54.496;
+6500;35.392;35.435;35.563;35.777;36.08;36.471;36.95;37.52;38.184;38.942;39.796;40.746;41.82;42.977;44.235;45.589;47.024;48.536;50.126;51.811;
+7000;33.42;33.461;33.585;33.792;34.083;34.459;34.921;35.472;36.109;36.83;37.641;38.563;39.569;40.672;41.876;43.177;44.571;46.043;47.594;49.217;
+7500;31.519;31.559;31.678;31.877;32.156;32.516;32.959;33.489;34.101;34.796;35.573;36.449;37.402;38.452;39.599;40.843;42.183;43.612;45.115;46.692;
+8000;29.688;29.726;29.84;30.031;30.298;30.643;31.068;31.575;32.161;32.827;33.574;34.418;35.327;36.322;37.409;38.593;39.873;41.246;42.705;44.232;
+8500;27.923;27.96;28.069;28.252;28.507;28.838;29.246;29.731;30.291;30.927;31.642;32.454;33.328;34.278;35.31;36.432;37.647;38.958;40.36;41.842;
+9000;26.224;26.26;26.365;26.539;26.784;27.101;27.49;27.954;28.489;29.098;29.796;30.557;31.395;32.308;33.294;34.359;35.513;36.757;38.092;39.518;
+9500;24.596;24.62;24.724;24.891;25.125;25.428;25.801;26.243;26.755;27.336;28.004;28.731;29.531;30.405;31.353;32.371;33.464;34.644;35.913;37.27;
+10000;23.05;23.08;23.17;23.32;23.531;23.82;24.176;24.598;25.086;25.654;26.28;26.974;27.738;28.571;29.477;30.454;31.5;32.618;33.82;35.109;
+10500;21.603;21.635;21.719;21.86;22.057;22.314;22.633;23.019;23.482;24.024;24.622;25.284;26.013;26.809;27.672;28.605;29.607;30.675;31.814;33.036;
+11000;20.234;20.26;20.339;20.471;20.657;20.898;21.196;21.551;21.966;22.45;23.028;23.66;24.356;25.114;25.938;26.826;27.782;28.806;29.893;31.048;
+11500;18.676;18.703;18.776;18.898;19.069;19.292;19.567;19.895;20.278;20.725;21.259;21.842;22.484;23.184;23.944;24.765;25.647;26.592;27.594;28.661;
+12000;17.237;17.266;17.334;17.446;17.604;17.81;18.064;18.366;18.72;19.132;19.625;20.164;20.756;21.402;22.104;22.861;23.676;24.548;25.473;26.458;
+12500;15.919;15.94;16.002;16.105;16.251;16.441;16.676;16.955;17.281;17.662;18.117;18.614;19.161;19.758;20.405;21.104;21.856;22.661;23.516;24.424;
+13000;14.701;14.715;14.772;14.868;15.003;15.178;15.394;15.652;15.953;16.304;16.725;17.184;17.688;18.239;18.837;19.482;20.176;20.919;21.708;22.547;
+13500;13.567;13.585;13.637;13.726;13.85;14.012;14.212;14.45;14.727;15.052;15.44;15.863;16.329;16.838;17.39;17.985;18.626;19.312;20.04;20.814;
+14000;12.525;12.541;12.59;12.672;12.786;12.935;13.12;13.339;13.595;13.901;14.253;14.644;15.075;15.544;16.053;16.603;17.194;17.828;18.5;19.215;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;61.944;62.014;62.192;62.488;62.903;63.439;64.101;64.891;65.812;66.882;68.125;69.519;71.076;72.797;74.682;76.735;78.963;81.372;83.968;86.757;
+500;59.28;59.353;59.524;59.809;60.209;60.727;61.367;62.131;63.015;64.056;65.232;66.567;68.059;69.707;71.512;73.477;75.609;77.916;80.401;83.073;
+1000;56.702;56.774;56.938;57.211;57.596;58.093;58.707;59.442;60.299;61.288;62.435;63.713;65.139;66.716;68.443;70.323;72.363;74.569;76.949;79.504;
+1500;54.222;54.274;54.431;54.694;55.063;55.541;56.131;56.837;57.661;58.611;59.716;60.949;62.316;63.821;65.472;67.271;69.221;71.33;73.605;76.051;
+2000;51.804;51.855;52.005;52.256;52.609;53.068;53.635;54.313;55.107;56.02;57.083;58.263;59.575;61.021;62.599;64.317;66.183;68.198;70.371;72.709;
+2500;49.471;49.496;49.663;49.902;50.238;50.676;51.217;51.868;52.632;53.512;54.533;55.665;56.921;58.303;59.814;61.462;63.243;65.169;67.245;69.477;
+3000;47.223;47.269;47.405;47.632;47.952;48.368;48.884;49.505;50.236;51.083;52.065;53.15;54.353;55.674;57.118;58.689;60.397;62.241;64.223;66.354;
+3500;45.058;45.096;45.226;45.443;45.748;46.144;46.636;47.227;47.924;48.734;49.676;50.716;51.869;53.133;54.512;56.013;57.64;59.402;61.303;63.337;
+4000;42.934;42.977;43.102;43.312;43.606;43.989;44.463;45.032;45.696;46.471;47.367;48.361;49.465;50.674;51.993;53.426;54.979;56.656;58.469;60.419;
+4500;40.882;40.905;41.043;41.244;41.528;41.895;42.35;42.895;43.537;44.28;45.141;46.088;47.139;48.297;49.558;50.928;52.409;54.009;55.733;57.591;
+5000;38.89;38.929;39.045;39.24;39.513;39.868;40.306;40.83;41.446;42.157;42.979;43.886;44.895;45.998;47.204;48.513;49.928;51.453;53.095;54.862;
+5500;36.966;36.992;37.105;37.293;37.558;37.901;38.325;38.832;39.426;40.107;40.894;41.758;42.714;43.77;44.928;46.18;47.531;48.987;50.552;52.233;
+6000;35.072;35.109;35.218;35.401;35.658;35.991;36.403;36.894;37.469;38.125;38.881;39.706;40.616;41.617;42.716;43.915;45.217;46.606;48.098;49.698;
+6500;33.242;33.277;33.384;33.562;33.812;34.137;34.537;35.015;35.572;36.204;36.932;37.724;38.594;39.547;40.588;41.725;42.962;44.3;45.731;47.256;
+7000;31.467;31.501;31.604;31.775;32.018;32.333;32.723;33.189;33.73;34.343;35.045;35.807;36.641;37.552;38.542;39.619;40.791;42.061;43.431;44.897;
+7500;29.754;29.786;29.885;30.049;30.282;30.586;30.963;31.415;31.939;32.534;33.215;33.95;34.754;35.626;36.572;37.596;38.705;39.908;41.208;42.605;
+8000;28.104;28.135;28.229;28.387;28.61;28.901;29.264;29.698;30.201;30.777;31.435;32.147;32.924;33.765;34.672;35.649;36.702;37.84;39.07;40.396;
+8500;26.506;26.549;26.638;26.789;27.002;27.281;27.628;28.042;28.525;29.077;29.695;30.395;31.147;31.96;32.835;33.772;34.777;35.856;37.017;38.271;
+9000;24.999;25.027;25.113;25.257;25.46;25.727;26.056;26.45;26.91;27.437;28.028;28.696;29.421;30.209;31.054;31.957;32.921;33.95;35.051;36.233;
+9500;23.538;23.566;23.648;23.785;23.981;24.236;24.549;24.923;25.36;25.86;26.422;27.048;27.751;28.508;29.325;30.198;31.126;32.112;33.162;34.282;
+10000;22.13;22.156;22.236;22.369;22.557;22.801;23.101;23.458;23.873;24.346;24.879;25.474;26.143;26.864;27.648;28.492;29.389;30.338;31.342;32.408;
+10500;20.774;20.8;20.876;21.005;21.185;21.419;21.706;22.048;22.445;22.895;23.401;23.964;24.598;25.284;26.031;26.838;27.704;28.62;29.586;30.606;
+11000;19.473;19.497;19.571;19.693;19.866;20.089;20.363;20.69;21.069;21.5;21.991;22.527;23.118;23.767;24.476;25.244;26.072;26.955;27.887;28.867;
+11500;17.973;17.999;18.066;18.18;18.339;18.545;18.798;19.1;19.45;19.847;20.301;20.795;21.341;21.94;22.594;23.303;24.067;24.882;25.743;26.646;
+12000;16.589;16.615;16.678;16.782;16.929;17.119;17.353;17.632;17.955;18.321;18.74;19.197;19.7;20.253;20.857;21.512;22.217;22.969;23.763;24.597;
+12500;15.319;15.338;15.396;15.492;15.628;15.804;16.019;16.276;16.575;16.913;17.3;17.721;18.186;18.697;19.254;19.858;20.508;21.203;21.935;22.705;
+13000;14.147;14.159;14.213;14.302;14.427;14.589;14.788;15.025;15.301;15.613;15.97;16.359;16.788;17.259;17.774;18.331;18.932;19.572;20.248;20.958;
+13500;13.055;13.071;13.12;13.203;13.318;13.468;13.651;13.87;14.125;14.413;14.742;15.102;15.498;15.933;16.408;16.922;17.476;18.067;18.691;19.346;
+14000;12.052;12.067;12.113;12.189;12.295;12.433;12.603;12.805;13.039;13.305;13.609;13.941;14.307;14.708;15.146;15.621;16.133;16.678;17.253;17.858;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;56.343;56.401;56.563;56.832;57.208;57.695;58.294;59.011;59.85;60.816;61.915;63.165;64.552;66.097;67.799;69.657;71.672;73.85;76.201;78.729;
+500;53.928;53.99;54.144;54.401;54.763;55.23;55.805;56.494;57.296;58.22;59.274;60.474;61.805;63.29;64.923;66.704;68.634;70.719;72.967;75.388;
+1000;51.59;51.655;51.802;52.048;52.393;52.84;53.389;54.048;54.819;55.708;56.718;57.87;59.147;60.571;62.137;63.844;65.692;67.688;69.839;72.152;
+1500;49.347;49.393;49.534;49.769;50.1;50.527;51.052;51.681;52.419;53.269;54.239;55.349;56.575;57.939;59.438;61.074;62.844;64.754;66.811;69.023;
+2000;47.175;47.204;47.339;47.564;47.88;48.289;48.79;49.392;50.098;50.911;51.851;52.902;54.081;55.391;56.827;58.391;60.086;61.914;63.882;65.996;
+2500;45.044;45.088;45.216;45.431;45.733;46.123;46.602;47.178;47.853;48.63;49.53;50.537;51.668;52.92;54.296;55.795;57.416;59.166;61.048;63.069;
+3000;43.001;43.042;43.165;43.369;43.657;44.03;44.487;45.037;45.682;46.426;47.288;48.252;49.334;50.532;51.845;53.276;54.83;56.506;58.307;60.238;
+3500;41.014;41.054;41.172;41.369;41.647;42.006;42.445;42.968;43.585;44.296;45.12;46.043;47.079;48.224;49.478;50.844;52.325;53.928;55.656;57.502;
+4000;39.088;39.127;39.24;39.428;39.693;40.036;40.457;40.961;41.554;42.239;43.027;43.91;44.9;45.993;47.191;48.494;49.907;51.434;53.083;54.854;
+4500;37.23;37.266;37.374;37.554;37.806;38.134;38.537;39.018;39.584;40.237;40.996;41.847;42.796;43.839;44.982;46.225;47.572;49.028;50.598;52.287;
+5000;35.434;35.452;35.571;35.743;35.985;36.298;36.684;37.143;37.683;38.308;39.032;39.844;40.751;41.755;42.849;44.034;45.319;46.706;48.201;49.809;
+5500;33.7;33.734;33.832;33.996;34.227;34.526;34.895;35.334;35.85;36.447;37.129;37.914;38.778;39.732;40.778;41.916;43.144;44.467;45.89;47.42;
+6000;32.03;32.061;32.155;32.311;32.532;32.817;33.169;33.591;34.084;34.654;35.305;36.054;36.876;37.783;38.777;39.86;41.035;42.305;43.661;45.117;
+6500;30.424;30.453;30.542;30.69;30.899;31.17;31.506;31.909;32.38;32.926;33.55;34.263;35.045;35.907;36.851;37.879;38.996;40.204;41.505;42.898;
+7000;28.882;28.898;28.994;29.134;29.331;29.588;29.906;30.289;30.739;31.26;31.867;32.538;33.283;34.102;34.997;35.973;37.033;38.18;39.417;40.746;
+7500;27.4;27.427;27.507;27.64;27.827;28.07;28.371;28.734;29.161;29.657;30.235;30.875;31.585;32.364;33.215;34.141;35.145;36.232;37.407;38.669;
+8000;25.974;25.999;26.075;26.202;26.38;26.611;26.898;27.242;27.647;28.118;28.666;29.274;29.949;30.691;31.5;32.379;33.331;34.361;35.473;36.67;
+8500;24.597;24.621;24.694;24.815;24.986;25.207;25.48;25.809;26.195;26.642;27.161;27.736;28.375;29.079;29.848;30.684;31.588;32.564;33.617;34.75;
+9000;23.27;23.289;23.359;23.476;23.64;23.852;24.115;24.429;24.799;25.225;25.718;26.261;26.863;27.529;28.259;29.053;29.912;30.837;31.834;32.906;
+9500;21.989;21.998;22.066;22.179;22.337;22.543;22.796;23.1;23.457;23.862;24.332;24.847;25.416;26.043;26.731;27.484;28.299;29.178;30.122;31.137;
+10000;20.723;20.746;20.811;20.921;21.075;21.274;21.52;21.813;22.157;22.547;22.997;23.488;24.027;24.62;25.268;25.977;26.749;27.583;28.479;29.439;
+10500;19.511;19.532;19.595;19.7;19.849;20.043;20.282;20.568;20.9;21.277;21.71;22.179;22.693;23.256;23.868;24.535;25.261;26.05;26.899;27.809;
+11000;18.341;18.362;18.422;18.523;18.666;18.852;19.083;19.36;19.682;20.047;20.464;20.916;21.409;21.945;22.526;23.156;23.839;24.58;25.382;26.244;
+11500;16.929;16.95;17.006;17.099;17.231;17.403;17.616;17.872;18.169;18.505;18.89;19.307;19.762;20.256;20.793;21.375;22.005;22.689;23.43;24.226;
+12000;15.626;15.647;15.698;15.785;15.906;16.065;16.262;16.497;16.771;17.082;17.438;17.822;18.242;18.698;19.193;19.73;20.312;20.944;21.628;22.362;
+12500;14.428;14.444;14.492;14.571;14.683;14.83;15.011;15.229;15.482;15.768;16.096;16.451;16.838;17.26;17.717;18.213;18.75;19.333;19.964;20.642;
+13000;13.322;13.332;13.377;13.451;13.555;13.69;13.857;14.058;14.291;14.556;14.858;15.186;15.543;15.932;16.354;16.811;17.307;17.846;18.429;19.055;
+13500;12.295;12.309;12.35;12.417;12.513;12.637;12.792;12.977;13.192;13.442;13.716;14.017;14.347;14.706;15.096;15.518;15.976;16.473;17.011;17.589;
+14000;11.351;11.363;11.401;11.463;11.551;11.666;11.809;11.979;12.178;12.408;12.661;12.939;13.244;13.575;13.935;14.324;14.747;15.206;15.703;16.236;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;51.026;51.077;51.225;51.473;51.819;52.272;52.812;53.458;54.206;55.067;56.03;57.136;58.365;59.727;61.242;62.917;64.747;66.729;68.865;71.166;
+500;48.843;48.89;49.033;49.269;49.601;50.034;50.555;51.176;51.894;52.719;53.64;54.699;55.876;57.182;58.635;60.24;61.992;63.889;65.934;68.134;
+1000;46.744;46.774;46.91;47.136;47.453;47.867;48.366;48.961;49.652;50.435;51.328;52.342;53.468;54.721;56.113;57.65;59.326;61.141;63.097;65.201;
+1500;44.714;44.725;44.855;45.071;45.374;45.769;46.247;46.817;47.48;48.231;49.087;50.061;51.14;52.342;53.675;55.144;56.746;58.481;60.352;62.363;
+2000;42.701;42.743;42.866;43.073;43.362;43.739;44.196;44.742;45.378;46.099;46.928;47.852;48.885;50.04;51.318;52.721;54.252;55.909;57.696;59.618;
+2500;40.758;40.826;40.944;41.14;41.417;41.775;42.213;42.735;43.344;44.037;44.83;45.715;46.705;47.809;49.036;50.381;51.841;53.422;55.128;56.964;
+3000;38.93;38.968;39.081;39.27;39.535;39.877;40.295;40.794;41.377;42.041;42.802;43.649;44.597;45.654;46.827;48.112;49.51;51.02;52.647;54.399;
+3500;37.127;37.163;37.271;37.451;37.704;38.031;38.433;38.913;39.474;40.112;40.84;41.651;42.559;43.572;44.693;45.92;47.253;48.695;50.251;51.922;
+4000;35.387;35.422;35.525;35.696;35.936;36.246;36.63;37.087;37.622;38.237;38.938;39.721;40.591;41.561;42.632;43.803;45.075;46.449;47.931;49.528;
+4500;33.709;33.742;33.84;34.002;34.231;34.525;34.89;35.326;35.835;36.422;37.092;37.841;38.681;39.618;40.641;41.759;42.971;44.282;45.693;47.213;
+5000;32.093;32.124;32.216;32.371;32.587;32.867;33.213;33.628;34.112;34.671;35.312;36.027;36.83;37.726;38.712;39.786;40.941;42.189;43.535;44.981;
+5500;30.534;30.564;30.652;30.799;31.005;31.269;31.598;31.992;32.453;32.985;33.588;34.278;35.045;35.9;36.841;37.867;38.977;40.171;41.452;42.829;
+6000;29.03;29.06;29.144;29.283;29.479;29.731;30.043;30.417;30.855;31.36;31.936;32.595;33.326;34.14;35.036;36.014;37.072;38.214;39.443;40.754;
+6500;27.584;27.61;27.69;27.822;28.009;28.248;28.545;28.9;29.316;29.797;30.345;30.973;31.67;32.446;33.298;34.227;35.235;36.323;37.492;38.748;
+7000;26.19;26.214;26.29;26.415;26.592;26.82;27.101;27.44;27.835;28.292;28.821;29.413;30.077;30.814;31.624;32.507;33.465;34.499;35.612;36.807;
+7500;24.836;24.87;24.941;25.061;25.229;25.446;25.713;26.034;26.41;26.844;27.347;27.911;28.544;29.244;30.013;30.852;31.761;32.744;33.802;34.938;
+8000;23.554;23.576;23.644;23.758;23.917;24.123;24.376;24.681;25.038;25.451;25.931;26.468;27.069;27.734;28.464;29.259;30.121;31.054;32.059;33.139;
+8500;22.321;22.332;22.397;22.505;22.656;22.852;23.092;23.382;23.721;24.112;24.567;25.079;25.651;26.283;26.974;27.727;28.545;29.429;30.382;31.407;
+9000;21.116;21.136;21.198;21.3;21.444;21.631;21.859;22.133;22.455;22.827;23.259;23.744;24.286;24.886;25.543;26.257;27.03;27.868;28.771;29.741;
+9500;19.967;19.987;20.045;20.142;20.279;20.456;20.674;20.935;21.24;21.594;21.998;22.464;22.977;23.544;24.166;24.843;25.576;26.368;27.223;28.142;
+10000;18.866;18.877;18.937;19.029;19.159;19.327;19.535;19.783;20.074;20.41;20.794;21.237;21.722;22.258;22.844;23.484;24.178;24.928;25.736;26.606;
+10500;17.807;17.825;17.877;17.963;18.085;18.244;18.441;18.677;18.954;19.274;19.64;20.06;20.519;21.025;21.578;22.182;22.838;23.547;24.31;25.131;
+11000;16.797;16.816;16.864;16.946;17.06;17.21;17.395;17.617;17.879;18.183;18.538;18.93;19.365;19.843;20.366;20.935;21.553;22.222;22.943;23.718;
+11500;15.505;15.522;15.567;15.642;15.748;15.886;16.056;16.262;16.503;16.785;17.112;17.474;17.876;18.317;18.799;19.325;19.895;20.513;21.179;21.894;
+12000;14.311;14.328;14.369;14.439;14.536;14.663;14.821;15.011;15.234;15.493;15.796;16.13;16.501;16.908;17.353;17.838;18.365;18.935;19.55;20.21;
+12500;13.213;13.226;13.264;13.328;13.418;13.535;13.681;13.856;14.062;14.302;14.581;14.889;15.231;15.607;16.018;16.466;16.952;17.478;18.046;18.655;
+13000;12.196;12.208;12.243;12.302;12.386;12.494;12.628;12.79;12.98;13.201;13.459;13.744;14.06;14.407;14.786;15.199;15.648;16.134;16.658;17.221;
+13500;11.258;11.269;11.301;11.356;11.432;11.532;11.656;11.805;11.981;12.185;12.423;12.686;12.978;13.298;13.649;14.03;14.444;14.893;15.376;15.896;
+14000;10.39;10.401;10.431;10.482;10.552;10.645;10.759;10.897;11.059;11.247;11.467;11.709;11.979;12.274;12.598;12.95;13.333;13.747;14.194;14.673;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;46.051;46.093;46.23;46.458;46.782;47.19;47.675;48.251;48.929;49.7;50.58;51.554;52.63;53.821;55.139;56.593;58.205;59.97;61.878;63.934;
+500;44.066;44.107;44.238;44.455;44.765;45.156;45.62;46.173;46.821;47.559;48.402;49.338;50.371;51.515;52.784;54.182;55.731;57.424;59.253;61.219;
+1000;42.151;42.187;42.312;42.519;42.815;43.187;43.632;44.161;44.782;45.489;46.297;47.196;48.185;49.284;50.504;51.848;53.335;54.958;56.71;58.591;
+1500;40.304;40.332;40.451;40.648;40.93;41.284;41.71;42.216;42.809;43.486;44.258;45.126;46.073;47.126;48.298;49.59;51.017;52.57;54.248;56.048;
+2000;38.502;38.54;38.653;38.841;39.11;39.447;39.854;40.337;40.904;41.55;42.288;43.117;44.028;45.04;46.165;47.406;48.773;50.26;51.864;53.587;
+2500;36.764;36.808;36.916;37.095;37.351;37.672;38.061;38.523;39.056;39.68;40.385;41.177;42.051;43.02;44.101;45.294;46.603;48.025;49.558;51.206;
+3000;35.088;35.123;35.226;35.398;35.644;35.952;36.327;36.771;37.281;37.875;38.548;39.304;40.142;41.069;42.105;43.247;44.503;45.864;47.329;48.902;
+3500;33.471;33.496;33.594;33.758;33.993;34.286;34.644;35.069;35.559;36.128;36.774;37.496;38.299;39.191;40.177;41.271;42.471;43.772;45.174;46.677;
+4000;31.895;31.926;32.02;32.176;32.399;32.679;33.021;33.427;33.894;34.436;35.051;35.745;36.518;37.373;38.317;39.362;40.506;41.749;43.087;44.525;
+4500;30.377;30.413;30.503;30.651;30.862;31.129;31.455;31.843;32.29;32.805;33.391;34.058;34.789;35.611;36.519;37.52;38.611;39.795;41.071;42.442;
+5000;28.926;28.954;29.039;29.18;29.381;29.635;29.946;30.316;30.742;31.233;31.791;32.426;33.122;33.908;34.776;35.736;36.783;37.91;39.126;40.432;
+5500;27.528;27.547;27.628;27.762;27.952;28.194;28.491;28.844;29.252;29.724;30.249;30.854;31.524;32.268;33.095;34.01;35.008;36.088;37.249;38.494;
+6000;26.165;26.191;26.268;26.395;26.576;26.806;27.089;27.425;27.815;28.264;28.765;29.34;29.979;30.689;31.478;32.348;33.298;34.325;35.432;36.622;
+6500;24.86;24.884;24.957;25.078;25.249;25.469;25.738;26.058;26.43;26.858;27.335;27.883;28.491;29.168;29.921;30.748;31.65;32.627;33.679;34.81;
+7000;23.593;23.623;23.692;23.807;23.969;24.178;24.435;24.741;25.097;25.504;25.958;26.48;27.059;27.704;28.421;29.208;30.064;30.991;31.992;33.066;
+7500;22.388;22.41;22.475;22.584;22.737;22.935;23.178;23.469;23.808;24.197;24.63;25.13;25.681;26.296;26.978;27.725;28.539;29.418;30.367;31.388;
+8000;21.231;21.244;21.306;21.409;21.553;21.74;21.97;22.246;22.568;22.934;23.356;23.826;24.353;24.94;25.59;26.299;27.07;27.905;28.804;29.772;
+8500;20.104;20.125;20.183;20.28;20.416;20.593;20.811;21.071;21.376;21.724;22.125;22.572;23.074;23.633;24.251;24.928;25.659;26.45;27.302;28.219;
+9000;19.023;19.05;19.105;19.197;19.325;19.492;19.698;19.944;20.232;20.563;20.942;21.367;21.844;22.377;22.963;23.604;24.3;25.051;25.859;26.727;
+9500;18.001;18.018;18.07;18.157;18.278;18.435;18.63;18.862;19.135;19.448;19.808;20.211;20.664;21.169;21.726;22.334;22.992;23.704;24.469;25.294;
+10000;17.021;17.028;17.077;17.159;17.274;17.422;17.606;17.825;18.083;18.38;18.716;19.103;19.532;20.011;20.538;21.114;21.737;22.41;23.135;23.914;
+10500;16.063;16.079;16.125;16.202;16.31;16.45;16.624;16.831;17.074;17.355;17.674;18.041;18.447;18.9;19.398;19.943;20.532;21.169;21.855;22.591;
+11000;15.144;15.169;15.213;15.286;15.388;15.519;15.683;15.879;16.108;16.374;16.681;17.024;17.409;17.837;18.307;18.82;19.377;19.979;20.627;21.323;
+11500;13.988;14.002;14.042;14.11;14.204;14.326;14.477;14.658;14.869;15.114;15.398;15.714;16.07;16.465;16.899;17.372;17.887;18.442;19.041;19.683;
+12000;12.919;12.925;12.962;13.024;13.111;13.224;13.363;13.53;13.726;13.951;14.213;14.505;14.833;15.198;15.599;16.036;16.511;17.024;17.576;18.169;
+12500;11.918;11.93;11.964;12.022;12.102;12.206;12.335;12.489;12.67;12.878;13.116;13.389;13.692;14.029;14.399;14.803;15.241;15.714;16.224;16.772;
+13000;11;11.01;11.042;11.095;11.169;11.265;11.384;11.526;11.693;11.885;12.109;12.359;12.639;12.95;13.291;13.664;14.068;14.506;14.976;15.482;
+13500;10.151;10.162;10.191;10.24;10.308;10.396;10.506;10.637;10.791;10.969;11.176;11.406;11.664;11.952;12.267;12.612;12.986;13.39;13.825;14.291;
+14000;9.3661;9.3783;9.4052;9.4502;9.5133;9.5948;9.6962;9.8172;9.9592;10.123;10.314;10.526;10.765;11.03;11.321;11.639;11.984;12.358;12.76;13.192;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;41.524;41.567;41.693;41.901;42.199;42.555;42.992;43.498;44.102;44.782;45.534;46.365;47.277;48.276;49.396;50.634;52.011;53.544;55.241;57.082;
+500;39.715;39.759;39.88;40.079;40.355;40.705;41.124;41.61;42.189;42.842;43.568;44.364;45.243;46.206;47.264;48.469;49.791;51.264;52.89;54.652;
+1000;37.973;38.012;38.127;38.317;38.581;38.915;39.316;39.783;40.339;40.966;41.659;42.43;43.274;44.205;45.224;46.375;47.644;49.057;50.614;52.3;
+1500;36.293;36.323;36.432;36.615;36.866;37.186;37.569;38.016;38.549;39.151;39.817;40.559;41.371;42.268;43.248;44.351;45.569;46.925;48.413;50.025;
+2000;34.656;34.691;34.795;34.97;35.209;35.514;35.881;36.309;36.819;37.396;38.036;38.748;39.529;40.392;41.339;42.395;43.564;44.863;46.285;47.825;
+2500;33.075;33.109;33.209;33.377;33.606;33.899;34.251;34.66;35.148;35.701;36.316;36.998;37.748;38.576;39.49;40.503;41.626;42.871;44.23;45.698;
+3000;31.548;31.58;31.675;31.835;32.06;32.333;32.669;33.063;33.532;34.064;34.654;35.308;36.028;36.821;37.699;38.67;39.752;40.946;42.244;43.644;
+3500;30.077;30.105;30.196;30.348;30.562;30.822;31.143;31.519;31.966;32.476;33.044;33.674;34.366;35.126;35.971;36.902;37.937;39.082;40.325;41.66;
+4000;28.662;28.684;28.771;28.915;29.119;29.367;29.672;30.031;30.457;30.944;31.489;32.091;32.757;33.487;34.3;35.194;36.185;37.28;38.467;39.744;
+4500;27.3;27.314;27.396;27.534;27.728;27.965;28.256;28.598;29.003;29.467;29.991;30.565;31.202;31.902;32.682;33.544;34.494;35.54;36.673;37.89;
+5000;25.969;25.995;26.073;26.204;26.387;26.613;26.891;27.218;27.603;28.045;28.544;29.093;29.703;30.374;31.119;31.947;32.858;33.859;34.941;36.101;
+5500;24.69;24.725;24.798;24.923;25.097;25.311;25.576;25.888;26.254;26.676;27.152;27.676;28.258;28.902;29.619;30.407;31.28;32.233;33.264;34.375;
+6000;23.475;23.499;23.569;23.687;23.852;24.058;24.311;24.608;24.956;25.357;25.811;26.313;26.867;27.482;28.168;28.922;29.756;30.666;31.648;32.703;
+6500;22.295;22.317;22.384;22.496;22.652;22.847;23.088;23.371;23.703;24.088;24.52;25;25.528;26.115;26.77;27.491;28.288;29.155;30.09;31.093;
+7000;21.163;21.182;21.245;21.351;21.499;21.684;21.912;22.182;22.496;22.861;23.273;23.734;24.24;24.8;25.425;26.113;26.872;27.698;28.588;29.543;
+7500;20.077;20.091;20.151;20.251;20.391;20.567;20.783;21.039;21.34;21.682;22.073;22.511;22.993;23.53;24.13;24.787;25.509;26.294;27.141;28.049;
+8000;19.035;19.042;19.1;19.195;19.327;19.494;19.699;19.941;20.226;20.55;20.92;21.336;21.794;22.305;22.878;23.507;24.197;24.943;25.747;26.61;
+8500;18.02;18.038;18.091;18.181;18.305;18.463;18.658;18.888;19.158;19.463;19.813;20.207;20.644;21.134;21.674;22.273;22.929;23.639;24.406;25.225;
+9000;17.048;17.073;17.123;17.207;17.325;17.475;17.659;17.878;18.133;18.422;18.752;19.125;19.54;20.006;20.519;21.087;21.71;22.384;23.109;23.889;
+9500;16.13;16.146;16.194;16.273;16.385;16.527;16.701;16.909;17.15;17.423;17.735;18.088;18.481;18.923;19.41;19.95;20.539;21.177;21.865;22.603;
+10000;15.251;15.257;15.302;15.378;15.483;15.617;15.782;15.979;16.205;16.466;16.761;17.099;17.467;17.886;18.347;18.858;19.415;20.019;20.67;21.368;
+10500;14.392;14.406;14.448;14.519;14.618;14.745;14.902;15.088;15.302;15.548;15.827;16.147;16.499;16.892;17.329;17.812;18.338;18.908;19.523;20.184;
+11000;13.571;13.59;13.63;13.697;13.79;13.91;14.058;14.234;14.437;14.669;14.933;15.235;15.569;15.941;16.355;16.81;17.307;17.844;18.424;19.048;
+11500;12.532;12.545;12.582;12.643;12.729;12.84;12.977;13.139;13.326;13.541;13.785;14.063;14.372;14.715;15.097;15.517;15.976;16.472;17.007;17.583;
+12000;11.567;11.578;11.612;11.669;11.749;11.851;11.978;12.128;12.301;12.499;12.724;12.982;13.266;13.583;13.936;14.324;14.747;15.205;15.7;16.231;
+12500;10.673;10.684;10.715;10.768;10.841;10.936;11.053;11.191;11.351;11.535;11.747;11.982;12.246;12.538;12.864;13.222;13.613;14.036;14.492;14.983;
+13000;9.8483;9.8586;9.8875;9.936;10.004;10.091;10.199;10.327;10.474;10.644;10.839;11.056;11.299;11.57;11.872;12.204;12.566;12.957;13.378;13.831;
+13500;9.0861;9.0974;9.1241;9.1688;9.2313;9.3119;9.4111;9.5292;9.6652;9.8214;10.001;10.201;10.426;10.675;10.954;11.26;11.594;11.957;12.348;12.767;
+14000;8.3865;8.3947;8.4193;8.4605;8.5182;8.5925;8.6839;8.7928;8.9182;9.0622;9.228;9.4126;9.6194;9.8497;10.106;10.389;10.697;11.031;11.391;11.78;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;37.356;37.398;37.512;37.7;37.96;38.279;38.662;39.111;39.628;40.208;40.847;41.549;42.31;43.179;44.131;45.189;46.366;47.676;49.136;50.764;
+500;35.716;35.76;35.868;36.048;36.296;36.601;36.968;37.399;37.895;38.452;39.065;39.74;40.475;41.306;42.22;43.236;44.366;45.625;47.029;48.591;
+1000;34.143;34.177;34.281;34.452;34.689;34.981;35.331;35.743;36.221;36.755;37.344;37.993;38.701;39.495;40.374;41.349;42.433;43.642;44.991;46.488;
+1500;32.615;32.648;32.747;32.911;33.136;33.415;33.75;34.145;34.603;35.116;35.679;36.304;36.986;37.746;38.59;39.525;40.566;41.725;43.021;44.454;
+2000;31.141;31.17;31.265;31.422;31.637;31.903;32.224;32.601;33.039;33.525;34.072;34.671;35.326;36.056;36.866;37.763;38.761;39.873;41.116;42.487;
+2500;29.712;29.738;29.828;29.979;30.185;30.44;30.748;31.11;31.531;31.996;32.522;33.094;33.723;34.423;35.2;36.062;37.019;38.085;39.275;40.587;
+3000;28.329;28.358;28.444;28.587;28.783;29.027;29.321;29.667;30.071;30.519;31.025;31.574;32.175;32.846;33.591;34.417;35.335;36.358;37.498;38.75;
+3500;26.998;27.028;27.11;27.247;27.433;27.666;27.946;28.276;28.663;29.093;29.577;30.106;30.683;31.316;32.039;32.813;33.708;34.689;35.783;36.977;
+4000;25.719;25.745;25.823;25.954;26.131;26.353;26.621;26.937;27.307;27.718;28.18;28.688;29.242;29.85;30.542;31.3;32.14;33.077;34.123;35.265;
+4500;24.488;24.507;24.581;24.706;24.876;25.088;25.344;25.645;25.999;26.398;26.834;27.319;27.853;28.435;29.094;29.822;30.628;31.524;32.521;33.61;
+5000;23.289;23.313;23.385;23.504;23.665;23.868;24.113;24.4;24.739;25.12;25.538;26.002;26.513;27.073;27.699;28.395;29.168;30.026;30.979;32.014;
+5500;22.135;22.157;22.225;22.34;22.494;22.688;22.924;23.2;23.525;23.89;24.29;24.734;25.222;25.76;26.356;27.021;27.759;28.581;29.489;30.476;
+6000;21.026;21.045;21.109;21.218;21.364;21.55;21.774;22.037;22.349;22.7;23.086;23.512;23.979;24.494;25.064;25.697;26.403;27.188;28.054;28.992;
+6500;19.963;19.969;20.036;20.14;20.279;20.455;20.669;20.919;21.216;21.552;21.92;22.33;22.779;23.276;23.816;24.424;25.097;25.846;26.671;27.564;
+7000;18.929;18.948;19.006;19.104;19.236;19.403;19.606;19.844;20.128;20.447;20.799;21.19;21.619;22.095;22.618;23.2;23.841;24.555;25.339;26.187;
+7500;17.938;17.961;18.016;18.109;18.233;18.392;18.585;18.816;19.082;19.386;19.723;20.094;20.504;20.958;21.458;22.014;22.63;23.313;24.057;24.862;
+8000;16.997;17.014;17.066;17.154;17.271;17.422;17.605;17.824;18.077;18.366;18.688;19.042;19.433;19.866;20.343;20.873;21.461;22.112;22.822;23.587;
+8500;16.095;16.101;16.154;16.238;16.349;16.491;16.665;16.872;17.112;17.388;17.695;18.031;18.404;18.816;19.272;19.774;20.338;20.957;21.63;22.356;
+9000;15.22;15.235;15.281;15.361;15.465;15.6;15.764;15.96;16.187;16.449;16.74;17.061;17.416;17.808;18.243;18.723;19.258;19.847;20.485;21.172;
+9500;14.383;14.402;14.445;14.519;14.618;14.745;14.9;15.086;15.301;15.548;15.826;16.131;16.469;16.845;17.255;17.712;18.222;18.781;19.386;20.036;
+10000;13.59;13.603;13.644;13.714;13.807;13.927;14.074;14.246;14.452;14.686;14.951;15.239;15.561;15.918;16.308;16.746;17.228;17.757;18.33;18.945;
+10500;12.832;12.836;12.878;12.944;13.031;13.145;13.283;13.446;13.64;13.861;14.111;14.385;14.69;15.03;15.404;15.817;16.275;16.775;17.317;17.899;
+11000;12.097;12.109;12.146;12.207;12.29;12.396;12.527;12.68;12.863;13.071;13.307;13.567;13.856;14.176;14.534;14.927;15.361;15.835;16.346;16.896;
+11500;11.164;11.175;11.209;11.266;11.342;11.441;11.562;11.705;11.873;12.066;12.284;12.524;12.791;13.089;13.416;13.779;14.18;14.617;15.089;15.597;
+12000;10.301;10.311;10.342;10.394;10.465;10.556;10.668;10.799;10.955;11.134;11.336;11.558;11.806;12.082;12.384;12.719;13.09;13.493;13.928;14.398;
+12500;9.5033;9.5131;9.5419;9.5901;9.6552;9.7395;9.8422;9.9632;10.107;10.271;10.458;10.663;10.891;11.147;11.428;11.739;12.083;12.455;12.857;13.291;
+13000;8.767;8.7767;8.8032;8.8476;8.9076;8.9852;9.0799;9.1913;9.324;9.4756;9.6472;9.8363;10.047;10.283;10.542;10.829;11.146;11.493;11.866;12.268;
+13500;8.0888;8.0968;8.1213;8.1623;8.2175;8.289;8.3763;8.4791;8.6014;8.7412;8.8995;9.0738;9.2682;9.4851;9.7239;9.9885;10.282;10.601;10.946;11.317;
+14000;7.4624;7.4694;7.492;7.5298;7.5806;7.6466;7.7271;7.8218;7.9346;8.0636;8.2095;8.3703;8.5495;8.7493;8.9694;9.2135;9.4836;9.7782;10.096;10.439;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;33.559;33.595;33.698;33.867;34.096;34.378;34.708;35.1;35.54;36.027;36.56;37.136;37.791;38.519;39.324;40.213;41.194;42.313;43.536;44.907;
+500;32.076;32.109;32.207;32.368;32.587;32.857;33.173;33.549;33.972;34.441;34.953;35.507;36.134;36.833;37.606;38.461;39.404;40.48;41.655;42.974;
+1000;30.647;30.673;30.767;30.921;31.13;31.388;31.691;32.052;32.458;32.908;33.401;33.935;34.533;35.203;35.946;36.766;37.674;38.708;39.836;41.103;
+1500;29.27;29.288;29.378;29.525;29.724;29.971;30.26;30.606;30.995;31.427;31.9;32.416;33.004;33.63;34.343;35.132;36.003;36.995;38.079;39.295;
+2000;27.936;27.947;28.033;28.174;28.365;28.602;28.88;29.211;29.585;29.999;30.453;30.947;31.509;32.111;32.795;33.552;34.389;35.341;36.381;37.549;
+2500;26.626;26.653;26.735;26.869;27.051;27.277;27.543;27.862;28.221;28.62;29.057;29.532;30.067;30.643;31.299;32.027;32.831;33.744;34.742;35.862;
+3000;25.367;25.406;25.484;25.612;25.785;26.001;26.255;26.559;26.903;27.286;27.706;28.165;28.678;29.229;29.856;30.569;31.326;32.202;33.159;34.233;
+3500;24.179;24.204;24.278;24.4;24.565;24.771;25.014;25.304;25.633;25.999;26.402;26.843;27.333;27.864;28.48;29.148;29.889;30.711;31.631;32.661;
+4000;23.036;23.045;23.116;23.232;23.389;23.586;23.817;24.095;24.409;24.759;25.146;25.567;26.036;26.544;27.121;27.776;28.488;29.275;30.155;31.142;
+4500;21.904;21.926;21.993;22.105;22.255;22.444;22.665;22.93;23.231;23.565;23.935;24.339;24.787;25.273;25.838;26.452;27.133;27.889;28.733;29.676;
+5000;20.822;20.843;20.907;21.014;21.156;21.336;21.549;21.805;22.095;22.415;22.769;23.156;23.584;24.049;24.588;25.175;25.827;26.551;27.359;28.263;
+5500;19.785;19.802;19.863;19.964;20.099;20.271;20.473;20.717;20.994;21.302;21.643;22.017;22.426;22.871;23.385;23.946;24.569;25.262;26.034;26.897;
+6000;18.79;18.795;18.859;18.955;19.083;19.246;19.439;19.671;19.935;20.229;20.554;20.912;21.298;21.735;22.218;22.763;23.358;24.02;24.758;25.581;
+6500;17.821;17.839;17.894;17.985;18.107;18.262;18.445;18.666;18.917;19.198;19.508;19.849;20.219;20.643;21.107;21.623;22.193;22.825;23.53;24.314;
+7000;16.894;16.915;16.967;17.054;17.169;17.317;17.491;17.7;17.939;18.207;18.504;18.828;19.183;19.585;20.028;20.519;21.065;21.674;22.348;23.095;
+7500;16.006;16.028;16.077;16.159;16.269;16.409;16.574;16.773;17.001;17.256;17.539;17.849;18.188;18.569;18.991;19.459;19.979;20.559;21.206;21.921;
+8000;15.156;15.176;15.223;15.301;15.404;15.537;15.695;15.884;16.1;16.343;16.612;16.909;17.232;17.594;17.995;18.441;18.936;19.488;20.104;20.783;
+8500;14.342;14.359;14.404;14.477;14.575;14.701;14.852;15.031;15.237;15.468;15.723;16.006;16.314;16.658;17.04;17.464;17.935;18.46;19.046;19.69;
+9000;13.566;13.577;13.618;13.688;13.781;13.9;14.043;14.214;14.409;14.629;14.871;15.14;15.435;15.76;16.124;16.527;16.975;17.474;18.031;18.641;
+9500;12.813;12.827;12.866;12.932;13.02;13.133;13.268;13.43;13.616;13.825;14.055;14.31;14.591;14.9;15.245;15.628;16.054;16.529;17.057;17.634;
+10000;12.095;12.109;12.146;12.208;12.291;12.398;12.526;12.68;12.856;13.053;13.274;13.516;13.783;14.075;14.404;14.768;15.172;15.622;16.123;16.668;
+10500;11.41;11.422;11.457;11.516;11.594;11.695;11.816;11.962;12.13;12.317;12.526;12.756;13.01;13.289;13.6;13.939;14.327;14.755;15.228;15.743;
+11000;10.749;10.761;10.794;10.849;10.924;11.02;11.135;11.274;11.434;11.612;11.811;12.029;12.27;12.535;12.83;13.157;13.519;13.924;14.372;14.857;
+11500;9.9161;9.9266;9.9577;10.008;10.077;10.165;10.272;10.399;10.547;10.713;10.897;11.101;11.326;11.572;11.843;12.145;12.48;12.853;13.267;13.715;
+12000;9.1468;9.1569;9.1856;9.2324;9.2956;9.3769;9.4746;9.5921;9.728;9.8809;10.051;10.239;10.446;10.674;10.927;11.208;11.52;11.865;12.247;12.661;
+12500;8.4361;8.446;8.4725;8.5156;8.5738;8.6487;8.7387;8.8472;8.9727;9.1134;9.2705;9.4436;9.6346;9.8451;10.078;10.337;10.625;10.947;11.302;11.688;
+13000;7.782;7.79;7.8144;7.8542;7.9078;7.9769;8.06;8.1602;8.2759;8.4057;8.5507;8.7104;8.8865;9.0805;9.2955;9.5345;9.8003;10.097;10.425;10.78;
+13500;7.1783;7.1803;7.2074;7.2441;7.2937;7.3574;7.434;7.5265;7.6332;7.7528;7.8867;8.0336;8.1962;8.375;8.5734;8.794;9.0392;9.3125;9.615;9.9432;
+14000;6.6199;6.6267;6.6476;6.6814;6.727;6.7858;6.8565;6.9418;7.0403;7.1505;7.2741;7.4097;7.5595;7.7239;7.9074;8.111;8.3372;8.5892;8.8681;9.1707;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;30.059;30.093;30.185;30.335;30.535;30.779;31.063;31.39;31.756;32.164;32.604;33.11;33.667;34.262;34.919;35.64;36.455;37.365;38.398;39.529;
+500;28.726;28.757;28.846;28.989;29.179;29.411;29.683;29.997;30.348;30.726;31.162;31.645;32.18;32.755;33.387;34.081;34.861;35.733;36.73;37.815;
+1000;27.441;27.467;27.551;27.686;27.868;28.09;28.35;28.652;28.989;29.353;29.769;30.231;30.743;31.297;31.905;32.573;33.32;34.156;35.118;36.161;
+1500;26.19;26.217;26.297;26.427;26.601;26.814;27.063;27.353;27.676;28.026;28.425;28.865;29.356;29.889;30.472;31.118;31.857;32.662;33.559;34.562;
+2000;24.982;25.008;25.085;25.209;25.375;25.579;25.819;26.097;26.409;26.746;27.127;27.547;28.018;28.531;29.09;29.712;30.419;31.191;32.052;33.016;
+2500;23.821;23.842;23.915;24.034;24.192;24.388;24.617;24.883;25.182;25.508;25.874;26.288;26.726;27.219;27.758;28.356;29.031;29.77;30.596;31.522;
+3000;22.703;22.718;22.787;22.9;23.052;23.239;23.458;23.714;24;24.312;24.663;25.058;25.479;25.952;26.471;27.043;27.672;28.401;29.192;30.08;
+3500;21.629;21.635;21.701;21.808;21.953;22.131;22.34;22.586;22.86;23.16;23.495;23.871;24.274;24.729;25.228;25.778;26.383;27.078;27.839;28.689;
+4000;20.562;20.583;20.647;20.75;20.89;21.062;21.264;21.499;21.761;22.05;22.37;22.729;23.112;23.548;24.027;24.555;25.137;25.803;26.53;27.348;
+4500;19.548;19.569;19.629;19.728;19.86;20.024;20.217;20.445;20.699;20.979;21.286;21.629;21.995;22.411;22.87;23.375;23.933;24.57;25.268;26.051;
+5000;18.576;18.593;18.65;18.744;18.87;19.027;19.211;19.428;19.671;19.939;20.236;20.567;20.921;21.318;21.757;22.24;22.775;23.383;24.05;24.799;
+5500;17.643;17.649;17.71;17.799;17.919;18.068;18.243;18.451;18.683;18.94;19.223;19.538;19.877;20.261;20.685;21.148;21.659;22.24;22.877;23.593;
+6000;16.737;16.754;16.806;16.891;17.005;17.146;17.313;17.511;17.733;17.979;18.249;18.549;18.872;19.239;19.644;20.092;20.585;21.14;21.748;22.432;
+6500;15.869;15.889;15.938;16.019;16.127;16.261;16.42;16.609;16.821;17.055;17.313;17.598;17.907;18.256;18.643;19.071;19.542;20.076;20.662;21.315;
+7000;15.038;15.058;15.105;15.181;15.284;15.412;15.563;15.742;15.945;16.168;16.414;16.685;16.979;17.313;17.681;18.09;18.539;19.049;19.608;20.237;
+7500;14.244;14.262;14.306;14.378;14.475;14.597;14.74;14.911;15.103;15.317;15.551;15.809;16.096;16.407;16.758;17.147;17.576;18.063;18.596;19.194;
+8000;13.486;13.49;13.539;13.608;13.7;13.815;13.95;14.113;14.297;14.5;14.723;14.963;15.235;15.537;15.872;16.243;16.652;17.116;17.624;18.194;
+8500;12.752;12.765;12.805;12.869;12.956;13.066;13.194;13.349;13.523;13.716;13.929;14.158;14.422;14.703;15.022;15.375;15.765;16.207;16.691;17.233;
+9000;12.051;12.063;12.101;12.162;12.244;12.348;12.47;12.617;12.782;12.966;13.168;13.387;13.636;13.904;14.207;14.543;14.915;15.335;15.796;16.312;
+9500;11.38;11.392;11.427;11.485;11.562;11.661;11.776;11.916;12.073;12.247;12.439;12.648;12.884;13.138;13.426;13.745;14.099;14.499;14.937;15.428;
+10000;10.734;10.745;10.778;10.833;10.908;11.002;11.112;11.244;11.394;11.559;11.741;11.941;12.163;12.405;12.685;12.982;13.318;13.698;14.115;14.581;
+10500;10.118;10.125;10.156;10.208;10.278;10.366;10.471;10.597;10.741;10.899;11.074;11.264;11.475;11.704;11.969;12.257;12.577;12.932;13.327;13.77;
+11000;9.5227;9.5325;9.5622;9.6107;9.6766;9.76;9.8582;9.9778;10.114;10.264;10.43;10.612;10.813;11.038;11.279;11.557;11.861;12.198;12.573;12.992;
+11500;8.783;8.7921;8.8195;8.8642;8.9248;9.0017;9.0924;9.2028;9.3281;9.4665;9.6195;9.7874;9.9735;10.18;10.41;10.665;10.948;11.26;11.607;11.994;
+12000;8.1001;8.1088;8.1341;8.1753;8.2313;8.3023;8.386;8.4879;8.6033;8.7307;8.8721;9.0269;9.1986;9.3894;9.6011;9.836;10.097;10.386;10.709;11.07;
+12500;7.4702;7.4784;7.5018;7.5398;7.5915;7.6571;7.7344;7.8283;7.9347;8.052;8.1825;8.3253;8.4837;8.6597;8.8548;9.0715;9.312;9.5789;9.8766;10.209;
+13000;6.8898;6.897;6.9185;6.9536;7.0014;7.0618;7.1331;7.2198;7.3177;7.426;7.5464;7.6781;7.8242;7.9865;8.1664;8.3661;8.5879;8.8339;9.1084;9.4151;
+13500;6.3544;6.3562;6.3805;6.4128;6.4569;6.5127;6.5785;6.6583;6.7486;6.8486;6.9596;7.0809;7.2157;7.3654;7.5313;7.7155;7.92;8.1468;8.3998;8.6826;
+14000;5.8605;5.8621;5.8841;5.914;5.9546;6.0061;6.0668;6.1402;6.2236;6.316;6.4184;6.5302;6.6545;6.7925;6.9455;7.1153;7.3038;7.513;7.7462;8.0069;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;26.794;26.822;26.905;27.036;27.208;27.414;27.655;27.917;28.231;28.589;28.972;29.404;29.834;30.324;30.898;31.511;32.174;32.902;33.703;34.596;
+500;25.591;25.627;25.706;25.831;25.995;26.192;26.422;26.675;26.975;27.316;27.681;28.097;28.511;28.981;29.527;30.107;30.755;31.455;32.228;33.09;
+1000;24.446;24.472;24.547;24.666;24.823;25.012;25.233;25.475;25.762;26.087;26.436;26.836;27.237;27.685;28.205;28.758;29.384;30.058;30.802;31.632;
+1500;23.338;23.354;23.426;23.54;23.69;23.871;24.084;24.317;24.579;24.889;25.236;25.617;26.006;26.435;26.93;27.458;28.061;28.709;29.425;30.225;
+2000;22.253;22.275;22.344;22.452;22.596;22.77;22.973;23.198;23.45;23.745;24.077;24.441;24.815;25.227;25.701;26.205;26.786;27.407;28.095;28.865;
+2500;21.208;21.234;21.3;21.403;21.541;21.706;21.901;22.117;22.359;22.64;22.956;23.305;23.665;24.059;24.513;24.996;25.555;26.152;26.813;27.553;
+3000;20.209;20.231;20.293;20.391;20.522;20.681;20.867;21.075;21.307;21.574;21.874;22.207;22.553;22.93;23.367;23.827;24.366;24.94;25.576;26.287;
+3500;19.24;19.254;19.313;19.409;19.535;19.689;19.869;20.069;20.292;20.546;20.83;21.148;21.481;21.84;22.244;22.7;23.211;23.76;24.383;25.066;
+4000;18.293;18.312;18.368;18.459;18.58;18.726;18.898;19.09;19.306;19.552;19.835;20.128;20.449;20.791;21.179;21.613;22.101;22.629;23.228;23.886;
+4500;17.385;17.405;17.459;17.544;17.659;17.797;17.961;18.146;18.353;18.587;18.857;19.14;19.453;19.782;20.153;20.566;21.031;21.538;22.113;22.745;
+5000;16.514;16.531;16.582;16.663;16.772;16.904;17.061;17.237;17.436;17.658;17.915;18.185;18.485;18.805;19.163;19.558;20.001;20.487;21.039;21.644;
+5500;15.678;15.691;15.739;15.817;15.92;16.046;16.195;16.364;16.554;16.766;17.009;17.266;17.553;17.861;18.203;18.594;19.009;19.478;20.004;20.584;
+6000;14.868;14.883;14.929;15.003;15.101;15.221;15.364;15.525;15.706;15.907;16.139;16.384;16.658;16.953;17.281;17.652;18.047;18.499;18.994;19.563;
+6500;14.094;14.108;14.152;14.221;14.315;14.429;14.565;14.718;14.892;15.083;15.304;15.537;15.799;16.081;16.394;16.747;17.122;17.554;18.027;18.575;
+7000;13.35;13.364;13.405;13.471;13.56;13.669;13.798;13.945;14.11;14.291;14.502;14.723;14.973;15.243;15.542;15.868;16.235;16.646;17.098;17.622;
+7500;12.639;12.642;12.69;12.752;12.836;12.939;13.062;13.202;13.36;13.532;13.733;13.944;14.182;14.44;14.725;15.037;15.385;15.775;16.219;16.706;
+8000;11.954;11.966;12.003;12.063;12.142;12.24;12.358;12.491;12.642;12.806;12.99;13.196;13.423;13.669;13.941;14.239;14.57;14.94;15.365;15.828;
+8500;11.3;11.312;11.347;11.403;11.479;11.572;11.683;11.81;11.954;12.109;12.284;12.48;12.696;12.93;13.189;13.474;13.789;14.139;14.532;14.986;
+9000;10.676;10.682;10.716;10.77;10.842;10.931;11.036;11.157;11.294;11.442;11.608;11.793;11.998;12.222;12.468;12.739;13.039;13.372;13.758;14.178;
+9500;10.065;10.075;10.107;10.158;10.227;10.311;10.413;10.529;10.66;10.803;10.961;11.136;11.33;11.544;11.777;12.036;12.32;12.638;13.004;13.403;
+10000;9.4829;9.4953;9.525;9.5731;9.6379;9.7181;9.8141;9.9246;10.049;10.185;10.337;10.509;10.691;10.894;11.117;11.362;11.633;11.935;12.281;12.661;
+10500;8.9318;8.9412;8.9692;9.0145;9.0756;9.1513;9.2422;9.3469;9.4651;9.5945;9.7381;9.8999;10.073;10.268;10.482;10.718;10.975;11.261;11.59;11.951;
+11000;8.407;8.4122;8.4385;8.4812;8.5388;8.6103;8.6961;8.7953;8.9072;9.0302;9.1664;9.319;9.4825;9.6672;9.8708;10.095;10.342;10.616;10.928;11.271;
+11500;7.7491;7.7574;7.7817;7.8211;7.8743;7.9401;8.0193;8.1107;8.214;8.3274;8.4528;8.5935;8.744;8.9144;9.102;9.3083;9.5359;9.7891;10.08;10.399;
+12000;7.1423;7.1534;7.1758;7.2121;7.2612;7.322;7.3949;7.4793;7.5745;7.6791;7.7946;7.9243;8.0631;8.2201;8.3931;8.5834;8.7931;9.0262;9.2945;9.5888;
+12500;6.5893;6.5962;6.6169;6.6504;6.6956;6.7517;6.819;6.8968;6.9846;7.081;7.1875;7.3071;7.4351;7.5799;7.7394;7.9147;8.1081;8.3228;8.5702;8.8413;
+13000;6.0789;6.0822;6.1013;6.1322;6.1739;6.2256;6.2878;6.3595;6.4404;6.5293;6.6274;6.7378;6.8558;6.9893;7.1365;7.2981;7.4763;7.6742;7.9021;8.152;
+13500;5.6021;5.6081;5.6257;5.6542;5.6927;5.7404;5.7977;5.8639;5.9385;6.0204;6.1107;6.2126;6.3215;6.4447;6.5803;6.7294;6.8936;7.0761;7.286;7.5162;
+14000;5.1625;5.1708;5.187;5.2133;5.2488;5.2928;5.3457;5.4067;5.4755;5.5509;5.6342;5.7282;5.8286;5.9423;6.0674;6.2048;6.3562;6.529;6.7179;6.93;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;23.604;23.637;23.711;23.826;23.976;24.154;24.354;24.576;24.864;25.178;25.506;25.834;26.205;26.641;27.12;27.612;28.131;28.678;29.251;29.856;
+500;22.57;22.593;22.663;22.773;22.916;23.086;23.276;23.488;23.762;24.061;24.377;24.695;25.046;25.46;25.921;26.392;26.892;27.421;27.981;28.575;
+1000;21.57;21.573;21.651;21.755;21.891;22.052;22.235;22.438;22.697;22.981;23.286;23.592;23.926;24.319;24.762;25.215;25.696;26.206;26.75;27.333;
+1500;20.584;20.605;20.669;20.769;20.899;21.053;21.228;21.422;21.668;21.938;22.232;22.525;22.844;23.232;23.643;24.078;24.541;25.034;25.562;26.13;
+2000;19.633;19.66;19.721;19.816;19.939;20.087;20.254;20.44;20.674;20.929;21.213;21.493;21.798;22.167;22.562;22.979;23.426;23.901;24.413;24.967;
+2500;18.718;18.747;18.805;18.895;19.013;19.153;19.313;19.491;19.713;19.956;20.228;20.496;20.788;21.139;21.517;21.919;22.348;22.807;23.302;23.841;
+3000;17.829;17.856;17.912;17.998;18.113;18.248;18.403;18.575;18.786;19.017;19.278;19.534;19.812;20.145;20.508;20.893;21.306;21.75;22.229;22.752;
+3500;16.977;16.995;17.048;17.131;17.239;17.369;17.517;17.683;17.886;18.107;18.361;18.606;18.87;19.188;19.531;19.903;20.3;20.728;21.192;21.699;
+4000;16.158;16.166;16.216;16.295;16.398;16.521;16.663;16.821;17.013;17.223;17.466;17.706;17.958;18.266;18.59;18.947;19.327;19.738;20.187;20.681;
+4500;15.35;15.367;15.414;15.489;15.587;15.705;15.84;15.991;16.173;16.372;16.603;16.834;17.085;17.369;17.682;18.027;18.389;18.784;19.216;19.693;
+5000;14.582;14.597;14.643;14.714;14.807;14.919;15.048;15.192;15.365;15.553;15.773;15.995;16.234;16.503;16.8;17.132;17.484;17.865;18.279;18.739;
+5500;13.846;13.857;13.9;13.967;14.056;14.162;14.286;14.424;14.587;14.766;14.974;15.187;15.415;15.67;15.951;16.27;16.606;16.972;17.375;17.819;
+6000;13.141;13.144;13.186;13.25;13.334;13.435;13.553;13.684;13.839;14.008;14.206;14.41;14.627;14.859;15.135;15.441;15.762;16.112;16.498;16.926;
+6500;12.465;12.461;12.5;12.56;12.64;12.736;12.848;12.974;13.121;13.288;13.468;13.663;13.86;14.091;14.352;14.645;14.951;15.286;15.655;16.066;
+7000;11.791;11.804;11.84;11.897;11.973;12.065;12.171;12.29;12.43;12.588;12.758;12.946;13.135;13.354;13.601;13.88;14.172;14.493;14.846;15.239;
+7500;11.161;11.173;11.207;11.261;11.333;11.419;11.521;11.634;11.766;11.917;12.078;12.257;12.438;12.646;12.879;13.145;13.425;13.73;14.068;14.444;
+8000;10.559;10.566;10.599;10.65;10.718;10.801;10.897;11.005;11.13;11.273;11.426;11.596;11.77;11.967;12.186;12.438;12.707;12.999;13.321;13.681;
+8500;9.9676;9.9782;10.009;10.058;10.124;10.203;10.296;10.4;10.52;10.655;10.8;10.963;11.128;11.315;11.531;11.761;12.016;12.297;12.605;12.949;
+9000;9.4036;9.415;9.4444;9.4907;9.5526;9.6273;9.7156;9.8143;9.9284;10.058;10.197;10.355;10.513;10.691;10.895;11.113;11.356;11.624;11.918;12.246;
+9500;8.8661;8.8685;8.904;8.9475;9.006;9.0767;9.1606;9.2542;9.3621;9.48;9.616;9.7654;9.9183;10.089;10.285;10.492;10.725;10.98;11.26;11.572;
+10000;8.3518;8.3607;8.3868;8.4281;8.4834;8.5503;8.6298;8.7185;8.8169;8.9324;9.0602;9.2016;9.3482;9.5096;9.6951;9.8921;10.12;10.36;10.629;10.927;
+10500;7.8623;7.8684;7.893;7.932;7.984;8.0473;8.1226;8.2067;8.3004;8.4089;8.5291;8.6629;8.8032;8.9558;9.1313;9.3173;9.5339;9.7615;10.022;10.309;
+11000;7.3906;7.3984;7.4215;7.4583;7.5074;7.5671;7.6384;7.718;7.807;7.9092;8.026;8.1485;8.2823;8.4267;8.587;8.7684;8.9712;9.1898;9.4383;9.7114;
+11500;6.815;6.8224;6.8437;6.8777;6.923;6.9781;7.0439;7.1173;7.1994;7.2936;7.4013;7.5144;7.6376;7.7708;7.9185;8.0856;8.2728;8.474;8.7028;8.9544;
+12000;6.284;6.2912;6.3109;6.3422;6.384;6.4348;6.4954;6.5632;6.6389;6.7258;6.8252;6.9295;7.0431;7.1659;7.3021;7.456;7.6287;7.814;8.0247;8.2563;
+12500;5.7943;5.8012;5.8193;5.8482;5.8868;5.9337;5.9896;6.0522;6.1218;6.202;6.2938;6.39;6.4948;6.608;6.7337;6.8756;7.0347;7.2054;7.3994;7.6127;
+13000;5.3426;5.3493;5.366;5.3926;5.4282;5.4715;5.5231;5.5808;5.6449;5.7189;5.8037;5.8925;5.989;6.0936;6.2094;6.3404;6.4868;6.6441;6.8228;7.0192;
+13500;4.926;4.9324;4.9478;4.9724;5.0053;5.0451;5.0927;5.1459;5.2051;5.2734;5.3516;5.4335;5.5226;5.6191;5.7258;5.8468;5.9818;6.1264;6.2911;6.472;
+14000;4.5431;4.5479;4.5622;4.5849;4.6152;4.6519;4.6958;4.7449;4.7994;4.8625;4.9347;5.0103;5.0923;5.1815;5.2836;5.3917;5.5173;5.6517;5.8008;5.9674;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;20.489;20.532;20.602;20.708;20.847;21.002;21.182;21.399;21.661;21.935;22.201;22.494;22.85;23.226;23.596;23.955;24.277;24.524;24.626;24.467;
+500;19.805;19.626;19.689;19.79;19.922;20.068;20.239;20.445;20.694;20.956;21.21;21.489;21.826;22.188;22.544;22.893;23.212;23.469;23.607;23.537;
+1000;18.726;18.746;18.809;18.904;19.029;19.168;19.33;19.525;19.761;20.011;20.252;20.519;20.839;21.185;21.528;21.866;22.182;22.446;22.614;22.628;
+1500;17.879;17.897;17.957;18.047;18.166;18.298;18.452;18.637;18.861;19.1;19.329;19.584;19.897;20.218;20.547;20.875;21.184;21.454;21.65;21.718;
+2000;17.058;17.078;17.134;17.22;17.332;17.458;17.604;17.78;17.992;18.22;18.438;18.681;18.977;19.284;19.601;19.917;20.221;20.494;20.708;20.821;
+2500;16.263;16.279;16.333;16.415;16.523;16.644;16.786;16.952;17.154;17.371;17.579;17.81;18.09;18.383;18.687;18.993;19.291;19.565;19.793;19.941;
+3000;15.497;15.506;15.557;15.635;15.737;15.852;15.987;16.146;16.34;16.551;16.751;16.967;17.235;17.514;17.804;18.1;18.392;18.666;18.904;19.08;
+3500;14.745;14.761;14.81;14.883;14.98;15.089;15.217;15.368;15.552;15.752;15.944;16.148;16.41;16.678;16.955;17.239;17.522;17.793;18.041;18.24;
+4000;14.025;14.044;14.089;14.159;14.251;14.354;14.475;14.619;14.793;14.985;15.166;15.369;15.608;15.866;16.134;16.409;16.681;16.948;17.197;17.42;
+4500;13.339;13.353;13.396;13.462;13.549;13.647;13.762;13.898;14.063;14.244;14.418;14.611;14.836;15.082;15.337;15.602;15.869;16.132;16.382;16.614;
+5000;12.68;12.689;12.729;12.791;12.874;12.967;13.076;13.204;13.36;13.531;13.698;13.881;14.093;14.327;14.571;14.824;15.082;15.339;15.593;15.834;
+5500;12.036;12.049;12.087;12.146;12.224;12.312;12.416;12.537;12.684;12.846;13.005;13.179;13.379;13.602;13.834;14.075;14.324;14.576;14.827;15.075;
+6000;11.419;11.434;11.47;11.525;11.599;11.682;11.781;11.895;12.035;12.187;12.34;12.504;12.693;12.905;13.126;13.356;13.597;13.842;14.089;14.336;
+6500;10.831;10.842;10.876;10.929;10.998;11.08;11.17;11.278;11.41;11.554;11.701;11.856;12.035;12.234;12.447;12.668;12.899;13.136;13.377;13.623;
+7000;10.267;10.273;10.306;10.356;10.421;10.498;10.584;10.686;10.811;10.947;11.088;11.236;11.405;11.594;11.797;12.007;12.228;12.457;12.692;12.934;
+7500;9.7087;9.7194;9.7503;9.7977;9.8606;9.9352;10.019;10.113;10.238;10.367;10.501;10.634;10.8;10.978;11.172;11.372;11.583;11.803;12.032;12.271;
+8000;9.176;9.1892;9.2186;9.2636;9.3234;9.3944;9.4737;9.5627;9.68;9.8047;9.9346;10.064;10.213;10.387;10.572;10.763;10.964;11.175;11.398;11.631;
+8500;8.6724;8.6818;8.7094;8.7518;8.8082;8.8752;8.9505;9.0348;9.145;9.2629;9.3863;9.5095;9.6508;9.8165;9.9959;10.178;10.37;10.573;10.788;11.016;
+9000;8.1913;8.1954;8.2214;8.2614;8.3146;8.3778;8.4491;8.529;8.6324;8.7438;8.8606;8.978;9.1109;9.266;9.437;9.6123;9.7982;9.9944;10.202;10.424;
+9500;7.7209;7.7293;7.7538;7.7915;7.8416;7.9013;7.9689;8.0447;8.1414;8.2464;8.3572;8.4689;8.5941;8.7392;8.9019;9.0685;9.2455;9.4342;9.6363;9.8547;
+10000;7.2727;7.2832;7.3062;7.3416;7.3888;7.445;7.5091;7.5808;7.6715;7.7701;7.8755;7.9818;8.0995;8.2408;8.39;8.5481;8.7167;8.8967;9.0906;9.3016;
+10500;6.8489;6.8562;6.8778;6.9112;6.9555;7.0085;7.0692;7.137;7.2221;7.3144;7.4151;7.5162;7.6268;7.7593;7.9006;8.0507;8.211;8.3826;8.5682;8.771;
+11000;6.4412;6.4481;6.4683;6.4998;6.5416;6.5915;6.649;6.7132;6.7928;6.8792;6.975;7.0711;7.175;7.2993;7.4331;7.5753;7.7276;7.8913;8.0686;8.2633;
+11500;5.9382;5.9451;5.9638;5.9928;6.0314;6.0775;6.1305;6.1898;6.2634;6.3432;6.4315;6.5202;6.6161;6.7307;6.8557;6.985;7.1252;7.2757;7.4384;7.6172;
+12000;5.4744;5.4812;5.4985;5.5253;5.5609;5.6034;5.6523;5.707;5.7751;5.8488;5.9302;6.0118;6.1007;6.2062;6.3198;6.4406;6.5697;6.7081;6.8575;7.0216;
+12500;5.0467;5.0533;5.0692;5.0939;5.1268;5.1664;5.2112;5.2617;5.3246;5.3928;5.4678;5.5431;5.6251;5.7225;5.8272;5.9384;6.0573;6.1847;6.322;6.4725;
+13000;4.6536;4.6586;4.6733;4.6961;4.7264;4.763;4.8044;4.851;4.9092;4.9722;5.0413;5.1107;5.1865;5.2764;5.3729;5.4754;5.5848;5.702;5.8282;5.9662;
+13500;4.2909;4.2917;4.3083;4.3292;4.3572;4.3909;4.4292;4.4723;4.526;4.5842;4.6479;4.712;4.782;4.8649;4.9539;5.0483;5.1491;5.2569;5.373;5.4995;
+14000;3.9545;3.9588;3.9713;3.9908;4.0166;4.0477;4.083;4.1229;4.1725;4.2264;4.2851;4.3442;4.4089;4.4855;4.5674;4.6544;4.7472;4.8465;4.9532;5.0693;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;19.315;19.338;19.407;19.511;19.649;19.8;19.972;20.194;20.451;20.703;20.952;21.261;21.596;21.933;22.258;22.542;22.733;22.732;22.302;20.918;
+500;18.813;18.482;18.547;18.646;18.776;18.918;19.082;19.291;19.535;19.777;20.017;20.307;20.627;20.951;21.265;21.545;21.747;21.787;21.476;20.434;
+1000;17.634;17.654;17.716;17.81;17.933;18.068;18.224;18.421;18.645;18.883;19.113;19.386;19.692;20.002;20.306;20.581;20.791;20.865;20.653;19.872;
+1500;16.835;16.854;16.913;17.002;17.119;17.247;17.394;17.582;17.794;18.022;18.241;18.498;18.789;19.087;19.38;19.65;19.866;19.966;19.835;19.272;
+2000;16.062;16.081;16.137;16.221;16.332;16.454;16.594;16.771;16.972;17.19;17.399;17.641;17.916;18.204;18.487;18.751;18.969;19.095;19.026;18.611;
+2500;15.312;15.326;15.379;15.46;15.566;15.683;15.818;15.988;16.18;16.388;16.587;16.806;17.078;17.352;17.624;17.883;18.102;18.245;18.238;17.939;
+3000;14.581;14.599;14.649;14.725;14.825;14.936;15.065;15.226;15.409;15.609;15.801;16.013;16.269;16.531;16.791;17.042;17.263;17.421;17.454;17.258;
+3500;13.881;13.898;13.945;14.017;14.112;14.217;14.339;14.491;14.664;14.855;15.037;15.239;15.484;15.739;15.989;16.23;16.449;16.616;16.688;16.575;
+4000;13.208;13.223;13.268;13.335;13.425;13.525;13.64;13.783;13.952;14.129;14.302;14.493;14.724;14.968;15.21;15.447;15.662;15.835;15.929;15.888;
+4500;12.562;12.573;12.615;12.679;12.764;12.858;12.967;13.102;13.262;13.43;13.594;13.776;13.993;14.226;14.457;14.686;14.899;15.079;15.192;15.202;
+5000;11.933;11.947;11.987;12.047;12.127;12.216;12.32;12.447;12.598;12.758;12.913;13.086;13.29;13.512;13.733;13.953;14.162;14.343;14.474;14.522;
+5500;11.331;11.345;11.382;11.439;11.515;11.599;11.697;11.817;11.96;12.112;12.259;12.423;12.615;12.826;13.037;13.248;13.451;13.633;13.775;13.849;
+6000;10.754;10.766;10.801;10.854;10.926;11.005;11.098;11.211;11.346;11.491;11.63;11.784;11.972;12.167;12.368;12.571;12.768;12.948;13.098;13.195;
+6500;10.2;10.209;10.242;10.293;10.36;10.435;10.523;10.629;10.757;10.894;11.026;11.172;11.349;11.534;11.725;11.919;12.11;12.289;12.444;12.559;
+7000;9.656;9.6669;9.6987;9.7471;9.8117;9.8838;9.9682;10.07;10.191;10.321;10.446;10.582;10.75;10.926;11.108;11.294;11.478;11.654;11.813;11.941;
+7500;9.1359;9.1467;9.1766;9.2221;9.2829;9.351;9.4309;9.5265;9.6416;9.7669;9.8875;10.016;10.176;10.343;10.516;10.693;10.872;11.044;11.204;11.342;
+8000;8.6383;8.6478;8.6759;8.7187;8.7759;8.8402;8.9156;9.0055;9.1139;9.2325;9.3467;9.473;9.6214;9.782;9.948;10.117;10.289;10.458;10.618;10.766;
+8500;8.1632;8.1697;8.1961;8.2363;8.2901;8.3508;8.422;8.5064;8.6084;8.7198;8.8288;8.9481;9.0872;9.2394;9.3976;9.5612;9.7291;9.8945;10.054;10.208;
+9000;7.7031;7.7117;7.7365;7.7743;7.8248;7.8821;7.9493;8.0286;8.1245;8.2292;8.3329;8.4457;8.5759;8.7201;8.8701;9.0258;9.1864;9.3488;9.5108;9.6692;
+9500;7.2647;7.2731;7.2964;7.3319;7.3794;7.4334;7.4969;7.5714;7.6615;7.76;7.8584;7.9648;8.0868;8.2232;8.3655;8.5136;8.6667;8.8253;8.9852;9.1443;
+10000;6.846;6.8533;6.8752;6.9086;6.9533;7.0061;7.064;7.134;7.2187;7.3111;7.4049;7.505;7.6194;7.7478;7.883;8.0244;8.1714;8.3243;8.4802;8.6387;
+10500;6.4472;6.4519;6.4725;6.5038;6.5457;6.5953;6.6502;6.7159;6.7953;6.8822;6.9715;7.0655;7.1732;7.2931;7.4234;7.558;7.6982;7.8444;7.996;8.1528;
+11000;6.0616;6.0682;6.0874;6.1168;6.1562;6.2028;6.2547;6.3163;6.3909;6.4728;6.5582;6.6428;6.7482;6.8611;6.9845;7.1121;7.2457;7.3855;7.5324;7.6865;
+11500;5.5886;5.595;5.6127;5.6398;5.6762;5.7192;5.7671;5.8241;5.8929;5.9686;6.0466;6.1245;6.2218;6.3257;6.4396;6.5572;6.6801;6.8082;6.9428;7.0836;
+12000;5.1524;5.1585;5.1749;5.2;5.2335;5.2732;5.3174;5.3701;5.4337;5.5034;5.5754;5.6473;5.7363;5.8321;5.9371;6.0453;6.1584;6.2763;6.3992;6.5279;
+12500;4.7508;4.756;4.7711;4.7943;4.8252;4.8619;4.9026;4.9513;5.0101;5.0744;5.1407;5.2103;5.2893;5.3778;5.4737;5.5733;5.6774;5.7857;5.8982;6.0156;
+13000;4.3805;4.3847;4.3986;4.42;4.4486;4.4825;4.5201;4.5651;4.6193;4.6787;4.7399;4.8041;4.8771;4.959;5.047;5.1383;5.2338;5.3333;5.4363;5.5435;
+13500;4.039;4.0394;4.0554;4.0749;4.1012;4.1325;4.1673;4.2088;4.259;4.3138;4.3702;4.4295;4.4969;4.5726;4.6535;4.7376;4.8251;4.9162;5.0103;5.1085;
+14000;3.7225;3.7265;3.7384;3.7566;3.7809;3.8098;3.8418;3.8803;3.9266;3.9771;4.0292;4.084;4.1463;4.2162;4.2907;4.3681;4.4486;4.5319;4.6179;4.7072;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;18.149;18.175;18.245;18.347;18.483;18.633;18.799;19.028;19.28;19.509;19.764;20.065;20.374;20.677;20.943;21.118;21.085;20.514;18.346;-9999;
+500;17.345;17.369;17.435;17.532;17.661;17.802;17.959;18.174;18.414;18.633;18.875;19.161;19.457;19.749;20.01;20.193;20.198;19.758;18.095;-9999;
+1000;16.568;16.591;16.652;16.744;16.867;17;17.15;17.353;17.579;17.787;18.017;18.289;18.573;18.854;19.109;19.296;19.332;19.001;17.721;-9999;
+1500;15.819;15.84;15.896;15.984;16.1;16.226;16.368;16.56;16.776;16.975;17.192;17.448;17.72;17.99;18.238;18.429;18.491;18.249;17.251;-9999;
+2000;15.09;15.109;15.164;15.248;15.359;15.48;15.614;15.796;16;16.19;16.396;16.638;16.897;17.156;17.398;17.59;17.673;17.504;16.746;-9999;
+2500;14.385;14.398;14.452;14.531;14.636;14.751;14.88;15.054;15.25;15.434;15.629;15.857;16.104;16.351;16.585;16.779;16.879;16.77;16.192;-9999;
+3000;13.697;13.715;13.765;13.839;13.939;14.047;14.17;14.334;14.519;14.696;14.883;15.102;15.34;15.576;15.8;15.992;16.107;16.057;15.623;-9999;
+3500;13.04;13.057;13.103;13.173;13.267;13.37;13.486;13.64;13.816;13.985;14.161;14.368;14.596;14.825;15.045;15.232;15.355;15.342;15.029;14.109;
+4000;12.406;12.421;12.465;12.531;12.62;12.717;12.827;12.973;13.138;13.3;13.46;13.662;13.878;14.097;14.309;14.496;14.628;14.643;14.41;13.669;
+4500;11.799;11.809;11.851;11.914;11.998;12.089;12.193;12.33;12.487;12.64;12.794;12.982;13.188;13.396;13.6;13.783;13.92;13.959;13.797;13.23;
+5000;11.207;11.221;11.26;11.319;11.399;11.484;11.583;11.712;11.857;12.007;12.153;12.329;12.524;12.722;12.918;13.096;13.236;13.294;13.186;12.761;
+5500;10.641;10.655;10.692;10.748;10.822;10.903;10.997;11.118;11.254;11.397;11.536;11.701;11.886;12.075;12.262;12.435;12.576;12.649;12.587;12.278;
+6000;10.099;10.111;10.146;10.198;10.268;10.345;10.433;10.547;10.675;10.811;10.943;11.098;11.273;11.453;11.631;11.799;11.94;12.027;12.006;11.777;
+6500;9.5696;9.581;9.6142;9.6643;9.7318;9.8049;9.8897;9.9984;10.119;10.248;10.374;10.519;10.683;10.855;11.026;11.188;11.329;11.424;11.431;11.275;
+7000;9.0635;9.072;9.1032;9.1502;9.2137;9.2826;9.3626;9.4646;9.58;9.7047;9.8253;9.9628;10.118;10.282;10.444;10.601;10.74;10.842;10.872;10.774;
+7500;8.5801;8.5836;8.6129;8.6571;8.7167;8.7816;8.8573;8.9528;9.0608;9.1797;9.2934;9.4192;9.572;9.7305;9.8866;10.038;10.174;10.281;10.33;10.277;
+8000;8.1059;8.1153;8.1428;8.1843;8.2402;8.3014;8.3727;8.4622;8.5634;8.6767;8.7839;8.9031;9.0456;9.1963;9.346;9.4937;9.6304;9.7404;9.8041;9.7879;
+8500;7.6539;7.6666;7.6923;7.7312;7.7837;7.8413;7.9085;7.9924;8.0911;8.1948;8.2958;8.4085;8.5418;8.6848;8.8272;8.9686;9.1021;9.216;9.2935;9.312;
+9000;7.2232;7.2368;7.2609;7.2974;7.3467;7.4009;7.4641;7.5427;7.6354;7.7334;7.8287;7.9346;8.06;8.1952;8.3306;8.4656;8.5955;8.7105;8.7982;8.8376;
+9500;6.8129;6.8253;6.8479;6.8821;6.9283;6.9794;7.039;7.1125;7.1994;7.292;7.3819;7.4815;7.5987;7.727;7.8555;7.9845;8.1104;8.2254;8.3188;8.3758;
+10000;6.4222;6.4317;6.4529;6.4849;6.5282;6.5762;6.6323;6.7011;6.7826;6.8701;6.9547;7.0483;7.1616;7.2794;7.4013;7.5247;7.6462;7.76;7.8575;7.9279;
+10500;6.0487;6.0555;6.0753;6.1053;6.1457;6.1908;6.2436;6.3079;6.3843;6.4668;6.5466;6.6342;6.7407;6.8522;6.9677;7.0855;7.2021;7.3139;7.4141;7.4945;
+11000;5.6935;5.6959;5.7144;5.7425;5.7804;5.8227;5.8724;5.9324;6.004;6.0819;6.1572;6.2377;6.3391;6.4445;6.5537;6.6657;6.7776;6.8868;6.9885;7.0758;
+11500;5.2457;5.2515;5.2686;5.2945;5.3295;5.3686;5.4145;5.4699;5.5361;5.6078;5.6772;5.7519;5.8452;5.9423;6.043;6.146;6.2487;6.3484;6.4409;6.5192;
+12000;4.8331;4.8417;4.8575;4.8813;4.9137;4.9498;4.9921;5.0434;5.1045;5.1707;5.2347;5.304;5.3897;5.4791;5.5719;5.6667;5.7611;5.8519;5.936;6.0064;
+12500;4.4588;4.4637;4.4783;4.5003;4.5302;4.5634;4.6025;4.65;4.7065;4.7675;4.8266;4.8909;4.9697;5.052;5.1375;5.2247;5.3113;5.3943;5.4705;5.5336;
+13000;4.1134;4.1151;4.1285;4.1489;4.1765;4.2072;4.2432;4.2872;4.3393;4.3956;4.4502;4.5099;4.5823;4.6582;4.7369;4.8171;4.8965;4.9723;5.0415;5.0978;
+13500;3.7893;3.7936;3.806;3.8247;3.8502;3.8786;3.912;3.9525;4.0007;4.0527;4.103;4.1584;4.225;4.295;4.3675;4.4412;4.5141;4.5833;4.646;4.6963;
+14000;3.4907;3.4971;3.5085;3.5258;3.5494;3.5756;3.6064;3.6439;3.6884;3.7363;3.7828;3.8341;3.8955;3.9601;4.0269;4.0947;4.1615;4.2247;4.2814;4.3262;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;17.017;17.047;17.113;17.222;17.358;17.508;17.686;17.905;18.149;18.37;18.621;18.907;19.191;19.448;19.629;19.614;19.046;16.363;-9999;-9999;
+500;16.255;16.282;16.35;16.448;16.581;16.725;16.893;17.1;17.331;17.543;17.78;18.054;18.326;18.576;18.76;18.775;18.328;16.228;-9999;-9999;
+1000;15.535;15.559;15.624;15.713;15.837;15.97;16.129;16.325;16.543;16.743;16.963;17.23;17.491;17.734;17.918;17.959;17.612;16.013;-9999;-9999;
+1500;14.83;14.853;14.913;14.998;15.115;15.241;15.391;15.577;15.784;15.974;16.182;16.435;16.685;16.92;17.106;17.167;16.903;15.657;-9999;-9999;
+2000;14.147;14.164;14.221;14.303;14.415;14.535;14.679;14.855;15.052;15.232;15.426;15.669;15.907;16.135;16.32;16.397;16.204;15.229;-9999;-9999;
+2500;13.478;13.498;13.551;13.629;13.734;13.848;13.983;14.152;14.341;14.514;14.708;14.932;15.159;15.376;15.559;15.651;15.516;14.764;-9999;-9999;
+3000;12.837;12.856;12.905;12.979;13.079;13.186;13.313;13.472;13.652;13.816;14;14.216;14.435;14.647;14.824;14.925;14.845;14.256;-9999;-9999;
+3500;12.222;12.237;12.283;12.353;12.447;12.548;12.668;12.819;12.989;13.144;13.318;13.523;13.732;13.936;14.114;14.222;14.175;13.727;12.2;-9999;
+4000;11.632;11.633;11.682;11.75;11.839;11.934;12.047;12.189;12.35;12.498;12.662;12.856;13.054;13.25;13.423;13.538;13.521;13.17;11.86;-9999;
+4500;11.052;11.067;11.108;11.17;11.254;11.343;11.45;11.584;11.736;11.876;12.031;12.215;12.403;12.59;12.758;12.876;12.882;12.613;11.594;-9999;
+5000;10.496;10.515;10.554;10.612;10.691;10.775;10.875;11.002;11.146;11.278;11.424;11.597;11.777;11.955;12.118;12.239;12.263;12.06;11.282;-9999;
+5500;9.9646;9.9835;10.02;10.075;10.149;10.228;10.323;10.442;10.578;10.703;10.841;11.004;11.175;11.345;11.502;11.624;11.664;11.515;10.902;-9999;
+6000;9.454;9.4662;9.5014;9.5535;9.6247;9.7004;9.7906;9.9043;10.033;10.152;10.282;10.435;10.597;10.759;10.911;11.032;11.084;10.98;10.513;-9999;
+6500;8.9653;8.9664;9.0032;9.051;9.118;9.1891;9.2699;9.381;9.5041;9.6193;9.7439;9.8885;10.043;10.197;10.342;10.463;10.525;10.457;10.099;-9999;
+7000;8.4812;8.4919;8.5228;8.5688;8.6317;8.6987;8.7748;8.8789;8.9947;9.1044;9.2214;9.3587;9.5071;9.6562;9.7967;9.9153;9.985;9.9522;9.6834;-9999;
+7500;8.0192;8.0341;8.0631;8.1063;8.1654;8.2284;8.3;8.3975;8.5064;8.6106;8.7206;8.8494;8.9901;9.1315;9.268;9.3867;9.4649;9.4554;9.2559;-9999;
+8000;7.5861;7.5954;7.6225;7.663;7.7185;7.7775;7.8452;7.9362;8.0385;8.1375;8.2362;8.3616;8.4948;8.6291;8.7595;8.8755;8.9583;8.969;8.8268;8.3561;
+8500;7.173;7.1736;7.2011;7.2383;7.2903;7.3457;7.4095;7.4945;7.5889;7.6846;7.7783;7.8947;8.0207;8.148;8.2724;8.3857;8.4713;8.4973;8.4012;8.0593;
+9000;6.7642;6.7723;6.7961;6.8316;6.8803;6.9324;6.9925;7.0719;7.1602;7.2509;7.3401;7.448;7.5671;7.6879;7.8065;7.9164;8.0035;8.0417;7.9826;7.7343;
+9500;6.3753;6.3871;6.4093;6.4426;6.4881;6.5369;6.5934;6.6674;6.7504;6.836;6.9207;7.0212;7.1339;7.2481;7.361;7.4668;7.5544;7.6039;7.5728;7.4012;
+10000;6.0054;6.0185;6.0392;6.0704;6.1129;6.1585;6.2117;6.2809;6.3586;6.4398;6.5202;6.6133;6.7187;6.8275;6.935;7.0367;7.1242;7.1805;7.1768;7.0566;
+10500;5.6537;5.6661;5.6855;5.7146;5.7544;5.7973;5.8473;5.9117;5.9843;6.0613;6.1369;6.2237;6.3223;6.4257;6.5279;6.6256;6.7121;6.7739;6.7877;6.7122;
+11000;5.3195;5.3297;5.3478;5.375;5.4122;5.4524;5.4993;5.5592;5.6267;5.6999;5.7708;5.849;5.9444;6.0422;6.1392;6.233;6.3174;6.3835;6.4109;6.3705;
+11500;4.9082;4.9136;4.9303;4.9554;4.9898;5.0269;5.0702;5.1257;5.1882;5.2555;5.321;5.3931;5.4813;5.5714;5.6607;5.7468;5.8237;5.8832;5.906;5.8634;
+12000;4.5286;4.53;4.5453;4.5685;4.6002;4.6345;4.6745;4.7259;4.7836;4.8457;4.9061;4.9728;5.0542;5.1371;5.2193;5.2984;5.3692;5.422;5.4406;5.3964;
+12500;4.1714;4.1762;4.1904;4.2117;4.241;4.2726;4.3094;4.3571;4.4106;4.4676;4.5235;4.5851;4.6604;4.7367;4.8123;4.8849;4.949;4.9969;5.0118;4.9662;
+13000;3.8423;3.85;3.8631;3.8828;3.9098;3.9389;3.9729;4.0169;4.0664;4.119;4.1706;4.2298;4.2969;4.3673;4.437;4.5036;4.5621;4.605;4.6167;4.5699;
+13500;3.545;3.5491;3.5612;3.5794;3.6044;3.6313;3.6626;3.7034;3.7491;3.7974;3.8451;3.8998;3.9619;4.0267;4.0909;4.152;4.2053;4.2439;4.2526;4.205;
+14000;3.2706;3.2716;3.2828;3.2995;3.3226;3.3475;3.3766;3.4141;3.4565;3.501;3.545;3.5955;3.6528;3.7126;3.7716;3.8277;3.8764;3.9108;3.917;3.869;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;16.034;16.064;16.134;16.246;16.385;16.54;16.723;16.941;17.169;17.384;17.629;17.89;18.13;18.302;18.308;17.792;15.139;-9999;-9999;-9999;
+500;15.308;15.311;15.4;15.506;15.638;15.783;15.954;16.16;16.377;16.581;16.815;17.065;17.298;17.472;17.503;17.092;15.043;-9999;-9999;-9999;
+1000;14.607;14.632;14.693;14.792;14.917;15.054;15.216;15.411;15.617;15.809;16.029;16.27;16.495;16.671;16.723;16.398;14.804;-9999;-9999;-9999;
+1500;13.932;13.954;14.012;14.105;14.223;14.352;14.505;14.689;14.885;15.067;15.275;15.504;15.722;15.897;15.968;15.739;14.465;-9999;-9999;-9999;
+2000;13.272;13.294;13.348;13.437;13.549;13.672;13.817;13.994;14.181;14.353;14.55;14.768;14.977;15.15;15.23;15.071;14.07;-9999;-9999;-9999;
+2500;12.639;12.641;12.709;12.793;12.899;13.014;13.151;13.318;13.496;13.662;13.85;14.061;14.261;14.43;14.519;14.416;13.635;-9999;-9999;-9999;
+3000;12.028;12.047;12.102;12.172;12.273;12.381;12.51;12.667;12.837;12.993;13.172;13.373;13.568;13.736;13.835;13.767;13.156;-9999;-9999;-9999;
+3500;11.441;11.459;11.509;11.576;11.671;11.773;11.894;12.043;12.203;12.351;12.52;12.711;12.898;13.063;13.174;13.138;12.659;-9999;-9999;-9999;
+4000;10.876;10.894;10.94;11.003;11.093;11.188;11.302;11.442;11.594;11.734;11.893;12.075;12.256;12.422;12.535;12.521;12.141;10.324;-9999;-9999;
+4500;10.335;10.337;10.388;10.453;10.537;10.627;10.734;10.865;11.01;11.143;11.296;11.471;11.644;11.802;11.917;11.923;11.623;10.234;-9999;-9999;
+5000;9.8107;9.8322;9.8683;9.9288;10.006;10.091;10.192;10.316;10.454;10.58;10.724;10.889;11.054;11.207;11.322;11.344;11.11;10.02;-9999;-9999;
+5500;9.3118;9.3254;9.3625;9.4174;9.4935;9.5741;9.6707;9.7896;9.9194;10.039;10.171;10.331;10.488;10.634;10.749;10.784;10.605;9.7598;-9999;-9999;
+6000;8.8277;8.8407;8.8756;8.9271;8.9986;9.0743;9.1648;9.2768;9.4015;9.5161;9.6431;9.7944;9.9437;10.085;10.197;10.243;10.109;9.4512;-9999;-9999;
+6500;8.3648;8.3755;8.4082;8.4565;8.5236;8.5946;8.6794;8.7847;8.9024;9.0105;9.1294;9.2747;9.4186;9.5561;9.6675;9.7215;9.63;9.1167;-9999;-9999;
+7000;7.9222;7.9234;7.9579;8.0052;8.068;8.1344;8.2138;8.3129;8.4239;8.5258;8.6404;8.775;8.9112;9.0426;9.1537;9.2156;9.1561;8.7546;-9999;-9999;
+7500;7.4907;7.5009;7.5297;7.5722;7.6313;7.6932;7.7677;7.8607;7.9654;8.0614;8.1693;8.2961;8.425;8.5505;8.6589;8.7255;8.6907;8.3909;-9999;-9999;
+8000;7.0789;7.0906;7.1176;7.1574;7.2127;7.2705;7.3403;7.4277;7.5262;7.6167;7.7181;7.8377;7.9597;8.0793;8.1846;8.2541;8.2395;8.0098;7.235;-9999;
+8500;6.6862;6.6975;6.7228;6.76;6.8116;6.8658;6.9311;7.0131;7.1059;7.1912;7.2865;7.3991;7.5144;7.628;7.7299;7.8016;7.8033;7.6308;6.9681;-9999;
+9000;6.3119;6.3212;6.3447;6.3794;6.4278;6.4786;6.5397;6.6167;6.7039;6.7843;6.8737;6.9793;7.0883;7.1963;7.2945;7.3673;7.3821;7.256;6.7571;-9999;
+9500;5.9552;5.9611;5.9831;6.0156;6.0608;6.1083;6.1654;6.2376;6.3195;6.3951;6.4789;6.5778;6.681;6.7835;6.8778;6.9511;6.9762;6.8874;6.5149;-9999;
+10000;5.6155;5.6162;5.6378;5.6675;5.7098;5.7542;5.8076;5.8751;5.9521;6.0234;6.1019;6.1943;6.2918;6.389;6.4794;6.5524;6.5857;6.5267;6.2524;-9999;
+10500;5.2809;5.2875;5.3066;5.335;5.3744;5.416;5.4658;5.529;5.601;5.6686;5.742;5.8281;5.9202;6.0121;6.0987;6.1708;6.2107;6.1753;5.9799;-9999;
+11000;4.9632;4.973;4.9908;5.0174;5.0542;5.093;5.1396;5.1984;5.2658;5.3299;5.3984;5.4787;5.5656;5.6525;5.7353;5.806;5.8502;5.8365;5.6912;-9999;
+11500;4.5796;4.5848;4.6013;4.6257;4.6598;4.6956;4.7365;4.793;4.8553;4.9143;4.9777;5.0519;5.132;5.212;5.288;5.3525;5.3919;5.3767;5.2355;-9999;
+12000;4.2216;4.2268;4.2419;4.2645;4.296;4.3291;4.3669;4.4191;4.4767;4.5311;4.5896;4.6582;4.732;4.8058;4.8756;4.9343;4.9696;4.953;4.8158;-9999;
+12500;3.8915;3.8966;3.9106;3.9314;3.9605;3.9911;4.0261;4.0743;4.1275;4.1776;4.2317;4.2951;4.3632;4.4311;4.4953;4.5489;4.5801;4.5599;4.4296;-9999;
+13000;3.5877;3.5921;3.605;3.6242;3.6511;3.6794;3.7118;3.7563;3.8055;3.8516;3.9016;3.9603;4.023;4.0856;4.1445;4.1934;4.2211;4.2001;4.0739;-9999;
+13500;3.3075;3.3113;3.3233;3.341;3.3658;3.3919;3.4219;3.463;3.5085;3.551;3.5972;3.6515;3.7093;3.767;3.8211;3.8657;3.8902;3.8686;3.7422;-9999;
+14000;3.0486;3.0524;3.0634;3.0797;3.1028;3.1268;3.1545;3.1926;3.2346;3.2738;3.3165;3.3667;3.42;3.4731;3.5228;3.5635;3.5851;3.5631;3.4405;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;15.139;15.171;15.248;15.351;15.51;15.665;15.854;16.077;16.292;16.506;16.742;16.967;17.139;17.174;16.77;14.487;-9999;-9999;-9999;-9999;
+500;14.45;14.453;14.545;14.643;14.791;14.938;15.114;15.324;15.528;15.732;15.958;16.176;16.349;16.392;16.081;14.286;-9999;-9999;-9999;-9999;
+1000;13.786;13.801;13.868;13.961;14.1;14.238;14.404;14.603;14.797;14.988;15.202;15.414;15.587;15.646;15.406;13.985;-9999;-9999;-9999;-9999;
+1500;13.127;13.152;13.215;13.304;13.434;13.565;13.721;13.909;14.094;14.275;14.478;14.68;14.851;14.925;14.749;13.61;-9999;-9999;-9999;-9999;
+2000;12.492;12.523;12.582;12.665;12.788;12.911;13.059;13.239;13.417;13.589;13.782;13.977;14.143;14.226;14.1;13.197;-9999;-9999;-9999;-9999;
+2500;11.896;11.918;11.972;12.051;12.166;12.283;12.421;12.591;12.76;12.923;13.109;13.298;13.462;13.552;13.462;12.746;-9999;-9999;-9999;-9999;
+3000;11.323;11.336;11.387;11.466;11.569;11.679;11.808;11.968;12.129;12.283;12.46;12.641;12.801;12.9;12.842;12.269;-9999;-9999;-9999;-9999;
+3500;10.757;10.776;10.824;10.898;10.995;11.098;11.219;11.37;11.523;11.669;11.835;12.009;12.165;12.266;12.236;11.772;-9999;-9999;-9999;-9999;
+4000;10.221;10.239;10.283;10.352;10.444;10.54;10.654;10.796;10.941;11.079;11.236;11.402;11.553;11.657;11.648;11.273;-9999;-9999;-9999;-9999;
+4500;9.707;9.7224;9.7638;9.8285;9.9144;10.004;10.111;10.245;10.383;10.513;10.661;10.82;10.965;11.07;11.079;10.778;9.2284;-9999;-9999;-9999;
+5000;9.2055;9.2215;9.26;9.3218;9.4026;9.4886;9.5892;9.717;9.8471;9.9694;10.11;10.261;10.401;10.506;10.528;10.29;9.0959;-9999;-9999;-9999;
+5500;8.7259;8.7406;8.7761;8.8338;8.9102;8.99;9.0839;9.2053;9.33;9.4469;9.5811;9.7247;9.8592;9.9636;9.9919;9.8159;8.8863;-9999;-9999;-9999;
+6000;8.2674;8.2794;8.3165;8.3656;8.4376;8.5122;8.5997;8.7142;8.8322;8.9422;9.0686;9.2071;9.3381;9.4425;9.4808;9.3502;8.6238;-9999;-9999;-9999;
+6500;7.8291;7.837;7.8708;7.9173;7.9847;8.0545;8.1361;8.2439;8.3554;8.4588;8.5777;8.7091;8.8346;8.9376;8.9845;8.8978;8.3218;-9999;-9999;-9999;
+7000;7.401;7.4129;7.444;7.4878;7.5511;7.6163;7.6959;7.7938;7.8989;7.9961;8.1079;8.2325;8.3524;8.4531;8.5059;8.4497;8.0026;-9999;-9999;-9999;
+7500;6.9927;7.0065;7.0353;7.0767;7.1358;7.1968;7.2713;7.3631;7.4623;7.5536;7.6586;7.7765;7.8908;7.9891;8.0458;8.0154;7.6665;-9999;-9999;-9999;
+8000;6.6076;6.6179;6.6445;6.6834;6.7387;6.7957;6.8652;6.9512;7.0447;7.1305;7.2289;7.3405;7.4491;7.5446;7.6076;7.5947;7.3244;-9999;-9999;-9999;
+8500;6.2404;6.2462;6.271;6.3074;6.3591;6.4121;6.4771;6.5576;6.6456;6.7262;6.8184;6.9237;7.0269;7.1214;7.1904;7.1887;6.9851;6.0123;-9999;-9999;
+9000;5.8822;5.8907;5.9139;5.9479;5.9962;6.0457;6.1062;6.1816;6.2643;6.3399;6.4263;6.5272;6.6266;6.7187;6.786;6.797;6.6419;5.9341;-9999;-9999;
+9500;5.5412;5.5509;5.5727;5.6044;5.6495;5.6956;5.7521;5.8233;5.9014;5.9733;6.0538;6.1505;6.2449;6.3326;6.3999;6.4194;6.3041;5.7581;-9999;-9999;
+10000;5.2193;5.2266;5.247;5.2765;5.3197;5.3636;5.417;5.4835;5.5572;5.6249;5.7;5.7907;5.8799;5.9636;6.0302;6.0554;5.9733;5.561;-9999;-9999;
+10500;4.9132;4.92;4.939;4.9669;5.0065;5.0474;5.0972;5.1594;5.2285;5.292;5.3622;5.4473;5.5314;5.6112;5.6766;5.7072;5.6507;5.3437;-9999;-9999;
+11000;4.6207;4.6269;4.6447;4.6707;4.7076;4.7457;4.7921;4.8501;4.9149;4.9743;5.0387;5.1197;5.1991;5.275;5.3387;5.3735;5.3372;5.1058;-9999;-9999;
+11500;4.2598;4.2658;4.2822;4.3062;4.3403;4.3755;4.4184;4.472;4.5318;4.5867;4.6465;4.721;4.7941;4.8639;4.9221;4.9531;4.9169;4.6941;-9999;-9999;
+12000;3.9271;3.9328;3.9479;3.97;4.0017;4.0341;4.0719;4.1232;4.1786;4.2292;4.2849;4.3533;4.4207;4.4848;4.538;4.5654;4.5296;4.3151;-9999;-9999;
+12500;3.6203;3.6257;3.6397;3.6603;3.6893;3.7193;3.7543;3.8016;3.8528;3.8996;3.9513;4.0142;4.0763;4.1353;4.1839;4.2081;4.1726;3.9662;-9999;-9999;
+13000;3.3375;3.3432;3.3559;3.3745;3.4013;3.4289;3.4605;3.5052;3.5524;3.5956;3.6434;3.7014;3.7587;3.813;3.8573;3.8786;3.8436;3.6449;-9999;-9999;
+13500;3.0768;3.0834;3.095;3.1122;3.137;3.1619;3.1913;3.2318;3.2753;3.3153;3.3595;3.4131;3.4659;3.5158;3.5562;3.5749;3.5405;3.3493;-9999;-9999;
+14000;2.8364;2.8437;2.8545;2.8703;2.8932;2.9162;2.9434;2.9804;3.0203;3.0567;3.0966;3.1471;3.1958;3.2417;3.2786;3.2949;3.2611;3.0741;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;14.728;14.763;14.842;14.947;15.112;15.273;15.468;15.692;15.898;16.103;16.336;16.536;16.654;16.562;15.722;-9999;-9999;-9999;-9999;-9999;
+500;14.054;14.059;14.152;14.252;14.406;14.557;14.739;14.95;15.147;15.343;15.566;15.762;15.886;15.829;15.145;-9999;-9999;-9999;-9999;-9999;
+1000;13.405;13.42;13.488;13.582;13.727;13.869;14.04;14.24;14.427;14.613;14.824;15.015;15.145;15.118;14.57;14.749;-9999;-9999;-9999;-9999;
+1500;12.758;12.783;12.847;12.937;13.073;13.208;13.368;13.558;13.736;13.913;14.113;14.297;14.43;14.429;13.987;-9999;-9999;-9999;-9999;-9999;
+2000;12.136;12.167;12.227;12.312;12.439;12.566;12.718;12.898;13.069;13.24;13.431;13.608;13.741;13.759;13.408;11.48;-9999;-9999;-9999;-9999;
+2500;11.553;11.575;11.631;11.718;11.83;11.949;12.092;12.262;12.425;12.587;12.77;12.943;13.078;13.111;12.829;11.305;-9999;-9999;-9999;-9999;
+3000;10.986;11.006;11.058;11.14;11.245;11.357;11.49;11.651;11.806;11.96;12.133;12.3;12.434;12.475;12.262;11.047;-9999;-9999;-9999;-9999;
+3500;10.442;10.46;10.508;10.584;10.683;10.788;10.913;11.065;11.212;11.358;11.522;11.682;11.815;11.866;11.706;10.72;-9999;-9999;-9999;-9999;
+4000;9.9219;9.9243;9.9791;10.051;10.143;10.242;10.359;10.503;10.642;10.78;10.935;11.089;11.219;11.279;11.159;10.36;-9999;-9999;-9999;-9999;
+4500;9.4112;9.4284;9.4705;9.538;9.6263;9.7183;9.8276;9.9629;10.096;10.225;10.372;10.52;10.647;10.713;10.627;9.9845;-9999;-9999;-9999;-9999;
+5000;8.9226;8.9393;8.9784;9.0415;9.1246;9.2117;9.3151;9.4441;9.5711;9.6933;9.8325;9.9741;10.098;10.168;10.11;9.5913;-9999;-9999;-9999;-9999;
+5500;8.4551;8.4702;8.5066;8.5655;8.6432;8.7248;8.8214;8.9429;9.0638;9.1801;9.3131;9.4501;9.5703;9.6445;9.6088;9.1922;-9999;-9999;-9999;-9999;
+6000;8.0065;8.0206;8.0543;8.1093;8.1824;8.2585;8.3489;8.463;8.5773;8.6867;8.8121;8.9429;9.0608;9.139;9.1227;8.7955;-9999;-9999;-9999;-9999;
+6500;7.578;7.5899;7.6211;7.6724;7.741;7.8118;7.8963;8.0034;8.1116;8.2145;8.3326;8.4572;8.5709;8.6506;8.6495;8.3897;-9999;-9999;-9999;-9999;
+7000;7.1687;7.1702;7.2059;7.2541;7.3184;7.3845;7.4634;7.5639;7.6661;7.7627;7.8738;7.9924;8.1018;8.1819;8.1931;7.9897;6.9606;-9999;-9999;-9999;
+7500;6.7711;6.7827;6.8132;6.8538;6.9141;6.9757;7.0494;7.1435;7.24;7.3307;7.4351;7.5478;7.6527;7.7325;7.7499;7.597;6.8149;-9999;-9999;-9999;
+8000;6.3921;6.405;6.4328;6.4711;6.5274;6.5848;6.6536;6.7417;6.8328;6.9178;7.0158;7.1226;7.2231;7.3021;7.3277;7.221;6.6136;-9999;-9999;-9999;
+8500;6.0309;6.0437;6.0692;6.1052;6.1579;6.2114;6.2752;6.3579;6.4436;6.5234;6.6152;6.7163;6.8123;6.89;6.9223;6.8418;6.3739;-9999;-9999;-9999;
+9000;5.6869;5.6983;5.7218;5.7558;5.8049;5.8546;5.9138;5.9914;6.0721;6.1468;6.2327;6.3283;6.4198;6.4959;6.5332;6.4831;6.1218;-9999;-9999;-9999;
+9500;5.3601;5.3684;5.3903;5.4219;5.4677;5.514;5.5689;5.6416;5.7175;5.7874;5.8678;5.958;6.045;6.1192;6.1601;6.1313;5.8533;-9999;-9999;-9999;
+10000;5.049;5.0534;5.0738;5.1033;5.1459;5.189;5.24;5.3079;5.3792;5.4446;5.5197;5.6048;5.6873;5.7592;5.8029;5.7913;5.5791;-9999;-9999;-9999;
+10500;4.746;4.7529;4.7719;4.7994;4.839;4.8791;4.9264;4.9898;5.0567;5.1179;5.1881;5.2681;5.3463;5.4156;5.4636;5.4633;5.3064;4.5425;-9999;-9999;
+11000;4.4583;4.4663;4.484;4.5096;4.5465;4.5837;4.6276;4.6867;4.7495;4.8067;4.8721;4.9474;5.0213;5.0898;5.1408;5.148;5.0306;4.475;-9999;-9999;
+11500;4.1135;4.1197;4.136;4.1595;4.1937;4.2281;4.2687;4.3233;4.3813;4.4341;4.4945;4.564;4.632;4.6931;4.7384;4.7445;4.6317;4.0952;-9999;-9999;
+12000;3.7953;3.8001;3.815;3.8368;3.8684;3.9001;3.9378;3.9882;4.0417;4.0904;4.1462;4.2103;4.273;4.3289;4.3685;4.3725;4.2641;-9999;-9999;-9999;
+12500;3.5001;3.505;3.519;3.539;3.5684;3.5976;3.6325;3.679;3.7284;3.7734;3.825;3.8841;3.9418;3.9931;4.0272;4.0297;3.9256;3.4523;-9999;-9999;
+13000;3.2279;3.2329;3.246;3.2645;3.2916;3.3186;3.351;3.3939;3.4395;3.481;3.5287;3.5832;3.6364;3.6833;3.714;3.7137;3.6137;-9999;-9999;-9999;
+13500;2.9768;2.9821;2.9942;3.0112;3.0364;3.0612;3.0913;3.1309;3.173;3.2113;3.2554;3.3057;3.3546;3.3976;3.4251;3.4224;3.3264;2.8085;-9999;-9999;
+14000;2.747;2.7509;2.7619;2.7777;2.801;2.8239;2.8517;2.8883;2.9271;2.9626;3.0033;3.0497;3.0947;3.1341;3.1588;3.1538;3.0618;2.5914;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;14.344;14.349;14.466;14.575;14.75;14.917;15.119;15.344;15.544;15.753;15.959;16.124;16.176;15.873;14.16;-9999;-9999;-9999;-9999;-9999;
+500;13.684;13.689;13.788;13.89;14.053;14.21;14.399;14.611;14.801;15;15.2;15.365;15.42;15.193;13.807;-9999;-9999;-9999;-9999;-9999;
+1000;13.049;13.053;13.135;13.232;13.384;13.531;13.709;13.91;14.09;14.279;14.47;14.634;14.703;14.529;13.409;-9999;-9999;-9999;-9999;-9999;
+1500;12.411;12.437;12.505;12.596;12.739;12.879;13.047;13.237;13.408;13.588;13.771;13.931;14.01;13.882;12.967;-9999;-9999;-9999;-9999;-9999;
+2000;11.798;11.834;11.897;11.983;12.116;12.247;12.405;12.586;12.75;12.922;13.1;13.256;13.342;13.25;12.514;-9999;-9999;-9999;-9999;-9999;
+2500;11.23;11.254;11.312;11.393;11.518;11.641;11.789;11.96;12.116;12.279;12.451;12.604;12.698;12.636;12.033;-9999;-9999;-9999;-9999;-9999;
+3000;10.685;10.696;10.751;10.827;10.944;11.059;11.197;11.359;11.507;11.655;11.826;11.976;12.073;12.037;11.547;-9999;-9999;-9999;-9999;-9999;
+3500;10.141;10.161;10.212;10.291;10.393;10.501;10.63;10.783;10.924;11.064;11.227;11.372;11.472;11.456;11.062;-9999;-9999;-9999;-9999;-9999;
+4000;9.6286;9.6475;9.6947;9.7684;9.8638;9.9651;10.086;10.23;10.365;10.498;10.652;10.792;10.893;10.895;10.576;-9999;-9999;-9999;-9999;-9999;
+4500;9.1327;9.1506;9.1949;9.2647;9.3546;9.4507;9.5647;9.7005;9.8279;9.9547;10.101;10.235;10.337;10.352;10.097;8.6805;-9999;-9999;-9999;-9999;
+5000;8.6586;8.6731;8.7142;8.7791;8.8636;8.9534;9.0605;9.1898;9.3121;9.4341;9.5718;9.7014;9.8027;9.8234;9.627;8.5043;-9999;-9999;-9999;-9999;
+5500;8.2055;8.2153;8.2533;8.3139;8.3929;8.4769;8.577;8.6987;8.8146;8.9302;9.0615;9.1876;9.2895;9.3207;9.168;8.2843;-9999;-9999;-9999;-9999;
+6000;7.7621;7.7767;7.8119;7.8684;7.9436;8.0211;8.1142;8.2287;8.3386;8.448;8.5715;8.6925;8.7927;8.8326;8.7215;8.0036;-9999;-9999;-9999;-9999;
+6500;7.339;7.3567;7.3893;7.4419;7.5123;7.5846;7.6713;7.779;7.8832;7.9859;8.1025;8.2183;8.3164;8.3626;8.2817;7.7147;-9999;-9999;-9999;-9999;
+7000;6.9421;6.9548;6.9849;7.0338;7.0997;7.1671;7.2477;7.349;7.4476;7.5439;7.6539;7.7645;7.8602;7.9112;7.8542;7.4041;-9999;-9999;-9999;-9999;
+7500;6.5584;6.5702;6.5981;6.6436;6.7052;6.7679;6.843;6.938;7.0312;7.1215;7.225;7.3306;7.4234;7.4779;7.4408;7.0846;-9999;-9999;-9999;-9999;
+8000;6.1926;6.2025;6.2282;6.2706;6.328;6.3864;6.4564;6.5453;6.6333;6.718;6.8152;6.9157;7.0055;7.0625;7.0417;6.7611;-9999;-9999;-9999;-9999;
+8500;5.844;5.8452;5.8745;5.9141;5.9678;6.022;6.0871;6.1703;6.2533;6.3326;6.4239;6.5194;6.6059;6.6644;6.657;6.4414;-9999;-9999;-9999;-9999;
+9000;5.5117;5.5153;5.5402;5.5735;5.6237;5.6742;5.7347;5.8124;5.8907;5.9648;6.0504;6.1411;6.2241;6.2834;6.2868;6.1196;5.2549;-9999;-9999;-9999;
+9500;5.1858;5.1947;5.2172;5.2486;5.2954;5.3422;5.3985;5.4711;5.5447;5.614;5.6941;5.7801;5.8596;5.919;5.9312;5.8035;5.1548;-9999;-9999;-9999;
+10000;4.8804;4.8885;4.9092;4.9387;4.9822;5.0256;5.0779;5.1456;5.2148;5.2797;5.3545;5.4357;5.5118;5.5707;5.5871;5.4944;5.0059;-9999;-9999;-9999;
+10500;4.5902;4.5965;4.6157;4.6432;4.6836;4.7239;4.7725;4.8355;4.9005;4.9611;5.031;5.1077;5.1801;5.238;5.2601;5.1933;4.8233;-9999;-9999;-9999;
+11000;4.3145;4.3153;4.3343;4.3616;4.3991;4.4364;4.4816;4.5402;4.6012;4.6577;4.7229;4.7952;4.8641;4.9208;4.9473;4.9046;4.6243;-9999;-9999;-9999;
+11500;3.9779;3.9833;4.0001;4.0237;4.0586;4.093;4.1348;4.189;4.2453;4.2974;4.3577;4.4243;4.4877;4.5394;4.5626;4.5194;4.2504;-9999;-9999;-9999;
+12000;3.6695;3.6752;3.6904;3.7122;3.7445;3.7763;3.8148;3.865;3.9169;3.9651;4.0208;4.0822;4.1405;4.1877;4.2078;4.1651;3.904;-9999;-9999;-9999;
+12500;3.3849;3.3912;3.4047;3.4248;3.4548;3.4841;3.5197;3.5662;3.6141;3.6585;3.7099;3.7666;3.8202;3.8632;3.8807;3.8357;3.5871;-9999;-9999;-9999;
+13000;3.1238;3.1282;3.1412;3.1598;3.1875;3.2145;3.2474;3.2905;3.3346;3.3757;3.4232;3.4755;3.5247;3.564;3.579;3.5347;3.2951;-9999;-9999;-9999;
+13500;2.8828;2.8858;2.8981;2.9152;2.9409;2.9659;2.9962;3.0361;3.0769;3.1148;3.1587;3.2069;3.2522;3.2879;3.3008;3.2573;3.0264;-9999;-9999;-9999;
+14000;2.6587;2.6628;2.6739;2.6897;2.7135;2.7365;2.7645;2.8015;2.8391;2.8741;2.9147;2.9591;3.0007;3.0333;3.0441;3.0016;2.7792;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.994;14.04;14.143;14.241;14.428;14.602;14.804;15.036;15.232;15.43;15.612;15.725;15.665;15.011;14.215;-9999;-9999;-9999;-9999;-9999;
+500;13.347;13.352;13.459;13.565;13.738;13.901;14.092;14.309;14.495;14.684;14.864;14.984;14.952;14.414;13.841;-9999;-9999;-9999;-9999;-9999;
+1000;12.725;12.73;12.815;12.914;13.076;13.229;13.409;13.615;13.791;13.971;14.144;14.268;14.262;13.823;13.482;-9999;-9999;-9999;-9999;-9999;
+1500;12.093;12.121;12.194;12.287;12.438;12.583;12.759;12.949;13.116;13.288;13.455;13.58;13.593;13.251;11.32;-9999;-9999;-9999;-9999;-9999;
+2000;11.487;11.527;11.595;11.683;11.824;11.96;12.124;12.306;12.465;12.631;12.794;12.92;12.948;12.67;11.13;-9999;-9999;-9999;-9999;-9999;
+2500;10.933;10.957;11.02;11.103;11.235;11.362;11.516;11.688;11.839;11.997;12.155;12.282;12.314;12.102;10.867;-9999;-9999;-9999;-9999;-9999;
+3000;10.402;10.41;10.468;10.546;10.669;10.789;10.933;11.095;11.239;11.39;11.541;11.667;11.71;11.544;10.533;-9999;-9999;-9999;-9999;-9999;
+3500;9.8638;9.8849;9.9389;10.012;10.127;10.239;10.374;10.527;10.663;10.807;10.952;11.076;11.128;11;10.177;-9999;-9999;-9999;-9999;-9999;
+4000;9.3603;9.3804;9.4309;9.5003;9.607;9.7118;9.8376;9.9824;10.112;10.248;10.387;10.509;10.568;10.472;9.7961;-9999;-9999;-9999;-9999;-9999;
+4500;8.8786;8.8928;8.9397;9.0118;9.1055;9.2045;9.3229;9.4605;9.583;9.7121;9.846;9.9643;10.03;9.9605;9.4081;-9999;-9999;-9999;-9999;-9999;
+5000;8.408;8.4255;8.4689;8.5361;8.6238;8.7162;8.827;8.957;9.0741;9.1974;9.327;9.4422;9.5117;9.4656;9.018;-9999;-9999;-9999;-9999;-9999;
+5500;7.9584;7.9779;8.018;8.0806;8.1626;8.249;8.3523;8.4747;8.5854;8.7019;8.8259;8.9387;9.0122;8.986;8.6231;8.6565;-9999;-9999;-9999;-9999;
+6000;7.5339;7.5492;7.5863;7.6446;7.7212;7.8018;7.8982;8.0133;8.1183;8.2279;8.3462;8.4551;8.5304;8.5204;8.2325;8.4047;-9999;-9999;-9999;-9999;
+6500;7.1247;7.1389;7.1732;7.2275;7.2989;7.3742;7.464;7.5721;7.6716;7.7707;7.887;7.992;8.0683;8.0715;7.8417;-9999;-9999;-9999;-9999;-9999;
+7000;6.7345;6.7362;6.7777;6.8286;6.8951;6.9653;7.0489;7.1505;7.2447;7.3383;7.448;7.5489;7.6254;7.6394;7.4581;6.4371;-9999;-9999;-9999;-9999;
+7500;6.3624;6.3639;6.3999;6.4472;6.5107;6.5747;6.6524;6.7476;6.8368;6.9253;7.0285;7.1251;7.2012;7.2191;7.0831;6.3002;-9999;-9999;-9999;-9999;
+8000;6.0076;6.0122;6.0392;6.0827;6.142;6.2015;6.2737;6.363;6.4473;6.5309;6.6276;6.7201;6.7953;6.8204;6.7212;6.1108;-9999;-9999;-9999;-9999;
+8500;5.6589;5.6695;5.6943;5.7347;5.7899;5.8453;5.9122;5.9959;6.0755;6.1544;6.2448;6.3333;6.407;6.4379;6.3641;5.882;-9999;-9999;-9999;-9999;
+9000;5.3325;5.3424;5.3652;5.4026;5.454;5.5054;5.5673;5.6457;5.721;5.795;5.8796;5.964;6.0359;6.0713;6.0185;5.6418;-9999;-9999;-9999;-9999;
+9500;5.0221;5.0301;5.051;5.0857;5.1336;5.1813;5.2387;5.312;5.3829;5.452;5.5314;5.6116;5.6815;5.7203;5.6847;5.3905;-9999;-9999;-9999;-9999;
+10000;4.7268;4.7277;4.7512;4.7836;4.828;4.8722;4.9255;4.9939;5.0607;5.1252;5.1995;5.2758;5.3433;5.3845;5.363;5.1342;-9999;-9999;-9999;-9999;
+10500;4.4404;4.4483;4.4684;4.4956;4.537;4.5779;4.6273;4.691;4.7538;4.814;4.8835;4.9558;5.0208;5.0634;5.0534;4.8767;-9999;-9999;-9999;-9999;
+11000;4.1687;4.1776;4.1959;4.2214;4.2599;4.2977;4.3434;4.4027;4.4617;4.5179;4.5827;4.6512;4.7135;4.757;4.7563;4.6232;3.9317;-9999;-9999;-9999;
+11500;3.8484;3.8548;3.8717;3.8953;3.931;3.9659;4.0082;4.063;4.1174;4.1693;4.2292;4.2923;4.3494;4.3888;4.3864;4.2585;3.5962;-9999;-9999;-9999;
+12000;3.5527;3.5534;3.571;3.5946;3.6276;3.6598;3.6989;3.7496;3.7998;3.8476;3.903;3.9612;4.0136;4.0492;4.0452;3.9225;-9999;-9999;-9999;-9999;
+12500;3.2797;3.2804;3.2953;3.3171;3.3477;3.3774;3.4135;3.4605;3.5067;3.5509;3.6021;3.6556;3.7037;3.7358;3.7306;3.6128;-9999;-9999;-9999;-9999;
+13000;3.0238;3.0291;3.0423;3.0609;3.0894;3.1168;3.1502;3.1937;3.2363;3.2771;3.3245;3.3738;3.4179;3.4467;3.4405;3.3273;-9999;-9999;-9999;-9999;
+13500;2.7879;2.7954;2.8075;2.8247;2.8512;2.8764;2.9072;2.9475;2.9868;3.0246;3.0684;3.1139;3.1543;3.1801;3.1729;3.0627;-9999;-9999;-9999;-9999;
+14000;2.5753;2.5796;2.5909;2.6067;2.6313;2.6545;2.6831;2.7204;2.7568;2.7917;2.8322;2.8741;2.9112;2.9344;2.9262;2.8203;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.684;13.741;13.851;13.954;14.154;14.338;14.546;14.783;14.974;15.152;15.292;15.319;15.072;13.773;-9999;-9999;-9999;-9999;-9999;-9999;
+500;13.05;13.056;13.186;13.282;13.467;13.639;13.833;14.058;14.242;14.415;14.559;14.602;14.409;13.334;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;12.441;12.45;12.546;12.636;12.809;12.971;13.154;13.364;13.538;13.707;13.852;13.909;13.763;12.875;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.81;11.814;11.917;12.014;12.176;12.328;12.501;12.699;12.865;13.028;13.171;13.242;13.134;12.405;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;11.205;11.253;11.326;11.417;11.567;11.71;11.873;12.06;12.217;12.375;12.516;12.595;12.523;11.924;11.098;-9999;-9999;-9999;-9999;-9999;
+2500;10.665;10.691;10.758;10.844;10.984;11.118;11.272;11.448;11.596;11.747;11.886;11.97;11.925;11.434;10.864;-9999;-9999;-9999;-9999;-9999;
+3000;10.127;10.152;10.214;10.295;10.425;10.55;10.695;10.861;11.001;11.145;11.28;11.369;11.345;10.94;10.54;-9999;-9999;-9999;-9999;-9999;
+3500;9.6125;9.6161;9.6914;9.7678;9.8894;10.006;10.147;10.299;10.432;10.568;10.7;10.791;10.786;10.453;10.221;-9999;-9999;-9999;-9999;-9999;
+4000;9.1201;9.1365;9.1906;9.2623;9.376;9.4852;9.617;9.761;9.8859;10.017;10.143;10.237;10.246;9.9833;8.5058;-9999;-9999;-9999;-9999;-9999;
+4500;8.6377;8.6576;8.7078;8.775;8.8808;8.9836;9.1077;9.2451;9.3643;9.4886;9.6107;9.7049;9.726;9.5131;8.3327;-9999;-9999;-9999;-9999;-9999;
+5000;8.177;8.199;8.2453;8.3153;8.407;8.5029;8.6187;8.7485;8.8614;8.9808;9.0995;9.1945;9.2173;9.056;8.1081;-9999;-9999;-9999;-9999;-9999;
+5500;7.7427;7.76;7.8027;7.8679;7.9535;8.043;8.1507;8.2732;8.3802;8.4936;8.6075;8.7016;8.7339;8.6079;7.8432;-9999;-9999;-9999;-9999;-9999;
+6000;7.3238;7.3398;7.3793;7.4399;7.5197;7.6032;7.7035;7.8189;7.9202;8.0276;8.1367;8.2294;8.2687;8.1728;7.5569;-9999;-9999;-9999;-9999;-9999;
+6500;6.9241;6.9262;6.9739;7.0307;7.105;7.1828;7.2761;7.3847;7.4805;7.5822;7.6866;7.7772;7.822;7.7515;7.2528;-9999;-9999;-9999;-9999;-9999;
+7000;6.5429;6.5448;6.5869;6.6395;6.7088;6.7812;6.868;6.97;7.0604;7.1564;7.2562;7.3445;7.3935;7.3442;6.944;-9999;-9999;-9999;-9999;-9999;
+7500;6.1735;6.1864;6.2173;6.2658;6.3303;6.3977;6.4783;6.5741;6.6593;6.7498;6.8451;6.9306;6.9828;6.9512;6.631;-9999;-9999;-9999;-9999;-9999;
+8000;5.8219;5.8355;5.864;5.909;5.969;6.0317;6.1065;6.1963;6.2766;6.3617;6.4526;6.5352;6.5894;6.5724;6.3176;6.3777;-9999;-9999;-9999;-9999;
+8500;5.4872;5.5006;5.5268;5.5685;5.6258;5.6826;5.7519;5.836;5.9118;5.9915;6.0779;6.1574;6.2129;6.2079;6.0084;6.1548;-9999;-9999;-9999;-9999;
+9000;5.1689;5.1811;5.2051;5.2437;5.2971;5.3497;5.4139;5.4925;5.5642;5.6353;5.7204;5.7968;5.8529;5.8577;5.7012;4.8121;-9999;-9999;-9999;-9999;
+9500;4.8663;4.8763;4.8983;4.934;4.9837;5.0323;5.0918;5.1654;5.2329;5.2999;5.3797;5.4529;5.509;5.5216;5.3998;4.7415;-9999;-9999;-9999;-9999;
+10000;4.5787;4.5798;4.6056;4.6389;4.6849;4.73;4.7851;4.8537;4.9175;4.9805;5.0552;5.125;5.1806;5.1959;5.1101;4.5961;-9999;-9999;-9999;-9999;
+10500;4.3006;4.3088;4.3273;4.3578;4.4004;4.4422;4.493;4.5572;4.6173;4.6766;4.7461;4.8127;4.8674;4.8878;4.8237;4.4306;-9999;-9999;-9999;-9999;
+11000;4.0368;4.0452;4.0621;4.0903;4.1298;4.1684;4.2152;4.2751;4.3318;4.3874;4.452;4.5154;4.5688;4.5932;4.5472;4.2431;-9999;-9999;-9999;-9999;
+11500;3.7284;3.7334;3.7493;3.7752;3.812;3.8476;3.8908;3.9462;3.9984;4.0497;4.1096;4.1678;4.2166;4.238;4.1928;3.9007;-9999;-9999;-9999;-9999;
+12000;3.4437;3.4444;3.4605;3.4846;3.5187;3.5515;3.5914;3.6427;3.6908;3.7381;3.7936;3.8474;3.8919;3.9102;3.8661;3.5859;-9999;-9999;-9999;-9999;
+12500;3.175;3.181;3.1964;3.2162;3.248;3.2783;3.3152;3.3627;3.4072;3.4507;3.5023;3.5518;3.5924;3.608;3.5648;3.296;-9999;-9999;-9999;-9999;
+13000;2.9306;2.9362;2.9503;2.9687;2.9982;3.0261;3.0604;3.1045;3.1455;3.1856;3.2335;3.279;3.3161;3.3294;3.287;3.0291;-9999;-9999;-9999;-9999;
+13500;2.705;2.7103;2.7233;2.7403;2.7678;2.7934;2.8253;2.8663;2.9041;2.9409;2.9854;3.0272;3.0611;3.0725;3.0308;2.7833;-9999;-9999;-9999;-9999;
+14000;2.4968;2.5019;2.5138;2.5296;2.5552;2.5789;2.6095;2.6465;2.6812;2.7151;2.7563;2.7948;2.8258;2.8354;2.7946;2.557;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.429;13.435;13.594;13.698;13.918;14.115;14.325;14.562;14.745;14.895;14.983;14.912;14.356;12.92;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.787;12.793;12.919;13.033;13.235;13.42;13.617;13.841;14.016;14.162;14.259;14.216;13.753;11.572;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;12.163;12.169;12.289;12.396;12.582;12.756;12.942;13.154;13.32;13.462;13.562;13.543;13.161;11.391;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.561;11.598;11.695;11.783;11.955;12.118;12.295;12.495;12.654;12.793;12.895;12.894;12.582;11.143;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.988;10.993;11.096;11.193;11.354;11.507;11.673;11.863;12.014;12.15;12.255;12.258;12.016;10.828;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.438;10.461;10.534;10.623;10.774;10.917;11.075;11.256;11.4;11.533;11.638;11.655;11.461;10.468;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.8996;9.9037;9.9928;10.077;10.217;10.35;10.5;10.671;10.81;10.941;11.046;11.076;10.922;10.097;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.3848;9.4138;9.4764;9.555;9.6851;9.8081;9.9488;10.11;10.241;10.369;10.478;10.518;10.399;9.7132;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.8982;8.9017;8.9788;9.0536;9.1751;9.2904;9.422;9.5738;9.6982;9.8208;9.9284;9.9797;9.8915;9.322;8.5387;-9999;-9999;-9999;-9999;-9999;
+4500;8.4329;8.4488;8.5028;8.5724;8.6852;8.793;8.9168;9.0603;9.1785;9.2964;9.4022;9.4594;9.3979;8.9324;8.3207;-9999;-9999;-9999;-9999;-9999;
+5000;7.9772;7.997;8.0468;8.112;8.2168;8.3173;8.433;8.5681;8.6796;8.793;8.8971;8.9594;8.9192;8.5372;8.1113;-9999;-9999;-9999;-9999;-9999;
+5500;7.5424;7.5647;7.6106;7.6718;7.7689;7.8626;7.9765;8.0979;8.2029;8.3112;8.4126;8.4781;8.4553;8.1425;7.8463;-9999;-9999;-9999;-9999;-9999;
+6000;7.1342;7.1513;7.1937;7.2572;7.341;7.4282;7.5339;7.6486;7.7477;7.8508;7.9492;8.0169;8.0086;7.7543;7.593;-9999;-9999;-9999;-9999;-9999;
+6500;6.7447;6.7562;6.7952;6.8542;6.9322;7.0133;7.1113;7.2196;7.3132;7.4112;7.5062;7.5752;7.579;7.3804;6.2709;-9999;-9999;-9999;-9999;-9999;
+7000;6.3641;6.3787;6.4146;6.4693;6.5419;6.6173;6.7081;6.8103;6.8985;6.9916;7.0829;7.1525;7.158;7.0078;6.1358;-9999;-9999;-9999;-9999;-9999;
+7500;6.0015;6.0182;6.0512;6.1019;6.1694;6.2395;6.3237;6.4198;6.5029;6.5911;6.6787;6.7482;6.7626;6.645;5.9625;-9999;-9999;-9999;-9999;-9999;
+8000;5.6615;5.6741;5.7045;5.7514;5.8141;5.8792;5.9572;6.0474;6.1256;6.2091;6.293;6.3618;6.3835;6.2931;5.7446;-9999;-9999;-9999;-9999;-9999;
+8500;5.3379;5.3458;5.3737;5.4171;5.4753;5.5357;5.608;5.6925;5.7662;5.8449;5.925;5.9927;6.0202;5.9526;5.5142;-9999;-9999;-9999;-9999;-9999;
+9000;5.0221;5.0328;5.0584;5.0985;5.1525;5.2085;5.2755;5.3545;5.4238;5.498;5.5743;5.6404;5.6723;5.6238;5.2766;-9999;-9999;-9999;-9999;-9999;
+9500;4.7222;4.7345;4.7578;4.7949;4.845;4.8968;4.9588;5.0327;5.0978;5.1675;5.2402;5.3044;5.3397;5.3068;5.0322;-9999;-9999;-9999;-9999;-9999;
+10000;4.441;4.4502;4.4716;4.5059;4.5539;4.6003;4.6574;4.7265;4.7877;4.8529;4.9221;4.984;5.0218;5.0018;4.7856;-9999;-9999;-9999;-9999;-9999;
+10500;4.1741;4.1796;4.1992;4.2308;4.2752;4.3181;4.3709;4.4353;4.4926;4.5537;4.6194;4.679;4.7183;4.7088;4.5409;4.6436;-9999;-9999;-9999;-9999;
+11000;3.9143;3.9221;3.94;3.9691;4.0103;4.0498;4.0985;4.1585;4.2125;4.2693;4.3314;4.3886;4.4288;4.4234;4.2968;4.4256;-9999;-9999;-9999;-9999;
+11500;3.6146;3.621;3.6375;3.6644;3.7027;3.7391;3.7843;3.84;3.8898;3.9424;3.9997;4.0523;4.0888;4.0858;3.9599;4.0778;-9999;-9999;-9999;-9999;
+12000;3.3379;3.3387;3.3582;3.3832;3.4188;3.4523;3.4943;3.5462;3.592;3.6407;3.6935;3.7419;3.7749;3.7703;3.6492;3.7564;-9999;-9999;-9999;-9999;
+12500;3.0823;3.0868;3.1008;3.1237;3.157;3.1879;3.2268;3.275;3.3172;3.3622;3.4109;3.4553;3.4853;3.4792;3.3628;3.4581;-9999;-9999;-9999;-9999;
+13000;2.8442;2.8501;2.8629;2.8843;2.9153;2.944;2.9799;3.0247;3.0635;3.1051;3.15;3.1908;3.2179;3.2106;3.0988;-9999;-9999;-9999;-9999;-9999;
+13500;2.6245;2.6317;2.6435;2.6633;2.6924;2.7189;2.7521;2.7935;2.8294;2.8677;2.9091;2.9466;2.9711;2.9629;2.8555;2.9183;-9999;-9999;-9999;-9999;
+14000;2.4251;2.4302;2.4413;2.4595;2.4866;2.511;2.5418;2.5801;2.6131;2.6486;2.6867;2.7212;2.7433;2.7345;2.6312;2.6931;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.178;13.263;13.4;13.513;13.752;13.964;14.174;14.41;14.58;14.69;14.704;14.46;13.367;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.568;12.574;12.738;12.842;13.064;13.262;13.46;13.683;13.847;13.957;13.987;13.793;12.873;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.943;11.949;12.103;12.201;12.407;12.592;12.78;12.991;13.146;13.257;13.297;13.145;12.376;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.341;11.382;11.491;11.586;11.777;11.951;12.128;12.329;12.477;12.589;12.638;12.522;11.878;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.773;10.778;10.91;10.996;11.175;11.337;11.504;11.694;11.836;11.947;12.005;11.918;11.392;9.9968;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.228;10.256;10.349;10.432;10.598;10.749;10.907;11.087;11.223;11.333;11.397;11.336;10.896;9.7857;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.6999;9.704;9.8022;9.8922;10.046;10.187;10.337;10.506;10.636;10.745;10.814;10.775;10.406;8.6926;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.1944;9.2246;9.3043;9.3757;9.5185;9.6502;9.791;9.9511;10.075;10.182;10.254;10.234;9.9273;8.5398;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.7148;8.7184;8.802;8.8809;9.0141;9.1369;9.2695;9.4205;9.5388;9.6431;9.7183;9.7129;9.4597;8.3162;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;8.2562;8.2722;8.3307;8.4041;8.5285;8.6453;8.77;8.9128;9.0258;9.1275;9.2045;9.2121;9.0058;8.0555;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.803;7.8061;7.8777;7.9466;8.0619;8.1702;8.2894;8.4259;8.534;8.6329;8.7113;8.7299;8.5629;7.781;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.3707;7.3965;7.4463;7.5098;7.6164;7.7172;7.829;7.9574;8.0608;8.1592;8.2386;8.2659;8.1327;7.485;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.9693;6.972;7.033;7.0929;7.1913;7.285;7.3899;7.5104;7.608;7.7027;7.7836;7.8137;7.7165;7.1843;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.5864;6.5974;6.6397;6.6951;6.7857;6.8727;6.9711;7.0841;7.1761;7.267;7.3468;7.3839;7.3134;6.8801;6.2969;-9999;-9999;-9999;-9999;-9999;
+7000;6.2092;6.2249;6.2637;6.3216;6.399;6.4797;6.5719;6.6777;6.7643;6.8513;6.9296;6.9714;6.9208;6.568;6.1437;-9999;-9999;-9999;-9999;-9999;
+7500;5.8501;5.8695;5.9051;5.9586;6.0303;6.1052;6.1913;6.2905;6.3719;6.4549;6.5314;6.5766;6.5428;6.2558;5.945;-9999;-9999;-9999;-9999;-9999;
+8000;5.5171;5.5305;5.5632;5.6126;5.679;5.7484;5.8322;5.9218;5.9981;6.0772;6.1514;6.1992;6.1793;5.9472;5.7509;-9999;-9999;-9999;-9999;-9999;
+8500;5.2001;5.2074;5.2375;5.283;5.3444;5.4087;5.4862;5.5707;5.6423;5.7173;5.7892;5.8386;5.8305;5.644;5.5482;-9999;-9999;-9999;-9999;-9999;
+9000;4.8883;4.8997;4.9272;4.9691;5.026;5.0855;5.1569;5.2365;5.3037;5.3748;5.444;5.4944;5.4959;5.3518;4.576;-9999;-9999;-9999;-9999;-9999;
+9500;4.5923;4.6066;4.6317;4.6704;4.723;4.7779;4.8439;4.9186;4.9817;5.0489;5.1153;5.166;5.1753;5.0616;4.457;-9999;-9999;-9999;-9999;-9999;
+10000;4.3177;4.3275;4.3505;4.3862;4.4348;4.4854;4.5462;4.6164;4.6756;4.739;4.8024;4.8529;4.8644;4.7804;4.3048;-9999;-9999;-9999;-9999;-9999;
+10500;4.0572;4.0621;4.0831;4.116;4.1608;4.2075;4.2636;4.3292;4.3847;4.4444;4.5048;4.5547;4.5715;4.508;4.1359;-9999;-9999;-9999;-9999;-9999;
+11000;3.8015;3.8097;3.8288;3.8591;3.9027;3.9437;3.9952;4.0563;4.1084;4.1645;4.222;4.2708;4.2918;4.2454;3.9535;-9999;-9999;-9999;-9999;-9999;
+11500;3.509;3.5184;3.536;3.5643;3.6049;3.6429;3.6906;3.7472;3.7952;3.847;3.8999;3.9447;3.9632;3.9172;3.6381;-9999;-9999;-9999;-9999;-9999;
+12000;3.239;3.2497;3.2657;3.292;3.3301;3.3653;3.4093;3.4618;3.506;3.5537;3.6026;3.6436;3.6597;3.6145;3.3474;-9999;-9999;-9999;-9999;-9999;
+12500;2.9948;3.0015;3.0167;3.041;3.0765;3.1089;3.1496;3.1982;3.2389;3.283;3.328;3.3656;3.3796;3.3353;3.0797;-9999;-9999;-9999;-9999;-9999;
+13000;2.769;2.7698;2.7867;2.8092;2.8422;2.8721;2.9098;2.9548;2.9923;3.033;3.0744;3.1088;3.121;3.0776;2.8338;-9999;-9999;-9999;-9999;-9999;
+13500;2.556;2.5615;2.5744;2.5951;2.6259;2.6534;2.6882;2.7299;2.7645;2.802;2.8403;2.8717;2.8822;2.8398;2.6065;-9999;-9999;-9999;-9999;-9999;
+14000;2.3593;2.3665;2.3783;2.3974;2.4261;2.4515;2.4837;2.5222;2.5541;2.5888;2.624;2.6528;2.6618;2.6206;2.3971;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.086;13.143;13.296;13.414;13.675;13.904;14.108;14.336;14.484;14.527;14.368;13.621;11.68;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.433;12.438;12.598;12.73;12.972;13.188;13.38;13.595;13.74;13.802;13.734;13.106;11.434;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.798;11.804;11.954;12.078;12.304;12.505;12.688;12.892;13.031;13.1;13.068;12.697;11.156;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.188;11.237;11.359;11.456;11.666;11.854;12.029;12.222;12.357;12.429;12.414;12.107;10.895;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.618;10.623;10.752;10.861;11.056;11.231;11.399;11.583;11.713;11.799;11.781;11.534;10.508;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.073;10.103;10.193;10.293;10.474;10.637;10.796;10.972;11.098;11.184;11.18;10.979;10.107;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.5401;9.5443;9.6545;9.7502;9.9176;10.07;10.219;10.387;10.51;10.589;10.604;10.443;9.7056;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.0304;9.0344;9.142;9.2318;9.3874;9.5287;9.6698;9.8286;9.9449;10.026;10.051;9.9244;9.3027;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.555;8.5586;8.6528;8.7365;8.8806;9.0126;9.1459;9.2959;9.4071;9.489;9.5224;9.4243;8.9021;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;8.1005;8.1206;8.1863;8.2636;8.397;8.5198;8.6454;8.7875;8.8937;8.9757;9.0158;8.9425;8.505;7.4037;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.6548;7.6581;7.7385;7.8117;7.9353;8.0495;8.1679;8.302;8.4033;8.4847;8.5301;8.4778;8.1124;7.2392;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.2298;7.2328;7.3118;7.3804;7.4947;7.6008;7.7122;7.8388;7.9351;8.0154;8.0649;8.0305;7.7344;7.0459;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.8339;6.8367;6.9048;6.9687;7.0744;7.173;7.2776;7.3967;7.4884;7.5672;7.6198;7.6005;7.3558;6.2441;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.456;6.4692;6.5167;6.5759;6.6735;6.765;6.8633;6.9752;7.0623;7.1392;7.1941;7.1874;6.9869;6.0921;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;6.0812;6.0837;6.1417;6.1979;6.2889;6.3748;6.4682;6.5735;6.6561;6.7308;6.7872;6.7909;6.6283;5.8953;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.7249;5.7271;5.7851;5.8376;5.9214;6.001;6.0884;6.1884;6.2683;6.3412;6.3984;6.4108;6.2803;5.685;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.3949;5.397;5.4458;5.5001;5.5718;5.6455;5.7271;5.8207;5.896;5.9676;6.0271;6.0467;5.9435;5.4556;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;5.081;5.0898;5.1233;5.1728;5.2392;5.3073;5.3835;5.4711;5.5418;5.6106;5.6696;5.6917;5.6189;5.2225;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.7727;4.7855;4.816;4.8615;4.9231;4.9859;5.057;5.1388;5.2052;5.271;5.329;5.3559;5.3031;4.9851;4.5989;-9999;-9999;-9999;-9999;-9999;
+9500;4.4802;4.4818;4.5232;4.5656;4.6225;4.6805;4.7468;4.8231;4.8853;4.948;5.0049;5.0352;4.9984;4.7413;4.4579;-9999;-9999;-9999;-9999;-9999;
+10000;4.2097;4.2204;4.2458;4.2844;4.3369;4.3904;4.455;4.5234;4.5815;4.6412;4.6965;4.7295;4.7056;4.4987;4.2698;-9999;-9999;-9999;-9999;-9999;
+10500;3.9531;3.9588;3.982;4.0174;4.0658;4.1151;4.1744;4.2388;4.2931;4.3497;4.4033;4.4381;4.4251;4.2599;4.1494;-9999;-9999;-9999;-9999;-9999;
+11000;3.7013;3.7104;3.7315;3.7639;3.8085;3.8539;3.9085;3.9688;4.0195;4.0731;4.1248;4.1608;4.1564;4.0256;3.983;-9999;-9999;-9999;-9999;-9999;
+11500;3.4193;3.4287;3.4481;3.478;3.5195;3.5615;3.6119;3.6678;3.7145;3.7639;3.8115;3.8442;3.8389;3.713;3.6674;-9999;-9999;-9999;-9999;-9999;
+12000;3.1607;3.1687;3.1864;3.214;3.2524;3.2913;3.338;3.3897;3.4328;3.4784;3.5221;3.5518;3.5456;3.4247;3.3763;-9999;-9999;-9999;-9999;-9999;
+12500;2.9216;2.9281;2.9446;2.9701;3.0058;3.0418;3.085;3.1327;3.1726;3.2146;3.2548;3.2818;3.2748;3.1587;3.1081;-9999;-9999;-9999;-9999;-9999;
+13000;2.7006;2.706;2.7212;2.7447;2.7801;2.8114;2.8512;2.8954;2.9322;2.9709;3.0079;3.0324;3.0247;2.9134;2.861;-9999;-9999;-9999;-9999;-9999;
+13500;2.4946;2.5009;2.5149;2.5366;2.5695;2.5984;2.6352;2.6761;2.71;2.7457;2.7798;2.802;2.7938;2.6872;2.635;-9999;-9999;-9999;-9999;-9999;
+14000;2.3043;2.305;2.3241;2.3443;2.375;2.4015;2.4357;2.4734;2.5048;2.5378;2.5692;2.5895;2.5806;2.4784;2.4231;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.969;12.975;13.188;13.307;13.559;13.791;13.963;14.132;14.181;14.079;13.625;12.293;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.335;12.341;12.511;12.653;12.884;13.106;13.271;13.437;13.495;13.425;13.053;11.914;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.73;11.736;11.895;12.041;12.242;12.453;12.613;12.774;12.841;12.796;12.496;11.52;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.125;11.13;11.286;11.41;11.638;11.83;11.984;12.141;12.214;12.191;11.949;11.119;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.545;10.55;10.687;10.804;11.014;11.203;11.364;11.533;11.612;11.607;11.418;10.707;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.9912;10.017;10.117;10.226;10.42;10.596;10.749;10.92;11.028;11.038;10.902;10.29;8.7405;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.443;9.4471;9.5698;9.6735;9.8554;10.018;10.163;10.325;10.431;10.472;10.396;9.8812;8.5432;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.9201;8.9684;9.0528;9.1467;9.3166;9.4683;9.6053;9.7587;9.8613;9.9083;9.8769;9.4731;8.3174;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.4493;8.453;8.5562;8.6462;8.803;8.945;9.0744;9.2189;9.3191;9.3703;9.3545;9.0962;8.0753;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.9994;8.0151;8.0874;8.1694;8.3146;8.4477;8.5699;8.7061;8.8024;8.8568;8.8536;8.6411;7.7979;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.5451;7.5483;7.6367;7.7148;7.8491;7.9731;8.0892;8.2179;8.3104;8.3673;8.3744;8.2009;7.4893;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.1125;7.1155;7.208;7.2814;7.4057;7.5207;7.6312;7.7528;7.8416;7.8996;7.9156;7.7776;7.18;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.7231;6.7259;6.8006;6.8685;6.9833;7.0894;7.1948;7.3097;7.395;7.4535;7.4765;7.3672;6.8674;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.3516;6.3612;6.4129;6.4752;6.5811;6.6795;6.7783;6.8877;6.9695;7.0287;7.0531;6.9722;6.5553;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.9761;5.9786;6.0417;6.1006;6.1983;6.2894;6.3819;6.4861;6.5634;6.6232;6.6523;6.5918;6.2456;5.3986;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.6194;5.6217;5.6889;5.7441;5.8341;5.9184;6.0052;6.1032;6.1769;6.2367;6.2693;6.2261;5.9401;5.281;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.2986;5.3007;5.3538;5.4048;5.4876;5.5656;5.6469;5.7391;5.8094;5.8683;5.9037;5.8752;5.6467;5.1341;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.9932;4.999;5.0354;5.088;5.1583;5.2303;5.3064;5.3929;5.4596;5.5169;5.5549;5.5387;5.3517;4.5107;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.6832;4.6851;4.7298;4.7792;4.8448;4.9117;4.9828;5.0639;5.1267;5.1826;5.2224;5.2163;5.0651;4.3923;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.3892;4.3908;4.4383;4.4838;4.5446;4.6065;4.6738;4.7507;4.8106;4.8648;4.9056;4.9079;4.7871;4.2454;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.1232;4.1348;4.1626;4.2037;4.2597;4.3168;4.3795;4.4512;4.5083;4.5619;4.6041;4.613;4.5176;4.0827;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.871;3.8751;3.9005;3.938;3.9897;4.0422;4.1005;4.1674;4.221;4.2723;4.3152;4.3271;4.2578;3.9056;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.6192;3.6288;3.6517;3.6862;3.7339;3.7821;3.8362;3.8984;3.9486;3.9976;4.0399;4.0562;4.0059;3.7247;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.348;3.3492;3.3758;3.4078;3.452;3.4967;3.5467;3.6043;3.6506;3.6958;3.7347;3.7489;3.7002;3.4313;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.0971;3.0982;3.1209;3.1504;3.1915;3.2329;3.2792;3.3324;3.3754;3.4171;3.4529;3.4677;3.4177;3.1608;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.8598;2.8676;2.8854;2.9126;2.9508;2.9891;3.032;3.0812;3.1203;3.1585;3.1915;3.2049;3.157;2.9115;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.6407;2.6513;2.6677;2.6928;2.7283;2.7638;2.8035;2.8483;2.8842;2.9193;2.9496;2.9624;2.9159;2.6815;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.4446;2.4514;2.4666;2.4896;2.5226;2.5555;2.5918;2.6329;2.6661;2.6984;2.7261;2.7357;2.6931;2.4697;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.2631;2.2639;2.2805;2.3019;2.3352;2.3628;2.3959;2.4338;2.4645;2.4943;2.5197;2.5279;2.4877;2.2743;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.753;12.833;13.029;13.164;13.439;13.661;13.798;13.923;13.883;13.559;12.647;10.433;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.133;12.195;12.375;12.477;12.758;12.969;13.103;13.229;13.212;12.944;12.172;10.256;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.531;11.536;11.734;11.85;12.112;12.311;12.445;12.569;12.568;12.349;11.699;10.038;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;10.954;11.009;11.158;11.253;11.496;11.685;11.817;11.941;11.954;11.777;11.228;9.7905;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.401;10.453;10.59;10.682;10.906;11.085;11.215;11.338;11.365;11.225;10.764;9.5151;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.8759;9.8802;10.023;10.136;10.334;10.511;10.638;10.76;10.785;10.69;10.307;9.217;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.3694;9.3734;9.5045;9.6161;9.7899;9.9613;10.085;10.206;10.241;10.172;9.8558;8.9193;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.8847;8.8884;9.0077;9.1158;9.2734;9.4349;9.5548;9.6739;9.718;9.6708;9.4142;8.6106;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.4084;8.4118;8.5268;8.6234;8.78;8.9318;9.0475;9.1637;9.2155;9.1873;8.9828;8.3007;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.9382;7.9415;8.0477;8.1367;8.2943;8.4384;8.559;8.6763;8.7335;8.7211;8.5601;7.9767;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.4895;7.4926;7.6085;7.6744;7.8192;7.9527;8.0669;8.1949;8.2711;8.2733;8.1491;7.6578;6.393;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.0615;7.0644;7.1568;7.2342;7.3677;7.4914;7.5992;7.7198;7.7963;7.8224;7.7495;7.3385;6.2554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.6542;6.6828;6.7454;6.816;6.9388;7.0531;7.1549;7.2684;7.343;7.3741;7.3425;7.02;6.0912;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.2666;6.2947;6.3518;6.4181;6.5314;6.637;6.7328;6.8396;6.9121;6.9471;6.9288;6.7249;5.9103;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.8979;5.9257;5.9779;6.0397;6.1443;6.2418;6.332;6.4325;6.5027;6.5405;6.5333;6.3674;5.6875;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.5549;5.5571;5.6215;5.6802;5.7768;5.8668;5.9515;6.0461;6.1135;6.1535;6.1555;6.0219;5.4565;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.2285;5.2413;5.2852;5.3387;5.4279;5.511;5.5906;5.6794;5.7439;5.7854;5.7949;5.6888;5.2202;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.908;4.9099;4.9638;5.0143;5.0967;5.1734;5.2483;5.3314;5.3929;5.4353;5.4464;5.3678;4.9813;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.604;4.6241;4.6605;4.7127;4.7826;4.8533;4.9235;5.0013;5.0599;5.1027;5.1192;5.0592;4.741;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.3245;4.3262;4.3711;4.4198;4.4842;4.5494;4.6154;4.6882;4.7441;4.7863;4.807;4.7631;4.502;3.8841;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.0595;4.0674;4.0978;4.1417;4.2012;4.2615;4.3227;4.3913;4.4442;4.4861;4.5099;4.4793;4.2664;3.7936;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.7986;3.8001;3.8373;3.8781;3.9328;3.9886;4.0456;4.1099;4.1594;4.2011;4.2274;4.2079;4.0411;3.6786;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.5522;3.5535;3.5907;3.6289;3.6788;3.7299;3.7834;3.8434;3.89;3.9308;3.9588;3.9485;3.8145;3.2042;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.2908;3.292;3.3215;3.3565;3.4028;3.4499;3.4989;3.5543;3.5973;3.6348;3.6601;3.6505;3.5199;2.9425;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.0487;3.0498;3.0725;3.1047;3.1475;3.1906;3.2359;3.2871;3.3269;3.3613;3.3842;3.375;3.2503;2.6988;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.814;2.8225;2.8422;2.8716;2.9109;2.9508;2.9928;3.0403;3.0772;3.1086;3.1293;3.1196;3.0017;2.4747;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.5974;2.611;2.6292;2.6558;2.6922;2.7293;2.7682;2.8121;2.8463;2.875;2.8937;2.8836;2.7722;2.2685;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.4079;2.4087;2.4313;2.4549;2.49;2.5245;2.5608;2.6012;2.6327;2.6591;2.6761;2.6656;2.5602;2.3505;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.2272;2.2338;2.2489;2.2705;2.303;2.3351;2.3689;2.4063;2.4353;2.4597;2.4749;2.4641;2.3644;2.1629;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.667;12.755;12.962;13.171;13.437;13.642;13.742;13.797;13.59;12.902;11.241;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.023;12.029;12.3;12.476;12.732;12.931;13.054;13.094;12.93;12.356;10.92;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.403;11.489;11.66;11.826;12.069;12.262;12.357;12.427;12.297;11.814;10.588;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;10.835;10.84;11.054;11.205;11.438;11.622;11.719;11.796;11.697;11.288;10.233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.292;10.336;10.504;10.592;10.835;11.011;11.109;11.192;11.119;10.778;9.8744;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.7448;9.749;9.9291;10.031;10.26;10.428;10.525;10.613;10.564;10.281;9.5104;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.222;9.2855;9.426;9.5031;9.7122;9.8713;9.9694;10.058;10.029;9.7969;9.1426;7.553;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.7486;8.7523;8.9051;8.9937;9.1894;9.3404;9.4374;9.5274;9.5151;9.3271;8.7744;7.3957;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.2871;8.2905;8.4255;8.5205;8.6909;8.8334;8.9291;9.0198;9.0217;8.8716;8.4081;7.2128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.8461;7.8493;7.9682;8.0628;8.2164;8.3536;8.4465;8.5359;8.549;8.432;8.0472;7.0101;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.4246;7.4275;7.5349;7.6211;7.7653;7.8959;7.987;8.0756;8.098;8.0087;7.6895;6.7966;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.0192;7.022;7.1207;7.2067;7.3337;7.4586;7.5475;7.635;7.6561;7.5995;7.3384;6.5726;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.6325;6.6609;6.7257;6.8072;6.9233;7.041;7.1275;7.213;7.2413;7.2031;6.991;6.3389;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.2557;6.2581;6.3443;6.425;6.5313;6.6422;6.7262;6.8094;6.8437;6.8206;6.6509;6.0982;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.8802;5.8825;5.9612;6.03;6.1462;6.2528;6.3428;6.4236;6.4625;6.4521;6.3184;5.8554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.5238;5.526;5.5982;5.6618;5.7691;5.8673;5.9515;6.0427;6.0973;6.0972;5.9947;5.6092;4.6039;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.1857;5.1877;5.2546;5.3131;5.4115;5.5029;5.5815;5.6678;5.7215;5.744;5.6801;5.3613;4.5108;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.8651;4.8848;4.9298;4.9825;5.0725;5.1575;5.2305;5.312;5.3647;5.3863;5.3579;5.1136;4.3937;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.5636;4.5654;4.62;4.6768;4.7518;4.8299;4.8988;4.9758;5.0271;5.0518;5.0337;4.8776;4.2476;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.2778;4.2918;4.3285;4.3786;4.4486;4.5202;4.5856;4.6575;4.7074;4.7345;4.725;4.5995;4.0763;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.0071;4.0184;4.0515;4.0977;4.1619;4.2273;4.2886;4.3565;4.4044;4.4331;4.431;4.3313;3.903;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.7473;3.7487;3.7891;3.8326;3.8909;3.9507;4.008;4.0715;4.1175;4.1467;4.1515;4.0747;3.7239;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.5032;3.5045;3.5417;3.5813;3.6346;3.6897;3.7429;3.8023;3.8459;3.8758;3.8859;3.8271;3.5429;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.2444;3.2456;3.2774;3.3138;3.3636;3.4147;3.4641;3.519;3.5594;3.587;3.595;3.5383;3.2674;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.0001;3.0012;3.0326;3.0665;3.1129;3.1605;3.2063;3.2566;3.2937;3.3191;3.3235;3.2715;3.0145;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.7742;2.7857;2.807;2.8375;2.8811;2.9254;2.9674;3.0137;3.0477;3.0708;3.0753;3.0249;2.7812;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.5653;2.5782;2.598;2.6247;2.6669;2.7077;2.7464;2.7889;2.8203;2.8414;2.8449;2.797;2.5659;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.378;2.3788;2.4042;2.4295;2.4686;2.506;2.5418;2.5811;2.61;2.6293;2.6318;2.5864;2.3673;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.2044;2.2052;2.2255;2.249;2.2845;2.3193;2.3525;2.389;2.4156;2.4331;2.4348;2.3918;2.1839;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.858;12.863;13.132;13.384;13.653;13.889;13.91;13.829;13.3;11.987;9.1547;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.158;12.162;12.437;12.651;12.905;13.127;13.125;13.101;12.654;11.534;9.0516;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.489;11.521;11.762;11.984;12.208;12.411;12.454;12.416;12.037;11.082;8.9462;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;10.865;10.869;11.114;11.315;11.541;11.737;11.786;11.767;11.453;10.635;8.7712;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.269;10.274;10.511;10.689;10.904;11.086;11.153;11.139;10.886;10.194;8.5603;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.7023;9.7742;9.9338;10.097;10.301;10.454;10.545;10.547;10.345;9.7581;8.3364;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.1623;9.2375;9.3908;9.5361;9.7305;9.884;9.9675;9.9801;9.8265;9.3264;8.1068;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.6887;8.6922;8.8726;9.0035;9.1883;9.3357;9.4186;9.4442;9.3229;8.9036;7.8601;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.2357;8.2679;8.3877;8.5005;8.6743;8.8141;8.8839;8.9317;8.8393;8.4889;7.6009;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.775;7.7781;7.9261;8.0282;8.1919;8.3215;8.3912;8.4444;8.3764;8.0868;7.332;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.3353;7.3894;7.5028;7.5779;7.7339;7.8575;7.9268;7.9845;7.9356;7.6985;7.0554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;6.9428;6.9455;7.0696;7.1369;7.2974;7.4148;7.4835;7.5443;7.5117;7.3168;6.7741;5.4505;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.5681;6.587;6.6792;6.7345;6.8809;6.9917;7.0603;7.1224;7.1045;6.9462;6.4908;5.3517;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.1829;6.1852;6.2848;6.3497;6.4874;6.5883;6.6565;6.7196;6.7137;6.5868;6.2071;5.2259;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.8167;5.8188;5.9176;5.9834;6.104;6.204;6.2716;6.335;6.339;6.2391;5.928;5.0842;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.491;5.493;5.572;5.6382;5.7402;5.8383;5.9047;5.9678;5.9799;5.9031;5.6475;4.9257;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.1808;5.191;5.2438;5.3058;5.3981;5.4904;5.5552;5.6175;5.6362;5.579;5.3711;4.7634;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.8623;4.864;4.9271;4.9883;5.0732;5.1595;5.2221;5.2834;5.3018;5.267;5.0997;4.5879;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.5607;4.5836;4.6284;4.6819;4.7641;4.8446;4.905;4.9651;4.9884;4.9665;4.8343;4.4067;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.2682;4.2697;4.3255;4.3762;4.4587;4.5368;4.5992;4.6619;4.689;4.6778;4.5756;4.2215;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.9917;4.0053;4.043;4.0883;4.1634;4.2351;4.2944;4.3605;4.3995;4.4009;4.3237;4.0327;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.7255;3.7268;3.7736;3.8167;3.885;3.9507;4.0072;4.0685;4.1064;4.1209;4.0791;3.8423;3.201;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.4744;3.4906;3.5216;3.5654;3.623;3.6829;3.7362;3.7934;3.8305;3.8442;3.8236;3.683;3.114;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.2227;3.2238;3.2611;3.3019;3.3552;3.411;3.4603;3.5132;3.5473;3.5626;3.5389;3.4031;2.8679;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.9833;2.9843;3.0198;3.0576;3.1074;3.1595;3.205;3.2537;3.2852;3.299;3.2756;3.1471;2.642;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.7618;2.7739;2.7976;2.8286;2.8781;2.9268;2.9681;3.0136;3.0423;3.0553;3.0322;2.9104;2.4315;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.5568;2.5691;2.591;2.6201;2.6663;2.7112;2.7494;2.7913;2.8177;2.8291;2.8071;2.6917;2.239;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.3702;2.371;2.3992;2.4271;2.47;2.5114;2.5469;2.5858;2.61;2.6175;2.599;2.4895;2.0616;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.1974;2.2039;2.2229;2.2484;2.2879;2.3264;2.3596;2.3956;2.4179;2.4243;2.4065;2.3024;1.8977;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/V2527-A5_WF.csv b/engine/test/stubs/V2527-A5/V2527-A5_WF.csv
new file mode 100644
index 00000000..da56f9d1
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/V2527-A5_WF.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.5981;1.6003;1.6056;1.6146;1.6276;1.6449;1.667;1.6942;1.7264;1.764;1.8085;1.8572;1.9116;1.9719;2.0383;2.1111;2.1904;2.2763;2.3685;2.4665;
+500;1.5203;1.5229;1.5281;1.5367;1.5492;1.5658;1.5869;1.6123;1.6425;1.6782;1.7197;1.7661;1.8179;1.8751;1.9383;2.0076;2.0833;2.1653;2.254;2.3487;
+1000;1.4454;1.4481;1.4531;1.4616;1.4738;1.4899;1.51;1.5342;1.5628;1.5961;1.6342;1.6786;1.7277;1.7822;1.8421;1.908;1.98;2.0584;2.1431;2.2343;
+1500;1.3737;1.3754;1.3803;1.3887;1.4007;1.4165;1.4359;1.4591;1.4865;1.518;1.5547;1.5952;1.6411;1.6927;1.7497;1.8123;1.8807;1.9552;2.0361;2.1232;
+2000;1.3027;1.3044;1.3094;1.3177;1.3296;1.345;1.364;1.3865;1.413;1.4429;1.4778;1.516;1.5588;1.607;1.6609;1.7203;1.7853;1.856;1.933;2.0161;
+2500;1.2333;1.235;1.2399;1.2483;1.2601;1.2752;1.2939;1.3159;1.3416;1.3706;1.4029;1.4402;1.4806;1.5256;1.576;1.632;1.6936;1.7608;1.8338;1.913;
+3000;1.1653;1.167;1.1719;1.1802;1.1918;1.2069;1.2252;1.247;1.2721;1.3002;1.3315;1.3672;1.4057;1.4481;1.4951;1.5476;1.6058;1.6693;1.7386;1.8137;
+3500;1.0994;1.101;1.1058;1.1139;1.1252;1.1398;1.1579;1.1794;1.2041;1.2316;1.2621;1.2967;1.3336;1.374;1.4183;1.4672;1.5217;1.5819;1.6472;1.7184;
+4000;1.0355;1.0371;1.0418;1.0496;1.0606;1.0748;1.0923;1.1132;1.1373;1.1645;1.1944;1.2282;1.2639;1.3026;1.3448;1.3908;1.4416;1.498;1.56;1.6271;
+4500;0.97398;0.97588;0.98039;0.98787;0.99839;1.012;1.0288;1.049;1.0722;1.0986;1.129;1.1613;1.1962;1.2337;1.2741;1.3179;1.3655;1.418;1.4763;1.5399;
+5000;0.91514;0.91671;0.92108;0.92831;0.93848;0.95164;0.9679;0.98725;1.0095;1.0348;1.064;1.0957;1.13;1.1667;1.2058;1.2478;1.293;1.3422;1.3963;1.4562;
+5500;0.85816;0.85961;0.86379;0.87076;0.88056;0.89326;0.90896;0.92758;0.94907;0.97343;1.0015;1.0319;1.0651;1.1012;1.1395;1.1801;1.2234;1.27;1.3205;1.3763;
+6000;0.80385;0.80458;0.80855;0.81524;0.82467;0.83689;0.852;0.86991;0.89059;0.91406;0.94117;0.97043;1.0025;1.0373;1.0746;1.1143;1.1562;1.2008;1.2485;1.3004;
+6500;0.75262;0.75373;0.75713;0.7624;0.77124;0.78273;0.79706;0.81424;0.8341;0.85731;0.88277;0.91095;0.94186;0.97546;1.0117;1.0504;1.091;1.134;1.1796;1.2285;
+7000;0.70646;0.70755;0.71074;0.71609;0.72365;0.73351;0.7454;0.76144;0.78008;0.80192;0.82637;0.85347;0.88322;0.9156;0.9506;0.98816;1.028;1.0695;1.1133;1.1599;
+7500;0.66266;0.66369;0.66669;0.67171;0.67881;0.68806;0.69956;0.71331;0.72906;0.74982;0.77278;0.79822;0.82659;0.85773;0.89143;0.92766;0.96635;1.0072;1.0496;1.0939;
+8000;0.6211;0.62166;0.62484;0.62956;0.63624;0.64494;0.65568;0.66854;0.68361;0.70094;0.72169;0.74611;0.77295;0.8022;0.83427;0.86912;0.90643;0.94611;0.98774;1.0308;
+8500;0.58159;0.58213;0.58512;0.5895;0.59577;0.60394;0.61404;0.6261;0.64015;0.65637;0.67527;0.69589;0.72161;0.74971;0.78013;0.81288;0.84848;0.8867;0.92722;0.9695;
+9000;0.54435;0.54506;0.54752;0.55163;0.55747;0.56509;0.57449;0.58575;0.59895;0.61415;0.63175;0.65133;0.67327;0.6991;0.72829;0.75976;0.79347;0.82938;0.86831;0.90952;
+9500;0.50914;0.5095;0.51191;0.51575;0.52121;0.5283;0.53707;0.54756;0.55987;0.57407;0.59055;0.60879;0.62926;0.65207;0.67835;0.70851;0.74088;0.77543;0.81209;0.85106;
+10000;0.47568;0.47639;0.4785;0.48204;0.48704;0.49352;0.50162;0.51173;0.52323;0.53649;0.5516;0.56863;0.58765;0.60885;0.63242;0.65918;0.69018;0.72334;0.75859;0.79588;
+10500;0.44405;0.44507;0.44705;0.45035;0.455;0.46103;0.46848;0.4774;0.4883;0.50066;0.51472;0.53059;0.54837;0.56811;0.58999;0.61417;0.64141;0.67314;0.70695;0.74279;
+11000;0.41486;0.41548;0.41732;0.4204;0.42473;0.43033;0.43726;0.44554;0.45525;0.46676;0.47987;0.49464;0.51118;0.5296;0.54996;0.57243;0.59718;0.62487;0.65721;0.69156;
+11500;0.38486;0.38556;0.38727;0.39012;0.39414;0.39934;0.40576;0.41345;0.42246;0.43284;0.44529;0.459;0.47436;0.49144;0.51033;0.53119;0.55416;0.57984;0.60976;0.64156;
+12000;0.35702;0.3578;0.35939;0.36203;0.36576;0.37059;0.37655;0.38368;0.39204;0.40168;0.41322;0.42594;0.44021;0.45603;0.47357;0.49292;0.51425;0.53809;0.56586;0.59538;
+12500;0.33156;0.33205;0.33352;0.33598;0.33944;0.34392;0.34945;0.35608;0.36383;0.37276;0.38347;0.39528;0.4085;0.42319;0.43946;0.45743;0.47722;0.49935;0.52513;0.55254;
+13000;0.30792;0.30821;0.30953;0.31181;0.31502;0.31918;0.32431;0.33046;0.33765;0.34594;0.35587;0.36683;0.37909;0.39272;0.40782;0.4245;0.44287;0.46342;0.48735;0.5128;
+13500;0.28559;0.28602;0.28728;0.28939;0.29237;0.29623;0.30099;0.30669;0.31337;0.32106;0.33027;0.34043;0.35181;0.36446;0.37848;0.39395;0.41101;0.43008;0.4523;0.47592;
+14000;0.26514;0.26553;0.2667;0.26866;0.27142;0.27499;0.2794;0.28467;0.29085;0.29797;0.3065;0.31594;0.3265;0.33824;0.35125;0.36562;0.38145;0.39915;0.41979;0.44171;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.3918;1.3931;1.3975;1.405;1.4158;1.43;1.448;1.4701;1.4968;1.5285;1.5659;1.6069;1.6521;1.7015;1.7555;1.8147;1.8794;1.9505;2.0291;2.1157;
+500;1.3228;1.324;1.3283;1.3355;1.3457;1.3593;1.3764;1.3976;1.4233;1.4545;1.4896;1.5292;1.5729;1.6205;1.6723;1.7286;1.7902;1.8573;1.9311;2.0126;
+1000;1.2561;1.2575;1.2616;1.2685;1.2783;1.2913;1.3078;1.3282;1.3528;1.3818;1.4161;1.4539;1.496;1.542;1.5918;1.6457;1.7043;1.7681;1.8376;1.914;
+1500;1.1919;1.1937;1.1976;1.2042;1.2136;1.226;1.2418;1.2614;1.2851;1.3136;1.3455;1.3815;1.4215;1.4658;1.5139;1.5657;1.6217;1.6823;1.7481;1.8199;
+2000;1.1311;1.1324;1.1361;1.1424;1.1514;1.1633;1.1785;1.1973;1.2199;1.2471;1.2776;1.3119;1.35;1.392;1.4382;1.4882;1.542;1.5998;1.6624;1.7302;
+2500;1.0724;1.0736;1.0772;1.0832;1.0918;1.1032;1.1177;1.1358;1.1574;1.1833;1.2123;1.245;1.2813;1.3213;1.3652;1.4131;1.4649;1.5203;1.5798;1.6443;
+3000;1.0158;1.0176;1.021;1.0267;1.0348;1.0457;1.0596;1.0768;1.0973;1.1212;1.1496;1.1806;1.2151;1.2532;1.2951;1.3407;1.3903;1.4435;1.5005;1.5616;
+3500;0.96322;0.96435;0.96755;0.97293;0.98065;0.99092;1.0041;1.0204;1.0398;1.0624;1.0893;1.1187;1.1514;1.1877;1.2275;1.271;1.3183;1.3695;1.4239;1.4823;
+4000;0.91253;0.91355;0.91658;0.92168;0.92898;0.93879;0.95131;0.96663;0.98484;1.0062;1.0316;1.0594;1.0904;1.1247;1.1625;1.2039;1.249;1.2978;1.3503;1.406;
+4500;0.86351;0.86515;0.86805;0.87298;0.88005;0.88943;0.90132;0.91567;0.93263;0.95265;0.97634;1.0026;1.0318;1.0643;1.1001;1.1394;1.1823;1.2288;1.2789;1.3326;
+5000;0.81756;0.8185;0.82132;0.8261;0.83297;0.84211;0.85354;0.86725;0.88336;0.90209;0.92333;0.94824;0.97582;1.0065;1.0403;1.0775;1.1181;1.1623;1.2101;1.2615;
+5500;0.77232;0.77327;0.77606;0.78077;0.7875;0.79641;0.80745;0.82066;0.83614;0.85388;0.87389;0.89708;0.92256;0.95116;0.9831;1.0182;1.0566;1.0985;1.1439;1.1928;
+6000;0.72838;0.72931;0.73208;0.73675;0.74343;0.75212;0.76281;0.77559;0.79056;0.80758;0.8266;0.84844;0.87229;0.8989;0.92861;0.96148;0.99774;1.0373;1.0803;1.1268;
+6500;0.68621;0.68755;0.69023;0.69478;0.70125;0.70958;0.71978;0.73195;0.74641;0.76279;0.78111;0.80136;0.82441;0.84934;0.87699;0.90774;0.9416;0.97874;1.0193;1.0633;
+7000;0.64618;0.64706;0.64971;0.65417;0.66048;0.66863;0.67866;0.69062;0.70438;0.71982;0.73707;0.75713;0.7786;0.80213;0.82803;0.85663;0.88834;0.92317;0.96112;1.0026;
+7500;0.60701;0.60789;0.61048;0.61483;0.62094;0.62884;0.63858;0.65023;0.66368;0.67881;0.69553;0.71444;0.73461;0.75696;0.78141;0.80819;0.83766;0.87026;0.90595;0.94477;
+8000;0.56916;0.57;0.57254;0.57675;0.58266;0.59031;0.59975;0.61101;0.62399;0.63868;0.65506;0.67353;0.69305;0.7142;0.73698;0.76208;0.78966;0.81991;0.85333;0.88981;
+8500;0.53283;0.53345;0.53588;0.53994;0.54563;0.55303;0.56215;0.57303;0.58554;0.59971;0.61554;0.63358;0.65268;0.67316;0.69518;0.71876;0.74409;0.77228;0.80325;0.83741;
+9000;0.49745;0.49825;0.5006;0.5045;0.51;0.51711;0.52588;0.53632;0.54834;0.56199;0.5777;0.59466;0.61321;0.63327;0.65461;0.67741;0.70168;0.72766;0.75594;0.78756;
+9500;0.46381;0.46424;0.46658;0.47034;0.47562;0.48246;0.49091;0.50094;0.51249;0.5256;0.54069;0.55699;0.57487;0.59428;0.61519;0.63729;0.66076;0.68561;0.71215;0.74088;
+10000;0.43252;0.43317;0.4351;0.43833;0.4429;0.44911;0.4572;0.4668;0.47789;0.49082;0.50499;0.52068;0.53785;0.55651;0.57666;0.59829;0.62105;0.64508;0.67044;0.69746;
+10500;0.40337;0.40424;0.40605;0.40908;0.41334;0.41891;0.42583;0.434;0.44456;0.45695;0.47055;0.48561;0.50212;0.52008;0.53945;0.56023;0.58245;0.60577;0.63027;0.65604;
+11000;0.37629;0.37686;0.37855;0.38138;0.38537;0.39058;0.39705;0.40475;0.41378;0.42414;0.43738;0.45181;0.46765;0.48489;0.50353;0.52353;0.54488;0.56757;0.59133;0.61621;
+11500;0.34911;0.34973;0.35129;0.35392;0.35763;0.36246;0.36844;0.37559;0.38397;0.39359;0.40588;0.41928;0.43398;0.44998;0.46728;0.48584;0.50565;0.52672;0.5487;0.57171;
+12000;0.32389;0.32456;0.32601;0.32844;0.33187;0.33635;0.34191;0.34855;0.35632;0.36524;0.37666;0.38909;0.40274;0.41759;0.43364;0.45087;0.46926;0.48883;0.50923;0.53057;
+12500;0.30075;0.3012;0.30254;0.3048;0.30798;0.31214;0.3173;0.32346;0.33066;0.33895;0.34955;0.3611;0.37377;0.38755;0.40244;0.41844;0.43551;0.45367;0.4726;0.4924;
+13000;0.27925;0.27952;0.28077;0.28286;0.28582;0.28968;0.29447;0.30018;0.30688;0.31457;0.32441;0.33512;0.34688;0.35968;0.3735;0.38834;0.4042;0.42105;0.43862;0.45697;
+13500;0.25905;0.25944;0.2606;0.26253;0.26527;0.26884;0.27329;0.27859;0.28481;0.29195;0.30108;0.31103;0.32195;0.33382;0.34665;0.36043;0.37515;0.39079;0.40708;0.4241;
+14000;0.24049;0.24085;0.24193;0.24372;0.24627;0.24958;0.2537;0.25861;0.26436;0.27113;0.27944;0.28868;0.29881;0.30983;0.32174;0.33453;0.3482;0.36271;0.37782;0.39361;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.2016;1.2029;1.2063;1.2121;1.2203;1.2311;1.2447;1.2614;1.2813;1.306;1.3355;1.3697;1.4089;1.4527;1.5012;1.5544;1.6126;1.6762;1.7454;1.8207;
+500;1.1438;1.1453;1.1486;1.1541;1.1619;1.1721;1.185;1.2008;1.2197;1.2435;1.271;1.3032;1.3402;1.3819;1.4279;1.4785;1.5339;1.5942;1.66;1.7315;
+1000;1.0882;1.0896;1.0928;1.0981;1.1056;1.1155;1.1279;1.143;1.161;1.1828;1.2093;1.2398;1.2745;1.3139;1.3576;1.4056;1.4581;1.5155;1.5779;1.6457;
+1500;1.0348;1.0358;1.0389;1.044;1.0513;1.0608;1.0728;1.0873;1.1047;1.1254;1.1507;1.1793;1.2119;1.2487;1.29;1.3355;1.3854;1.4398;1.4991;1.5634;
+2000;0.98272;0.98373;0.9867;0.99169;0.99876;1.008;1.0196;1.0337;1.0505;1.0703;1.0946;1.1217;1.1524;1.1868;1.2253;1.2683;1.3155;1.3672;1.4234;1.4844;
+2500;0.9328;0.93324;0.93612;0.94095;0.94783;0.95684;0.9681;0.98179;0.99813;1.0173;1.0406;1.0665;1.0956;1.128;1.164;1.2039;1.2485;1.2974;1.3507;1.4086;
+3000;0.88359;0.88452;0.88729;0.89193;0.89854;0.90724;0.91819;0.93154;0.94746;0.96618;0.98856;1.0134;1.0411;1.0718;1.1056;1.1431;1.1845;1.2305;1.281;1.3358;
+3500;0.83664;0.8377;0.84034;0.84477;0.85108;0.85942;0.86994;0.88284;0.89835;0.91667;0.9383;0.96212;0.98862;1.0178;1.0498;1.0851;1.1239;1.1668;1.2141;1.266;
+4000;0.79224;0.79308;0.79557;0.79977;0.80575;0.81365;0.82365;0.83594;0.85086;0.86883;0.88961;0.91262;0.93803;0.96587;0.99631;1.0296;1.0661;1.1063;1.1506;1.1993;
+4500;0.74964;0.75003;0.75262;0.75662;0.76234;0.76989;0.77946;0.79125;0.80551;0.82243;0.84242;0.86465;0.88914;0.91582;0.94486;0.97648;1.011;1.0487;1.0901;1.1358;
+5000;0.70842;0.70918;0.71144;0.71525;0.7207;0.72791;0.73706;0.74836;0.76204;0.77824;0.79733;0.81841;0.84178;0.86746;0.89529;0.92544;0.95812;0.99368;1.0325;1.0751;
+5500;0.66891;0.66984;0.67199;0.67562;0.68082;0.68772;0.69646;0.70726;0.72037;0.73578;0.75401;0.77408;0.79634;0.82085;0.84745;0.87628;0.90742;0.94108;0.97765;1.0175;
+6000;0.63209;0.63277;0.63476;0.63812;0.64294;0.64934;0.65759;0.66794;0.68052;0.6951;0.71243;0.73148;0.75263;0.77594;0.80148;0.82906;0.85863;0.89066;0.92521;0.96271;
+6500;0.59717;0.59779;0.59968;0.60287;0.60745;0.61355;0.62132;0.63097;0.64263;0.6562;0.67259;0.69061;0.71066;0.73279;0.75705;0.78352;0.81197;0.84235;0.87502;0.91038;
+7000;0.56408;0.56467;0.56643;0.56942;0.57372;0.57947;0.58685;0.59607;0.60706;0.61986;0.6351;0.65179;0.67042;0.69138;0.71439;0.73951;0.76681;0.79603;0.82713;0.86041;
+7500;0.53226;0.53324;0.53492;0.53774;0.54181;0.54724;0.5542;0.56284;0.57314;0.58521;0.59953;0.61525;0.63278;0.65216;0.6735;0.69729;0.72318;0.75122;0.78109;0.81283;
+8000;0.50271;0.50325;0.50486;0.50758;0.51148;0.51668;0.52331;0.5314;0.54098;0.55224;0.5656;0.58035;0.59684;0.61513;0.63526;0.65733;0.68137;0.70792;0.73661;0.76704;
+8500;0.47396;0.47452;0.47608;0.47872;0.4825;0.48752;0.49386;0.50151;0.51055;0.52107;0.53306;0.5471;0.56255;0.57974;0.59871;0.61951;0.64223;0.66691;0.69359;0.72284;
+9000;0.44627;0.44678;0.44832;0.45092;0.45464;0.45957;0.46569;0.473;0.48157;0.49146;0.50265;0.51561;0.52993;0.54599;0.5638;0.58338;0.60477;0.62808;0.65331;0.68051;
+9500;0.41939;0.41991;0.42142;0.42398;0.42764;0.43248;0.43844;0.44554;0.45381;0.46322;0.47378;0.48555;0.49909;0.51394;0.53054;0.5489;0.56901;0.59094;0.61476;0.64048;
+10000;0.39324;0.39375;0.39527;0.39783;0.40147;0.40618;0.41197;0.41889;0.42694;0.43601;0.44611;0.4573;0.47;0.48374;0.49901;0.51608;0.53492;0.5555;0.5779;0.60216;
+10500;0.36791;0.36841;0.3699;0.37241;0.37597;0.38057;0.38624;0.393;0.40081;0.4096;0.41938;0.43014;0.44224;0.45518;0.46938;0.48506;0.5025;0.52175;0.54274;0.56554;
+11000;0.34349;0.34398;0.34543;0.34788;0.35132;0.35576;0.36125;0.36781;0.3754;0.38395;0.39372;0.40417;0.41555;0.42788;0.44127;0.45588;0.47193;0.48974;0.50931;0.53064;
+11500;0.31869;0.31923;0.32058;0.32285;0.32604;0.33017;0.33526;0.34134;0.34838;0.35631;0.36538;0.37509;0.38565;0.39709;0.40951;0.42307;0.43797;0.45452;0.47266;0.4924;
+12000;0.29568;0.29627;0.29752;0.29963;0.30259;0.30642;0.31114;0.31679;0.32332;0.33068;0.3391;0.34811;0.3579;0.36852;0.38005;0.39263;0.40648;0.42183;0.43866;0.457;
+12500;0.27458;0.27496;0.27613;0.27808;0.28083;0.28439;0.28877;0.29401;0.30008;0.30691;0.31472;0.32308;0.33217;0.34202;0.35272;0.3644;0.37726;0.3915;0.40712;0.42416;
+13000;0.25498;0.2552;0.25629;0.2581;0.26065;0.26395;0.26802;0.27289;0.27851;0.28485;0.2921;0.29986;0.30829;0.31744;0.32737;0.33822;0.35014;0.36335;0.37787;0.3937;
+13500;0.23658;0.23692;0.23792;0.2396;0.24196;0.24501;0.24877;0.25328;0.25851;0.26439;0.27112;0.27832;0.28615;0.29463;0.30386;0.31392;0.32498;0.33725;0.35073;0.36543;
+14000;0.21968;0.21998;0.22091;0.22247;0.22466;0.22749;0.23099;0.23516;0.23999;0.24543;0.25167;0.25833;0.2656;0.27348;0.28204;0.29137;0.30164;0.31303;0.32556;0.33922;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0292;1.0303;1.0333;1.0384;1.0457;1.0553;1.0674;1.0823;1.1;1.1208;1.1449;1.1732;1.2055;1.2426;1.2843;1.3304;1.3809;1.4359;1.4958;1.5606;
+500;0.97891;0.97994;0.98279;0.98759;0.99442;1.0034;1.0147;1.0287;1.0456;1.0654;1.0884;1.1154;1.1461;1.1814;1.2211;1.2649;1.3129;1.3653;1.4222;1.4839;
+1000;0.93061;0.93161;0.9343;0.93884;0.9453;0.9538;0.96444;0.97778;0.99367;1.0124;1.0342;1.0599;1.0892;1.1228;1.1604;1.202;1.2476;1.2974;1.3515;1.4102;
+1500;0.88429;0.88514;0.8877;0.892;0.89813;0.90619;0.91626;0.92894;0.94411;0.96188;0.9826;1.007;1.0347;1.0666;1.1022;1.1416;1.1849;1.2321;1.2835;1.3392;
+2000;0.83981;0.84049;0.84292;0.84699;0.85279;0.86041;0.86995;0.882;0.89648;0.91347;0.93355;0.95646;0.98285;1.0128;1.0464;1.0837;1.1246;1.1694;1.2182;1.2711;
+2500;0.79703;0.7978;0.80007;0.80388;0.80933;0.81652;0.82555;0.83695;0.85074;0.86693;0.8862;0.90808;0.93323;0.96165;0.9933;1.0282;1.0669;1.1093;1.1555;1.2057;
+3000;0.75637;0.75707;0.7592;0.76277;0.76787;0.7746;0.78305;0.79378;0.80689;0.82229;0.84067;0.86163;0.88567;0.91259;0.94257;0.97554;1.0117;1.0516;1.0953;1.1429;
+3500;0.71767;0.71834;0.72033;0.72367;0.72843;0.7347;0.74258;0.75256;0.76489;0.7795;0.797;0.81701;0.83997;0.8656;0.89393;0.92514;0.95931;0.99673;1.0377;1.0827;
+4000;0.68039;0.68139;0.68328;0.68644;0.69095;0.69687;0.70431;0.71355;0.72502;0.73862;0.75517;0.77423;0.79606;0.82046;0.84737;0.87681;0.90914;0.94443;0.98301;1.0251;
+4500;0.64536;0.64597;0.64777;0.65079;0.65508;0.66071;0.66778;0.67647;0.68726;0.70005;0.71547;0.73335;0.75395;0.77709;0.80265;0.83059;0.86106;0.89442;0.93077;0.97042;
+5000;0.61169;0.61198;0.61366;0.61655;0.62065;0.62605;0.6328;0.64102;0.65119;0.6633;0.67785;0.69465;0.71388;0.73562;0.75971;0.78623;0.8151;0.84654;0.88085;0.91818;
+5500;0.57934;0.57985;0.58147;0.58419;0.58804;0.59309;0.59942;0.6071;0.61673;0.62822;0.64173;0.65784;0.67584;0.69614;0.7188;0.74372;0.77105;0.80076;0.83309;0.86829;
+6000;0.54838;0.54891;0.55048;0.55312;0.55685;0.56174;0.56786;0.57528;0.58425;0.595;0.60759;0.62275;0.63966;0.65862;0.67975;0.70324;0.72896;0.75699;0.78745;0.82061;
+6500;0.51844;0.51895;0.52048;0.52305;0.52668;0.53144;0.53739;0.54461;0.55324;0.56356;0.57565;0.58978;0.6054;0.62295;0.64266;0.66454;0.68878;0.71525;0.74397;0.77505;
+7000;0.48985;0.49011;0.49153;0.49399;0.49749;0.5021;0.5079;0.51496;0.52334;0.5333;0.54522;0.55843;0.57323;0.58962;0.60771;0.62781;0.65038;0.67531;0.70246;0.73181;
+7500;0.46184;0.46231;0.46371;0.46606;0.46941;0.47383;0.4794;0.48624;0.49444;0.50413;0.51565;0.5283;0.54239;0.55789;0.57491;0.59363;0.61423;0.63715;0.66273;0.69048;
+8000;0.43529;0.43573;0.43705;0.43928;0.44246;0.44667;0.45201;0.45858;0.4665;0.4759;0.48706;0.49926;0.51273;0.52747;0.54357;0.56117;0.58046;0.60163;0.62497;0.6509;
+8500;0.40988;0.4103;0.41156;0.41368;0.41672;0.42074;0.42584;0.43211;0.43969;0.44871;0.45938;0.47116;0.48412;0.49822;0.51353;0.53017;0.5483;0.56809;0.58978;0.61367;
+9000;0.38556;0.386;0.38719;0.38921;0.39209;0.39592;0.40078;0.40679;0.41408;0.42269;0.43284;0.44404;0.45642;0.46999;0.48465;0.50047;0.5176;0.53618;0.55643;0.5786;
+9500;0.36226;0.36284;0.36398;0.36589;0.36862;0.37225;0.37687;0.38261;0.38972;0.39775;0.40742;0.41805;0.42982;0.44274;0.45679;0.47192;0.4882;0.50575;0.52474;0.5454;
+10000;0.34048;0.34085;0.34192;0.34372;0.34631;0.34975;0.35413;0.35958;0.36619;0.3739;0.38307;0.39314;0.40427;0.41654;0.42995;0.44447;0.45998;0.47662;0.49454;0.51389;
+10500;0.31974;0.32007;0.32105;0.32273;0.32515;0.32839;0.33255;0.33772;0.34394;0.35119;0.35982;0.36929;0.37982;0.39141;0.40412;0.41795;0.43287;0.44876;0.46568;0.48388;
+11000;0.30021;0.30052;0.30145;0.30302;0.30528;0.3083;0.31217;0.31701;0.32282;0.32961;0.3377;0.34655;0.35644;0.36738;0.37937;0.39246;0.40666;0.42192;0.43811;0.45532;
+11500;0.27859;0.27892;0.27978;0.28124;0.28334;0.28614;0.28974;0.29424;0.29963;0.30594;0.31345;0.32167;0.33086;0.341;0.35213;0.36428;0.37746;0.39164;0.40667;0.42265;
+12000;0.25853;0.25888;0.25968;0.26104;0.26298;0.26559;0.26894;0.27311;0.27812;0.28398;0.29096;0.2986;0.30712;0.31652;0.32685;0.33814;0.35038;0.36354;0.3775;0.39233;
+12500;0.24005;0.24029;0.24104;0.24229;0.2441;0.24653;0.24964;0.25352;0.25817;0.2636;0.27009;0.27719;0.28508;0.29381;0.3034;0.31389;0.32525;0.33747;0.35043;0.3642;
+13000;0.22289;0.22305;0.22374;0.22491;0.2266;0.22885;0.23173;0.23534;0.23966;0.24471;0.25073;0.25731;0.26463;0.27273;0.28165;0.29138;0.30193;0.31327;0.32531;0.3381;
+13500;0.20691;0.20713;0.20776;0.20885;0.21041;0.21249;0.21516;0.21849;0.22248;0.22733;0.23276;0.23885;0.24566;0.25318;0.26146;0.2705;0.28029;0.29083;0.302;0.31388;
+14000;0.19217;0.19236;0.19296;0.19397;0.19541;0.19735;0.19983;0.20292;0.20663;0.21112;0.21614;0.22178;0.22807;0.23504;0.24273;0.25112;0.26022;0.26999;0.28037;0.2914;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.88288;0.88381;0.88655;0.89119;0.89789;0.90685;0.91685;0.92918;0.94357;0.96074;0.9803;1.0036;1.0298;1.0592;1.0929;1.131;1.1732;1.2193;1.2691;1.3231;
+500;0.83915;0.84003;0.84263;0.84701;0.85325;0.86159;0.87107;0.88269;0.89648;0.91286;0.93145;0.95363;0.9787;1.0069;1.0392;1.0757;1.1159;1.1598;1.2074;1.2587;
+1000;0.79732;0.79803;0.80049;0.80462;0.81053;0.81837;0.82744;0.83853;0.85157;0.86654;0.88464;0.90574;0.92962;0.95672;0.98755;1.0224;1.0607;1.1026;1.1479;1.1969;
+1500;0.75719;0.75777;0.7601;0.764;0.76956;0.77694;0.78559;0.79617;0.80862;0.82292;0.84003;0.85996;0.88255;0.90852;0.93799;0.97112;1.0077;1.0475;1.0907;1.1373;
+2000;0.71843;0.71917;0.72136;0.72504;0.73027;0.73721;0.74545;0.75552;0.76741;0.7811;0.79766;0.81634;0.83778;0.86233;0.89041;0.92189;0.95661;0.99444;1.0355;1.08;
+2500;0.68128;0.68218;0.68424;0.6877;0.69262;0.69913;0.70698;0.71655;0.72787;0.74097;0.7567;0.77451;0.79495;0.81833;0.845;0.87464;0.90757;0.94349;0.9825;1.0248;
+3000;0.64618;0.64682;0.64874;0.65197;0.65657;0.66266;0.67013;0.67921;0.68997;0.70248;0.71743;0.73439;0.75387;0.77617;0.80155;0.82971;0.86066;0.89455;0.93159;0.97171;
+3500;0.61249;0.6131;0.6149;0.61794;0.62226;0.62794;0.635;0.64355;0.65371;0.6656;0.67979;0.69594;0.7145;0.73575;0.75987;0.78662;0.81592;0.8479;0.8827;0.92076;
+4000;0.58018;0.58077;0.58247;0.58533;0.58939;0.59473;0.60145;0.60957;0.61921;0.63049;0.64382;0.6591;0.67677;0.69703;0.71991;0.74526;0.77304;0.80329;0.83622;0.87196;
+4500;0.54955;0.55007;0.55162;0.55424;0.55797;0.5629;0.56929;0.57703;0.58622;0.59697;0.60959;0.62405;0.64075;0.65994;0.68162;0.70563;0.73191;0.76057;0.79169;0.8255;
+5000;0.52056;0.52105;0.52251;0.52497;0.52847;0.53307;0.539;0.54618;0.55473;0.56483;0.57687;0.5906;0.60641;0.62462;0.64505;0.66766;0.69251;0.71961;0.74908;0.78101;
+5500;0.49276;0.49328;0.49465;0.49696;0.50026;0.50457;0.51018;0.51701;0.52514;0.53468;0.54573;0.55873;0.57365;0.59086;0.61016;0.63151;0.65486;0.68039;0.70824;0.73843;
+6000;0.4661;0.46672;0.46801;0.47019;0.47328;0.47733;0.48262;0.48911;0.49682;0.5059;0.51645;0.5288;0.54284;0.55885;0.5768;0.59692;0.61897;0.64302;0.66918;0.69768;
+6500;0.44094;0.44134;0.44255;0.44459;0.44751;0.45132;0.45628;0.46242;0.46974;0.47837;0.48844;0.50018;0.51353;0.52869;0.54556;0.56412;0.58464;0.60733;0.632;0.65879;
+7000;0.4168;0.41721;0.41834;0.42023;0.42293;0.42649;0.43111;0.43693;0.44384;0.45203;0.46177;0.47282;0.48553;0.49985;0.51578;0.53329;0.55243;0.5734;0.59647;0.62172;
+7500;0.39431;0.39439;0.39543;0.39718;0.39967;0.40295;0.40719;0.41261;0.41911;0.42686;0.43612;0.44667;0.45874;0.47228;0.4873;0.50381;0.52184;0.54152;0.56303;0.5864;
+8000;0.3724;0.37272;0.3737;0.37535;0.3777;0.38077;0.38468;0.38968;0.39569;0.40289;0.41161;0.42164;0.43312;0.44591;0.46009;0.47563;0.49263;0.51114;0.53131;0.5533;
+8500;0.35143;0.35199;0.35293;0.35449;0.35672;0.35964;0.36329;0.36796;0.37358;0.38028;0.38841;0.39783;0.40863;0.42072;0.43407;0.44871;0.4647;0.48215;0.50109;0.5217;
+9000;0.33181;0.33212;0.33302;0.33451;0.33664;0.33943;0.34291;0.34728;0.35258;0.35887;0.36646;0.37525;0.38535;0.39673;0.40927;0.423;0.43805;0.45445;0.47229;0.4916;
+9500;0.31272;0.31301;0.31387;0.31532;0.31737;0.32005;0.32339;0.32752;0.33254;0.33849;0.3455;0.35388;0.36325;0.37384;0.38564;0.39858;0.41267;0.42803;0.44479;0.46296;
+10000;0.2945;0.29467;0.29542;0.29682;0.2988;0.30139;0.30463;0.30858;0.31337;0.31905;0.32571;0.3336;0.34235;0.35216;0.3631;0.37526;0.38854;0.40297;0.41863;0.43564;
+10500;0.27651;0.27679;0.2776;0.27895;0.28088;0.2834;0.28656;0.29037;0.29498;0.30044;0.30682;0.31428;0.32251;0.33165;0.34178;0.35303;0.36549;0.37908;0.3938;0.40974;
+11000;0.25946;0.25971;0.26048;0.26177;0.26361;0.26604;0.2691;0.27282;0.27729;0.28256;0.28886;0.29582;0.30359;0.31216;0.32161;0.33201;0.34353;0.35626;0.37011;0.38508;
+11500;0.2408;0.24108;0.2418;0.243;0.24471;0.24697;0.2498;0.25326;0.2574;0.26231;0.26815;0.27461;0.28183;0.28979;0.29856;0.30822;0.31893;0.33074;0.3436;0.35749;
+12000;0.22348;0.22381;0.22447;0.22558;0.22717;0.22927;0.2319;0.23511;0.23896;0.24352;0.24894;0.25494;0.26164;0.26903;0.27717;0.28615;0.29609;0.30706;0.31899;0.33189;
+12500;0.20757;0.20777;0.20839;0.20942;0.2109;0.21284;0.21529;0.21827;0.22185;0.22608;0.23111;0.23668;0.2429;0.24977;0.25732;0.26567;0.2749;0.28508;0.29616;0.30813;
+13000;0.19276;0.19295;0.19352;0.19448;0.19584;0.19764;0.1999;0.20265;0.20597;0.20989;0.21457;0.21974;0.22551;0.23189;0.23891;0.24666;0.25523;0.26468;0.27496;0.28608;
+13500;0.17906;0.17923;0.17976;0.18065;0.18192;0.18359;0.18569;0.18825;0.19131;0.19495;0.19928;0.20405;0.20939;0.2153;0.22181;0.22902;0.23697;0.24575;0.2553;0.2656;
+14000;0.16631;0.1665;0.16699;0.16782;0.169;0.17055;0.1725;0.17488;0.17773;0.18111;0.18514;0.18957;0.19453;0.2;0.20602;0.21268;0.22003;0.22818;0.23704;0.24659;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.75671;0.7573;0.75972;0.76386;0.76997;0.77716;0.78513;0.79482;0.80667;0.82033;0.83637;0.8538;0.87321;0.89479;0.91965;0.94783;0.98021;1.0165;1.0562;1.0996;
+500;0.71873;0.7194;0.7217;0.72562;0.73136;0.73808;0.74562;0.7548;0.7661;0.77917;0.79451;0.81139;0.83011;0.85099;0.87496;0.90217;0.93342;0.96821;1.0061;1.0471;
+1000;0.68237;0.68296;0.68515;0.68888;0.69434;0.70068;0.70793;0.71673;0.72741;0.73975;0.75435;0.77065;0.78866;0.80883;0.83192;0.85821;0.88827;0.92161;0.95784;0.99685;
+1500;0.64755;0.64805;0.65012;0.65364;0.65881;0.66478;0.67172;0.68013;0.69033;0.70215;0.71607;0.73191;0.74884;0.76827;0.7905;0.81587;0.84473;0.87663;0.91126;0.94852;
+2000;0.61395;0.6146;0.61656;0.61989;0.62478;0.63039;0.63702;0.64505;0.65476;0.66604;0.67931;0.69452;0.71088;0.72938;0.75065;0.7751;0.80279;0.83326;0.86631;0.90191;
+2500;0.58181;0.58255;0.5844;0.58755;0.59216;0.59744;0.60378;0.61145;0.62028;0.63141;0.64407;0.65858;0.67443;0.69224;0.71261;0.73586;0.76239;0.79147;0.82298;0.85695;
+3000;0.55144;0.55202;0.55376;0.55672;0.56104;0.56599;0.57201;0.57926;0.5877;0.59824;0.61029;0.62412;0.63945;0.6565;0.67616;0.69841;0.72358;0.75125;0.78125;0.81363;
+3500;0.52237;0.52285;0.52446;0.52723;0.53129;0.53597;0.54172;0.54864;0.55665;0.56657;0.57793;0.59109;0.60587;0.62231;0.64107;0.66249;0.68643;0.7127;0.7411;0.77191;
+4000;0.49491;0.49542;0.49694;0.49951;0.50325;0.50761;0.51296;0.51942;0.52697;0.53635;0.54714;0.55957;0.5737;0.58941;0.60739;0.62791;0.65072;0.67569;0.70272;0.73185;
+4500;0.46866;0.46919;0.47062;0.47302;0.47652;0.48067;0.48578;0.49194;0.49908;0.50774;0.51782;0.52968;0.543;0.558;0.57512;0.59469;0.61641;0.64014;0.66581;0.69353;
+5000;0.44372;0.44416;0.4455;0.44775;0.45102;0.45495;0.45979;0.46565;0.47247;0.48064;0.49024;0.50141;0.5138;0.52795;0.54432;0.56291;0.58346;0.60599;0.63036;0.65669;
+5500;0.41984;0.42023;0.42149;0.42361;0.42666;0.43039;0.435;0.44056;0.44704;0.45496;0.46385;0.47446;0.48634;0.49979;0.51513;0.5325;0.55201;0.57327;0.59633;0.62131;
+6000;0.39697;0.39736;0.39854;0.40053;0.40337;0.40691;0.41129;0.41658;0.42276;0.43024;0.43863;0.44869;0.46002;0.47286;0.4875;0.50397;0.52215;0.54198;0.5638;0.58736;
+6500;0.37518;0.37554;0.37664;0.37849;0.38115;0.38449;0.38864;0.39365;0.39954;0.40662;0.41458;0.42409;0.43483;0.44708;0.46104;0.47665;0.49384;0.51258;0.53287;0.55497;
+7000;0.35483;0.35482;0.35584;0.35757;0.36003;0.36318;0.36708;0.37179;0.37736;0.38406;0.39161;0.40062;0.41079;0.42243;0.4357;0.4505;0.46675;0.48444;0.50366;0.52441;
+7500;0.33469;0.33501;0.33597;0.33758;0.33988;0.34285;0.34654;0.35102;0.3563;0.36262;0.3697;0.3782;0.38785;0.3989;0.41146;0.42546;0.44082;0.45752;0.47565;0.4953;
+8000;0.31549;0.3161;0.317;0.3185;0.32064;0.32345;0.32694;0.33117;0.33619;0.34198;0.34903;0.35696;0.36604;0.37645;0.38833;0.4015;0.416;0.43177;0.44887;0.4674;
+8500;0.29776;0.29806;0.29889;0.3003;0.30229;0.30494;0.30825;0.31226;0.317;0.32252;0.32913;0.33665;0.3453;0.35517;0.36634;0.3787;0.39227;0.40713;0.42327;0.44073;
+9000;0.28081;0.28085;0.28163;0.28294;0.2848;0.28729;0.29042;0.29421;0.29871;0.30395;0.31019;0.31727;0.32545;0.33486;0.34539;0.35704;0.36978;0.38364;0.3988;0.41526;
+9500;0.2642;0.26444;0.26517;0.26639;0.26813;0.27046;0.27343;0.27701;0.28127;0.28627;0.29215;0.29884;0.30656;0.31543;0.32539;0.33636;0.34834;0.3614;0.37557;0.39095;
+10000;0.24837;0.2488;0.24948;0.25063;0.25225;0.25443;0.25723;0.26061;0.26465;0.26939;0.27485;0.2813;0.2886;0.29694;0.30628;0.31662;0.32788;0.34015;0.35349;0.36793;
+10500;0.23369;0.23392;0.23455;0.23562;0.23713;0.23916;0.2418;0.24499;0.2488;0.25329;0.2585;0.26459;0.2715;0.27936;0.28811;0.29777;0.30837;0.31989;0.33242;0.34599;
+11000;0.21968;0.21983;0.22041;0.22139;0.22279;0.22466;0.22713;0.23012;0.23372;0.23795;0.243;0.24868;0.25523;0.26262;0.27083;0.27986;0.28976;0.30058;0.31232;0.32507;
+11500;0.2039;0.20409;0.20464;0.20555;0.20685;0.20858;0.21088;0.21366;0.217;0.22093;0.22561;0.23089;0.23697;0.24383;0.25145;0.25983;0.26901;0.27904;0.28994;0.30178;
+12000;0.18925;0.18949;0.19;0.19084;0.19205;0.19367;0.1958;0.19838;0.20148;0.20514;0.20948;0.21438;0.22002;0.22638;0.23345;0.24123;0.24975;0.25904;0.26917;0.28016;
+12500;0.17584;0.176;0.17647;0.17725;0.17836;0.17985;0.18182;0.18419;0.18708;0.19048;0.19443;0.19905;0.20429;0.2102;0.21676;0.22398;0.23187;0.2405;0.2499;0.2601;
+13000;0.16339;0.16353;0.16396;0.16469;0.16572;0.16711;0.16894;0.17115;0.17381;0.17695;0.18067;0.18486;0.18969;0.19517;0.20126;0.20796;0.21527;0.22329;0.23202;0.24149;
+13500;0.1518;0.15196;0.15236;0.15304;0.154;0.15529;0.15699;0.15905;0.16152;0.16444;0.1679;0.1718;0.17628;0.18134;0.18695;0.1931;0.19987;0.20732;0.21542;0.22421;
+14000;0.14102;0.14122;0.14159;0.14222;0.14311;0.14432;0.1459;0.14781;0.15011;0.15282;0.15604;0.15966;0.16383;0.16853;0.17374;0.17945;0.18572;0.19259;0.20005;0.20818;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.64635;0.64709;0.64911;0.65251;0.65746;0.66251;0.66882;0.67588;0.68515;0.6954;0.70635;0.71819;0.73127;0.74567;0.76261;0.78283;0.8066;0.83461;0.86696;0.90271;
+500;0.61333;0.61428;0.61623;0.61949;0.62368;0.62893;0.6349;0.64164;0.65053;0.66042;0.67115;0.68253;0.69522;0.7093;0.72503;0.7449;0.76765;0.79454;0.82549;0.85953;
+1000;0.58223;0.58287;0.58472;0.58784;0.59182;0.59684;0.60258;0.60904;0.61749;0.62693;0.63699;0.6483;0.66057;0.67434;0.68967;0.70853;0.7303;0.75604;0.78553;0.818;
+1500;0.55247;0.55278;0.55453;0.55751;0.56129;0.56608;0.57157;0.57779;0.5859;0.59499;0.6047;0.61551;0.62732;0.64073;0.65566;0.67362;0.69449;0.7191;0.74712;0.77798;
+2000;0.52342;0.52397;0.52564;0.52848;0.53204;0.5366;0.54186;0.54783;0.5556;0.56436;0.57377;0.58421;0.59559;0.60846;0.62296;0.6401;0.66019;0.68367;0.71024;0.73951;
+2500;0.49598;0.49652;0.4981;0.5008;0.50416;0.50846;0.51344;0.51914;0.52658;0.53499;0.54411;0.55419;0.56519;0.57761;0.59174;0.60792;0.62726;0.64968;0.67489;0.70256;
+3000;0.47019;0.47068;0.47216;0.47469;0.4782;0.48181;0.48645;0.49184;0.49887;0.50686;0.51567;0.52538;0.53602;0.54799;0.56173;0.57724;0.59568;0.61708;0.64099;0.66715;
+3500;0.44553;0.446;0.44741;0.44982;0.45316;0.45661;0.46106;0.46616;0.47273;0.48023;0.48853;0.4978;0.50804;0.51955;0.53292;0.54793;0.56549;0.5859;0.60846;0.63322;
+4000;0.42194;0.42236;0.4237;0.42599;0.42914;0.43243;0.43668;0.44159;0.44787;0.45509;0.46309;0.4718;0.48139;0.49232;0.50513;0.51977;0.53653;0.55601;0.57745;0.60073;
+4500;0.3994;0.39975;0.40102;0.40319;0.40616;0.40931;0.41336;0.41805;0.42402;0.43094;0.43885;0.4471;0.45639;0.46673;0.47878;0.49275;0.50885;0.5273;0.54768;0.56972;
+5000;0.37774;0.37814;0.37933;0.3814;0.38418;0.38719;0.39106;0.39554;0.40118;0.40782;0.41539;0.42338;0.43235;0.44236;0.45394;0.46726;0.48243;0.49976;0.51908;0.54;
+5500;0.35706;0.35748;0.35862;0.36056;0.36318;0.36604;0.36973;0.37403;0.37934;0.3857;0.39293;0.4007;0.4093;0.419;0.43027;0.44298;0.45757;0.47387;0.49166;0.51146;
+6000;0.33752;0.33786;0.33892;0.34074;0.34316;0.34586;0.34934;0.35344;0.35847;0.36453;0.37143;0.37899;0.38721;0.39655;0.40739;0.41963;0.43366;0.4492;0.46612;0.48437;
+6500;0.31886;0.31919;0.32018;0.32189;0.32417;0.32674;0.33004;0.33391;0.3386;0.34432;0.35087;0.35819;0.36605;0.37505;0.38544;0.39722;0.41066;0.42549;0.44157;0.45887;
+7000;0.30106;0.30135;0.30228;0.30389;0.30602;0.30847;0.31161;0.3153;0.31972;0.32518;0.33136;0.33836;0.34581;0.35443;0.3644;0.37572;0.38856;0.40269;0.41796;0.4344;
+7500;0.28409;0.28431;0.28519;0.2867;0.2887;0.29104;0.29402;0.29754;0.3019;0.30689;0.31276;0.31948;0.32661;0.33482;0.34425;0.35509;0.36733;0.38077;0.39529;0.41089;
+8000;0.26791;0.26801;0.26887;0.27029;0.27217;0.2744;0.27723;0.28058;0.28471;0.28942;0.29499;0.30137;0.30826;0.31613;0.32516;0.33545;0.34698;0.35972;0.37351;0.38833;
+8500;0.25229;0.25255;0.25332;0.25464;0.2564;0.25853;0.26122;0.26441;0.26831;0.27276;0.27802;0.28406;0.29071;0.29833;0.30691;0.3167;0.32767;0.33966;0.35259;0.36665;
+9000;0.23742;0.23777;0.23849;0.23972;0.24138;0.2434;0.24596;0.24899;0.25267;0.25689;0.26186;0.26757;0.27396;0.28122;0.28943;0.29877;0.30915;0.32051;0.33277;0.34596;
+9500;0.22348;0.2237;0.22437;0.22552;0.22707;0.22899;0.23141;0.2343;0.23778;0.24175;0.24645;0.25184;0.25797;0.26487;0.27271;0.2816;0.29143;0.30215;0.31376;0.32625;
+10000;0.2102;0.21028;0.21094;0.212;0.21345;0.21527;0.21756;0.2203;0.22346;0.22734;0.23177;0.23697;0.2427;0.24929;0.25673;0.26517;0.27447;0.28458;0.29554;0.30736;
+10500;0.19735;0.19755;0.19813;0.19912;0.20048;0.20221;0.20438;0.20697;0.20997;0.21361;0.2178;0.22271;0.2282;0.23442;0.2415;0.24946;0.25824;0.26779;0.2781;0.28926;
+11000;0.18514;0.18542;0.18596;0.18687;0.18814;0.18977;0.19181;0.19426;0.19712;0.20053;0.20451;0.20915;0.21436;0.22026;0.22699;0.23449;0.24274;0.25173;0.26146;0.27195;
+11500;0.17201;0.17218;0.17268;0.17353;0.17471;0.17622;0.17811;0.18039;0.18304;0.18621;0.18989;0.19419;0.19903;0.20451;0.21075;0.21772;0.22537;0.23372;0.24275;0.25248;
+12000;0.1598;0.15996;0.16042;0.1612;0.16228;0.16367;0.16541;0.16751;0.16996;0.1729;0.17632;0.18032;0.18481;0.1899;0.19569;0.20215;0.20926;0.217;0.22538;0.23441;
+12500;0.14853;0.14867;0.1491;0.14983;0.15083;0.15212;0.15374;0.15568;0.15794;0.16065;0.16387;0.16748;0.17161;0.17634;0.18171;0.18771;0.1943;0.20149;0.20926;0.21765;
+13000;0.13804;0.13819;0.13859;0.13926;0.14019;0.1414;0.1429;0.1447;0.1468;0.14933;0.15232;0.15568;0.15952;0.16388;0.16882;0.17434;0.18043;0.18709;0.19431;0.20209;
+13500;0.12829;0.12845;0.12882;0.12945;0.13032;0.13144;0.13283;0.13451;0.13647;0.13882;0.1416;0.14473;0.1483;0.15235;0.15695;0.16208;0.16771;0.17384;0.18047;0.18766;
+14000;0.1193;0.11941;0.11976;0.12034;0.12115;0.12219;0.12349;0.12505;0.12687;0.12906;0.13165;0.13456;0.13788;0.14164;0.14592;0.15069;0.15592;0.16162;0.16779;0.17444;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.54972;0.5503;0.55189;0.55449;0.55802;0.56186;0.56632;0.57168;0.57789;0.5846;0.59164;0.59923;0.60733;0.61832;0.63097;0.64587;0.6634;0.684;0.70823;0.73682;
+500;0.52152;0.52231;0.52382;0.5263;0.5296;0.53323;0.53746;0.54252;0.54855;0.55504;0.5618;0.5692;0.5771;0.58753;0.59971;0.614;0.63081;0.65062;0.67395;0.70129;
+1000;0.49501;0.49549;0.49692;0.49929;0.50241;0.50588;0.50992;0.51479;0.52054;0.52676;0.53325;0.5404;0.54808;0.55793;0.56961;0.58338;0.59955;0.61855;0.64099;0.6671;
+1500;0.46931;0.46977;0.47114;0.4734;0.47636;0.47967;0.48355;0.48821;0.49377;0.49981;0.50602;0.5129;0.52029;0.52957;0.54077;0.55396;0.56949;0.58777;0.60933;0.63425;
+2000;0.4447;0.44535;0.44662;0.44873;0.45146;0.45457;0.45829;0.46276;0.4681;0.47369;0.48;0.48665;0.49379;0.50252;0.51314;0.52578;0.54065;0.55817;0.57891;0.60267;
+2500;0.42204;0.42225;0.42346;0.42549;0.42808;0.43103;0.43448;0.43864;0.44365;0.44894;0.45504;0.46148;0.46841;0.47675;0.48688;0.49882;0.51303;0.5298;0.54965;0.57233;
+3000;0.39974;0.40013;0.4013;0.40323;0.40569;0.40852;0.41184;0.41583;0.42067;0.42572;0.43142;0.43745;0.44411;0.45207;0.46178;0.47321;0.48664;0.50262;0.5216;0.54314;
+3500;0.37843;0.37895;0.38006;0.38192;0.38426;0.38697;0.39016;0.39398;0.39867;0.40361;0.40911;0.41496;0.42127;0.42825;0.43776;0.44825;0.46153;0.47669;0.4947;0.51514;
+4000;0.35834;0.35868;0.35975;0.36153;0.36375;0.36635;0.36942;0.37308;0.37764;0.38243;0.38774;0.39341;0.39956;0.40636;0.41523;0.4254;0.43749;0.45195;0.46904;0.48832;
+4500;0.33914;0.33929;0.34032;0.34203;0.34414;0.34663;0.34958;0.35309;0.35749;0.36235;0.36727;0.37275;0.37876;0.38536;0.39375;0.4035;0.41495;0.42844;0.44453;0.46272;
+5000;0.32043;0.32079;0.32175;0.32341;0.3254;0.32779;0.33061;0.33396;0.33822;0.34291;0.34768;0.35299;0.35883;0.36528;0.3732;0.38251;0.39349;0.40639;0.42143;0.43827;
+5500;0.30298;0.30328;0.3042;0.30576;0.30762;0.30987;0.31255;0.31568;0.31977;0.32431;0.32893;0.33408;0.33974;0.34603;0.35354;0.36243;0.37292;0.38528;0.39959;0.41543;
+6000;0.28632;0.28654;0.28742;0.28892;0.29067;0.29282;0.29539;0.29839;0.3023;0.3066;0.31103;0.31597;0.32146;0.32759;0.33475;0.34326;0.35325;0.36506;0.37865;0.39364;
+6500;0.27043;0.27052;0.27138;0.27282;0.27448;0.27653;0.27899;0.28186;0.28562;0.28977;0.29407;0.29881;0.30401;0.30993;0.31659;0.32493;0.33445;0.34569;0.35859;0.37277;
+7000;0.25498;0.25525;0.25604;0.25741;0.25898;0.26094;0.2633;0.26604;0.26966;0.27367;0.27786;0.28244;0.28748;0.29321;0.2996;0.30742;0.31651;0.3272;0.33937;0.35277;
+7500;0.24027;0.24064;0.24139;0.2427;0.24418;0.24604;0.2483;0.2511;0.2544;0.25824;0.26234;0.26674;0.27163;0.27721;0.28344;0.29086;0.29945;0.30954;0.32101;0.33361;
+8000;0.22648;0.22672;0.22743;0.22868;0.23006;0.23184;0.23399;0.23667;0.23982;0.2435;0.2475;0.25172;0.25645;0.26186;0.26791;0.27503;0.28329;0.29286;0.30355;0.31532;
+8500;0.21336;0.21343;0.21412;0.21531;0.21661;0.2183;0.22035;0.2229;0.2259;0.22943;0.23332;0.23737;0.24194;0.24715;0.25304;0.25969;0.2678;0.27691;0.28703;0.29804;
+9000;0.20061;0.20082;0.20146;0.20257;0.20379;0.2054;0.20736;0.20978;0.21264;0.21601;0.21965;0.22367;0.22807;0.23306;0.23878;0.24525;0.25294;0.26166;0.27121;0.28159;
+9500;0.18851;0.1888;0.1894;0.19044;0.19159;0.19312;0.19498;0.19728;0.2;0.20321;0.20673;0.21058;0.21484;0.21974;0.22514;0.23138;0.23871;0.24702;0.25609;0.26586;
+10000;0.17721;0.1774;0.17796;0.17892;0.18001;0.18146;0.18321;0.18526;0.18796;0.19101;0.19451;0.1981;0.2022;0.2069;0.2121;0.21822;0.22514;0.23298;0.24159;0.25083;
+10500;0.16649;0.16655;0.16709;0.16798;0.16901;0.17038;0.17205;0.17399;0.17652;0.1794;0.18272;0.18619;0.19013;0.19464;0.19973;0.20552;0.21217;0.21956;0.22767;0.23644;
+11000;0.15612;0.15628;0.15677;0.15759;0.15857;0.15986;0.16144;0.16328;0.16566;0.16838;0.17151;0.17485;0.17863;0.18285;0.18782;0.19338;0.19974;0.20676;0.21437;0.22262;
+11500;0.14508;0.14522;0.14567;0.14642;0.14731;0.1485;0.14995;0.15164;0.15384;0.15637;0.15928;0.16238;0.16587;0.16988;0.17441;0.17957;0.18546;0.19197;0.19904;0.2067;
+12000;0.13487;0.135;0.13543;0.13612;0.13695;0.13806;0.13941;0.14098;0.14301;0.14534;0.14801;0.15085;0.15405;0.15776;0.16197;0.16675;0.17222;0.17826;0.18481;0.19193;
+12500;0.12537;0.12552;0.12592;0.12656;0.12733;0.12836;0.12962;0.13108;0.13297;0.13514;0.13763;0.14027;0.14326;0.14667;0.15052;0.1549;0.15993;0.16553;0.17161;0.17821;
+13000;0.11653;0.11672;0.11709;0.11769;0.1184;0.11936;0.12053;0.12189;0.12366;0.12567;0.128;0.13046;0.13323;0.1364;0.13998;0.14406;0.14871;0.15385;0.15942;0.16548;
+13500;0.10844;0.10855;0.10889;0.10945;0.11011;0.11101;0.1121;0.11336;0.11501;0.11688;0.11905;0.12133;0.12392;0.12686;0.1302;0.13399;0.13831;0.14308;0.14825;0.15385;
+14000;0.10091;0.10097;0.10129;0.1018;0.10242;0.10325;0.10427;0.10545;0.10698;0.10872;0.11074;0.11286;0.11527;0.11801;0.12111;0.12463;0.12865;0.13308;0.13787;0.14308;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.46497;0.46543;0.46668;0.46867;0.47122;0.47403;0.477;0.48074;0.48462;0.4886;0.49282;0.49738;0.50384;0.51153;0.52049;0.53085;0.54271;0.55715;0.57379;0.59381;
+500;0.44114;0.44154;0.44273;0.44463;0.44703;0.44969;0.45251;0.45609;0.45988;0.46377;0.46786;0.4723;0.4784;0.48579;0.49444;0.50445;0.51591;0.5298;0.54585;0.56514;
+1000;0.41835;0.4187;0.41981;0.4216;0.42389;0.42644;0.42916;0.43263;0.43626;0.43999;0.44394;0.44825;0.454;0.46111;0.46944;0.47905;0.49019;0.50358;0.519;0.53757;
+1500;0.39656;0.39715;0.39821;0.3999;0.40202;0.4044;0.40694;0.4102;0.41367;0.4173;0.42111;0.42525;0.43111;0.43743;0.44545;0.45478;0.46552;0.47843;0.49325;0.51109;
+2000;0.37651;0.37657;0.37757;0.37918;0.38119;0.38347;0.3859;0.38905;0.39238;0.39578;0.39935;0.40328;0.4088;0.41481;0.42246;0.43145;0.44184;0.45427;0.46856;0.48566;
+2500;0.35656;0.35688;0.35784;0.35938;0.36129;0.36347;0.3658;0.36885;0.37206;0.37534;0.37883;0.38256;0.38764;0.39323;0.40053;0.40911;0.41913;0.43109;0.44485;0.46131;
+3000;0.33751;0.33802;0.33894;0.34041;0.34223;0.34433;0.34658;0.3495;0.35262;0.35581;0.35918;0.36277;0.36755;0.37291;0.37975;0.38817;0.39737;0.40884;0.42209;0.43791;
+3500;0.31965;0.31994;0.32081;0.32222;0.32395;0.32596;0.32813;0.33095;0.33397;0.33707;0.34036;0.34385;0.34837;0.35348;0.36037;0.36808;0.37707;0.38758;0.40025;0.41546;
+4000;0.30258;0.30265;0.30348;0.30482;0.30645;0.30838;0.31048;0.3132;0.31613;0.31914;0.32235;0.32572;0.33001;0.33491;0.34118;0.34889;0.35749;0.3676;0.37957;0.39392;
+4500;0.28594;0.28621;0.28698;0.28824;0.28976;0.29159;0.2936;0.29622;0.29906;0.30198;0.3051;0.30838;0.31243;0.31713;0.32348;0.33054;0.33882;0.34848;0.35995;0.37366;
+5000;0.27037;0.27061;0.27134;0.27255;0.27398;0.27571;0.2776;0.28008;0.28277;0.28557;0.2886;0.29179;0.29564;0.30014;0.3062;0.31297;0.32092;0.33021;0.34119;0.35426;
+5500;0.25552;0.25571;0.25641;0.25756;0.25891;0.26057;0.26238;0.26477;0.26737;0.27006;0.27293;0.27595;0.2796;0.2839;0.28969;0.29616;0.30378;0.3127;0.32324;0.33572;
+6000;0.24136;0.24143;0.24216;0.24325;0.24453;0.2461;0.24785;0.25014;0.25266;0.25527;0.25807;0.261;0.26412;0.26843;0.27366;0.2801;0.28738;0.29593;0.30602;0.31793;
+6500;0.22771;0.22792;0.22855;0.22959;0.23079;0.2323;0.23397;0.23617;0.23859;0.24113;0.24384;0.2467;0.24976;0.2541;0.25903;0.26483;0.27172;0.27991;0.28956;0.30087;
+7000;0.21472;0.21498;0.21557;0.21655;0.21769;0.21914;0.22073;0.22283;0.22517;0.22762;0.23027;0.23307;0.23606;0.24014;0.24485;0.2504;0.25693;0.26463;0.27381;0.28455;
+7500;0.20239;0.20265;0.20321;0.20415;0.20523;0.2066;0.20812;0.21012;0.21237;0.21476;0.21732;0.22005;0.22297;0.2268;0.23131;0.23661;0.24285;0.2502;0.25891;0.26894;
+8000;0.19066;0.19089;0.19143;0.19232;0.19334;0.19465;0.19612;0.19804;0.2002;0.20251;0.20495;0.20762;0.21046;0.21408;0.21837;0.22344;0.22939;0.23641;0.24473;0.25424;
+8500;0.1795;0.17969;0.1802;0.18105;0.18202;0.18328;0.18469;0.18653;0.1886;0.19085;0.19319;0.19577;0.19852;0.20193;0.20604;0.21087;0.21655;0.22324;0.23117;0.24018;
+9000;0.1689;0.16903;0.16952;0.17032;0.17125;0.17244;0.1738;0.17556;0.17755;0.17974;0.18199;0.18448;0.18716;0.19036;0.19427;0.19889;0.20429;0.21067;0.21821;0.22672;
+9500;0.15873;0.15889;0.15936;0.16011;0.16099;0.16212;0.16342;0.16512;0.16703;0.16915;0.17131;0.17372;0.17633;0.17936;0.18308;0.18746;0.19261;0.19868;0.20583;0.21385;
+10000;0.14908;0.14924;0.14969;0.1504;0.15123;0.15231;0.15356;0.15517;0.15701;0.15898;0.16115;0.16347;0.16601;0.1688;0.17243;0.17659;0.18148;0.18725;0.19402;0.20157;
+10500;0.13991;0.14006;0.14048;0.14115;0.14193;0.14296;0.14415;0.14569;0.14747;0.14937;0.15147;0.15371;0.15618;0.15891;0.16233;0.16611;0.1709;0.17637;0.18276;0.18986;
+11000;0.1313;0.13143;0.13183;0.13245;0.13318;0.13414;0.13526;0.13669;0.13837;0.14022;0.14224;0.1444;0.14681;0.14947;0.15269;0.15645;0.16085;0.16603;0.17204;0.1787;
+11500;0.12211;0.12224;0.12261;0.12318;0.12387;0.12476;0.1258;0.12714;0.1287;0.13039;0.13222;0.13419;0.13637;0.1388;0.14181;0.14529;0.14937;0.15418;0.15975;0.16594;
+12000;0.11356;0.1137;0.11405;0.11458;0.11522;0.11605;0.11701;0.11827;0.11972;0.12129;0.123;0.12482;0.12685;0.12909;0.13182;0.13499;0.13872;0.14318;0.14835;0.15409;
+12500;0.1056;0.10578;0.1061;0.10659;0.10719;0.10796;0.10886;0.11003;0.11138;0.11283;0.11442;0.11611;0.118;0.12008;0.12262;0.12557;0.12903;0.13311;0.13785;0.1431;
+13000;0.098318;0.098416;0.098717;0.09917;0.099723;0.10044;0.10128;0.10237;0.10362;0.10497;0.10645;0.10803;0.10978;0.11171;0.11407;0.11681;0.12003;0.12383;0.12824;0.13312;
+13500;0.091534;0.09156;0.091857;0.09228;0.092795;0.093466;0.094241;0.095254;0.096421;0.097678;0.099053;0.10052;0.10215;0.10394;0.10614;0.10868;0.11167;0.1152;0.11931;0.12385;
+14000;0.085147;0.085232;0.085493;0.085883;0.086362;0.086986;0.087707;0.08865;0.089735;0.090903;0.092182;0.093544;0.095057;0.096716;0.098763;0.10113;0.10391;0.10719;0.11101;0.11523;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.39057;0.39098;0.3919;0.39329;0.39498;0.39677;0.39863;0.40066;0.40272;0.40516;0.40782;0.4117;0.41624;0.42092;0.42634;0.43249;0.44018;0.44935;0.46019;0.47305;
+500;0.37077;0.371;0.37184;0.37314;0.37469;0.37633;0.37804;0.38;0.38203;0.38393;0.38692;0.3906;0.39497;0.39959;0.40487;0.41087;0.41823;0.42705;0.43765;0.45011;
+1000;0.35182;0.35194;0.35275;0.35399;0.35549;0.35708;0.35873;0.36057;0.36243;0.36418;0.36691;0.37038;0.37458;0.37912;0.38423;0.39013;0.39718;0.40566;0.416;0.42807;
+1500;0.33343;0.33369;0.33447;0.33566;0.33709;0.33863;0.34025;0.34205;0.34386;0.3456;0.34811;0.35123;0.35509;0.3595;0.36445;0.37023;0.37739;0.38555;0.3952;0.40689;
+2000;0.31602;0.31628;0.31702;0.31816;0.31953;0.32099;0.32255;0.32432;0.32609;0.32782;0.33019;0.33314;0.33684;0.34097;0.3456;0.35117;0.35803;0.3659;0.37524;0.38654;
+2500;0.29937;0.2996;0.30031;0.30141;0.30272;0.30415;0.30565;0.30738;0.30912;0.31081;0.31304;0.31615;0.31937;0.3234;0.3279;0.33316;0.33959;0.34706;0.35609;0.36699;
+3000;0.28348;0.28364;0.28432;0.28537;0.28663;0.28801;0.28947;0.29117;0.29287;0.29454;0.29666;0.2996;0.30268;0.30654;0.31095;0.31604;0.32184;0.32928;0.33781;0.34824;
+3500;0.2683;0.26837;0.26905;0.27003;0.27124;0.27257;0.27398;0.27565;0.27732;0.27897;0.28098;0.28376;0.28671;0.29048;0.29475;0.29963;0.30528;0.31238;0.32056;0.33048;
+4000;0.2537;0.25391;0.25452;0.25546;0.25659;0.25784;0.25918;0.2608;0.26243;0.26407;0.266;0.26862;0.27144;0.27508;0.27923;0.28397;0.28943;0.2962;0.30408;0.31359;
+4500;0.23997;0.24016;0.24074;0.24164;0.24271;0.24391;0.24519;0.24674;0.24828;0.24983;0.25167;0.25414;0.25685;0.26035;0.26436;0.26896;0.27426;0.28077;0.2883;0.29744;
+5000;0.22687;0.22704;0.22759;0.22845;0.22948;0.23064;0.23187;0.23337;0.23487;0.23638;0.2381;0.24037;0.2429;0.24627;0.25015;0.25458;0.25971;0.26597;0.27322;0.28198;
+5500;0.21439;0.21445;0.21503;0.21585;0.21683;0.21794;0.21914;0.22061;0.22208;0.22357;0.2252;0.22733;0.22973;0.2329;0.23654;0.24084;0.24577;0.25179;0.25876;0.26718;
+6000;0.20234;0.20252;0.20302;0.20381;0.20475;0.20582;0.20697;0.20841;0.20985;0.2113;0.21286;0.21486;0.21713;0.22016;0.22371;0.22778;0.23242;0.23822;0.24492;0.253;
+6500;0.19087;0.19106;0.19154;0.1923;0.19319;0.19422;0.19532;0.19672;0.19813;0.19955;0.20106;0.20295;0.20514;0.20802;0.21142;0.21536;0.21986;0.22533;0.23166;0.23943;
+7000;0.17996;0.18012;0.18058;0.1813;0.18215;0.18314;0.1842;0.18556;0.18694;0.18833;0.1898;0.19158;0.19367;0.19645;0.19971;0.20348;0.20782;0.21309;0.21916;0.2265;
+7500;0.16958;0.1697;0.17013;0.17082;0.17162;0.17257;0.17359;0.17491;0.17626;0.17761;0.17904;0.18073;0.18294;0.18539;0.18853;0.19216;0.19632;0.20137;0.20722;0.21425;
+8000;0.15973;0.15978;0.16018;0.16083;0.1616;0.16251;0.16348;0.16477;0.16608;0.1674;0.16879;0.17022;0.1723;0.17484;0.17785;0.18135;0.18536;0.1902;0.19579;0.20253;
+8500;0.15018;0.15032;0.15071;0.15132;0.15205;0.15292;0.15386;0.1551;0.15638;0.15766;0.15902;0.16042;0.16254;0.16479;0.16766;0.17102;0.1749;0.17954;0.18489;0.19133;
+9000;0.14113;0.14133;0.1417;0.14228;0.14297;0.1438;0.1447;0.1459;0.14715;0.14839;0.1497;0.15107;0.15306;0.15521;0.15795;0.16117;0.16492;0.16936;0.17449;0.18064;
+9500;0.13266;0.13278;0.13313;0.13368;0.13434;0.13513;0.13599;0.13715;0.13836;0.13956;0.14084;0.14218;0.14404;0.14608;0.1487;0.15177;0.15538;0.15964;0.16456;0.17044;
+10000;0.12463;0.12474;0.12506;0.12557;0.12618;0.12691;0.12771;0.12882;0.13;0.13116;0.13241;0.13371;0.13545;0.13741;0.14005;0.14285;0.14629;0.15038;0.15509;0.1607;
+10500;0.11703;0.11714;0.11745;0.11792;0.1185;0.1192;0.11996;0.12101;0.12212;0.12322;0.1244;0.12567;0.12731;0.12917;0.13168;0.13448;0.13775;0.14155;0.14605;0.1514;
+11000;0.10984;0.10993;0.11022;0.11067;0.11122;0.11188;0.11261;0.11362;0.11469;0.11576;0.11691;0.11811;0.11961;0.12147;0.1236;0.12638;0.1295;0.13314;0.13743;0.14252;
+11500;0.10221;0.1023;0.10257;0.10298;0.10349;0.10411;0.1048;0.10574;0.10673;0.10773;0.10879;0.1099;0.1113;0.11303;0.11508;0.1175;0.12034;0.12367;0.12765;0.13237;
+12000;0.095116;0.095212;0.095464;0.095847;0.096324;0.096905;0.097542;0.098417;0.099344;0.10026;0.10125;0.10228;0.10358;0.10519;0.1071;0.10934;0.11198;0.11505;0.11869;0.12299;
+12500;0.088515;0.088634;0.088869;0.089227;0.089672;0.090212;0.090803;0.091616;0.092477;0.09333;0.094249;0.095199;0.09641;0.097904;0.099679;0.10177;0.10422;0.10708;0.11045;0.11445;
+13000;0.082456;0.082529;0.082747;0.083079;0.083493;0.083994;0.084545;0.0853;0.086098;0.086889;0.087743;0.088624;0.089751;0.091139;0.092789;0.094731;0.09701;0.099663;0.1028;0.10652;
+13500;0.076815;0.076837;0.077062;0.077369;0.077754;0.07822;0.078733;0.079432;0.080172;0.080908;0.081701;0.082516;0.083566;0.084855;0.086388;0.088193;0.09031;0.092774;0.09569;0.099142;
+14000;0.071565;0.071585;0.071781;0.072066;0.072424;0.072856;0.073333;0.073981;0.074669;0.075352;0.076087;0.076845;0.07782;0.079018;0.080441;0.082119;0.084084;0.086375;0.089083;0.092289;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.32568;0.32581;0.32643;0.32731;0.32834;0.3293;0.33023;0.33088;0.33219;0.33413;0.33619;0.33864;0.34061;0.34317;0.34679;0.35067;0.35479;0.3594;0.36477;0.37137;
+500;0.30885;0.30916;0.30975;0.31059;0.31156;0.31246;0.31335;0.31399;0.31523;0.31699;0.31884;0.32118;0.32313;0.3256;0.32907;0.33284;0.33693;0.34149;0.34682;0.35338;
+1000;0.293;0.29319;0.29376;0.29457;0.2955;0.29639;0.29726;0.29788;0.29905;0.30068;0.30245;0.30486;0.30661;0.30889;0.31209;0.3157;0.3198;0.32431;0.32959;0.33607;
+1500;0.27778;0.27796;0.27849;0.27926;0.28014;0.28099;0.28184;0.28249;0.28328;0.28483;0.2868;0.28905;0.29082;0.29303;0.29609;0.2994;0.30334;0.30778;0.313;0.31941;
+2000;0.26324;0.26342;0.26393;0.26466;0.26551;0.26632;0.26714;0.26776;0.26849;0.26991;0.27176;0.27392;0.27572;0.27784;0.28075;0.28394;0.28786;0.29207;0.29705;0.30336;
+2500;0.24935;0.24948;0.24997;0.25067;0.25148;0.25226;0.25305;0.25368;0.25441;0.2557;0.25741;0.25948;0.26128;0.26333;0.26612;0.26914;0.27302;0.27716;0.28206;0.28807;
+3000;0.23596;0.23612;0.23658;0.23725;0.23803;0.23879;0.23957;0.24021;0.24094;0.24214;0.24375;0.24572;0.2475;0.24943;0.25214;0.25504;0.25882;0.26287;0.26769;0.27358;
+3500;0.2235;0.22349;0.22393;0.22455;0.22528;0.22598;0.22669;0.22733;0.22806;0.2292;0.23069;0.2326;0.23435;0.23616;0.23855;0.24158;0.24528;0.24917;0.25391;0.25968;
+4000;0.2113;0.21144;0.21186;0.21246;0.21316;0.21384;0.21456;0.21517;0.21584;0.21686;0.21847;0.22004;0.22182;0.22355;0.22587;0.22873;0.23228;0.23609;0.24071;0.24634;
+4500;0.19967;0.19992;0.20032;0.2009;0.20158;0.20225;0.20296;0.20358;0.20426;0.20521;0.20671;0.20816;0.20983;0.21152;0.21379;0.21649;0.21984;0.22357;0.22809;0.23354;
+5000;0.18879;0.18892;0.1893;0.18986;0.19052;0.19117;0.19187;0.19249;0.19317;0.19407;0.19549;0.19688;0.19853;0.20019;0.20229;0.20478;0.20799;0.21161;0.21601;0.2213;
+5500;0.17841;0.17842;0.17878;0.17932;0.17995;0.18058;0.18127;0.18191;0.18258;0.18344;0.18478;0.1861;0.18773;0.18939;0.19142;0.194;0.19677;0.20027;0.20445;0.20957;
+6000;0.16827;0.16839;0.16874;0.16926;0.16986;0.17048;0.17116;0.17179;0.17246;0.17327;0.17454;0.17581;0.17741;0.17907;0.18105;0.18351;0.18617;0.18956;0.19336;0.19835;
+6500;0.15864;0.15882;0.15916;0.15965;0.16024;0.16084;0.1615;0.16214;0.16281;0.16356;0.16477;0.16598;0.16756;0.16919;0.17112;0.17349;0.17605;0.17934;0.18303;0.18776;
+7000;0.14959;0.14971;0.15003;0.1505;0.15106;0.15164;0.15229;0.15293;0.15359;0.15429;0.15545;0.15661;0.15815;0.15975;0.16163;0.16373;0.16637;0.16953;0.17314;0.17773;
+7500;0.14099;0.14103;0.14134;0.14178;0.14232;0.14288;0.14352;0.14415;0.14481;0.14547;0.14658;0.14768;0.14917;0.15076;0.15257;0.15464;0.15715;0.16018;0.16383;0.16814;
+8000;0.13265;0.13275;0.13304;0.13348;0.13399;0.13454;0.13516;0.13579;0.13644;0.13708;0.13796;0.13917;0.14061;0.14216;0.14392;0.14595;0.14836;0.15125;0.1548;0.15896;
+8500;0.12479;0.12489;0.12516;0.12558;0.12607;0.1266;0.12721;0.12783;0.12847;0.12908;0.12993;0.13107;0.13244;0.13397;0.13568;0.13765;0.13997;0.14274;0.14607;0.15019;
+9000;0.11734;0.11745;0.11771;0.11809;0.11855;0.11905;0.11964;0.12025;0.12088;0.12148;0.12228;0.12335;0.12466;0.12615;0.12781;0.12973;0.13195;0.13462;0.13794;0.14181;
+9500;0.11036;0.11045;0.11069;0.11106;0.1115;0.11197;0.11253;0.1131;0.11369;0.11423;0.11499;0.11598;0.11724;0.11867;0.12029;0.12215;0.12427;0.12687;0.13007;0.1338;
+10000;0.10375;0.10379;0.10402;0.10437;0.10479;0.10524;0.10577;0.10633;0.1069;0.10745;0.10813;0.10914;0.11018;0.11156;0.11314;0.11493;0.11699;0.11947;0.12254;0.12613;
+10500;0.097373;0.09745;0.09767;0.098004;0.098401;0.09884;0.099353;0.0999;0.10046;0.10101;0.10165;0.1026;0.10359;0.10488;0.10637;0.10805;0.11005;0.11242;0.11536;0.11881;
+11000;0.091339;0.091434;0.091643;0.09196;0.09234;0.092761;0.093258;0.093792;0.094342;0.094885;0.0955;0.096383;0.097324;0.098571;0.10001;0.10164;0.10351;0.10572;0.10853;0.11183;
+11500;0.085072;0.085139;0.085333;0.085627;0.08598;0.086371;0.086833;0.087329;0.087838;0.088338;0.08891;0.089733;0.090608;0.091766;0.093098;0.094611;0.096354;0.098404;0.10096;0.10396;
+12000;0.079238;0.079293;0.079473;0.079746;0.080073;0.080435;0.080866;0.081325;0.081796;0.082259;0.082789;0.083555;0.084366;0.085443;0.086679;0.088085;0.089702;0.091608;0.093987;0.096765;
+12500;0.073806;0.073864;0.074032;0.074284;0.074588;0.074923;0.075322;0.075749;0.076186;0.076614;0.077103;0.077817;0.078568;0.079569;0.080716;0.082021;0.083518;0.085293;0.087502;0.090081;
+13000;0.068755;0.068812;0.068967;0.069202;0.069485;0.069799;0.070172;0.070571;0.070977;0.071372;0.071823;0.072487;0.073183;0.074111;0.075177;0.076387;0.077777;0.079422;0.081476;0.083865;
+13500;0.06407;0.06412;0.064264;0.064482;0.064744;0.065034;0.065381;0.065751;0.06613;0.066502;0.066924;0.067537;0.068183;0.069043;0.070032;0.071153;0.072442;0.073966;0.075871;0.078079;
+14000;0.059712;0.059763;0.059897;0.060098;0.060343;0.060611;0.060932;0.061275;0.061625;0.061969;0.062361;0.062937;0.063539;0.064336;0.065251;0.06629;0.067481;0.068958;0.070655;0.072704;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.26757;0.26794;0.2684;0.26901;0.26971;0.27028;0.27064;0.27091;0.27229;0.27376;0.27489;0.27559;0.27658;0.2784;0.28039;0.2818;0.28281;0.28337;0.28351;0.28344;
+500;0.25409;0.25428;0.25471;0.25529;0.25593;0.25647;0.2568;0.25703;0.25831;0.25967;0.26084;0.26156;0.26246;0.26412;0.26604;0.26738;0.26845;0.26923;0.26969;0.27008;
+1000;0.24118;0.24119;0.24163;0.24214;0.24274;0.24325;0.24357;0.24382;0.24496;0.2462;0.24737;0.24813;0.24898;0.25049;0.25237;0.25376;0.25487;0.2557;0.25639;0.25716;
+1500;0.22854;0.22868;0.22907;0.22958;0.23015;0.23062;0.23094;0.23116;0.23222;0.23337;0.23453;0.23524;0.23605;0.23777;0.23933;0.24071;0.2419;0.2429;0.24377;0.24473;
+2000;0.21647;0.2167;0.21707;0.21755;0.21808;0.21854;0.21885;0.2191;0.22006;0.22111;0.22226;0.22294;0.22373;0.2253;0.22685;0.22825;0.22949;0.2306;0.23169;0.23294;
+2500;0.20494;0.20523;0.20558;0.20604;0.20655;0.20698;0.20729;0.20753;0.20842;0.20941;0.21054;0.2112;0.21196;0.21343;0.21494;0.21632;0.21762;0.21884;0.22008;0.22158;
+3000;0.1942;0.1944;0.19472;0.19514;0.1956;0.19598;0.19623;0.19647;0.1973;0.19821;0.19934;0.19999;0.20072;0.2021;0.20357;0.20494;0.20626;0.20757;0.20896;0.21062;
+3500;0.18395;0.18406;0.18436;0.18475;0.1852;0.18556;0.18583;0.18604;0.18677;0.18756;0.18863;0.18928;0.18997;0.19129;0.19272;0.19407;0.19541;0.19676;0.19828;0.20011;
+4000;0.17415;0.17416;0.17444;0.17482;0.17525;0.1756;0.17588;0.17608;0.17676;0.1775;0.17857;0.17914;0.17968;0.18096;0.18232;0.18368;0.18502;0.18641;0.18797;0.18992;
+4500;0.1646;0.1647;0.16497;0.16533;0.16575;0.16608;0.16636;0.16656;0.16719;0.16788;0.1689;0.1695;0.1702;0.1712;0.17241;0.17372;0.17504;0.17646;0.17808;0.1801;
+5000;0.15556;0.15565;0.15591;0.15625;0.15665;0.15698;0.15725;0.15747;0.15803;0.15867;0.15964;0.16025;0.16095;0.1619;0.16305;0.16436;0.16559;0.16694;0.1686;0.17069;
+5500;0.14695;0.14701;0.14725;0.14758;0.14796;0.14828;0.14854;0.14874;0.14927;0.14985;0.15078;0.15141;0.15211;0.15302;0.15411;0.15544;0.15668;0.15802;0.15957;0.16165;
+6000;0.13874;0.13877;0.13898;0.13928;0.13963;0.13993;0.1402;0.14041;0.1409;0.14145;0.14233;0.14298;0.14367;0.14435;0.14558;0.14692;0.14816;0.14952;0.1511;0.1531;
+6500;0.13093;0.13083;0.13105;0.13135;0.13169;0.13198;0.13225;0.13246;0.13291;0.13358;0.13427;0.13495;0.13544;0.1363;0.13745;0.13877;0.14002;0.14139;0.14299;0.145;
+7000;0.12322;0.1233;0.12351;0.12379;0.12412;0.12441;0.12467;0.12488;0.12531;0.12594;0.12659;0.12728;0.1278;0.12861;0.1297;0.131;0.13224;0.13362;0.13523;0.13726;
+7500;0.11605;0.11612;0.11632;0.11659;0.11691;0.11718;0.11745;0.11766;0.11806;0.11866;0.11928;0.11997;0.12051;0.12129;0.1223;0.12359;0.12482;0.12619;0.12781;0.12984;
+8000;0.10924;0.1093;0.10948;0.10974;0.11004;0.11031;0.11058;0.11079;0.11117;0.11172;0.11231;0.11301;0.11356;0.11431;0.11524;0.11654;0.11774;0.11911;0.12073;0.12274;
+8500;0.10286;0.10292;0.10309;0.10333;0.1036;0.10385;0.10409;0.10427;0.10461;0.10513;0.10569;0.10638;0.10694;0.10766;0.10869;0.10979;0.11101;0.11235;0.11396;0.11595;
+9000;0.096798;0.096844;0.09701;0.097239;0.097502;0.097738;0.097981;0.098171;0.098486;0.098945;0.099436;0.10013;0.10064;0.10134;0.10232;0.10336;0.10458;0.10591;0.10749;0.10946;
+9500;0.091053;0.091075;0.091235;0.091449;0.091702;0.091932;0.092176;0.092365;0.092667;0.092998;0.093565;0.094226;0.094744;0.095385;0.096272;0.097245;0.098478;0.099774;0.10133;0.10327;
+10000;0.085542;0.085595;0.085745;0.085955;0.086196;0.086419;0.086659;0.086851;0.087044;0.087461;0.08798;0.088613;0.08915;0.089782;0.09063;0.091534;0.092685;0.093918;0.095467;0.097362;
+10500;0.080335;0.080407;0.080549;0.08075;0.080982;0.0812;0.081438;0.081625;0.081826;0.082199;0.082675;0.083284;0.083836;0.084452;0.085268;0.086135;0.08727;0.088472;0.08993;0.091727;
+11000;0.075438;0.075486;0.075621;0.075815;0.076037;0.076249;0.076484;0.076676;0.076881;0.077223;0.077748;0.078235;0.078785;0.079372;0.080089;0.081005;0.082118;0.083284;0.084724;0.086473;
+11500;0.070297;0.070343;0.070468;0.070647;0.070853;0.071048;0.071265;0.071443;0.071628;0.071946;0.072433;0.072884;0.073392;0.073938;0.074602;0.075454;0.076486;0.077563;0.078895;0.080513;
+12000;0.065516;0.065568;0.065684;0.065849;0.066039;0.066219;0.06642;0.066583;0.066751;0.067046;0.067498;0.067914;0.068384;0.068891;0.069502;0.070298;0.071254;0.072247;0.073478;0.074974;
+12500;0.06107;0.061134;0.061241;0.061394;0.061569;0.061735;0.06192;0.062071;0.062224;0.062493;0.062915;0.063299;0.063734;0.064203;0.064767;0.065505;0.066393;0.067307;0.068445;0.069828;
+13000;0.056937;0.057018;0.057117;0.057258;0.05742;0.057573;0.057742;0.057881;0.058021;0.058273;0.05866;0.059013;0.059414;0.05985;0.060369;0.061053;0.061877;0.062719;0.063769;0.065047;
+13500;0.053215;0.053197;0.053288;0.053419;0.053568;0.053708;0.053865;0.053992;0.054118;0.054351;0.054709;0.055035;0.055403;0.055807;0.056283;0.056917;0.05768;0.058455;0.059425;0.060605;
+14000;0.04962;0.049649;0.049734;0.049855;0.049993;0.050121;0.050265;0.050382;0.050496;0.05071;0.051041;0.051343;0.051679;0.052053;0.052556;0.053079;0.053771;0.054509;0.05539;0.056479;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.21629;0.21641;0.21685;0.21741;0.21806;0.21846;0.21882;0.21957;0.2208;0.2218;0.22219;0.22262;0.22371;0.22454;0.22446;0.22325;0.22034;0.21498;0.2064;0.19219;
+500;0.21056;0.20532;0.20578;0.20631;0.20691;0.20725;0.20757;0.20824;0.20939;0.21037;0.21075;0.21117;0.21218;0.21303;0.21301;0.21203;0.20957;0.205;0.1976;0.18558;
+1000;0.19479;0.19484;0.19522;0.1957;0.19625;0.19656;0.19686;0.19746;0.19851;0.19942;0.19976;0.20016;0.20108;0.20197;0.20205;0.20126;0.19921;0.19532;0.18903;0.1792;
+1500;0.18474;0.18476;0.18512;0.18555;0.18606;0.18634;0.18659;0.18712;0.18809;0.18896;0.18926;0.18963;0.1907;0.19137;0.19154;0.19094;0.18922;0.18594;0.18051;0.17243;
+2000;0.17493;0.17505;0.17538;0.17579;0.17627;0.17653;0.17676;0.17724;0.17815;0.17899;0.17926;0.17962;0.18059;0.18124;0.18148;0.18104;0.17963;0.17688;0.17231;0.16558;
+2500;0.16585;0.16589;0.16618;0.16655;0.16697;0.16718;0.16736;0.1678;0.16865;0.16945;0.16973;0.17006;0.17095;0.1716;0.17186;0.17155;0.17041;0.16813;0.16431;0.15874;
+3000;0.15713;0.15715;0.15743;0.15776;0.15816;0.15835;0.15852;0.15889;0.15965;0.16037;0.16061;0.16086;0.16176;0.1624;0.16269;0.16249;0.16157;0.15969;0.15653;0.15194;
+3500;0.1487;0.1488;0.14905;0.14936;0.14973;0.14991;0.15007;0.15041;0.15112;0.15182;0.15204;0.15215;0.15301;0.15362;0.15394;0.15381;0.15309;0.15153;0.14897;0.14522;
+4000;0.14068;0.1408;0.14104;0.14133;0.14168;0.14185;0.142;0.1423;0.14297;0.14365;0.14385;0.14415;0.14478;0.14535;0.14564;0.14553;0.14494;0.14368;0.14155;0.13849;
+4500;0.13308;0.13317;0.13339;0.13366;0.13398;0.13414;0.13428;0.13455;0.13518;0.13581;0.13603;0.13632;0.1369;0.13748;0.1378;0.13776;0.13722;0.13612;0.13439;0.13189;
+5000;0.12584;0.12587;0.12608;0.12633;0.12663;0.12678;0.12691;0.12716;0.12774;0.12832;0.12857;0.12885;0.12938;0.12996;0.13031;0.13034;0.12994;0.12902;0.1275;0.12547;
+5500;0.11884;0.11891;0.1191;0.11933;0.11961;0.11975;0.11988;0.1201;0.12064;0.12119;0.12144;0.12172;0.12221;0.12278;0.12314;0.12324;0.12297;0.12225;0.12103;0.11931;
+6000;0.11218;0.11226;0.11244;0.11266;0.11292;0.11305;0.11317;0.11337;0.11387;0.11438;0.11465;0.11492;0.11537;0.11593;0.11631;0.11646;0.1163;0.11575;0.1148;0.11342;
+6500;0.10587;0.10593;0.1061;0.1063;0.10654;0.10672;0.10677;0.10696;0.10742;0.1079;0.10818;0.10843;0.10885;0.10938;0.10979;0.10999;0.10992;0.10953;0.10879;0.10772;
+7000;0.099866;0.099906;0.10005;0.10023;0.10046;0.10063;0.10068;0.10085;0.10128;0.10174;0.10202;0.10226;0.10264;0.10314;0.10358;0.10382;0.10383;0.10356;0.103;0.10221;
+7500;0.094222;0.09427;0.094406;0.094569;0.094762;0.0949;0.094931;0.094957;0.095439;0.095873;0.096158;0.096263;0.09673;0.097196;0.097659;0.097928;0.09799;0.097821;0.097439;0.096903;
+8000;0.08886;0.088899;0.089028;0.089181;0.089363;0.08949;0.089529;0.089558;0.089992;0.09037;0.090621;0.090706;0.090986;0.091541;0.092006;0.092287;0.092411;0.092346;0.092113;0.091784;
+8500;0.083742;0.083788;0.083907;0.084051;0.084222;0.084341;0.084385;0.084414;0.084812;0.085172;0.085423;0.085509;0.085723;0.086185;0.086627;0.086918;0.087094;0.08712;0.087016;0.086861;
+9000;0.078885;0.078925;0.079035;0.07917;0.07933;0.079442;0.079489;0.079521;0.07987;0.080204;0.080457;0.080564;0.080761;0.081169;0.081611;0.081886;0.082063;0.082134;0.082145;0.082137;
+9500;0.074261;0.074297;0.074402;0.074529;0.074679;0.074777;0.074818;0.074842;0.075168;0.075482;0.075738;0.075861;0.076041;0.076408;0.076856;0.077139;0.077345;0.077474;0.077535;0.077609;
+10000;0.069881;0.069888;0.069987;0.070104;0.070242;0.070338;0.070383;0.070412;0.070705;0.070993;0.071255;0.071391;0.071559;0.071982;0.072337;0.072633;0.072869;0.073048;0.073194;0.073376;
+10500;0.065673;0.065708;0.065799;0.06591;0.066039;0.066128;0.066177;0.066208;0.066471;0.066729;0.066998;0.067146;0.067303;0.067693;0.068048;0.068352;0.068613;0.068841;0.069057;0.069324;
+11000;0.061714;0.061744;0.061829;0.061935;0.062055;0.062139;0.062191;0.062224;0.062458;0.06269;0.062963;0.063113;0.06327;0.063629;0.063981;0.064291;0.064571;0.064835;0.065113;0.065459;
+11500;0.057573;0.057607;0.057686;0.057783;0.057893;0.05797;0.058015;0.058044;0.058261;0.058475;0.058724;0.058859;0.059002;0.059335;0.059692;0.059939;0.06019;0.060425;0.060673;0.06098;
+12000;0.053724;0.053768;0.05384;0.05393;0.05403;0.0541;0.054139;0.054163;0.054365;0.054562;0.054787;0.054912;0.055039;0.055347;0.05564;0.055895;0.056122;0.056329;0.056547;0.056819;
+12500;0.050148;0.050205;0.05027;0.050353;0.050445;0.050511;0.050542;0.050562;0.050749;0.050929;0.051134;0.051244;0.05136;0.051643;0.05191;0.05214;0.052342;0.052525;0.052714;0.052954;
+13000;0.046876;0.046898;0.04696;0.047036;0.047118;0.047177;0.047202;0.04722;0.047393;0.047558;0.047742;0.047839;0.047944;0.048205;0.048447;0.048653;0.048833;0.048992;0.049155;0.049365;
+13500;0.043833;0.04384;0.043884;0.043951;0.04403;0.044087;0.04411;0.04412;0.044279;0.04443;0.044594;0.044679;0.044773;0.045013;0.045231;0.045416;0.045574;0.045712;0.045851;0.046032;
+14000;0.040953;0.040972;0.041024;0.041089;0.04116;0.041212;0.041234;0.041248;0.04139;0.041528;0.041675;0.041748;0.041831;0.04205;0.042247;0.042411;0.042549;0.042667;0.042784;0.042936;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.19773;0.19789;0.19833;0.19888;0.19956;0.19997;0.2003;0.20126;0.20247;0.20315;0.20334;0.20422;0.20498;0.20511;0.20422;0.20166;0.1964;0.18693;0.16925;0.13732;
+500;0.19459;0.18774;0.18816;0.18867;0.18928;0.18964;0.18992;0.19078;0.19191;0.1926;0.19284;0.1936;0.19436;0.19455;0.19383;0.19163;0.18708;0.1789;0.16387;0.13733;
+1000;0.17804;0.17804;0.17843;0.1789;0.17948;0.1798;0.18005;0.18083;0.18173;0.18252;0.18277;0.18344;0.1842;0.18444;0.18387;0.18199;0.17806;0.17101;0.15824;0.13626;
+1500;0.16865;0.16878;0.16914;0.16958;0.1701;0.1704;0.17063;0.17134;0.17217;0.17293;0.17317;0.17372;0.17444;0.17476;0.17432;0.17273;0.16934;0.16328;0.15244;0.13418;
+2000;0.15981;0.15992;0.16025;0.16065;0.16115;0.16141;0.16164;0.16228;0.16304;0.16379;0.16402;0.16449;0.16513;0.1655;0.16518;0.16384;0.16093;0.15561;0.14653;0.13118;
+2500;0.1516;0.15158;0.15188;0.15224;0.15268;0.1529;0.15308;0.15363;0.15432;0.15505;0.15527;0.15551;0.1563;0.15668;0.15644;0.15531;0.15283;0.14828;0.14076;0.12773;
+3000;0.1435;0.1436;0.14388;0.14421;0.14462;0.14482;0.14498;0.14549;0.14612;0.14678;0.14694;0.14714;0.14787;0.14827;0.14808;0.14715;0.14503;0.14116;0.13475;0.1239;
+3500;0.13578;0.13596;0.13622;0.13653;0.13691;0.1371;0.13724;0.13771;0.13829;0.13894;0.1391;0.13927;0.13989;0.14027;0.14012;0.13931;0.13752;0.13419;0.12879;0.11977;
+4000;0.12857;0.12866;0.1289;0.12919;0.12955;0.12971;0.12985;0.13027;0.13093;0.13144;0.13159;0.13177;0.13233;0.13274;0.13263;0.13188;0.13026;0.12743;0.12277;0.11538;
+4500;0.1217;0.12169;0.12191;0.12218;0.12251;0.12266;0.12279;0.12317;0.12379;0.12428;0.12443;0.1246;0.12512;0.12555;0.12549;0.12488;0.12346;0.12089;0.1169;0.1108;
+5000;0.11496;0.11503;0.11524;0.11548;0.11579;0.11593;0.11604;0.11639;0.11697;0.11745;0.11759;0.11777;0.11823;0.11868;0.11867;0.11817;0.11698;0.11474;0.11116;0.10606;
+5500;0.10855;0.10868;0.10887;0.1091;0.10938;0.10951;0.10961;0.10993;0.11046;0.11093;0.11107;0.11125;0.11167;0.11212;0.11216;0.11177;0.11073;0.10883;0.10579;0.10142;
+6000;0.10257;0.10263;0.10281;0.10301;0.10327;0.10339;0.10348;0.10377;0.10426;0.10471;0.10484;0.10501;0.10554;0.10586;0.10594;0.10561;0.10473;0.10313;0.10057;0.096921;
+6500;0.096883;0.096871;0.097031;0.097223;0.097463;0.097569;0.097655;0.097907;0.098362;0.09878;0.098912;0.099075;0.099551;0.099868;0.099971;0.099723;0.099005;0.09766;0.095519;0.092478;
+7000;0.09143;0.09148;0.091622;0.091787;0.091995;0.092076;0.092135;0.092338;0.092751;0.093145;0.093255;0.093362;0.093833;0.094155;0.094282;0.094113;0.093526;0.092409;0.090624;0.088117;
+7500;0.086251;0.086343;0.086475;0.086627;0.086819;0.08689;0.086938;0.08711;0.087472;0.08782;0.087901;0.087925;0.088403;0.088718;0.08887;0.088766;0.088297;0.087375;0.085899;0.083844;
+8000;0.081398;0.081444;0.081563;0.081701;0.081873;0.081934;0.081979;0.082131;0.082467;0.082801;0.082883;0.083009;0.083315;0.083596;0.083728;0.083671;0.083306;0.082557;0.08135;0.079644;
+8500;0.076791;0.07677;0.076879;0.077006;0.077164;0.077221;0.077261;0.077397;0.077707;0.078015;0.07811;0.078235;0.078509;0.078796;0.078938;0.078891;0.078571;0.077949;0.076976;0.075608;
+9000;0.072289;0.072325;0.072427;0.072544;0.07269;0.072742;0.072781;0.0729;0.073186;0.07347;0.073575;0.073698;0.073945;0.074231;0.074389;0.074384;0.074155;0.073637;0.072817;0.071699;
+9500;0.06803;0.068105;0.0682;0.068307;0.068441;0.06849;0.068527;0.06863;0.068893;0.069154;0.069272;0.06939;0.069612;0.069894;0.070064;0.070096;0.069942;0.06955;0.068902;0.068022;
+10000;0.064068;0.064102;0.064188;0.064288;0.064411;0.06449;0.064489;0.064581;0.064824;0.065063;0.065196;0.065302;0.065502;0.065765;0.065957;0.06602;0.06593;0.065646;0.065149;0.064483;
+10500;0.06032;0.060305;0.060384;0.060476;0.060589;0.060662;0.060665;0.060746;0.060969;0.061191;0.06133;0.061427;0.061607;0.061849;0.062061;0.06215;0.062112;0.061921;0.061558;0.061069;
+11000;0.056681;0.056708;0.056782;0.056868;0.056973;0.057039;0.057046;0.057115;0.057319;0.05753;0.05767;0.057688;0.057921;0.05814;0.058369;0.058478;0.058483;0.05837;0.058123;0.057785;
+11500;0.052907;0.052942;0.05301;0.053089;0.053184;0.053244;0.053246;0.05331;0.053497;0.053688;0.053814;0.053828;0.054042;0.054242;0.054447;0.05454;0.054535;0.054417;0.054174;0.053837;
+12000;0.049401;0.049448;0.049511;0.049583;0.04967;0.049723;0.049722;0.049779;0.04995;0.050123;0.050235;0.050242;0.050441;0.050623;0.050805;0.050883;0.050869;0.050746;0.050506;0.050172;
+12500;0.046186;0.046207;0.046264;0.04633;0.046409;0.046456;0.046452;0.046504;0.04666;0.046815;0.046915;0.046978;0.0471;0.047264;0.047425;0.047489;0.047465;0.047338;0.0471;0.046771;
+13000;0.043198;0.043202;0.043254;0.043314;0.043385;0.043427;0.04342;0.043467;0.043608;0.043747;0.043835;0.043889;0.043999;0.044148;0.044288;0.044339;0.044306;0.044175;0.04394;0.043615;
+13500;0.040423;0.040426;0.040467;0.040517;0.040581;0.040619;0.040608;0.04065;0.040778;0.040902;0.040978;0.041024;0.041122;0.041257;0.041378;0.041416;0.041375;0.041239;0.041005;0.040686;
+14000;0.037816;0.037832;0.037876;0.037926;0.037983;0.038014;0.038002;0.038039;0.038155;0.038265;0.038329;0.038368;0.038454;0.038574;0.038678;0.038705;0.038656;0.038517;0.038283;0.037968;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.18022;0.18042;0.18089;0.18143;0.18214;0.1826;0.18295;0.18412;0.1853;0.18568;0.18612;0.18687;0.18719;0.18673;0.18481;0.18031;0.17145;0.15281;0.1122;-9999;
+500;0.17097;0.17113;0.17158;0.17209;0.17274;0.17315;0.17344;0.1745;0.17562;0.17599;0.17641;0.17713;0.17749;0.17715;0.17549;0.17157;0.16386;0.1479;0.11453;-9999;
+1000;0.16212;0.1623;0.16269;0.16317;0.16377;0.16414;0.1644;0.16538;0.1664;0.16674;0.16712;0.1678;0.1682;0.16796;0.16654;0.16313;0.15642;0.14274;0.11505;-9999;
+1500;0.15367;0.15385;0.1542;0.15464;0.1552;0.15554;0.15578;0.15667;0.15763;0.15796;0.15828;0.15888;0.15931;0.15916;0.15795;0.155;0.14917;0.13743;0.11429;-9999;
+2000;0.14568;0.14579;0.14612;0.14652;0.14702;0.14731;0.14753;0.14836;0.14925;0.14959;0.14988;0.15042;0.15083;0.15073;0.14972;0.14717;0.14199;0.13203;0.11277;-9999;
+2500;0.13798;0.13817;0.13849;0.13885;0.13932;0.13957;0.13974;0.14047;0.14127;0.14159;0.14185;0.14235;0.14277;0.1427;0.14184;0.13964;0.13516;0.1266;0.1105;-9999;
+3000;0.13078;0.1309;0.13119;0.13153;0.13196;0.13219;0.13234;0.13301;0.13376;0.13408;0.13428;0.13469;0.13507;0.13505;0.1343;0.13238;0.12849;0.12133;0.10766;-9999;
+3500;0.12393;0.12396;0.12421;0.12452;0.12493;0.12513;0.12527;0.12589;0.12658;0.1269;0.12708;0.12747;0.12785;0.12782;0.12712;0.12542;0.12196;0.11581;0.10444;0.08532;
+4000;0.11722;0.11729;0.11754;0.11783;0.1182;0.11839;0.11852;0.11908;0.11973;0.12005;0.12009;0.12057;0.12095;0.12096;0.12038;0.11881;0.11569;0.11036;0.10065;0.083963;
+4500;0.11083;0.11094;0.11117;0.11144;0.11179;0.11195;0.11207;0.11258;0.11319;0.11351;0.11356;0.11398;0.11436;0.1144;0.11389;0.11252;0.10981;0.10508;0.096761;0.082812;
+5000;0.10482;0.1049;0.10511;0.10536;0.10568;0.10582;0.10593;0.10638;0.10689;0.10727;0.10734;0.10769;0.10805;0.10811;0.10768;0.1065;0.10416;0.10007;0.092894;0.081145;
+5500;0.099115;0.099142;0.09933;0.099555;0.099851;0.099984;0.10008;0.10048;0.10093;0.1013;0.10136;0.10166;0.10202;0.1021;0.10176;0.10075;0.098709;0.095185;0.089077;0.079193;
+6000;0.093573;0.093632;0.093808;0.094012;0.09428;0.094391;0.094466;0.094839;0.095256;0.095606;0.095676;0.095924;0.09625;0.096377;0.096104;0.095234;0.093483;0.090387;0.085374;0.076946;
+6500;0.0884;0.088457;0.088611;0.088787;0.08902;0.0891;0.089145;0.089461;0.089845;0.090189;0.090276;0.090482;0.090772;0.090924;0.090711;0.089975;0.088464;0.085814;0.081538;0.074496;
+7000;0.083486;0.083529;0.083671;0.083833;0.084047;0.084118;0.084158;0.084441;0.084763;0.08508;0.085133;0.085303;0.085568;0.085749;0.085582;0.08495;0.083655;0.081375;0.077747;0.071872;
+7500;0.078822;0.078837;0.078967;0.079116;0.079313;0.079376;0.079415;0.079665;0.079955;0.080269;0.080318;0.080374;0.080677;0.080843;0.080707;0.080179;0.079065;0.077111;0.074035;0.069141;
+8000;0.074329;0.074373;0.074493;0.074628;0.074809;0.074865;0.074898;0.075122;0.075381;0.075691;0.075737;0.075799;0.076066;0.076252;0.076142;0.075673;0.074687;0.073019;0.070416;0.066341;
+8500;0.070073;0.070128;0.070239;0.070362;0.070527;0.070577;0.070606;0.070805;0.071109;0.07134;0.071385;0.071447;0.071687;0.071886;0.071812;0.071429;0.070594;0.069153;0.066928;0.063584;
+9000;0.066044;0.066095;0.066197;0.06631;0.06646;0.066505;0.06653;0.066705;0.066985;0.067211;0.067254;0.067311;0.06753;0.067734;0.067691;0.067384;0.066687;0.065465;0.063559;0.060823;
+9500;0.062232;0.062269;0.062362;0.062465;0.062602;0.062641;0.062663;0.062817;0.063075;0.063293;0.063333;0.063386;0.063577;0.06379;0.063776;0.063532;0.062956;0.061926;0.060337;0.058063;
+10000;0.058629;0.058642;0.058727;0.05882;0.058944;0.058979;0.058998;0.059132;0.05937;0.059578;0.059616;0.059664;0.05991;0.060049;0.060058;0.059867;0.059395;0.058538;0.057219;0.055336;
+10500;0.055179;0.055208;0.055284;0.055369;0.055482;0.055514;0.055529;0.055645;0.055863;0.05606;0.056096;0.056136;0.056361;0.056504;0.05653;0.056386;0.056005;0.055303;0.054211;0.052658;
+11000;0.051927;0.05196;0.05203;0.052108;0.052209;0.052237;0.05225;0.052349;0.052547;0.052732;0.052767;0.052768;0.053003;0.053147;0.053188;0.053084;0.052782;0.05221;0.051307;0.050044;
+11500;0.048512;0.048547;0.048611;0.048682;0.048775;0.048797;0.048806;0.048897;0.049077;0.049245;0.049274;0.049278;0.049487;0.049613;0.049643;0.049536;0.049242;0.048697;0.047837;0.046626;
+12000;0.045341;0.045381;0.045441;0.045505;0.045589;0.045608;0.045612;0.045696;0.045859;0.046011;0.046033;0.046039;0.046223;0.046334;0.046354;0.046244;0.045957;0.045435;0.044613;0.043458;
+12500;0.042428;0.042448;0.042501;0.042559;0.042636;0.042651;0.042651;0.042727;0.042876;0.043011;0.043027;0.043031;0.043194;0.043291;0.043302;0.04319;0.04291;0.042409;0.041622;0.040519;
+13000;0.039722;0.03973;0.039777;0.039829;0.039899;0.03991;0.039907;0.039976;0.04011;0.04023;0.040239;0.040242;0.040386;0.040468;0.04047;0.040357;0.040084;0.039601;0.038849;0.037795;
+13500;0.037194;0.03721;0.037254;0.0373;0.037363;0.03737;0.037364;0.037426;0.037546;0.037652;0.037656;0.037659;0.037781;0.03785;0.037844;0.037729;0.037464;0.036998;0.036277;0.035272;
+14000;0.034851;0.034877;0.034918;0.034959;0.035016;0.035019;0.03501;0.035065;0.035172;0.035264;0.035262;0.035262;0.035368;0.035423;0.035409;0.035292;0.035034;0.034585;0.033894;0.032932;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.16409;0.16428;0.16469;0.16536;0.16609;0.16661;0.16725;0.16826;0.16926;0.16957;0.17;0.17056;0.1705;0.16923;0.16569;0.15828;0.14097;0.096471;-9999;-9999;
+500;0.15566;0.15581;0.15608;0.15657;0.15727;0.15784;0.15842;0.15937;0.16037;0.16067;0.1611;0.16167;0.16167;0.1606;0.15751;0.15102;0.13611;0.099094;-9999;-9999;
+1000;0.14742;0.14762;0.14809;0.14854;0.14919;0.14961;0.15014;0.15102;0.15194;0.15219;0.15253;0.15315;0.15321;0.15231;0.14963;0.14394;0.1311;0.10098;-9999;-9999;
+1500;0.13975;0.13992;0.14034;0.14076;0.14137;0.14175;0.14223;0.14306;0.14392;0.14415;0.14443;0.145;0.14511;0.14438;0.14205;0.13705;0.126;0.10099;-9999;-9999;
+2000;0.13233;0.13264;0.13301;0.1334;0.13394;0.13427;0.13468;0.13545;0.13626;0.13649;0.13668;0.13728;0.13739;0.13677;0.13476;0.13022;0.12085;0.099912;-9999;-9999;
+2500;0.12557;0.12571;0.12604;0.12641;0.12692;0.12721;0.12759;0.12828;0.12902;0.12919;0.12946;0.12993;0.13006;0.12951;0.12773;0.12375;0.11571;0.098234;-9999;-9999;
+3000;0.11895;0.11909;0.11938;0.11973;0.12021;0.12047;0.12081;0.12145;0.12215;0.12232;0.12257;0.12298;0.12308;0.12257;0.12097;0.11748;0.11069;0.095921;-9999;-9999;
+3500;0.11267;0.11277;0.11304;0.11336;0.11379;0.11403;0.11433;0.11493;0.11559;0.11576;0.11597;0.11636;0.11647;0.11603;0.11458;0.11144;0.10551;0.093058;0.067789;-9999;
+4000;0.10668;0.10668;0.10694;0.10728;0.10769;0.10789;0.10815;0.1087;0.10931;0.10945;0.10965;0.11003;0.11016;0.1098;0.10854;0.10577;0.10049;0.089787;0.067211;-9999;
+4500;0.10085;0.10095;0.10118;0.10145;0.10183;0.10201;0.10224;0.10275;0.10332;0.10345;0.10363;0.10399;0.10413;0.10384;0.10275;0.10032;0.095716;0.086476;0.067667;-9999;
+5000;0.095317;0.095425;0.095641;0.095889;0.096233;0.096396;0.096601;0.09707;0.097608;0.097734;0.0979;0.098228;0.098383;0.098149;0.097207;0.095087;0.091072;0.083152;0.06765;-9999;
+5500;0.090053;0.090159;0.090359;0.090586;0.090903;0.091047;0.091229;0.091663;0.092166;0.092286;0.09244;0.092746;0.092914;0.092725;0.091908;0.090053;0.086566;0.079782;0.066637;-9999;
+6000;0.085166;0.085232;0.085409;0.085605;0.085881;0.085992;0.086134;0.086512;0.086982;0.087108;0.087243;0.087526;0.087705;0.087562;0.086862;0.085237;0.082206;0.076396;0.065401;-9999;
+6500;0.080518;0.080523;0.080723;0.080882;0.081136;0.081233;0.081278;0.081697;0.082109;0.082221;0.082309;0.082557;0.082743;0.082641;0.082044;0.080633;0.077924;0.073013;0.063781;-9999;
+7000;0.076018;0.076073;0.076221;0.076386;0.076619;0.076702;0.076743;0.07712;0.0775;0.077622;0.077699;0.077904;0.078065;0.077965;0.077449;0.076226;0.073877;0.06976;0.061911;-9999;
+7500;0.071749;0.071822;0.071958;0.072109;0.072322;0.072393;0.072425;0.072767;0.073117;0.073248;0.073314;0.073497;0.073663;0.073595;0.073137;0.072051;0.069982;0.066451;0.05983;-9999;
+8000;0.067732;0.067779;0.067903;0.068041;0.068236;0.068296;0.068324;0.06863;0.068956;0.06909;0.069055;0.069306;0.069474;0.069433;0.069051;0.068116;0.066326;0.063268;0.057687;0.048201;
+8500;0.063928;0.06393;0.064065;0.064175;0.064354;0.064406;0.064431;0.064703;0.064978;0.065141;0.065118;0.065326;0.065494;0.065474;0.065158;0.064357;0.062812;0.060179;0.055482;0.047659;
+9000;0.060254;0.060291;0.060394;0.06051;0.060671;0.060713;0.060735;0.060976;0.061226;0.061391;0.06138;0.06155;0.061715;0.061712;0.06145;0.060769;0.059442;0.057175;0.053223;0.046799;
+9500;0.056785;0.056832;0.056927;0.05703;0.057177;0.057214;0.05723;0.057448;0.057675;0.057835;0.057834;0.057969;0.058121;0.058141;0.057925;0.057351;0.056216;0.054228;0.050939;0.045637;
+10000;0.053512;0.053556;0.053643;0.053735;0.05387;0.053904;0.053915;0.054105;0.054308;0.054466;0.054472;0.054578;0.054712;0.054756;0.054581;0.054096;0.053121;0.051407;0.048724;0.044282;
+10500;0.050426;0.050461;0.050539;0.050623;0.050743;0.050771;0.050777;0.050944;0.051122;0.05128;0.051296;0.051373;0.051489;0.05155;0.051409;0.051001;0.050152;0.0487;0.046444;0.042792;
+11000;0.047522;0.047537;0.047608;0.047683;0.04779;0.047812;0.047816;0.047959;0.048114;0.04827;0.04828;0.048289;0.048449;0.048518;0.048403;0.048042;0.047323;0.046098;0.044207;0.041208;
+11500;0.044419;0.044458;0.044522;0.04459;0.044688;0.044706;0.044706;0.044837;0.044978;0.045116;0.045121;0.045123;0.045269;0.045325;0.045211;0.044874;0.044187;0.043023;0.041221;0.038355;
+12000;0.041541;0.041605;0.041664;0.041725;0.041814;0.041827;0.041822;0.041943;0.042071;0.042191;0.042192;0.042188;0.042319;0.042364;0.042248;0.04193;0.041294;0.040172;0.038454;0.035716;
+12500;0.038942;0.038962;0.039015;0.03907;0.039151;0.039161;0.039152;0.039262;0.039377;0.039481;0.039477;0.039467;0.039585;0.039617;0.039501;0.039193;0.038589;0.037528;0.035891;0.033276;
+13000;0.036532;0.036515;0.036563;0.036612;0.036685;0.036691;0.036679;0.036779;0.036882;0.036971;0.036961;0.036992;0.037048;0.037071;0.036954;0.036657;0.036086;0.03508;0.033519;0.03102;
+13500;0.034234;0.03425;0.034294;0.034337;0.034403;0.034405;0.034389;0.03448;0.034572;0.034647;0.034632;0.034655;0.034701;0.034712;0.034594;0.034306;0.033761;0.032817;0.031323;0.028937;
+14000;0.032109;0.032157;0.032196;0.032234;0.032293;0.032291;0.032272;0.032354;0.032434;0.032496;0.032476;0.032491;0.032529;0.032529;0.032408;0.032129;0.031607;0.030716;0.029292;0.027015;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.14886;0.14908;0.14955;0.15026;0.15104;0.15162;0.15239;0.1535;0.15444;0.15477;0.15517;0.15537;0.15467;0.15216;0.14625;0.13193;0.09003;-9999;-9999;-9999;
+500;0.14125;0.14126;0.14184;0.1425;0.14322;0.14374;0.14442;0.14542;0.14631;0.14663;0.14703;0.14727;0.14671;0.14453;0.13927;0.12694;0.092242;-9999;-9999;-9999;
+1000;0.13389;0.13409;0.13448;0.13508;0.13576;0.13623;0.13686;0.13777;0.1386;0.13886;0.13923;0.13951;0.13907;0.13716;0.13252;0.1219;0.093248;-9999;-9999;-9999;
+1500;0.12687;0.12709;0.12744;0.12799;0.12863;0.12906;0.12963;0.13048;0.13127;0.13151;0.13183;0.13208;0.13171;0.13005;0.126;0.11683;0.092977;-9999;-9999;-9999;
+2000;0.12035;0.12051;0.12082;0.12132;0.12189;0.12227;0.12277;0.12352;0.12425;0.12447;0.12476;0.12502;0.12469;0.12324;0.11956;0.1118;0.091865;-9999;-9999;-9999;
+2500;0.11414;0.11415;0.1145;0.11496;0.11549;0.11581;0.11626;0.11696;0.11764;0.1178;0.11805;0.11828;0.11802;0.11673;0.1135;0.10679;0.090084;-9999;-9999;-9999;
+3000;0.10804;0.10819;0.10855;0.10886;0.10936;0.10965;0.11006;0.11071;0.11134;0.11149;0.11172;0.11196;0.11171;0.11055;0.10767;0.10177;0.087735;-9999;-9999;-9999;
+3500;0.10224;0.10243;0.10274;0.10304;0.1035;0.10376;0.10413;0.10474;0.10535;0.10548;0.10569;0.10593;0.10574;0.10472;0.10217;0.096912;0.084956;-9999;-9999;-9999;
+4000;0.096799;0.096922;0.097201;0.097481;0.09791;0.098141;0.098479;0.099051;0.099622;0.099751;0.099945;0.10018;0.10003;0.099143;0.096915;0.0923;0.081977;0.055389;-9999;-9999;
+4500;0.091622;0.091627;0.091851;0.092183;0.092578;0.092782;0.093087;0.093623;0.094159;0.094277;0.094459;0.094702;0.094598;0.093845;0.091878;0.087832;0.078968;0.057003;-9999;-9999;
+5000;0.086557;0.086561;0.086849;0.087039;0.087467;0.087663;0.087947;0.088449;0.088955;0.089067;0.089233;0.089477;0.089411;0.088766;0.08705;0.083505;0.075873;0.057597;-9999;-9999;
+5500;0.081838;0.081924;0.082122;0.08235;0.082684;0.082843;0.083078;0.083522;0.083997;0.084101;0.08421;0.084497;0.084463;0.083913;0.082414;0.07931;0.072729;0.05758;-9999;-9999;
+6000;0.077382;0.077463;0.077645;0.077854;0.078161;0.0783;0.07851;0.078922;0.07934;0.079413;0.079483;0.079755;0.079746;0.079281;0.077978;0.075264;0.069572;0.056979;-9999;-9999;
+6500;0.073148;0.073211;0.07338;0.07357;0.073853;0.073975;0.074166;0.074546;0.074938;0.075004;0.075056;0.075309;0.075292;0.074867;0.073732;0.071363;0.066544;0.055889;-9999;-9999;
+7000;0.069128;0.069132;0.069286;0.069498;0.069754;0.069865;0.070033;0.070382;0.070748;0.07081;0.070906;0.071101;0.071104;0.070746;0.069736;0.06757;0.063455;0.054544;-9999;-9999;
+7500;0.06526;0.065318;0.065462;0.06562;0.065858;0.065957;0.066104;0.066425;0.066765;0.066823;0.066909;0.067097;0.067115;0.066816;0.065944;0.064065;0.060481;0.053051;-9999;-9999;
+8000;0.061597;0.061662;0.061795;0.061939;0.062156;0.062246;0.062373;0.062665;0.062982;0.063034;0.063112;0.06329;0.063319;0.063074;0.062322;0.060694;0.057572;0.051296;0.039296;-9999;
+8500;0.05813;0.058193;0.058315;0.058445;0.058646;0.058724;0.058833;0.059099;0.059391;0.059439;0.059509;0.059676;0.059715;0.059513;0.058866;0.057442;0.05474;0.049436;0.038707;-9999;
+9000;0.054851;0.054906;0.055017;0.055138;0.05532;0.055384;0.055477;0.055718;0.055988;0.056032;0.056092;0.056246;0.056293;0.056128;0.055572;0.054316;0.051992;0.047507;0.038725;-9999;
+9500;0.051755;0.051796;0.051897;0.052005;0.052169;0.052224;0.052302;0.052519;0.052766;0.052806;0.052855;0.052994;0.053049;0.052911;0.052416;0.051337;0.049334;0.045539;0.038368;-9999;
+10000;0.048833;0.048835;0.048957;0.049042;0.04919;0.049235;0.049298;0.049493;0.049719;0.049757;0.049795;0.04991;0.049965;0.049844;0.049423;0.048494;0.046768;0.043558;0.03766;-9999;
+10500;0.046047;0.046078;0.046159;0.046245;0.046376;0.046411;0.046462;0.046632;0.046837;0.04687;0.046891;0.046987;0.047043;0.046944;0.046584;0.045785;0.044265;0.041586;0.036748;-9999;
+11000;0.04343;0.043458;0.04353;0.043606;0.043723;0.043743;0.043777;0.043925;0.044105;0.044141;0.044151;0.044229;0.044286;0.044204;0.043895;0.04321;0.04191;0.03969;0.035629;-9999;
+11500;0.040646;0.040692;0.040758;0.040827;0.040933;0.040955;0.040947;0.041119;0.041282;0.041309;0.041313;0.041382;0.041427;0.041343;0.041045;0.040394;0.039162;0.037053;0.033185;-9999;
+12000;0.038109;0.038132;0.038192;0.038253;0.03835;0.038367;0.038357;0.038517;0.038667;0.038686;0.038684;0.038743;0.038777;0.038691;0.038403;0.037782;0.036616;0.034611;0.03093;-9999;
+12500;0.035757;0.035764;0.035817;0.035872;0.03596;0.035972;0.03596;0.036104;0.036238;0.036251;0.036247;0.036297;0.036321;0.036232;0.035954;0.035363;0.034257;0.032305;0.028849;-9999;
+13000;0.033555;0.033573;0.033622;0.03367;0.033749;0.033757;0.033743;0.033872;0.03399;0.033995;0.033989;0.034032;0.034047;0.033955;0.033685;0.033122;0.032072;0.030218;0.026932;-9999;
+13500;0.03152;0.031549;0.031593;0.031636;0.031707;0.031711;0.031694;0.031808;0.031912;0.031908;0.031896;0.031931;0.031939;0.031848;0.031584;0.031047;0.030052;0.02829;0.025161;-9999;
+14000;0.029667;0.029683;0.029722;0.029759;0.029821;0.029821;0.029802;0.029902;0.029992;0.02998;0.029963;0.029988;0.029986;0.029894;0.029644;0.029128;0.028184;0.02651;0.023537;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.1347;0.13496;0.13546;0.13609;0.13721;0.13796;0.13887;0.14004;0.14073;0.14105;0.14127;0.1409;0.13917;0.13468;0.12342;0.089239;-9999;-9999;-9999;-9999;
+500;0.12783;0.12785;0.12844;0.12902;0.13005;0.13073;0.13154;0.13262;0.13327;0.13356;0.13381;0.13354;0.13205;0.12795;0.11831;0.09011;-9999;-9999;-9999;-9999;
+1000;0.12127;0.12133;0.12175;0.12228;0.12321;0.12383;0.12457;0.12558;0.12619;0.12643;0.12666;0.12648;0.12522;0.12164;0.11325;0.089828;-9999;-9999;-9999;-9999;
+1500;0.11483;0.11502;0.11539;0.11586;0.1167;0.11727;0.11794;0.11887;0.11946;0.11969;0.1199;0.11974;0.11866;0.11556;0.10846;0.088554;-9999;-9999;-9999;-9999;
+2000;0.10862;0.10906;0.10939;0.10984;0.11061;0.11111;0.1117;0.11255;0.11308;0.11325;0.11347;0.11336;0.1124;0.10967;0.10349;0.086654;-9999;-9999;-9999;-9999;
+2500;0.10319;0.10335;0.10366;0.10407;0.10478;0.10524;0.10578;0.10658;0.10709;0.10724;0.10741;0.1073;0.10645;0.10405;0.098577;0.084574;-9999;-9999;-9999;-9999;
+3000;0.097996;0.097898;0.098177;0.098676;0.099229;0.099647;0.10013;0.10088;0.10137;0.10151;0.10168;0.10162;0.10087;0.09872;0.093834;0.08194;-9999;-9999;-9999;-9999;
+3500;0.092546;0.092696;0.092944;0.093403;0.093921;0.094298;0.094738;0.095436;0.09591;0.096047;0.096215;0.096189;0.09555;0.093657;0.08933;0.079041;-9999;-9999;-9999;-9999;
+4000;0.087595;0.087726;0.08795;0.088372;0.088857;0.089196;0.089596;0.090247;0.090702;0.090828;0.090993;0.091001;0.090458;0.088805;0.084979;0.076129;-9999;-9999;-9999;-9999;
+4500;0.082885;0.082986;0.083188;0.083576;0.084027;0.084332;0.084688;0.085299;0.085733;0.085851;0.086012;0.086048;0.085591;0.084151;0.080809;0.07315;0.050751;-9999;-9999;-9999;
+5000;0.078438;0.078546;0.078728;0.079062;0.079464;0.079729;0.080022;0.080587;0.081;0.081108;0.081261;0.081323;0.080941;0.079685;0.076762;0.070124;0.051732;-9999;-9999;-9999;
+5500;0.07421;0.074318;0.074491;0.074796;0.075175;0.075405;0.075661;0.076177;0.076545;0.076621;0.07674;0.076817;0.076501;0.07541;0.072788;0.066989;0.051893;-9999;-9999;-9999;
+6000;0.070194;0.070289;0.07052;0.070728;0.071081;0.071285;0.071509;0.071994;0.072344;0.072411;0.072523;0.072585;0.072296;0.071331;0.069037;0.063994;0.051525;-9999;-9999;-9999;
+6500;0.066382;0.066462;0.066665;0.06686;0.067184;0.067365;0.06756;0.068011;0.068343;0.068403;0.06851;0.068587;0.06835;0.067508;0.06549;0.061184;0.050679;-9999;-9999;-9999;
+7000;0.062738;0.062819;0.062996;0.063179;0.063477;0.063637;0.063862;0.064226;0.06454;0.064595;0.064693;0.06478;0.064588;0.063861;0.062083;0.058334;0.04952;-9999;-9999;-9999;
+7500;0.059286;0.059354;0.059512;0.059684;0.059956;0.060098;0.060297;0.060632;0.060927;0.060975;0.061065;0.061159;0.061004;0.060372;0.0588;0.055548;0.048152;-9999;-9999;-9999;
+8000;0.056001;0.056068;0.056208;0.056366;0.056614;0.056738;0.056915;0.057221;0.057497;0.057538;0.057619;0.057717;0.057589;0.057027;0.055656;0.052837;0.046609;-9999;-9999;-9999;
+8500;0.052896;0.052951;0.053078;0.05322;0.053446;0.053552;0.053708;0.053986;0.054244;0.054279;0.054343;0.054435;0.054328;0.053838;0.052635;0.050206;0.044948;0.031803;-9999;-9999;
+9000;0.049946;0.049996;0.050112;0.050241;0.050445;0.050536;0.050665;0.050917;0.051152;0.051174;0.051229;0.051313;0.051229;0.050813;0.049788;0.047665;0.043207;0.032826;-9999;-9999;
+9500;0.047165;0.047191;0.047298;0.047411;0.047594;0.047667;0.047779;0.048;0.048216;0.048233;0.048246;0.048364;0.048296;0.047941;0.047053;0.045224;0.041431;0.032916;-9999;-9999;
+10000;0.044501;0.04454;0.044634;0.044734;0.044892;0.044954;0.045049;0.045251;0.045448;0.045458;0.045466;0.045576;0.045522;0.045218;0.04445;0.042833;0.039645;0.032687;-9999;-9999;
+10500;0.042;0.042037;0.042121;0.04221;0.042355;0.042402;0.04248;0.04266;0.042839;0.042843;0.042844;0.042945;0.042902;0.04264;0.041977;0.040586;0.03787;0.032159;-9999;-9999;
+11000;0.039655;0.039684;0.03976;0.039837;0.039966;0.040002;0.040064;0.040223;0.040384;0.040382;0.040358;0.040467;0.040432;0.040206;0.039632;0.038436;0.036123;0.031435;-9999;-9999;
+11500;0.0372;0.037224;0.037293;0.037363;0.037479;0.03751;0.037564;0.037706;0.03785;0.037842;0.03782;0.037908;0.037868;0.037648;0.037102;0.035969;0.033774;0.029321;-9999;-9999;
+12000;0.034928;0.03495;0.035012;0.035074;0.03518;0.035204;0.035218;0.035375;0.035504;0.035491;0.035469;0.035539;0.035493;0.035278;0.034758;0.033686;0.031602;0.027374;-9999;-9999;
+12500;0.032826;0.032849;0.032903;0.032956;0.033055;0.033073;0.033083;0.033222;0.033335;0.033316;0.033293;0.033346;0.033294;0.033085;0.032588;0.031573;0.029596;0.025583;-9999;-9999;
+13000;0.030885;0.030913;0.030962;0.031011;0.031097;0.031106;0.031114;0.031233;0.03133;0.031306;0.031277;0.031318;0.03126;0.031055;0.030581;0.02962;0.027744;0.023938;-9999;-9999;
+13500;0.029095;0.029124;0.029167;0.029209;0.029286;0.029294;0.029296;0.029398;0.02948;0.029447;0.029414;0.029444;0.029381;0.029179;0.028725;0.027815;0.026038;0.022431;-9999;-9999;
+14000;0.027448;0.027476;0.027514;0.027551;0.027618;0.02762;0.027619;0.027709;0.027777;0.027739;0.027703;0.027716;0.027645;0.027447;0.027013;0.026151;0.024467;0.021058;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.12813;0.12828;0.1289;0.12956;0.13075;0.13155;0.13253;0.13367;0.13421;0.13437;0.13454;0.13381;0.13136;0.12525;0.10912;-9999;-9999;-9999;-9999;-9999;
+500;0.12144;0.12146;0.1222;0.12282;0.1239;0.12462;0.1255;0.12655;0.12707;0.12725;0.12744;0.12685;0.12473;0.11938;0.10553;-9999;-9999;-9999;-9999;-9999;
+1000;0.11505;0.11531;0.11583;0.11639;0.11739;0.11805;0.11885;0.11982;0.12031;0.12046;0.12064;0.12017;0.11835;0.11369;0.10174;0.098501;-9999;-9999;-9999;-9999;
+1500;0.10911;0.10932;0.10978;0.1103;0.11119;0.11179;0.11251;0.11343;0.1139;0.11404;0.11421;0.11379;0.11221;0.10817;0.097856;-9999;-9999;-9999;-9999;-9999;
+2000;0.10339;0.10365;0.10407;0.10456;0.10538;0.10593;0.10657;0.10741;0.10784;0.10793;0.1081;0.10776;0.10635;0.1028;0.093935;0.066999;-9999;-9999;-9999;-9999;
+2500;0.098056;0.098231;0.098618;0.099177;0.099824;0.10033;0.10091;0.1017;0.10212;0.10224;0.10237;0.10205;0.10078;0.097658;0.089919;0.067649;-9999;-9999;-9999;-9999;
+3000;0.092889;0.093057;0.093407;0.093921;0.094521;0.09498;0.095517;0.096258;0.096663;0.096807;0.096916;0.096664;0.095565;0.092658;0.085945;0.067348;-9999;-9999;-9999;-9999;
+3500;0.08797;0.088117;0.088434;0.088906;0.08946;0.089879;0.090369;0.091064;0.091456;0.091592;0.091709;0.091515;0.090567;0.088019;0.082291;0.066235;-9999;-9999;-9999;-9999;
+4000;0.08329;0.083298;0.083684;0.084123;0.084634;0.085016;0.085461;0.08611;0.086489;0.086617;0.086741;0.086596;0.08578;0.083551;0.078504;0.064795;-9999;-9999;-9999;-9999;
+4500;0.078813;0.078942;0.079193;0.079576;0.080045;0.080384;0.080785;0.081391;0.081756;0.081874;0.082;0.081898;0.081194;0.079254;0.074793;0.063155;-9999;-9999;-9999;-9999;
+5000;0.07456;0.074745;0.07497;0.075322;0.075752;0.076038;0.076377;0.076919;0.07725;0.077355;0.077483;0.077417;0.07682;0.075126;0.071175;0.061363;-9999;-9999;-9999;-9999;
+5500;0.070632;0.070741;0.070944;0.071264;0.071658;0.071919;0.072221;0.072729;0.073042;0.073117;0.073214;0.07315;0.072642;0.07117;0.067689;0.059358;-9999;-9999;-9999;-9999;
+6000;0.066823;0.066925;0.067107;0.067398;0.067768;0.067997;0.068272;0.06874;0.06904;0.06911;0.069207;0.069172;0.068716;0.067406;0.06434;0.057251;-9999;-9999;-9999;-9999;
+6500;0.063209;0.063296;0.063459;0.063724;0.064063;0.064267;0.064514;0.064948;0.065234;0.065298;0.065392;0.06538;0.064994;0.063839;0.061166;0.055079;-9999;-9999;-9999;-9999;
+7000;0.059782;0.059785;0.059985;0.06023;0.060541;0.060722;0.060941;0.061342;0.061616;0.061671;0.06176;0.061768;0.061433;0.060411;0.058098;0.05286;0.03844;-9999;-9999;-9999;
+7500;0.056486;0.056565;0.056746;0.056908;0.057196;0.057355;0.05755;0.057919;0.058177;0.058226;0.058302;0.058316;0.058028;0.057144;0.055073;0.05062;0.038924;-9999;-9999;-9999;
+8000;0.053369;0.053451;0.053606;0.053759;0.054021;0.05416;0.05433;0.054663;0.054903;0.054938;0.055007;0.055033;0.054792;0.054026;0.052229;0.048446;0.038801;-9999;-9999;-9999;
+8500;0.050425;0.050484;0.05062;0.050761;0.050998;0.051116;0.051259;0.051569;0.051794;0.051821;0.051883;0.051919;0.051717;0.051055;0.049497;0.046142;0.038211;-9999;-9999;-9999;
+9000;0.047647;0.047672;0.04779;0.047921;0.048136;0.048237;0.048357;0.048642;0.048851;0.048872;0.048926;0.048968;0.048799;0.048227;0.046876;0.044043;0.037402;-9999;-9999;-9999;
+9500;0.044964;0.045014;0.045121;0.045238;0.045432;0.045517;0.045616;0.045877;0.046071;0.046085;0.04613;0.046176;0.046035;0.045541;0.044372;0.041921;0.036413;-9999;-9999;-9999;
+10000;0.042443;0.042508;0.042604;0.042708;0.042882;0.042953;0.043033;0.043269;0.043448;0.043455;0.043491;0.043538;0.04342;0.042993;0.041981;0.03987;0.035274;-9999;-9999;-9999;
+10500;0.040111;0.040149;0.040235;0.040327;0.040481;0.040539;0.040601;0.040815;0.040978;0.040979;0.041005;0.04105;0.04095;0.040581;0.039699;0.037895;0.034033;0.02433;-9999;-9999;
+11000;0.037928;0.037933;0.038011;0.038091;0.038227;0.038273;0.038319;0.038509;0.038657;0.03865;0.038667;0.038708;0.038623;0.038297;0.037538;0.035992;0.032743;0.025105;-9999;-9999;
+11500;0.035585;0.035614;0.035683;0.035754;0.035878;0.035916;0.035957;0.036127;0.036257;0.036245;0.036255;0.036285;0.036198;0.03589;0.035166;0.033704;0.03062;0.02336;-9999;-9999;
+12000;0.033418;0.03347;0.033531;0.033595;0.033707;0.033738;0.033773;0.033924;0.034036;0.03402;0.034022;0.034042;0.033952;0.033656;0.03297;0.031588;0.028661;-9999;-9999;-9999;
+12500;0.031464;0.031486;0.031544;0.0316;0.031702;0.031726;0.031755;0.031887;0.031984;0.031962;0.031957;0.031967;0.031874;0.031588;0.030943;0.029631;0.026858;0.020542;-9999;-9999;
+13000;0.029662;0.029659;0.029712;0.029761;0.029852;0.02987;0.029893;0.030008;0.030089;0.030061;0.030049;0.03005;0.029953;0.029677;0.029065;0.027826;0.025199;-9999;-9999;-9999;
+13500;0.028002;0.027978;0.028026;0.028068;0.028149;0.02816;0.028178;0.028276;0.028342;0.028308;0.028289;0.028279;0.028179;0.027911;0.02733;0.026162;0.023676;0.017425;-9999;-9999;
+14000;0.02642;0.026436;0.026477;0.026512;0.026583;0.026588;0.0266;0.026682;0.026734;0.026694;0.026667;0.026647;0.026543;0.026283;0.025731;0.02463;0.022281;0.016698;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.12172;0.12173;0.12265;0.12333;0.12458;0.12544;0.12648;0.12757;0.12802;0.12822;0.128;0.12682;0.12359;0.11496;0.089948;-9999;-9999;-9999;-9999;-9999;
+500;0.11546;0.11548;0.11627;0.1169;0.11805;0.11883;0.11977;0.12076;0.12119;0.12139;0.12125;0.12026;0.11729;0.10994;0.088635;-9999;-9999;-9999;-9999;-9999;
+1000;0.10949;0.1095;0.11019;0.11078;0.11183;0.11255;0.11341;0.11435;0.11473;0.11491;0.11479;0.11396;0.11139;0.10499;0.086917;-9999;-9999;-9999;-9999;-9999;
+1500;0.10374;0.10396;0.10445;0.10498;0.10593;0.10658;0.10735;0.10823;0.10861;0.10879;0.1087;0.10795;0.1057;0.10016;0.084854;-9999;-9999;-9999;-9999;-9999;
+2000;0.098235;0.098562;0.099017;0.09951;0.10039;0.10098;0.10168;0.10249;0.10282;0.10297;0.1029;0.10227;0.10029;0.095431;0.082497;-9999;-9999;-9999;-9999;-9999;
+2500;0.093221;0.093408;0.093822;0.094283;0.095086;0.09563;0.096272;0.097042;0.097362;0.097508;0.097467;0.096897;0.09512;0.090851;0.079719;-9999;-9999;-9999;-9999;-9999;
+3000;0.088434;0.088484;0.088862;0.089291;0.090029;0.090527;0.091113;0.091839;0.092149;0.09219;0.092288;0.091812;0.090261;0.08648;0.076776;-9999;-9999;-9999;-9999;-9999;
+3500;0.083627;0.083787;0.08413;0.084621;0.085206;0.085662;0.0862;0.086879;0.087184;0.087232;0.087343;0.086947;0.085596;0.082291;0.073848;-9999;-9999;-9999;-9999;-9999;
+4000;0.079159;0.079307;0.079618;0.080068;0.080608;0.081024;0.081511;0.082151;0.08245;0.082507;0.082622;0.082295;0.081126;0.078237;0.070876;-9999;-9999;-9999;-9999;-9999;
+4500;0.074974;0.075107;0.07538;0.075782;0.076259;0.07662;0.077046;0.077647;0.077937;0.078001;0.078119;0.077857;0.076847;0.074303;0.067883;0.049077;-9999;-9999;-9999;-9999;
+5000;0.070994;0.071119;0.071366;0.071732;0.072174;0.072501;0.072879;0.073414;0.073671;0.073715;0.073832;0.07362;0.072747;0.070437;0.06491;0.049331;-9999;-9999;-9999;-9999;
+5500;0.067212;0.06732;0.067542;0.067877;0.068283;0.06858;0.068925;0.069425;0.069675;0.069726;0.069809;0.069614;0.068839;0.066775;0.061974;0.049116;-9999;-9999;-9999;-9999;
+6000;0.0636;0.063704;0.063904;0.06421;0.064596;0.064852;0.065158;0.065625;0.065867;0.065922;0.066002;0.065848;0.065154;0.063348;0.059244;0.048268;-9999;-9999;-9999;-9999;
+6500;0.060174;0.060261;0.06044;0.060718;0.061076;0.061302;0.061578;0.062012;0.062247;0.062308;0.062365;0.062236;0.06164;0.060068;0.056465;0.047224;-9999;-9999;-9999;-9999;
+7000;0.0569;0.056988;0.057148;0.0574;0.057727;0.057929;0.05817;0.05857;0.05879;0.058839;0.058898;0.058799;0.058288;0.056921;0.0538;0.046068;-9999;-9999;-9999;-9999;
+7500;0.053783;0.053864;0.054006;0.054233;0.054533;0.054708;0.054924;0.055293;0.055503;0.055546;0.055604;0.055531;0.055093;0.053906;0.051205;0.044691;-9999;-9999;-9999;-9999;
+8000;0.050837;0.0509;0.051025;0.051231;0.051504;0.051658;0.051848;0.052187;0.052387;0.052423;0.052478;0.052426;0.052053;0.051023;0.048688;0.043173;-9999;-9999;-9999;-9999;
+8500;0.048057;0.048059;0.0482;0.048388;0.048636;0.04877;0.048937;0.049247;0.049435;0.049464;0.049516;0.049482;0.049163;0.04827;0.046254;0.041562;-9999;-9999;-9999;-9999;
+9000;0.045431;0.045439;0.045575;0.045698;0.045926;0.046041;0.046186;0.046468;0.046645;0.046666;0.046712;0.046692;0.04642;0.045646;0.043906;0.039902;0.028731;-9999;-9999;-9999;
+9500;0.042877;0.042932;0.043047;0.043162;0.043367;0.043465;0.04359;0.043845;0.044009;0.044024;0.044063;0.044054;0.043822;0.043151;0.041649;0.038224;0.029246;-9999;-9999;-9999;
+10000;0.040518;0.040567;0.040667;0.040772;0.040956;0.041039;0.041145;0.041374;0.041525;0.041532;0.041565;0.041562;0.041364;0.040784;0.039447;0.036551;0.029298;-9999;-9999;-9999;
+10500;0.038309;0.038345;0.038433;0.038527;0.03869;0.038758;0.038846;0.03905;0.039189;0.039188;0.039212;0.039214;0.039044;0.03854;0.037387;0.034901;0.028983;-9999;-9999;-9999;
+11000;0.036246;0.036246;0.03632;0.036423;0.036565;0.036619;0.036691;0.036871;0.036996;0.036988;0.037002;0.037006;0.036858;0.036421;0.035426;0.033343;0.028447;-9999;-9999;-9999;
+11500;0.034022;0.034069;0.034145;0.034218;0.034349;0.034395;0.034456;0.034618;0.034726;0.034713;0.03472;0.034715;0.034569;0.034152;0.033211;0.031247;0.026599;-9999;-9999;-9999;
+12000;0.032025;0.032054;0.032119;0.032183;0.032302;0.032339;0.032391;0.032536;0.032628;0.032609;0.032609;0.032595;0.03245;0.032052;0.031162;0.029309;0.024912;-9999;-9999;-9999;
+12500;0.030181;0.030199;0.03025;0.030307;0.030414;0.030443;0.030486;0.030614;0.030691;0.030666;0.030658;0.030636;0.030491;0.03011;0.029269;0.027485;0.023361;-9999;-9999;-9999;
+13000;0.028461;0.028479;0.02853;0.028579;0.028674;0.028697;0.02873;0.028841;0.028904;0.028873;0.028857;0.028827;0.028682;0.028317;0.027521;0.025841;0.021945;-9999;-9999;-9999;
+13500;0.026882;0.026901;0.02695;0.026992;0.027076;0.027091;0.027115;0.027211;0.027259;0.027222;0.027198;0.02716;0.027014;0.026663;0.025912;0.024329;0.020658;-9999;-9999;-9999;
+14000;0.025445;0.025463;0.025502;0.025537;0.02561;0.025618;0.025633;0.025713;0.025747;0.025703;0.025672;0.025625;0.025478;0.025141;0.02443;0.022942;0.019498;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.11571;0.11604;0.11689;0.11742;0.11874;0.11965;0.12066;0.12173;0.12211;0.12217;0.12164;0.11989;0.11538;0.10309;0.089875;-9999;-9999;-9999;-9999;-9999;
+500;0.10977;0.10979;0.11064;0.11128;0.11249;0.11333;0.11425;0.11525;0.11559;0.11565;0.11524;0.11373;0.1098;0.09912;0.088442;-9999;-9999;-9999;-9999;-9999;
+1000;0.1041;0.10411;0.10483;0.10543;0.10655;0.10732;0.10818;0.10911;0.10943;0.10949;0.10913;0.10783;0.10442;0.095121;0.086991;-9999;-9999;-9999;-9999;-9999;
+1500;0.098622;0.098849;0.099384;0.099924;0.10093;0.10163;0.10246;0.10328;0.10358;0.10365;0.10335;0.1022;0.099219;0.091342;0.066692;-9999;-9999;-9999;-9999;-9999;
+2000;0.093389;0.093712;0.094197;0.094703;0.095633;0.096271;0.097036;0.097809;0.098068;0.098129;0.097856;0.096858;0.094239;0.087346;0.066762;-9999;-9999;-9999;-9999;-9999;
+2500;0.088611;0.088805;0.089249;0.08972;0.090575;0.091162;0.091862;0.092597;0.092852;0.09293;0.092712;0.09182;0.089358;0.083413;0.066052;-9999;-9999;-9999;-9999;-9999;
+3000;0.084051;0.084122;0.084528;0.084966;0.08575;0.08629;0.08693;0.087626;0.087874;0.087964;0.087799;0.087034;0.084883;0.079633;0.064615;-9999;-9999;-9999;-9999;-9999;
+3500;0.07949;0.079656;0.080026;0.080433;0.081152;0.081646;0.082234;0.082887;0.08313;0.083227;0.083104;0.082457;0.080581;0.07597;0.063188;-9999;-9999;-9999;-9999;-9999;
+4000;0.075263;0.075412;0.075737;0.076111;0.07677;0.077221;0.077755;0.078372;0.078604;0.078712;0.078629;0.07808;0.076443;0.072397;0.061484;-9999;-9999;-9999;-9999;-9999;
+4500;0.071415;0.071444;0.071739;0.072157;0.072663;0.073055;0.073518;0.074078;0.074303;0.07441;0.074359;0.073895;0.072458;0.068914;0.059574;-9999;-9999;-9999;-9999;-9999;
+5000;0.067532;0.067659;0.067927;0.06831;0.068775;0.069132;0.069549;0.070072;0.070263;0.070342;0.070292;0.06989;0.068617;0.065538;0.057562;-9999;-9999;-9999;-9999;-9999;
+5500;0.063848;0.064053;0.064295;0.064644;0.065073;0.065398;0.065776;0.066265;0.066448;0.066518;0.066485;0.066117;0.064991;0.062295;0.055461;0.052561;-9999;-9999;-9999;-9999;
+6000;0.060503;0.060612;0.060831;0.06115;0.061544;0.061835;0.062173;0.06263;0.062803;0.062868;0.062854;0.062546;0.061569;0.059221;0.053309;0.052382;-9999;-9999;-9999;-9999;
+6500;0.05723;0.057329;0.057525;0.057816;0.058176;0.058439;0.058744;0.059169;0.059339;0.059334;0.059399;0.059142;0.058297;0.056254;0.051137;-9999;-9999;-9999;-9999;-9999;
+7000;0.054131;0.054136;0.054384;0.054652;0.05498;0.055216;0.055489;0.055883;0.056049;0.056051;0.056114;0.055901;0.055172;0.053396;0.048961;0.036212;-9999;-9999;-9999;-9999;
+7500;0.0512;0.051204;0.051408;0.05165;0.051965;0.052161;0.052403;0.052768;0.052928;0.052936;0.052994;0.052819;0.05219;0.050588;0.0468;0.036469;-9999;-9999;-9999;-9999;
+8000;0.048427;0.048453;0.048591;0.048806;0.049094;0.049267;0.049481;0.049817;0.049971;0.049983;0.050035;0.049891;0.04935;0.047962;0.044764;0.03616;-9999;-9999;-9999;-9999;
+8500;0.045732;0.045801;0.045924;0.046117;0.046379;0.04653;0.046718;0.047026;0.047173;0.047187;0.047231;0.047114;0.046648;0.045447;0.042697;0.035477;-9999;-9999;-9999;-9999;
+9000;0.043233;0.043297;0.043403;0.043577;0.043814;0.043944;0.044109;0.04439;0.044528;0.04455;0.044578;0.044484;0.044083;0.043044;0.040681;0.034695;-9999;-9999;-9999;-9999;
+9500;0.040885;0.040935;0.041027;0.041183;0.041396;0.041507;0.041649;0.041904;0.042033;0.042048;0.042073;0.041997;0.041652;0.040752;0.038724;0.033739;-9999;-9999;-9999;-9999;
+10000;0.038683;0.038684;0.038789;0.038928;0.03912;0.039214;0.039335;0.039565;0.039684;0.039691;0.039712;0.039651;0.039353;0.038574;0.036834;0.032656;-9999;-9999;-9999;-9999;
+10500;0.036578;0.036625;0.036722;0.036812;0.036984;0.037062;0.037164;0.037368;0.037477;0.037477;0.037491;0.03744;0.037183;0.036507;0.035014;0.031493;-9999;-9999;-9999;-9999;
+11000;0.034621;0.034674;0.034755;0.034834;0.034985;0.035048;0.035131;0.035312;0.03541;0.035401;0.035408;0.035365;0.03514;0.034555;0.033274;0.030288;0.022174;-9999;-9999;-9999;
+11500;0.03258;0.032614;0.032687;0.032758;0.032897;0.03295;0.033022;0.033183;0.033266;0.033251;0.033251;0.033202;0.032984;0.032428;0.031219;0.028397;0.020804;-9999;-9999;-9999;
+12000;0.030697;0.030696;0.030761;0.030846;0.03097;0.031014;0.031074;0.031218;0.031286;0.031265;0.031258;0.031203;0.03099;0.030461;0.029321;0.026656;-9999;-9999;-9999;-9999;
+12500;0.028962;0.028961;0.029009;0.029084;0.029195;0.02923;0.02928;0.029406;0.02946;0.029433;0.029417;0.029356;0.029149;0.028646;0.027571;0.025057;-9999;-9999;-9999;-9999;
+13000;0.027337;0.027364;0.027415;0.027463;0.027563;0.027589;0.027629;0.027737;0.027778;0.027745;0.027721;0.027654;0.02745;0.026973;0.025958;0.023591;-9999;-9999;-9999;-9999;
+13500;0.02585;0.025895;0.025938;0.025979;0.026067;0.026084;0.026113;0.026205;0.026232;0.026191;0.026159;0.026085;0.025885;0.025432;0.024476;0.022259;-9999;-9999;-9999;-9999;
+14000;0.024533;0.024552;0.02459;0.024623;0.024697;0.024708;0.024726;0.024801;0.024813;0.024765;0.024724;0.024644;0.024446;0.024014;0.023116;0.021039;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10999;0.11039;0.11128;0.11183;0.11322;0.1142;0.11517;0.11617;0.11645;0.11626;0.11534;0.11284;0.10657;0.088314;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.10438;0.1044;0.10546;0.10596;0.10724;0.10814;0.10905;0.10997;0.11024;0.1101;0.10933;0.10716;0.10169;0.086036;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.099017;0.099142;0.099907;0.10037;0.10155;0.10237;0.10323;0.10411;0.10436;0.10425;0.10358;0.1017;0.096939;0.083474;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.093768;0.093785;0.094565;0.095127;0.096197;0.096943;0.097723;0.098543;0.098773;0.098699;0.098128;0.096465;0.092305;0.08072;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.088765;0.089109;0.08963;0.090146;0.091131;0.091819;0.09255;0.093325;0.093531;0.093462;0.092946;0.091477;0.087835;0.077781;0.066209;-9999;-9999;-9999;-9999;-9999;
+2500;0.084234;0.084437;0.084912;0.085394;0.0863;0.086934;0.087616;0.088345;0.088548;0.088514;0.088085;0.08679;0.083523;0.07467;0.065554;-9999;-9999;-9999;-9999;-9999;
+3000;0.079793;0.07998;0.080414;0.080863;0.081694;0.082276;0.082912;0.083599;0.0838;0.083794;0.083442;0.082317;0.079427;0.071648;0.064265;-9999;-9999;-9999;-9999;-9999;
+3500;0.075567;0.075579;0.076122;0.076546;0.07731;0.077843;0.07848;0.079084;0.079278;0.079292;0.079001;0.078029;0.075476;0.068696;0.063056;-9999;-9999;-9999;-9999;-9999;
+4000;0.071549;0.071728;0.072078;0.072452;0.073133;0.073621;0.074201;0.074776;0.074961;0.074994;0.074759;0.07389;0.071665;0.065883;0.048266;-9999;-9999;-9999;-9999;-9999;
+4500;0.06781;0.067954;0.068273;0.068619;0.06924;0.069666;0.07017;0.070694;0.070853;0.070882;0.070684;0.069937;0.068;0.06297;0.048162;-9999;-9999;-9999;-9999;-9999;
+5000;0.064254;0.064338;0.064629;0.065029;0.065522;0.065908;0.066364;0.06686;0.066997;0.067016;0.066832;0.066169;0.064397;0.060117;0.047644;-9999;-9999;-9999;-9999;-9999;
+5500;0.060773;0.060897;0.06116;0.061526;0.061978;0.062329;0.062742;0.063208;0.063343;0.063372;0.063225;0.062656;0.0611;0.057381;0.046798;-9999;-9999;-9999;-9999;-9999;
+6000;0.05751;0.057623;0.05786;0.058194;0.058609;0.058928;0.059301;0.059738;0.059869;0.059904;0.059789;0.059304;0.057952;0.054722;0.045841;-9999;-9999;-9999;-9999;-9999;
+6500;0.054419;0.054425;0.054723;0.055031;0.055411;0.055698;0.056034;0.056443;0.056569;0.056608;0.056521;0.056107;0.054934;0.052132;0.044609;-9999;-9999;-9999;-9999;-9999;
+7000;0.051493;0.051498;0.05175;0.052029;0.052376;0.052635;0.052936;0.053318;0.053437;0.053477;0.053414;0.053063;0.052046;0.049617;0.043239;-9999;-9999;-9999;-9999;-9999;
+7500;0.048678;0.048764;0.048935;0.049184;0.0495;0.049733;0.050002;0.050356;0.050469;0.050508;0.050464;0.050167;0.049287;0.047184;0.04175;-9999;-9999;-9999;-9999;-9999;
+8000;0.046022;0.046116;0.046268;0.046493;0.046779;0.046987;0.047225;0.047553;0.047659;0.047695;0.047667;0.047416;0.046656;0.044836;0.040191;0.038572;-9999;-9999;-9999;-9999;
+8500;0.043521;0.043612;0.043746;0.043949;0.044224;0.044393;0.044603;0.044904;0.045005;0.045036;0.045019;0.044806;0.04415;0.042578;0.038582;0.038127;-9999;-9999;-9999;-9999;
+9000;0.041169;0.04125;0.041368;0.041549;0.041799;0.041946;0.042129;0.042404;0.042502;0.042478;0.042515;0.042335;0.041768;0.040411;0.036977;0.026882;-9999;-9999;-9999;-9999;
+9500;0.038963;0.039027;0.03913;0.03929;0.039516;0.039642;0.039799;0.040051;0.040142;0.04012;0.040152;0.039999;0.039509;0.038339;0.035421;0.027404;-9999;-9999;-9999;-9999;
+10000;0.036896;0.036897;0.037024;0.037169;0.03737;0.037477;0.037613;0.037839;0.037923;0.037902;0.037927;0.037795;0.037372;0.036324;0.033934;0.027277;-9999;-9999;-9999;-9999;
+10500;0.034937;0.034984;0.03506;0.035183;0.035361;0.035449;0.035564;0.035765;0.035842;0.035821;0.035836;0.035722;0.035355;0.03445;0.03241;0.026959;-9999;-9999;-9999;-9999;
+11000;0.033122;0.033167;0.033231;0.033339;0.033494;0.033564;0.033656;0.033829;0.033895;0.033874;0.033877;0.033778;0.033457;0.032677;0.030934;0.026451;-9999;-9999;-9999;-9999;
+11500;0.031196;0.031232;0.031291;0.031386;0.031527;0.031586;0.031666;0.031819;0.031873;0.031844;0.031841;0.03174;0.031433;0.030695;0.029059;0.024836;-9999;-9999;-9999;-9999;
+12000;0.029421;0.029421;0.029503;0.029588;0.029715;0.029763;0.02983;0.029966;0.030008;0.02997;0.029961;0.029857;0.029562;0.028866;0.027331;0.023344;-9999;-9999;-9999;-9999;
+12500;0.027788;0.027819;0.027885;0.027934;0.028048;0.028087;0.028141;0.02826;0.028288;0.028243;0.028226;0.028119;0.027834;0.027178;0.025736;0.021986;-9999;-9999;-9999;-9999;
+13000;0.026293;0.02632;0.026377;0.026418;0.026519;0.026548;0.026589;0.026691;0.026705;0.026652;0.026628;0.026518;0.026243;0.025624;0.024271;0.020757;-9999;-9999;-9999;-9999;
+13500;0.024927;0.024951;0.024999;0.025033;0.02512;0.02514;0.025169;0.025252;0.025253;0.025193;0.025161;0.025047;0.024781;0.024195;0.02293;0.019652;-9999;-9999;-9999;-9999;
+14000;0.023687;0.023706;0.023746;0.023772;0.023845;0.023854;0.023885;0.023936;0.023925;0.023857;0.023816;0.023698;0.023439;0.022887;0.021706;0.018668;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10471;0.10473;0.10597;0.10653;0.10794;0.10895;0.10986;0.11077;0.11094;0.11048;0.10908;0.10575;0.096811;0.079131;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.09927;0.099287;0.10025;0.10093;0.10224;0.10316;0.10401;0.10486;0.10504;0.10464;0.10345;0.10055;0.092711;0.068471;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.094051;0.094069;0.094961;0.095591;0.096817;0.097671;0.098462;0.099275;0.099439;0.099096;0.098042;0.095516;0.088667;0.067921;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.089228;0.089438;0.09017;0.090607;0.091733;0.092509;0.093235;0.093979;0.094123;0.093843;0.092926;0.0907;0.084677;0.066876;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.084539;0.084554;0.085314;0.085853;0.086896;0.087622;0.088302;0.089013;0.089157;0.088907;0.088079;0.085965;0.080783;0.06553;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.080071;0.080317;0.080825;0.081319;0.082278;0.082949;0.083594;0.084258;0.08442;0.084221;0.083508;0.081627;0.077024;0.063841;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.075873;0.075885;0.076524;0.076993;0.077875;0.078498;0.079105;0.079739;0.07989;0.079745;0.079108;0.077456;0.073434;0.062079;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.071878;0.072007;0.072432;0.072861;0.073675;0.074253;0.074821;0.075414;0.075553;0.075432;0.074902;0.073464;0.069945;0.060153;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.068029;0.06804;0.068564;0.068954;0.069678;0.070191;0.070723;0.071282;0.071417;0.071328;0.070879;0.069627;0.066558;0.05807;0.048471;-9999;-9999;-9999;-9999;-9999;
+4500;0.064374;0.064584;0.064929;0.065286;0.065948;0.06641;0.066889;0.067385;0.06749;0.06742;0.067043;0.065957;0.063279;0.055948;0.047838;-9999;-9999;-9999;-9999;-9999;
+5000;0.06101;0.06115;0.061463;0.061793;0.062399;0.062821;0.063269;0.063735;0.063837;0.063773;0.063434;0.062473;0.060131;0.053764;0.047383;-9999;-9999;-9999;-9999;-9999;
+5500;0.057815;0.057883;0.058167;0.058472;0.059025;0.059409;0.059858;0.060266;0.060362;0.060317;0.060034;0.059203;0.05716;0.051659;0.04651;-9999;-9999;-9999;-9999;-9999;
+6000;0.054663;0.05478;0.055037;0.055386;0.055823;0.056169;0.056576;0.056967;0.057059;0.057029;0.056794;0.056077;0.0543;0.049562;0.045698;-9999;-9999;-9999;-9999;-9999;
+6500;0.051681;0.051834;0.052065;0.052382;0.052783;0.053096;0.053464;0.053836;0.053923;0.053907;0.053712;0.053095;0.051551;0.047544;0.035164;-9999;-9999;-9999;-9999;-9999;
+7000;0.048941;0.04904;0.049248;0.049535;0.049902;0.050184;0.050515;0.050867;0.050949;0.050942;0.050782;0.050252;0.048863;0.045461;0.035116;-9999;-9999;-9999;-9999;-9999;
+7500;0.046352;0.046394;0.04658;0.04684;0.047174;0.047427;0.047724;0.048056;0.048132;0.048132;0.048;0.047546;0.046342;0.04341;0.034799;-9999;-9999;-9999;-9999;-9999;
+8000;0.04381;0.043892;0.044057;0.044292;0.044595;0.044821;0.045085;0.045396;0.045467;0.045471;0.045364;0.044974;0.043932;0.041407;0.034198;-9999;-9999;-9999;-9999;-9999;
+8500;0.041419;0.04153;0.041676;0.041887;0.042161;0.042362;0.042595;0.042883;0.042949;0.042955;0.042867;0.042534;0.041633;0.039461;0.033443;-9999;-9999;-9999;-9999;-9999;
+9000;0.039237;0.039304;0.039433;0.039621;0.039868;0.040045;0.04025;0.040513;0.040575;0.040581;0.040509;0.040223;0.039445;0.037578;0.032537;-9999;-9999;-9999;-9999;-9999;
+9500;0.037191;0.037212;0.037324;0.037492;0.037712;0.037867;0.038045;0.038285;0.038341;0.038345;0.038285;0.038039;0.037367;0.035765;0.031514;-9999;-9999;-9999;-9999;-9999;
+10000;0.035201;0.035255;0.035352;0.035498;0.035707;0.035827;0.035978;0.036195;0.036244;0.036244;0.036194;0.03598;0.035399;0.034026;0.030422;-9999;-9999;-9999;-9999;-9999;
+10500;0.033354;0.033432;0.033516;0.033644;0.033829;0.033926;0.03405;0.034239;0.03428;0.034275;0.034231;0.034046;0.033541;0.032364;0.029285;0.028786;-9999;-9999;-9999;-9999;
+11000;0.031693;0.031736;0.031807;0.031918;0.03208;0.03216;0.032261;0.032427;0.032458;0.03244;0.032397;0.032233;0.031796;0.030756;0.028195;0.028064;-9999;-9999;-9999;-9999;
+11500;0.029897;0.029924;0.029987;0.030085;0.030231;0.030299;0.030385;0.030531;0.030549;0.030524;0.030476;0.030314;0.029898;0.028947;0.026521;0.026365;-9999;-9999;-9999;-9999;
+12000;0.028245;0.028244;0.028312;0.028399;0.028531;0.028586;0.028657;0.028781;0.028789;0.028757;0.028704;0.028544;0.028146;0.027256;0.024984;0.024811;-9999;-9999;-9999;-9999;
+12500;0.02673;0.026732;0.026779;0.026853;0.026967;0.027012;0.027068;0.027173;0.02717;0.027132;0.027072;0.026913;0.026533;0.025698;0.023576;0.023353;-9999;-9999;-9999;-9999;
+13000;0.02531;0.025337;0.025377;0.025438;0.025537;0.025569;0.025611;0.025698;0.025684;0.025639;0.025573;0.025414;0.025051;0.024269;0.022291;-9999;-9999;-9999;-9999;-9999;
+13500;0.024021;0.024067;0.0241;0.024149;0.024231;0.024252;0.02428;0.024348;0.024324;0.024272;0.024198;0.024039;0.023691;0.022958;0.021124;0.020704;-9999;-9999;-9999;-9999;
+14000;0.022899;0.022918;0.022942;0.02298;0.023046;0.023056;0.02307;0.02312;0.023085;0.023024;0.022942;0.022783;0.022449;0.021762;0.02007;0.019728;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.099534;0.099925;0.10088;0.10143;0.10291;0.10398;0.10483;0.10564;0.10568;0.10486;0.10287;0.098222;0.084689;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.094411;0.094427;0.095583;0.096092;0.097449;0.098432;0.099221;0.099994;0.10005;0.099336;0.097614;0.093511;0.081771;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.089474;0.089491;0.090556;0.091025;0.092268;0.093172;0.093918;0.094654;0.094709;0.094091;0.092565;0.088933;0.078799;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.084926;0.085092;0.085834;0.086279;0.087429;0.088256;0.088942;0.089619;0.089661;0.089112;0.087748;0.084544;0.075762;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.080404;0.080418;0.08134;0.081751;0.082813;0.083576;0.084224;0.084872;0.084927;0.084426;0.083185;0.080328;0.072787;0.057887;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.076099;0.076374;0.077015;0.077405;0.078388;0.079093;0.079704;0.080316;0.080376;0.079958;0.078876;0.076366;0.069768;0.057042;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.072106;0.072118;0.072797;0.073266;0.07417;0.074818;0.075393;0.075974;0.076044;0.075695;0.074752;0.072555;0.066784;0.049139;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.068307;0.068438;0.068991;0.069324;0.070155;0.07075;0.071291;0.07184;0.071919;0.071628;0.07081;0.068887;0.063845;0.048746;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.064662;0.064673;0.065232;0.065627;0.066369;0.06689;0.067389;0.067907;0.067991;0.067751;0.067045;0.065364;0.060956;0.047953;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.061207;0.061401;0.061771;0.062133;0.062813;0.0633;0.063748;0.064211;0.064275;0.064059;0.06345;0.061986;0.058149;0.04698;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.05799;0.057999;0.058465;0.058811;0.059434;0.059875;0.060296;0.060733;0.060806;0.060627;0.060084;0.058796;0.055465;0.045987;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.054937;0.055034;0.055339;0.055655;0.056224;0.056626;0.057017;0.057428;0.057498;0.057357;0.056897;0.055776;0.052876;0.044757;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.051966;0.051973;0.052359;0.052655;0.053177;0.053542;0.053906;0.05429;0.054358;0.054246;0.053853;0.052823;0.050369;0.043418;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.049156;0.049295;0.049544;0.049811;0.050288;0.050619;0.050956;0.051313;0.051379;0.05129;0.050957;0.050067;0.047939;0.041973;0.035282;-9999;-9999;-9999;-9999;-9999;
+7000;0.046546;0.046649;0.046873;0.047173;0.047553;0.047851;0.048162;0.048493;0.048554;0.048485;0.048203;0.047434;0.045591;0.040448;0.034943;-9999;-9999;-9999;-9999;-9999;
+7500;0.044083;0.044146;0.044347;0.044618;0.044966;0.045233;0.045518;0.045824;0.045881;0.045827;0.045589;0.044925;0.043331;0.038939;0.034442;-9999;-9999;-9999;-9999;-9999;
+8000;0.041697;0.041782;0.041961;0.042206;0.042522;0.042762;0.04304;0.043304;0.043354;0.043312;0.043112;0.04254;0.041162;0.037413;0.033899;-9999;-9999;-9999;-9999;-9999;
+8500;0.039455;0.039554;0.039713;0.039932;0.040219;0.040432;0.040678;0.040925;0.040969;0.040936;0.040767;0.040275;0.039085;0.035886;0.033323;-9999;-9999;-9999;-9999;-9999;
+9000;0.037388;0.037458;0.037598;0.037793;0.038053;0.038241;0.038456;0.038687;0.038725;0.038696;0.038553;0.038129;0.037103;0.034419;0.026174;-9999;-9999;-9999;-9999;-9999;
+9500;0.035462;0.035496;0.035618;0.03579;0.036019;0.036184;0.036371;0.036584;0.036615;0.036589;0.036467;0.036101;0.035217;0.032918;0.026151;-9999;-9999;-9999;-9999;-9999;
+10000;0.033611;0.033667;0.033773;0.033924;0.034127;0.034266;0.034423;0.034614;0.034638;0.034613;0.034507;0.034192;0.033395;0.031461;0.025864;-9999;-9999;-9999;-9999;-9999;
+10500;0.031894;0.031963;0.032055;0.032187;0.032364;0.032483;0.032615;0.032785;0.032799;0.032768;0.032672;0.032398;0.031709;0.03005;0.025492;-9999;-9999;-9999;-9999;-9999;
+11000;0.030342;0.030385;0.030463;0.030577;0.030743;0.030831;0.030938;0.031086;0.031093;0.031059;0.030969;0.030724;0.030113;0.028709;0.024947;-9999;-9999;-9999;-9999;-9999;
+11500;0.028647;0.028689;0.028757;0.028856;0.029004;0.029076;0.029168;0.029297;0.029294;0.029253;0.02916;0.028923;0.028354;0.027038;0.023506;-9999;-9999;-9999;-9999;-9999;
+12000;0.027093;0.027132;0.027193;0.027276;0.027406;0.027464;0.02754;0.02765;0.027637;0.02759;0.027494;0.027264;0.02673;0.025502;0.022196;-9999;-9999;-9999;-9999;-9999;
+12500;0.025679;0.02571;0.025758;0.025829;0.025942;0.025987;0.026047;0.026138;0.026116;0.026062;0.025961;0.025737;0.025234;0.024094;0.021012;-9999;-9999;-9999;-9999;-9999;
+13000;0.024391;0.024388;0.024451;0.02451;0.024606;0.024639;0.024683;0.024755;0.024723;0.02466;0.024556;0.024337;0.023862;0.022806;0.019962;-9999;-9999;-9999;-9999;-9999;
+13500;0.023216;0.023236;0.023267;0.023313;0.023393;0.023413;0.023441;0.023494;0.023452;0.023381;0.023271;0.023058;0.022608;0.021632;0.019021;-9999;-9999;-9999;-9999;-9999;
+14000;0.022165;0.022179;0.022202;0.022236;0.022298;0.022305;0.022317;0.02235;0.022298;0.022218;0.022102;0.021892;0.021467;0.020569;0.018199;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.094774;0.095144;0.096138;0.096701;0.098256;0.099497;0.10033;0.10111;0.10097;0.099498;0.095901;0.087305;0.068386;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.089824;0.089838;0.090883;0.09157;0.092995;0.094096;0.094862;0.095604;0.095505;0.094307;0.091635;0.084131;0.067175;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.085081;0.085096;0.08607;0.086706;0.088014;0.089;0.089709;0.090391;0.0903;0.089239;0.087109;0.081893;0.065934;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.080526;0.080903;0.081692;0.082137;0.083347;0.084247;0.084902;0.085508;0.085417;0.084452;0.082597;0.078008;0.065006;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.076385;0.076399;0.077226;0.077779;0.078894;0.079717;0.080336;0.080895;0.080841;0.080104;0.078257;0.074282;0.062921;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.072436;0.072571;0.073126;0.073628;0.074656;0.075408;0.075994;0.076518;0.076492;0.075878;0.074248;0.070753;0.060777;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.068488;0.068499;0.069197;0.069677;0.070624;0.071318;0.071857;0.072365;0.072352;0.071746;0.070416;0.067343;0.058731;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.064741;0.064751;0.065473;0.065919;0.066793;0.067428;0.067932;0.068418;0.068419;0.067909;0.066747;0.064043;0.056581;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.061428;0.061438;0.062008;0.062406;0.063182;0.063743;0.064208;0.06467;0.064683;0.064256;0.063234;0.060867;0.054405;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.058275;0.05835;0.058731;0.059092;0.059805;0.060319;0.060743;0.061155;0.061155;0.060774;0.05988;0.057811;0.052255;0.04144;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.055108;0.055116;0.055598;0.05594;0.056594;0.057065;0.057462;0.057854;0.057865;0.05754;0.056751;0.054942;0.050142;0.040955;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.052109;0.052117;0.052629;0.052946;0.053544;0.053974;0.054346;0.054717;0.054736;0.054462;0.053775;0.052197;0.048113;0.040449;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.049407;0.049413;0.049813;0.050105;0.05065;0.051042;0.051389;0.051738;0.051763;0.051533;0.050937;0.049563;0.046024;0.034987;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.046847;0.046885;0.047144;0.047412;0.047908;0.048263;0.048586;0.048913;0.048942;0.04875;0.048236;0.04704;0.043978;0.034565;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.044275;0.04428;0.044607;0.044856;0.045306;0.045629;0.045928;0.046237;0.046269;0.046109;0.045666;0.044627;0.041984;0.033985;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.041856;0.04186;0.042216;0.042443;0.04285;0.04314;0.043416;0.0437;0.043734;0.043605;0.043225;0.042325;0.040046;0.033309;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.039694;0.039698;0.039962;0.040213;0.040535;0.040794;0.041045;0.041307;0.041339;0.04123;0.040907;0.040134;0.038168;0.032445;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.037661;0.037678;0.037844;0.038065;0.038356;0.038586;0.038813;0.039054;0.039082;0.03899;0.038713;0.038009;0.036348;0.031501;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.035642;0.035711;0.035855;0.036049;0.03631;0.036513;0.036717;0.036935;0.036958;0.036881;0.036644;0.036036;0.034594;0.030502;0.026282;-9999;-9999;-9999;-9999;-9999;
+9500;0.033766;0.033768;0.034;0.034174;0.034404;0.034578;0.034756;0.034951;0.034968;0.034901;0.034696;0.034172;0.032919;0.029482;0.025984;-9999;-9999;-9999;-9999;-9999;
+10000;0.03211;0.032165;0.032275;0.032425;0.032629;0.032779;0.032949;0.033105;0.03311;0.033045;0.032867;0.032404;0.031324;0.028443;0.025422;-9999;-9999;-9999;-9999;-9999;
+10500;0.030575;0.030576;0.030671;0.030801;0.030979;0.031106;0.031249;0.031389;0.031386;0.03132;0.031152;0.030745;0.029821;0.027405;0.025268;-9999;-9999;-9999;-9999;-9999;
+11000;0.029063;0.029106;0.029186;0.029296;0.02945;0.029554;0.029669;0.029791;0.029777;0.029711;0.02956;0.029204;0.02841;0.026382;0.024898;-9999;-9999;-9999;-9999;-9999;
+11500;0.027476;0.027521;0.027591;0.027686;0.027822;0.027912;0.028009;0.028111;0.02809;0.028018;0.027869;0.027528;0.026783;0.024894;0.023473;-9999;-9999;-9999;-9999;-9999;
+12000;0.026034;0.026069;0.026126;0.026208;0.026326;0.0264;0.026481;0.026566;0.026539;0.026462;0.026313;0.025987;0.025287;0.023533;0.022173;-9999;-9999;-9999;-9999;-9999;
+12500;0.02472;0.024741;0.024791;0.024859;0.024959;0.025019;0.025081;0.025148;0.025112;0.025034;0.024885;0.024572;0.023916;0.022294;0.020997;-9999;-9999;-9999;-9999;-9999;
+13000;0.023526;0.023539;0.02358;0.023634;0.023728;0.023761;0.023806;0.023853;0.023809;0.023724;0.023578;0.023278;0.022663;0.02117;0.019941;-9999;-9999;-9999;-9999;-9999;
+13500;0.022437;0.022457;0.022488;0.022529;0.022603;0.022622;0.022649;0.022677;0.022623;0.02253;0.022382;0.022099;0.021522;0.020158;0.019014;-9999;-9999;-9999;-9999;-9999;
+14000;0.021472;0.021468;0.021513;0.02154;0.021594;0.021599;0.021606;0.021615;0.02155;0.021449;0.021297;0.021024;0.020491;0.019256;0.018178;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.08954;0.089553;0.090946;0.091586;0.093092;0.094249;0.094721;0.09493;0.09386;0.091267;0.08567;0.073238;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.085047;0.085059;0.086186;0.086971;0.088345;0.089449;0.089922;0.090166;0.089272;0.08701;0.082102;0.071355;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.080887;0.0809;0.081905;0.08272;0.083887;0.08493;0.085388;0.085639;0.084896;0.082924;0.078657;0.069247;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.076695;0.076708;0.077679;0.078346;0.079734;0.08068;0.081146;0.081423;0.080775;0.079037;0.075277;0.067048;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.072699;0.07271;0.073532;0.074132;0.075394;0.076361;0.076945;0.077382;0.076858;0.075362;0.072079;0.064801;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.06889;0.06901;0.069596;0.070134;0.07127;0.072168;0.072723;0.073238;0.073052;0.071752;0.069019;0.062557;0.048814;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.065089;0.065099;0.065836;0.066343;0.067358;0.068187;0.068716;0.069207;0.069066;0.068123;0.065974;0.060308;0.047892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.061486;0.061806;0.062294;0.06274;0.063665;0.064415;0.064912;0.065381;0.06527;0.064455;0.062779;0.058045;0.047026;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.058368;0.058376;0.058972;0.059386;0.0602;0.060844;0.061306;0.061748;0.061672;0.060964;0.059503;0.056035;0.046114;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.0554;0.055456;0.055857;0.056228;0.056971;0.05755;0.057966;0.058354;0.058278;0.057645;0.056386;0.053371;0.045028;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.052361;0.052368;0.052873;0.053227;0.053909;0.054427;0.054824;0.055183;0.055126;0.054581;0.053488;0.050856;0.043621;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.049488;0.049494;0.050049;0.050379;0.051003;0.051472;0.05184;0.052175;0.052136;0.051663;0.050725;0.048467;0.042256;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.046953;0.046959;0.047377;0.047679;0.048249;0.04867;0.049008;0.049322;0.049301;0.048893;0.048086;0.046115;0.040781;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.044553;0.044577;0.044851;0.045122;0.045642;0.046024;0.046328;0.04662;0.046615;0.046271;0.04551;0.043852;0.039275;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.0421;0.042104;0.04245;0.042705;0.043176;0.043522;0.043801;0.044067;0.044065;0.043779;0.043126;0.041684;0.037752;0.030088;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.039795;0.039799;0.040188;0.040423;0.040849;0.041161;0.041419;0.041668;0.041664;0.04142;0.040862;0.039609;0.036231;0.029856;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.037778;0.037781;0.038062;0.038274;0.038658;0.038936;0.039174;0.039405;0.0394;0.039195;0.038715;0.037616;0.034775;0.029533;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.035885;0.035892;0.036067;0.036297;0.036599;0.036846;0.037062;0.037276;0.03727;0.037098;0.036683;0.035718;0.033285;0.025728;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.033976;0.033977;0.034197;0.034403;0.03467;0.034887;0.035081;0.035275;0.035272;0.035123;0.03475;0.033915;0.031832;0.02547;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.032202;0.032203;0.032452;0.032634;0.032873;0.03306;0.03323;0.033398;0.033389;0.033254;0.032931;0.03221;0.030426;0.025161;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.030653;0.030709;0.030827;0.030981;0.031192;0.031353;0.0315;0.031648;0.031633;0.031511;0.03123;0.030606;0.029084;0.02473;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.029222;0.02922;0.029321;0.029453;0.029636;0.029771;0.029897;0.030025;0.030005;0.029893;0.029645;0.029079;0.027809;0.024177;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.027811;0.027854;0.027937;0.02805;0.028207;0.028318;0.028421;0.028528;0.0285;0.028396;0.028174;0.027683;0.0266;0.023586;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.026345;0.026343;0.026449;0.026546;0.026683;0.026777;0.026863;0.026949;0.026915;0.026807;0.026592;0.026128;0.025119;0.022327;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.025006;0.025004;0.02509;0.025172;0.02529;0.025366;0.025435;0.025502;0.025457;0.025347;0.025137;0.024722;0.023761;0.021191;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.023778;0.023806;0.023856;0.023922;0.024021;0.02408;0.024131;0.024179;0.024132;0.02402;0.023812;0.023417;0.022524;0.020174;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.022677;0.022702;0.022742;0.022793;0.022871;0.022914;0.022946;0.022982;0.022928;0.022813;0.022608;0.022223;0.021402;0.019275;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.021698;0.021716;0.021745;0.02178;0.021837;0.021862;0.021882;0.021902;0.021838;0.021717;0.021515;0.021126;0.020372;0.018494;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.020832;0.020826;0.020862;0.020881;0.020926;0.020927;0.020932;0.020932;0.020856;0.020729;0.020529;0.02016;0.019463;0.017833;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.083482;0.083971;0.085176;0.085811;0.087364;0.088358;0.088509;0.088309;0.086607;0.082565;0.074541;0.058962;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.079368;0.079774;0.080881;0.081329;0.082904;0.083853;0.08404;0.083914;0.082455;0.078912;0.07185;0.057606;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.075512;0.075524;0.076765;0.077315;0.078759;0.079647;0.07986;0.079764;0.078478;0.075375;0.06917;0.056314;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.071823;0.072144;0.073067;0.073491;0.074828;0.075672;0.075927;0.075891;0.074775;0.072018;0.066494;0.054986;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.068299;0.068572;0.069428;0.069838;0.07105;0.071865;0.072152;0.072171;0.071226;0.068819;0.063945;0.05361;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.064876;0.064885;0.065771;0.066347;0.067423;0.068223;0.068535;0.068601;0.067717;0.065714;0.061429;0.052182;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.061629;0.061637;0.062452;0.063026;0.06397;0.064745;0.065067;0.065177;0.064437;0.062702;0.058922;0.050835;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.058535;0.058543;0.059276;0.059836;0.060689;0.061421;0.061748;0.061892;0.061282;0.059785;0.056486;0.049416;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.055542;0.055549;0.056252;0.05673;0.057573;0.05825;0.058575;0.058746;0.058252;0.056967;0.054128;0.047994;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.052584;0.052591;0.05324;0.053675;0.054534;0.05519;0.055572;0.055772;0.05536;0.054255;0.05183;0.046478;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.049797;0.049803;0.050477;0.050781;0.051567;0.052169;0.052525;0.052847;0.052659;0.051718;0.049638;0.044939;0.03495;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.047155;0.047161;0.047672;0.048041;0.048758;0.049309;0.049646;0.04995;0.04981;0.049112;0.047501;0.04337;0.03437;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.044657;0.044791;0.045117;0.045448;0.046101;0.046604;0.046921;0.047208;0.047096;0.046491;0.045267;0.04179;0.033842;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.042298;0.042414;0.042701;0.042999;0.043592;0.044048;0.044347;0.044617;0.044528;0.044004;0.042943;0.040388;0.033241;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.040075;0.04017;0.040429;0.040687;0.041225;0.041638;0.041918;0.042171;0.042102;0.041648;0.04072;0.038477;0.032429;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.037949;0.037952;0.03828;0.038519;0.038995;0.039369;0.039628;0.039866;0.039812;0.039417;0.038602;0.036658;0.031539;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.035953;0.036056;0.036267;0.03648;0.036899;0.037235;0.037476;0.037696;0.037648;0.037295;0.036592;0.034913;0.030595;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.034104;0.034106;0.034369;0.034563;0.034923;0.035221;0.035444;0.035643;0.035602;0.035299;0.034658;0.033243;0.029624;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.032383;0.032444;0.032607;0.032816;0.033092;0.033346;0.033545;0.033721;0.033687;0.033425;0.032873;0.031651;0.028603;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.030753;0.030754;0.030959;0.031147;0.031392;0.031604;0.031781;0.031938;0.031905;0.031674;0.031195;0.030147;0.02758;0.022645;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.029248;0.029314;0.029438;0.029597;0.029813;0.02999;0.030139;0.03028;0.030249;0.03005;0.029631;0.02873;0.026566;0.022581;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.027877;0.027876;0.028031;0.028171;0.028357;0.028501;0.028628;0.028748;0.028711;0.028539;0.028175;0.027401;0.025611;0.022379;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.026639;0.026637;0.02675;0.026872;0.027025;0.027142;0.027243;0.027342;0.0273;0.027146;0.026825;0.026177;0.024649;0.020094;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.025255;0.025253;0.025363;0.025466;0.025599;0.025702;0.02579;0.025871;0.025823;0.02567;0.025365;0.024743;0.023306;0.019229;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.023994;0.02399;0.024101;0.024185;0.0243;0.024392;0.024463;0.024525;0.02447;0.024318;0.024026;0.02343;0.022115;0.018488;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.02288;0.022907;0.022958;0.023027;0.023128;0.023202;0.023254;0.023297;0.023236;0.023082;0.022803;0.022246;0.021034;0.0179;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.021893;0.021893;0.02193;0.021988;0.022071;0.022126;0.022159;0.022182;0.022114;0.021958;0.02169;0.021171;0.020063;0.017479;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.020979;0.020973;0.021024;0.021059;0.021127;0.021161;0.021177;0.021178;0.021099;0.020942;0.020684;0.020201;0.019201;0.017768;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.020204;0.020216;0.020235;0.020253;0.020293;0.020305;0.0203;0.02028;0.02019;0.020031;0.019782;0.019335;0.018448;0.017272;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.077932;0.078416;0.079616;0.080677;0.082047;0.082837;0.082684;0.081954;0.079201;0.073229;0.062031;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.074027;0.074037;0.075598;0.07652;0.077826;0.078597;0.078622;0.077885;0.075508;0.070319;0.060332;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.070433;0.070896;0.071873;0.072684;0.073942;0.074694;0.074588;0.074077;0.071962;0.067396;0.058618;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.067049;0.067059;0.068299;0.069021;0.070234;0.070958;0.070913;0.070507;0.068672;0.06461;0.056796;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.063814;0.064085;0.065028;0.065425;0.066692;0.067389;0.067396;0.067081;0.065496;0.061931;0.054992;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.060595;0.060603;0.061643;0.062117;0.06331;0.063981;0.064031;0.063799;0.06243;0.059306;0.053161;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.057528;0.057869;0.058657;0.05899;0.060081;0.060726;0.060812;0.060652;0.059475;0.056751;0.051306;0.040846;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.054703;0.054709;0.055587;0.055993;0.057003;0.057621;0.057736;0.057634;0.05663;0.054263;0.049448;0.039958;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.052037;0.052043;0.052795;0.0532;0.054052;0.054657;0.054798;0.054747;0.053897;0.051845;0.047604;0.039093;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.049496;0.049502;0.05016;0.050577;0.05135;0.051911;0.052051;0.052019;0.051293;0.049531;0.045844;0.038213;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.047077;0.047082;0.047671;0.048064;0.048775;0.04931;0.049469;0.049475;0.048862;0.047333;0.044077;0.037338;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.044752;0.044756;0.045297;0.045689;0.046325;0.046828;0.047002;0.04704;0.046465;0.045199;0.042385;0.036474;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.042544;0.042702;0.043039;0.043411;0.043987;0.044462;0.044649;0.044709;0.044231;0.043131;0.040702;0.035558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.040378;0.040382;0.040861;0.041239;0.04176;0.04221;0.042407;0.042484;0.042081;0.041138;0.039047;0.034576;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.038214;0.038217;0.038651;0.03896;0.039537;0.039995;0.040263;0.040351;0.040021;0.039217;0.037424;0.033532;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.036184;0.036186;0.036574;0.036855;0.037379;0.037782;0.03803;0.038221;0.038059;0.037371;0.035843;0.032454;0.025549;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.03429;0.034292;0.034633;0.034883;0.035353;0.035717;0.035936;0.036116;0.035986;0.03551;0.034308;0.031362;0.025241;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.032531;0.032604;0.032832;0.033048;0.033463;0.033784;0.033978;0.034145;0.034038;0.033593;0.032703;0.03027;0.024951;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.030866;0.030866;0.031143;0.031385;0.03171;0.031992;0.032165;0.032312;0.032217;0.03183;0.031061;0.029269;0.024564;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.029326;0.029417;0.029586;0.029786;0.030081;0.030328;0.030484;0.030615;0.030532;0.030194;0.02953;0.027979;0.02403;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.02791;0.028001;0.028144;0.02832;0.028578;0.028789;0.028926;0.029041;0.028966;0.02867;0.028098;0.026772;0.023514;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.02665;0.026648;0.026825;0.026982;0.027199;0.027377;0.027494;0.027591;0.027521;0.02726;0.026767;0.02565;0.022958;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.025498;0.025495;0.025637;0.025766;0.025946;0.026093;0.026188;0.026266;0.026196;0.025965;0.025539;0.024585;0.022381;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.024231;0.024228;0.024355;0.024465;0.024623;0.024747;0.024824;0.024884;0.024809;0.024587;0.024183;0.023298;0.021281;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.023086;0.023082;0.023191;0.023282;0.023417;0.023519;0.023579;0.02362;0.02354;0.023325;0.022921;0.022125;0.020299;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.02206;0.022088;0.022145;0.022213;0.022326;0.022406;0.022446;0.022469;0.022383;0.022175;0.021796;0.021061;0.019431;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.021151;0.021166;0.02121;0.021255;0.021345;0.021402;0.021423;0.021427;0.021334;0.021132;0.020776;0.020102;0.018679;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.02034;0.020334;0.020385;0.020412;0.020473;0.020506;0.020507;0.020491;0.020391;0.020193;0.019859;0.019247;0.018044;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.019639;0.019631;0.019672;0.019679;0.019709;0.019716;0.019696;0.019658;0.019549;0.019356;0.019043;0.018495;0.017532;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.073546;0.073552;0.074965;0.076255;0.077494;0.078341;0.077668;0.076085;0.071591;0.063149;0.050411;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.069769;0.069776;0.071183;0.072327;0.073498;0.074288;0.073507;0.072323;0.068381;0.060912;0.04892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.066142;0.066328;0.067601;0.068734;0.069803;0.070517;0.070046;0.068827;0.065326;0.058695;0.047556;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.062834;0.062841;0.064165;0.065132;0.066249;0.066968;0.066569;0.065525;0.062473;0.056552;0.046229;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.059628;0.059634;0.060929;0.061771;0.062807;0.063481;0.063266;0.062294;0.059668;0.05446;0.044969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.056576;0.056956;0.057816;0.058587;0.059562;0.060112;0.060039;0.059245;0.057003;0.052374;0.043771;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.053674;0.05405;0.054887;0.055564;0.056492;0.057057;0.056986;0.056308;0.054426;0.050324;0.042673;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.051095;0.0511;0.052094;0.052686;0.053574;0.054114;0.054082;0.053551;0.051893;0.048286;0.041588;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.048635;0.048852;0.049486;0.049974;0.050809;0.051319;0.051271;0.050905;0.049455;0.046303;0.040467;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.046235;0.04624;0.047042;0.047471;0.048253;0.048705;0.04867;0.048369;0.047134;0.044421;0.039268;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.043949;0.044188;0.044777;0.045087;0.045834;0.046273;0.046263;0.046034;0.044965;0.04263;0.038045;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.041828;0.041832;0.042501;0.042764;0.043531;0.043953;0.043967;0.043798;0.042879;0.040845;0.0368;0.029383;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.039815;0.039953;0.040424;0.040643;0.041338;0.041739;0.041779;0.041656;0.040872;0.039108;0.035549;0.028799;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.03783;0.037832;0.038361;0.038632;0.039256;0.039632;0.039696;0.039612;0.038946;0.037419;0.034292;0.028254;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.035956;0.035958;0.036437;0.036722;0.03726;0.037633;0.037714;0.037664;0.037102;0.035786;0.033087;0.027715;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.034232;0.034234;0.034638;0.034922;0.03538;0.03574;0.035835;0.035811;0.035339;0.034209;0.031885;0.027157;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.032622;0.032704;0.032954;0.033207;0.033621;0.033952;0.034054;0.034053;0.033659;0.032692;0.030698;0.02664;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.031048;0.031048;0.031353;0.0316;0.031974;0.032271;0.032374;0.032389;0.032028;0.03124;0.02954;0.026061;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.029584;0.02966;0.029865;0.030074;0.030432;0.030701;0.030806;0.030826;0.030526;0.029859;0.028415;0.025415;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.028111;0.02811;0.028367;0.028556;0.028903;0.029176;0.029311;0.029364;0.029114;0.028548;0.027326;0.024739;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.026766;0.026851;0.027007;0.027164;0.027461;0.027697;0.027814;0.027905;0.027765;0.027307;0.026281;0.024067;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.025569;0.025567;0.025758;0.025898;0.026148;0.026345;0.026453;0.02652;0.026394;0.026048;0.025287;0.023383;0.019806;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.024502;0.024539;0.024647;0.024782;0.024968;0.025125;0.025213;0.025263;0.025149;0.024825;0.024232;0.022919;0.019718;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.023312;0.023309;0.023445;0.023561;0.023721;0.023854;0.023926;0.023959;0.023843;0.023553;0.022983;0.021753;0.018973;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.022247;0.022243;0.022358;0.022453;0.022587;0.022698;0.022749;0.022768;0.022649;0.022374;0.021843;0.020722;0.018369;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.021295;0.021324;0.021383;0.021444;0.021561;0.021649;0.021681;0.021684;0.021565;0.021301;0.02081;0.019796;0.017893;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.020456;0.020472;0.020514;0.020556;0.020645;0.020705;0.020716;0.020705;0.020584;0.02033;0.019877;0.018975;0.017589;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.019713;0.019707;0.019751;0.019774;0.019831;0.019865;0.019856;0.019826;0.019701;0.019449;0.019043;0.018257;0.017475;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.019079;0.019092;0.019099;0.019099;0.019123;0.019127;0.019095;0.019046;0.018916;0.018678;0.018308;0.017649;0.017595;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/V2527-A5_WFqP3.csv b/engine/test/stubs/V2527-A5/V2527-A5_WFqP3.csv
new file mode 100644
index 00000000..ff9b2c6e
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/V2527-A5_WFqP3.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;111.82;111.82;111.81;111.79;111.78;111.79;111.83;111.92;112.04;112.22;112.48;112.78;113.16;113.59;114.08;114.62;115.19;115.76;116.31;116.8;
+500;111.7;111.73;111.71;111.7;111.68;111.68;111.7;111.74;111.83;111.98;112.17;112.43;112.77;113.17;113.63;114.16;114.73;115.32;115.91;116.46;
+1000;111.6;111.62;111.61;111.6;111.6;111.61;111.62;111.66;111.71;111.8;111.94;112.13;112.42;112.77;113.2;113.7;114.25;114.85;115.47;116.07;
+1500;111.47;111.47;111.47;111.48;111.49;111.52;111.55;111.58;111.64;111.7;111.8;111.92;112.12;112.41;112.8;113.26;113.79;114.37;115;115.63;
+2000;111.28;111.28;111.29;111.31;111.35;111.39;111.44;111.5;111.56;111.63;111.71;111.8;111.92;112.12;112.43;112.84;113.33;113.9;114.52;115.17;
+2500;111.03;111.04;111.06;111.1;111.15;111.22;111.29;111.37;111.47;111.55;111.62;111.71;111.81;111.94;112.15;112.47;112.91;113.44;114.03;114.68;
+3000;110.72;110.73;110.76;110.81;110.89;110.98;111.09;111.2;111.33;111.44;111.53;111.64;111.72;111.82;111.96;112.19;112.54;113;113.56;114.19;
+3500;110.38;110.39;110.42;110.49;110.57;110.68;110.81;110.97;111.13;111.28;111.41;111.55;111.64;111.73;111.84;111.99;112.25;112.63;113.11;113.7;
+4000;109.99;110.01;110.05;110.12;110.22;110.34;110.49;110.67;110.86;111.06;111.23;111.41;111.55;111.66;111.76;111.87;112.04;112.32;112.73;113.24;
+4500;109.6;109.66;109.71;109.77;109.87;109.99;110.14;110.33;110.54;110.77;111.01;111.22;111.41;111.56;111.67;111.78;111.9;112.09;112.41;112.86;
+5000;109.22;109.29;109.34;109.41;109.52;109.66;109.83;110.02;110.23;110.44;110.7;110.97;111.21;111.41;111.57;111.7;111.81;111.94;112.15;112.51;
+5500;108.86;108.88;108.93;109.01;109.13;109.28;109.47;109.68;109.91;110.15;110.42;110.68;110.94;111.2;111.42;111.6;111.73;111.84;111.98;112.23;
+6000;108.51;108.49;108.49;108.58;108.7;108.87;109.07;109.3;109.55;109.81;110.11;110.4;110.68;110.95;111.21;111.44;111.62;111.76;111.88;112.04;
+6500;108.11;108.12;108.15;108.16;108.27;108.43;108.63;108.87;109.14;109.45;109.76;110.07;110.39;110.7;111;111.26;111.47;111.66;111.8;111.92;
+7000;107.91;107.92;107.95;108;108.08;108.18;108.26;108.49;108.74;109.02;109.36;109.71;110.06;110.4;110.74;111.05;111.33;111.53;111.7;111.84;
+7500;107.71;107.72;107.75;107.8;107.88;107.98;108.11;108.25;108.38;108.68;108.99;109.31;109.68;110.06;110.43;110.79;111.12;111.41;111.61;111.74;
+8000;107.52;107.5;107.55;107.6;107.68;107.79;107.91;108.05;108.22;108.41;108.64;108.99;109.34;109.7;110.08;110.48;110.86;111.2;111.49;111.69;
+8500;107.31;107.3;107.35;107.4;107.48;107.58;107.71;107.86;108.02;108.21;108.42;108.61;109;109.39;109.77;110.14;110.54;110.94;111.3;111.59;
+9000;107.13;107.13;107.16;107.21;107.28;107.38;107.5;107.65;107.82;108.01;108.22;108.45;108.7;109.04;109.46;109.87;110.26;110.63;111.03;111.4;
+9500;106.96;106.93;106.98;107.03;107.1;107.19;107.31;107.45;107.61;107.81;108.02;108.24;108.49;108.76;109.09;109.55;109.98;110.4;110.78;111.13;
+10000;106.81;106.81;106.84;106.88;106.94;107.01;107.12;107.28;107.44;107.62;107.82;108.05;108.29;108.55;108.84;109.17;109.65;110.11;110.54;110.94;
+10500;106.66;106.7;106.72;106.76;106.82;106.89;106.99;107.09;107.26;107.43;107.63;107.85;108.09;108.35;108.63;108.93;109.27;109.78;110.26;110.7;
+11000;106.59;106.6;106.62;106.66;106.71;106.78;106.87;106.98;107.1;107.25;107.45;107.66;107.89;108.16;108.43;108.72;109.04;109.39;109.92;110.42;
+11500;106.98;106.99;107.02;107.06;107.11;107.18;107.27;107.37;107.5;107.64;107.85;108.06;108.3;108.56;108.83;109.13;109.45;109.8;110.32;110.82;
+12000;107.37;107.39;107.42;107.46;107.51;107.58;107.67;107.78;107.9;108.04;108.25;108.47;108.71;108.97;109.24;109.54;109.86;110.21;110.74;111.24;
+12500;107.79;107.8;107.82;107.86;107.92;107.99;108.08;108.19;108.31;108.45;108.66;108.88;109.12;109.38;109.65;109.95;110.27;110.63;111.17;111.67;
+13000;108.22;108.2;108.23;108.27;108.33;108.4;108.49;108.6;108.72;108.86;109.07;109.29;109.53;109.79;110.07;110.37;110.69;111.05;111.59;112.1;
+13500;108.61;108.61;108.64;108.68;108.74;108.82;108.91;109.01;109.14;109.28;109.49;109.71;109.95;110.21;110.49;110.79;111.12;111.48;112.02;112.53;
+14000;108.97;108.98;109.01;109.05;109.11;109.19;109.29;109.41;109.54;109.7;109.9;110.12;110.36;110.63;110.91;111.21;111.55;111.91;112.46;112.97;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;107.26;107.26;107.27;107.29;107.33;107.4;107.5;107.65;107.85;108.11;108.42;108.73;109.05;109.36;109.68;110.04;110.43;110.87;111.38;111.96;
+500;106.86;106.84;106.85;106.87;106.9;106.96;107.05;107.19;107.41;107.7;108.02;108.37;108.72;109.06;109.39;109.73;110.11;110.52;110.99;111.54;
+1000;106.43;106.44;106.45;106.46;106.49;106.55;106.64;106.79;106.99;107.26;107.59;107.96;108.34;108.72;109.08;109.43;109.8;110.2;110.63;111.14;
+1500;106.01;106.07;106.07;106.08;106.11;106.16;106.24;106.39;106.59;106.87;107.19;107.54;107.93;108.35;108.75;109.12;109.49;109.88;110.3;110.76;
+2000;105.73;105.73;105.73;105.74;105.75;105.79;105.87;106.01;106.21;106.48;106.79;107.15;107.53;107.94;108.37;108.79;109.18;109.57;109.98;110.42;
+2500;105.46;105.44;105.44;105.44;105.44;105.47;105.54;105.67;105.85;106.1;106.4;106.74;107.13;107.54;107.98;108.41;108.85;109.25;109.66;110.09;
+3000;105.19;105.22;105.21;105.2;105.2;105.21;105.26;105.37;105.52;105.73;106.03;106.35;106.72;107.14;107.58;108.04;108.49;108.92;109.34;109.76;
+3500;105.06;105.06;105.05;105.03;105.02;105.01;105.04;105.12;105.24;105.42;105.68;105.98;106.32;106.72;107.16;107.64;108.12;108.59;109.01;109.44;
+4000;104.96;104.95;104.94;104.91;104.88;104.87;104.89;104.94;105.03;105.17;105.38;105.64;105.95;106.32;106.75;107.22;107.71;108.21;108.7;109.12;
+4500;104.86;104.91;104.89;104.87;104.85;104.83;104.83;104.85;104.88;104.98;105.14;105.34;105.61;105.94;106.34;106.79;107.29;107.81;108.33;108.82;
+5000;104.86;104.85;104.84;104.83;104.82;104.81;104.82;104.83;104.86;104.91;104.97;105.11;105.32;105.6;105.96;106.38;106.86;107.38;107.92;108.46;
+5500;104.75;104.75;104.75;104.75;104.76;104.77;104.79;104.82;104.85;104.89;104.94;105.02;105.13;105.31;105.61;105.99;106.43;106.94;107.49;108.05;
+6000;104.61;104.61;104.62;104.63;104.66;104.69;104.73;104.78;104.83;104.88;104.93;104.98;105.05;105.17;105.35;105.64;106.04;106.51;107.04;107.62;
+6500;104.48;104.53;104.54;104.56;104.58;104.62;104.65;104.7;104.78;104.85;104.92;104.97;105.03;105.1;105.22;105.41;105.7;106.1;106.6;107.17;
+7000;104.42;104.42;104.43;104.46;104.5;104.55;104.61;104.69;104.76;104.82;104.87;104.97;105.03;105.08;105.15;105.27;105.48;105.79;106.19;106.71;
+7500;104.26;104.27;104.29;104.33;104.38;104.45;104.53;104.62;104.72;104.82;104.9;104.98;105.02;105.07;105.13;105.21;105.34;105.56;105.89;106.32;
+8000;104.07;104.08;104.11;104.15;104.22;104.3;104.4;104.52;104.64;104.76;104.88;105;105.08;105.13;105.15;105.19;105.27;105.41;105.65;106.01;
+8500;103.85;103.85;103.89;103.94;104.01;104.11;104.23;104.36;104.51;104.66;104.8;104.96;105.09;105.18;105.24;105.26;105.26;105.34;105.48;105.75;
+9000;103.58;103.6;103.63;103.69;103.78;103.89;104.02;104.17;104.34;104.51;104.7;104.87;105.03;105.18;105.29;105.36;105.38;105.38;105.41;105.57;
+9500;103.33;103.31;103.33;103.4;103.5;103.62;103.77;103.94;104.13;104.32;104.53;104.73;104.93;105.12;105.28;105.4;105.48;105.5;105.5;105.52;
+10000;103.09;103.1;103.13;103.17;103.23;103.31;103.48;103.67;103.88;104.1;104.33;104.56;104.79;105.01;105.21;105.39;105.52;105.61;105.63;105.62;
+10500;102.86;102.93;102.96;103;103.07;103.15;103.26;103.35;103.57;103.83;104.08;104.34;104.61;104.86;105.1;105.31;105.5;105.64;105.73;105.75;
+11000;102.75;102.76;102.78;102.83;102.9;102.98;103.09;103.22;103.36;103.49;103.78;104.08;104.37;104.66;104.94;105.2;105.43;105.63;105.78;105.86;
+11500;103.13;103.15;103.17;103.22;103.29;103.38;103.48;103.61;103.75;103.88;104.18;104.47;104.77;105.06;105.34;105.6;105.83;106.04;106.18;106.26;
+12000;103.52;103.54;103.57;103.62;103.68;103.76;103.87;104;104.14;104.28;104.57;104.87;105.17;105.46;105.74;106.01;106.24;106.45;106.59;106.67;
+12500;103.93;103.94;103.96;104.01;104.07;104.16;104.27;104.39;104.54;104.67;104.97;105.27;105.57;105.87;106.15;106.41;106.65;106.86;107;107.08;
+13000;104.33;104.33;104.36;104.4;104.47;104.56;104.66;104.79;104.94;105.08;105.37;105.68;105.98;106.28;106.56;106.83;107.07;107.28;107.42;107.49;
+13500;104.71;104.72;104.75;104.79;104.86;104.96;105.07;105.2;105.35;105.48;105.78;106.09;106.39;106.69;106.98;107.25;107.49;107.7;107.84;107.91;
+14000;105.06;105.07;105.1;105.15;105.22;105.32;105.43;105.57;105.73;105.89;106.2;106.5;106.81;107.11;107.4;107.67;107.91;108.12;108.26;108.33;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;103.51;103.5;103.49;103.46;103.44;103.43;103.42;103.43;103.48;103.62;103.82;104.1;104.44;104.83;105.26;105.72;106.2;106.71;107.25;107.83;
+500;103.23;103.22;103.21;103.18;103.16;103.13;103.11;103.11;103.16;103.29;103.47;103.73;104.07;104.45;104.87;105.32;105.8;106.31;106.85;107.41;
+1000;102.95;102.93;102.92;102.9;102.88;102.85;102.84;102.85;102.88;102.97;103.15;103.39;103.7;104.07;104.48;104.93;105.41;105.91;106.44;107;
+1500;102.63;102.62;102.61;102.6;102.58;102.57;102.57;102.58;102.62;102.71;102.87;103.09;103.36;103.7;104.1;104.54;105.01;105.51;106.04;106.59;
+2000;102.29;102.29;102.29;102.28;102.28;102.27;102.28;102.31;102.36;102.45;102.62;102.83;103.08;103.37;103.72;104.14;104.61;105.1;105.63;106.18;
+2500;101.96;101.95;101.91;101.92;101.93;101.94;101.97;102.02;102.09;102.2;102.38;102.58;102.82;103.09;103.4;103.76;104.21;104.7;105.22;105.77;
+3000;101.5;101.5;101.5;101.51;101.53;101.57;101.62;101.7;101.8;101.93;102.13;102.34;102.58;102.84;103.13;103.46;103.84;104.3;104.81;105.35;
+3500;101.05;101.08;101.08;101.09;101.12;101.16;101.23;101.33;101.46;101.64;101.86;102.08;102.33;102.59;102.87;103.17;103.53;103.93;104.4;104.93;
+4000;100.71;100.71;100.71;100.72;100.74;100.77;100.83;100.93;101.09;101.31;101.55;101.81;102.07;102.34;102.61;102.91;103.24;103.61;104.04;104.53;
+4500;100.37;100.37;100.35;100.36;100.38;100.41;100.48;100.58;100.74;100.94;101.2;101.5;101.79;102.07;102.36;102.65;102.96;103.31;103.71;104.17;
+5000;100.01;100.01;100.01;100.01;100.03;100.06;100.13;100.24;100.4;100.62;100.88;101.17;101.47;101.79;102.09;102.39;102.7;103.03;103.4;103.82;
+5500;99.643;99.692;99.689;99.69;99.701;99.733;99.794;99.899;100.06;100.28;100.56;100.85;101.17;101.5;101.81;102.13;102.44;102.77;103.12;103.51;
+6000;99.483;99.479;99.466;99.45;99.439;99.442;99.484;99.585;99.75;99.953;100.22;100.52;100.85;101.19;101.54;101.87;102.17;102.5;102.84;103.21;
+6500;99.382;99.375;99.357;99.332;99.309;99.299;99.314;99.375;99.489;99.649;99.901;100.19;100.51;100.86;101.22;101.6;101.95;102.26;102.57;102.93;
+7000;99.364;99.355;99.331;99.296;99.257;99.227;99.223;99.265;99.347;99.475;99.674;99.899;100.17;100.51;100.89;101.28;101.67;102.04;102.36;102.67;
+7500;99.354;99.401;99.375;99.334;99.287;99.243;99.218;99.227;99.271;99.362;99.518;99.709;99.946;100.22;100.54;100.94;101.35;101.76;102.13;102.46;
+8000;99.489;99.481;99.456;99.417;99.37;99.324;99.291;99.273;99.278;99.322;99.424;99.566;99.762;100.01;100.3;100.64;101.01;101.44;101.87;102.24;
+8500;99.557;99.569;99.547;99.515;99.476;99.437;99.405;99.378;99.362;99.37;99.404;99.492;99.631;99.831;100.09;100.4;100.75;101.14;101.54;101.98;
+9000;99.63;99.622;99.609;99.591;99.571;99.554;99.536;99.514;99.494;99.48;99.475;99.506;99.574;99.709;99.914;100.18;100.51;100.88;101.28;101.7;
+9500;99.635;99.634;99.628;99.621;99.617;99.624;99.63;99.635;99.635;99.626;99.608;99.592;99.61;99.667;99.8;100.01;100.29;100.63;101.03;101.44;
+10000;99.59;99.591;99.596;99.605;99.623;99.646;99.67;99.702;99.737;99.756;99.754;99.737;99.731;99.729;99.771;99.9;100.12;100.41;100.77;101.18;
+10500;99.497;99.501;99.512;99.534;99.567;99.609;99.661;99.721;99.779;99.83;99.867;99.879;99.882;99.861;99.852;99.889;100.01;100.24;100.54;100.92;
+11000;99.366;99.372;99.39;99.422;99.467;99.524;99.595;99.679;99.768;99.851;99.938;99.992;100.02;100.02;99.993;99.98;100.01;100.14;100.37;100.68;
+11500;99.745;99.756;99.774;99.807;99.852;99.91;99.98;100.06;100.15;100.24;100.33;100.38;100.41;100.4;100.38;100.37;100.4;100.53;100.76;101.07;
+12000;100.12;100.14;100.16;100.2;100.24;100.3;100.37;100.45;100.54;100.63;100.72;100.77;100.8;100.79;100.77;100.76;100.8;100.93;101.15;101.47;
+12500;100.53;100.54;100.55;100.59;100.63;100.69;100.76;100.85;100.94;101.02;101.11;101.17;101.19;101.19;101.16;101.16;101.19;101.32;101.55;101.88;
+13000;100.94;100.93;100.95;100.98;101.03;101.09;101.16;101.25;101.34;101.42;101.51;101.57;101.59;101.59;101.56;101.56;101.59;101.72;101.96;102.29;
+13500;101.31;101.31;101.33;101.37;101.42;101.48;101.56;101.65;101.74;101.82;101.91;101.97;101.99;101.99;101.97;101.96;101.99;102.13;102.37;102.7;
+14000;101.67;101.67;101.69;101.73;101.78;101.84;101.92;102.02;102.12;102.21;102.31;102.38;102.4;102.4;102.38;102.36;102.4;102.54;102.78;103.12;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;99.635;99.63;99.62;99.607;99.604;99.611;99.636;99.69;99.769;99.879;100.03;100.25;100.53;100.9;101.32;101.8;102.3;102.82;103.37;103.93;
+500;99.306;99.287;99.276;99.261;99.246;99.237;99.241;99.284;99.368;99.484;99.639;99.854;100.14;100.5;100.92;101.39;101.89;102.42;102.96;103.53;
+1000;98.976;98.948;98.936;98.919;98.902;98.891;98.892;98.933;98.999;99.101;99.252;99.467;99.749;100.1;100.52;100.98;101.47;102;102.55;103.12;
+1500;98.61;98.605;98.594;98.577;98.559;98.547;98.547;98.589;98.66;98.761;98.904;99.101;99.37;99.72;100.12;100.57;101.06;101.58;102.13;102.7;
+2000;98.243;98.262;98.25;98.232;98.212;98.198;98.196;98.241;98.32;98.428;98.577;98.772;99.034;99.354;99.736;100.17;100.65;101.16;101.71;102.28;
+2500;97.939;97.934;97.918;97.896;97.873;97.855;97.85;97.892;97.973;98.087;98.252;98.454;98.713;99.03;99.387;99.777;100.24;100.74;101.28;101.85;
+3000;97.633;97.627;97.61;97.584;97.554;97.528;97.514;97.548;97.63;97.746;97.916;98.134;98.403;98.709;99.061;99.441;99.855;100.32;100.85;101.42;
+3500;97.382;97.375;97.353;97.319;97.277;97.235;97.203;97.22;97.293;97.408;97.581;97.804;98.087;98.399;98.737;99.112;99.513;99.95;100.43;100.98;
+4000;97.131;97.158;97.136;97.102;97.059;97.013;96.973;96.961;97.002;97.082;97.248;97.477;97.761;98.082;98.424;98.783;99.179;99.602;100.06;100.56;
+4500;96.956;96.949;96.927;96.894;96.853;96.808;96.766;96.745;96.777;96.844;96.972;97.166;97.435;97.756;98.104;98.465;98.846;99.263;99.707;100.19;
+5000;96.784;96.779;96.718;96.687;96.649;96.608;96.569;96.543;96.568;96.631;96.748;96.924;97.158;97.446;97.774;98.144;98.522;98.924;99.361;99.826;
+5500;96.616;96.601;96.579;96.544;96.499;96.448;96.397;96.354;96.373;96.435;96.541;96.711;96.922;97.182;97.489;97.823;98.199;98.594;99.017;99.472;
+6000;96.455;96.447;96.43;96.402;96.365;96.325;96.287;96.254;96.25;96.287;96.363;96.519;96.713;96.947;97.223;97.548;97.9;98.272;98.68;99.124;
+6500;96.252;96.248;96.237;96.22;96.2;96.178;96.157;96.143;96.15;96.196;96.283;96.406;96.551;96.739;96.987;97.279;97.622;97.992;98.376;98.778;
+7000;96.05;96.043;96;95.99;95.982;95.979;95.985;96.002;96.034;96.099;96.208;96.33;96.472;96.631;96.812;97.04;97.348;97.71;98.096;98.492;
+7500;95.742;95.74;95.735;95.73;95.729;95.738;95.762;95.807;95.878;95.98;96.115;96.251;96.398;96.552;96.721;96.913;97.138;97.431;97.811;98.212;
+8000;95.471;95.469;95.464;95.459;95.46;95.473;95.508;95.571;95.67;95.81;95.986;96.155;96.317;96.478;96.643;96.821;97.023;97.261;97.55;97.923;
+8500;95.204;95.201;95.197;95.193;95.196;95.214;95.255;95.324;95.438;95.6;95.8;96.013;96.215;96.394;96.568;96.743;96.931;97.143;97.394;97.7;
+9000;94.938;94.955;94.949;94.942;94.941;94.956;94.996;95.075;95.204;95.378;95.589;95.821;96.057;96.284;96.482;96.668;96.852;97.049;97.272;97.536;
+9500;94.675;94.755;94.745;94.732;94.724;94.73;94.763;94.838;94.986;95.143;95.367;95.608;95.865;96.125;96.368;96.58;96.776;96.969;97.175;97.41;
+10000;94.628;94.623;94.607;94.586;94.567;94.56;94.58;94.642;94.758;94.917;95.137;95.381;95.643;95.923;96.206;96.47;96.691;96.893;97.094;97.31;
+10500;94.595;94.587;94.563;94.529;94.493;94.466;94.466;94.507;94.596;94.73;94.925;95.151;95.414;95.695;95.995;96.3;96.584;96.819;97.022;97.227;
+11000;94.661;94.651;94.623;94.581;94.53;94.482;94.45;94.459;94.507;94.601;94.759;94.949;95.184;95.462;95.762;96.082;96.407;96.708;96.955;97.166;
+11500;95.036;95.026;94.998;94.955;94.905;94.857;94.828;94.839;94.888;94.983;95.143;95.335;95.574;95.848;96.149;96.472;96.799;97.102;97.351;97.564;
+12000;95.412;95.405;95.377;95.334;95.284;95.237;95.211;95.223;95.273;95.37;95.532;95.727;95.966;96.236;96.541;96.866;97.194;97.5;97.751;97.966;
+12500;95.798;95.788;95.76;95.718;95.668;95.624;95.599;95.611;95.663;95.761;95.926;96.123;96.357;96.63;96.936;97.264;97.595;97.904;98.155;98.371;
+13000;96.185;96.177;96.149;96.107;96.06;96.016;95.992;96.005;96.058;96.158;96.324;96.518;96.752;97.028;97.336;97.666;98;98.31;98.563;98.781;
+13500;96.549;96.537;96.511;96.473;96.43;96.392;96.374;96.395;96.456;96.572;96.724;96.916;97.153;97.43;97.741;98.073;98.411;98.722;98.975;99.195;
+14000;96.909;96.9;96.875;96.837;96.794;96.757;96.739;96.761;96.824;96.944;97.102;97.305;97.552;97.838;98.15;98.486;98.825;99.137;99.392;99.613;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;96.318;96.316;96.315;96.318;96.338;96.381;96.372;96.391;96.418;96.489;96.592;96.757;96.957;97.194;97.501;97.88;98.297;98.737;99.186;99.649;
+500;95.941;95.94;95.938;95.939;95.949;95.976;95.962;95.97;96.004;96.079;96.184;96.354;96.565;96.816;97.136;97.524;97.95;98.394;98.852;99.317;
+1000;95.553;95.568;95.566;95.565;95.573;95.594;95.585;95.597;95.62;95.657;95.78;95.951;96.168;96.435;96.766;97.163;97.594;98.045;98.508;98.982;
+1500;95.164;95.204;95.201;95.199;95.203;95.22;95.213;95.226;95.252;95.294;95.407;95.563;95.77;96.05;96.392;96.794;97.23;97.686;98.156;98.636;
+2000;94.848;94.846;94.841;94.837;94.837;94.848;94.843;94.858;94.888;94.935;95.057;95.207;95.409;95.672;96.016;96.42;96.86;97.318;97.794;98.281;
+2500;94.531;94.494;94.488;94.481;94.477;94.483;94.48;94.495;94.526;94.577;94.698;94.851;95.058;95.327;95.663;96.043;96.483;96.945;97.423;97.917;
+3000;94.165;94.162;94.152;94.137;94.123;94.123;94.122;94.137;94.169;94.225;94.342;94.497;94.709;94.983;95.325;95.706;96.116;96.563;97.045;97.543;
+3500;93.871;93.867;93.855;93.839;93.822;93.81;93.801;93.804;93.822;93.876;93.991;94.148;94.361;94.64;94.983;95.367;95.775;96.206;96.66;97.161;
+4000;93.576;93.568;93.556;93.539;93.52;93.507;93.504;93.509;93.53;93.573;93.664;93.803;94.018;94.299;94.642;95.024;95.433;95.861;96.312;96.782;
+4500;93.309;93.302;93.284;93.257;93.224;93.197;93.199;93.212;93.243;93.294;93.38;93.511;93.703;93.964;94.301;94.681;95.086;95.515;95.963;96.431;
+5000;93.092;93.085;93.067;93.039;93.005;92.971;92.958;92.954;92.965;93.008;93.103;93.237;93.423;93.681;93.988;94.337;94.738;95.165;95.612;96.078;
+5500;92.876;92.874;92.854;92.824;92.788;92.752;92.741;92.744;92.761;92.8;92.867;92.979;93.158;93.408;93.706;94.043;94.407;94.812;95.258;95.723;
+6000;92.661;92.671;92.65;92.619;92.58;92.541;92.529;92.536;92.558;92.606;92.681;92.795;92.959;93.174;93.434;93.758;94.113;94.496;94.906;95.365;
+6500;92.487;92.48;92.457;92.424;92.382;92.339;92.323;92.332;92.358;92.412;92.498;92.618;92.786;93.001;93.247;93.512;93.825;94.197;94.598;95.026;
+7000;92.316;92.316;92.291;92.251;92.203;92.152;92.127;92.136;92.162;92.22;92.316;92.444;92.62;92.832;93.076;93.338;93.617;93.928;94.295;94.714;
+7500;92.298;92.203;92.173;92.126;92.067;92.002;91.957;91.953;91.973;92.031;92.136;92.274;92.455;92.67;92.908;93.167;93.441;93.734;94.061;94.416;
+8000;92.136;92.126;92.096;92.048;91.986;91.916;91.852;91.827;91.824;91.862;91.957;92.102;92.293;92.507;92.746;92.998;93.27;93.556;93.863;94.204;
+8500;91.976;92.056;92.026;91.98;91.919;91.849;91.777;91.742;91.727;91.744;91.82;91.952;92.133;92.346;92.582;92.835;93.101;93.385;93.681;94.002;
+9000;91.992;91.984;91.956;91.913;91.855;91.789;91.72;91.677;91.659;91.667;91.722;91.833;91.999;92.206;92.43;92.67;92.936;93.214;93.512;93.817;
+9500;91.907;91.898;91.874;91.836;91.786;91.727;91.665;91.619;91.602;91.609;91.657;91.755;91.89;92.074;92.295;92.533;92.781;93.048;93.338;93.645;
+10000;91.825;91.819;91.764;91.734;91.693;91.646;91.599;91.56;91.549;91.562;91.612;91.705;91.823;91.972;92.164;92.397;92.647;92.908;93.183;93.473;
+10500;91.614;91.609;91.597;91.578;91.555;91.53;91.505;91.482;91.486;91.516;91.58;91.67;91.781;91.912;92.067;92.266;92.51;92.772;93.046;93.331;
+11000;91.403;91.388;91.38;91.368;91.357;91.35;91.351;91.365;91.398;91.454;91.541;91.639;91.75;91.872;92.01;92.172;92.379;92.633;92.908;93.193;
+11500;91.773;91.767;91.758;91.747;91.735;91.729;91.73;91.744;91.776;91.834;91.922;92.02;92.133;92.256;92.395;92.559;92.769;93.024;93.299;93.584;
+12000;92.144;92.15;92.141;92.13;92.118;92.111;92.113;92.127;92.161;92.219;92.306;92.406;92.521;92.644;92.784;92.951;93.163;93.419;93.694;93.979;
+12500;92.54;92.537;92.529;92.518;92.506;92.5;92.502;92.515;92.549;92.607;92.696;92.797;92.912;93.037;93.177;93.348;93.561;93.818;94.093;94.379;
+13000;92.917;92.912;92.904;92.895;92.886;92.882;92.887;92.906;92.942;93.001;93.092;93.193;93.308;93.433;93.574;93.749;93.962;94.22;94.496;94.782;
+13500;93.286;93.282;93.275;93.265;93.257;93.253;93.259;93.278;93.317;93.384;93.48;93.587;93.708;93.835;93.976;94.154;94.368;94.627;94.903;95.186;
+14000;93.66;93.659;93.652;93.643;93.635;93.632;93.639;93.66;93.701;93.767;93.865;93.974;94.096;94.229;94.378;94.561;94.778;95.038;95.314;95.59;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;93.295;93.278;93.278;93.287;93.32;93.314;93.257;93.205;93.184;93.172;93.193;93.188;93.185;93.191;93.275;93.409;93.629;93.907;94.217;94.564;
+500;92.909;92.904;92.904;92.914;92.941;92.926;92.864;92.809;92.793;92.789;92.82;92.835;92.853;92.88;92.979;93.137;93.381;93.674;93.985;94.313;
+1000;92.522;92.517;92.519;92.53;92.561;92.546;92.493;92.447;92.424;92.413;92.445;92.478;92.515;92.565;92.679;92.86;93.124;93.431;93.751;94.073;
+1500;92.132;92.132;92.134;92.145;92.175;92.158;92.111;92.07;92.056;92.058;92.096;92.151;92.171;92.242;92.373;92.577;92.857;93.178;93.508;93.838;
+2000;91.746;91.746;91.749;91.76;91.789;91.769;91.728;91.694;91.684;91.693;91.739;91.814;91.855;91.923;92.061;92.287;92.583;92.913;93.254;93.595;
+2500;91.358;91.362;91.363;91.374;91.402;91.38;91.345;91.316;91.282;91.326;91.38;91.463;91.533;91.626;91.771;91.988;92.302;92.639;92.989;93.341;
+3000;91.021;91.02;91.02;91.025;91.045;91.014;90.974;90.939;90.911;90.958;91.017;91.11;91.206;91.313;91.487;91.72;92.021;92.359;92.713;93.075;
+3500;90.683;90.688;90.683;90.685;90.702;90.671;90.636;90.605;90.572;90.606;90.654;90.754;90.872;90.997;91.188;91.449;91.755;92.091;92.431;92.798;
+4000;90.43;90.427;90.421;90.416;90.42;90.377;90.329;90.285;90.246;90.28;90.333;90.421;90.542;90.673;90.882;91.163;91.485;91.823;92.172;92.522;
+4500;90.181;90.172;90.164;90.155;90.156;90.116;90.073;90.032;89.989;89.996;90.032;90.115;90.242;90.375;90.579;90.866;91.2;91.551;91.903;92.264;
+5000;89.941;89.936;89.927;89.916;89.909;89.868;89.823;89.784;89.749;89.753;89.796;89.869;89.968;90.088;90.306;90.589;90.906;91.265;91.629;91.995;
+5500;89.701;89.71;89.7;89.686;89.676;89.637;89.594;89.555;89.516;89.532;89.561;89.64;89.742;89.88;90.072;90.323;90.645;90.984;91.341;91.718;
+6000;89.496;89.492;89.48;89.464;89.449;89.411;89.371;89.335;89.301;89.312;89.336;89.414;89.526;89.675;89.88;90.134;90.418;90.721;91.074;91.433;
+6500;89.292;89.287;89.272;89.252;89.231;89.194;89.155;89.12;89.09;89.101;89.127;89.2;89.312;89.472;89.688;89.946;90.229;90.529;90.836;91.174;
+7000;89.211;89.115;89.099;89.075;89.047;89.007;88.963;88.922;88.888;88.898;88.926;89;89.11;89.27;89.495;89.757;90.041;90.339;90.651;90.969;
+7500;88.951;88.945;88.927;88.901;88.87;88.831;88.791;88.754;88.722;88.726;88.741;88.806;88.919;89.083;89.302;89.566;89.852;90.149;90.46;90.783;
+8000;88.69;88.778;88.759;88.731;88.697;88.661;88.624;88.59;88.562;88.547;88.593;88.656;88.756;88.907;89.123;89.375;89.66;89.959;90.268;90.591;
+8500;88.621;88.615;88.595;88.566;88.529;88.495;88.463;88.434;88.412;88.402;88.441;88.506;88.617;88.772;88.974;89.206;89.466;89.765;90.076;90.397;
+9000;88.553;88.458;88.437;88.405;88.366;88.332;88.305;88.282;88.268;88.264;88.301;88.364;88.474;88.643;88.843;89.071;89.318;89.579;89.881;90.204;
+9500;88.312;88.305;88.283;88.249;88.208;88.173;88.151;88.132;88.126;88.135;88.171;88.237;88.345;88.509;88.716;88.94;89.182;89.441;89.716;90.013;
+10000;88.072;88.16;88.137;88.102;88.058;88.021;88.002;87.987;87.987;88.004;88.044;88.118;88.23;88.391;88.586;88.813;89.049;89.303;89.574;89.863;
+10500;88.032;88.025;88.001;87.964;87.917;87.876;87.859;87.846;87.851;87.877;87.927;88.004;88.124;88.285;88.472;88.684;88.921;89.168;89.434;89.717;
+11000;87.996;87.918;87.891;87.848;87.795;87.744;87.724;87.711;87.718;87.75;87.81;87.894;88.022;88.183;88.368;88.57;88.792;89.039;89.297;89.575;
+11500;88.307;88.295;88.267;88.225;88.171;88.122;88.102;88.089;88.098;88.129;88.189;88.273;88.401;88.562;88.747;88.948;89.171;89.41;89.67;89.95;
+12000;88.622;88.677;88.65;88.607;88.553;88.505;88.485;88.472;88.48;88.512;88.572;88.656;88.784;88.945;89.129;89.33;89.55;89.786;90.048;90.328;
+12500;89.069;89.059;89.032;88.99;88.938;88.89;88.872;88.86;88.868;88.901;88.961;89.044;89.171;89.332;89.515;89.717;89.929;90.167;90.43;90.711;
+13000;89.453;89.443;89.416;89.375;89.322;89.276;89.259;89.248;89.258;89.293;89.354;89.438;89.564;89.723;89.906;90.104;90.313;90.553;90.816;91.099;
+13500;89.843;89.836;89.81;89.768;89.717;89.671;89.654;89.644;89.655;89.69;89.751;89.836;89.963;90.122;90.305;90.493;90.703;90.943;91.206;91.492;
+14000;90.236;90.236;90.209;90.168;90.117;90.071;90.055;90.046;90.057;90.093;90.156;90.242;90.37;90.531;90.708;90.898;91.109;91.346;91.606;91.891;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;90.189;90.193;90.184;90.173;90.17;90.073;89.966;89.818;89.726;89.604;89.431;89.22;88.999;88.778;88.605;88.544;88.585;88.751;89.025;89.343;
+500;89.789;89.813;89.807;89.8;89.757;89.694;89.584;89.436;89.352;89.243;89.095;88.896;88.691;88.495;88.309;88.281;88.329;88.507;88.793;89.112;
+1000;89.438;89.438;89.433;89.429;89.387;89.329;89.227;89.085;88.999;88.89;88.738;88.571;88.384;88.209;88.053;88.023;88.078;88.265;88.552;88.881;
+1500;89.085;89.065;89.06;89.059;89.018;88.963;88.866;88.734;88.657;88.561;88.418;88.254;88.077;87.922;87.794;87.767;87.832;88.027;88.313;88.64;
+2000;88.704;88.701;88.697;88.696;88.654;88.602;88.511;88.386;88.317;88.231;88.105;87.958;87.792;87.644;87.53;87.513;87.596;87.794;88.074;88.397;
+2500;88.371;88.369;88.365;88.363;88.315;88.256;88.162;88.04;87.978;87.904;87.794;87.665;87.515;87.384;87.303;87.26;87.36;87.565;87.841;88.154;
+3000;88.11;88.107;88.099;88.093;88.076;87.969;87.862;87.732;87.66;87.578;87.483;87.37;87.239;87.127;87.071;87.04;87.133;87.34;87.612;87.916;
+3500;87.848;87.851;87.845;87.843;87.829;87.728;87.628;87.495;87.411;87.316;87.2;87.083;86.963;86.866;86.839;86.834;86.926;87.134;87.385;87.682;
+4000;87.586;87.592;87.587;87.586;87.573;87.474;87.382;87.26;87.185;87.105;87.001;86.87;86.72;86.615;86.583;86.626;86.725;86.937;87.189;87.458;
+4500;87.323;87.337;87.333;87.333;87.319;87.224;87.135;87.021;86.951;86.884;86.82;86.689;86.563;86.444;86.387;86.42;86.536;86.741;86.994;87.259;
+5000;87.087;87.085;87.081;87.083;87.067;86.976;86.892;86.784;86.714;86.66;86.61;86.501;86.394;86.298;86.258;86.286;86.374;86.551;86.796;87.061;
+5500;86.851;86.836;86.833;86.835;86.818;86.731;86.651;86.55;86.48;86.437;86.397;86.316;86.225;86.151;86.145;86.179;86.285;86.44;86.613;86.861;
+6000;86.621;86.618;86.612;86.609;86.585;86.494;86.413;86.318;86.248;86.214;86.183;86.13;86.052;85.999;86.011;86.067;86.195;86.356;86.534;86.715;
+6500;86.423;86.42;86.414;86.411;86.386;86.299;86.22;86.121;86.038;85.997;85.969;85.941;85.876;85.845;85.874;85.952;86.097;86.27;86.452;86.635;
+7000;86.225;86.222;86.216;86.213;86.186;86.105;86.031;85.94;85.859;85.829;85.795;85.771;85.699;85.688;85.73;85.834;85.994;86.179;86.363;86.553;
+7500;86.026;86.027;86.02;86.016;85.988;85.913;85.844;85.761;85.708;85.658;85.633;85.63;85.574;85.558;85.587;85.707;85.884;86.079;86.276;86.465;
+8000;85.828;85.829;85.824;85.82;85.792;85.723;85.659;85.582;85.533;85.489;85.472;85.478;85.45;85.456;85.5;85.611;85.771;85.971;86.177;86.38;
+8500;85.648;85.644;85.636;85.628;85.6;85.536;85.478;85.408;85.363;85.324;85.313;85.324;85.322;85.347;85.412;85.534;85.704;85.889;86.07;86.282;
+9000;85.467;85.462;85.453;85.443;85.414;85.356;85.301;85.237;85.196;85.162;85.155;85.172;85.197;85.233;85.319;85.459;85.632;85.823;86.016;86.204;
+9500;85.29;85.286;85.276;85.263;85.234;85.18;85.129;85.07;85.032;85.003;85.002;85.024;85.068;85.117;85.221;85.378;85.558;85.751;85.951;86.151;
+10000;85.114;85.113;85.106;85.09;85.06;85.009;84.961;84.907;84.85;84.848;84.851;84.884;84.939;85.003;85.12;85.289;85.48;85.676;85.878;86.087;
+10500;84.952;84.947;84.934;84.916;84.886;84.841;84.797;84.75;84.699;84.694;84.704;84.743;84.801;84.89;85.022;85.195;85.392;85.597;85.802;86.014;
+11000;84.792;84.784;84.769;84.748;84.716;84.672;84.63;84.587;84.545;84.539;84.564;84.605;84.674;84.777;84.924;85.102;85.299;85.509;85.723;85.935;
+11500;85.172;85.161;85.146;85.125;85.092;85.049;85.006;84.962;84.92;84.916;84.931;84.974;85.043;85.146;85.293;85.47;85.668;85.877;86.09;86.302;
+12000;85.556;85.55;85.535;85.513;85.479;85.434;85.389;85.344;85.297;85.289;85.306;85.348;85.417;85.52;85.666;85.844;86.041;86.25;86.461;86.674;
+12500;85.959;85.953;85.938;85.916;85.881;85.835;85.788;85.739;85.691;85.683;85.7;85.734;85.797;85.899;86.045;86.223;86.42;86.627;86.838;87.05;
+13000;86.365;86.359;86.344;86.321;86.286;86.239;86.192;86.144;86.095;86.088;86.108;86.144;86.209;86.306;86.447;86.614;86.804;87.009;87.219;87.431;
+13500;86.776;86.768;86.753;86.73;86.695;86.649;86.604;86.556;86.509;86.503;86.525;86.563;86.631;86.732;86.873;87.043;87.229;87.421;87.616;87.819;
+14000;87.194;87.188;87.173;87.151;87.117;87.072;87.026;86.98;86.934;86.93;86.954;86.993;87.064;87.167;87.311;87.481;87.668;87.863;88.059;88.255;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;87.09;87.079;87.053;87.007;86.934;86.789;86.599;86.39;86.161;85.88;85.535;85.149;84.725;84.439;84.194;84.015;83.915;83.911;84.022;84.275;
+500;86.718;86.73;86.705;86.661;86.585;86.439;86.247;86.035;85.817;85.547;85.208;84.839;84.43;84.145;83.913;83.743;83.654;83.664;83.791;84.05;
+1000;86.389;86.381;86.358;86.316;86.24;86.097;85.911;85.706;85.487;85.222;84.889;84.529;84.13;83.843;83.619;83.466;83.394;83.416;83.561;83.825;
+1500;86.038;86.031;86.008;85.969;85.894;85.756;85.576;85.377;85.168;84.915;84.592;84.237;83.843;83.542;83.326;83.184;83.126;83.17;83.33;83.6;
+2000;85.683;85.714;85.687;85.641;85.557;85.414;85.24;85.049;84.85;84.591;84.301;83.962;83.578;83.262;83.038;82.904;82.857;82.913;83.098;83.375;
+2500;85.526;85.454;85.429;85.386;85.301;85.155;84.967;84.759;84.548;84.285;84.005;83.685;83.32;83.008;82.784;82.633;82.591;82.659;82.857;83.147;
+3000;85.2;85.193;85.169;85.13;85.048;84.907;84.724;84.524;84.323;84.056;83.755;83.419;83.065;82.756;82.542;82.399;82.339;82.406;82.616;82.91;
+3500;84.874;84.929;84.908;84.873;84.792;84.657;84.482;84.289;84.1;83.852;83.564;83.234;82.875;82.496;82.303;82.137;82.118;82.174;82.375;82.67;
+4000;84.677;84.669;84.649;84.617;84.539;84.408;84.241;84.055;83.882;83.649;83.375;83.058;82.717;82.358;82.137;81.966;81.902;81.966;82.158;82.434;
+4500;84.479;84.414;84.398;84.369;84.291;84.165;84.004;83.825;83.666;83.468;83.188;82.886;82.558;82.225;82;81.834;81.755;81.781;81.957;82.219;
+5000;84.173;84.173;84.155;84.131;84.054;83.932;83.775;83.6;83.452;83.268;83.003;82.718;82.409;82.093;81.869;81.71;81.641;81.672;81.811;82.016;
+5500;83.995;83.987;83.971;83.945;83.86;83.732;83.57;83.382;83.242;83.071;82.823;82.554;82.265;81.965;81.746;81.593;81.531;81.576;81.718;81.903;
+6000;83.815;83.804;83.788;83.767;83.683;83.56;83.404;83.223;83.082;82.906;82.653;82.392;82.122;81.846;81.632;81.49;81.43;81.483;81.628;81.81;
+6500;83.635;83.638;83.607;83.591;83.508;83.39;83.241;83.065;82.936;82.773;82.54;82.279;81.997;81.73;81.485;81.394;81.342;81.396;81.542;81.721;
+7000;83.434;83.43;83.419;83.405;83.324;83.212;83.071;82.901;82.787;82.64;82.428;82.184;81.924;81.673;81.421;81.304;81.263;81.324;81.459;81.635;
+7500;83.232;83.24;83.23;83.22;83.139;83.031;82.898;82.766;82.631;82.495;82.31;82.082;81.843;81.622;81.403;81.28;81.217;81.261;81.39;81.551;
+8000;83.056;83.053;83.045;83.038;82.958;82.855;82.727;82.603;82.477;82.353;82.192;81.977;81.759;81.562;81.372;81.265;81.222;81.262;81.351;81.479;
+8500;82.88;82.882;82.858;82.857;82.777;82.68;82.56;82.443;82.325;82.212;82.075;81.873;81.675;81.499;81.341;81.209;81.227;81.277;81.366;81.469;
+9000;82.685;82.682;82.677;82.675;82.596;82.506;82.393;82.284;82.175;82.074;81.929;81.772;81.591;81.431;81.305;81.207;81.225;81.298;81.384;81.483;
+9500;82.493;82.503;82.497;82.494;82.418;82.333;82.228;82.125;82.025;81.935;81.809;81.671;81.512;81.39;81.267;81.198;81.225;81.309;81.409;81.502;
+10000;82.343;82.34;82.335;82.329;82.253;82.17;82.067;81.939;81.875;81.796;81.722;81.569;81.433;81.327;81.231;81.209;81.235;81.317;81.426;81.527;
+10500;82.195;82.196;82.177;82.169;82.098;82.019;81.922;81.801;81.735;81.658;81.595;81.468;81.352;81.263;81.208;81.196;81.245;81.329;81.436;81.55;
+11000;82.036;82.033;82.028;82.015;81.946;81.873;81.782;81.669;81.607;81.537;81.476;81.367;81.271;81.185;81.167;81.178;81.25;81.347;81.449;81.561;
+11500;82.431;82.423;82.417;82.401;82.329;82.253;82.159;82.04;81.977;81.906;81.846;81.736;81.637;81.564;81.532;81.54;81.61;81.706;81.806;81.918;
+12000;82.838;82.834;82.828;82.812;82.74;82.665;82.571;82.454;82.386;82.312;82.242;82.125;82.014;81.936;81.902;81.909;81.975;82.069;82.168;82.281;
+12500;83.249;83.257;83.251;83.234;83.162;83.087;82.994;82.877;82.814;82.741;82.675;82.56;82.45;82.362;82.311;82.298;82.347;82.438;82.535;82.643;
+13000;83.665;83.694;83.688;83.67;83.598;83.525;83.433;83.318;83.255;83.183;83.12;83.007;82.896;82.809;82.757;82.745;82.787;82.855;82.927;83.01;
+13500;84.148;84.145;84.14;84.122;84.049;83.977;83.885;83.77;83.708;83.636;83.576;83.461;83.352;83.266;83.214;83.201;83.243;83.308;83.373;83.445;
+14000;84.635;84.61;84.604;84.586;84.514;84.442;84.35;84.235;84.173;84.101;84.043;83.928;83.817;83.734;83.682;83.668;83.709;83.768;83.827;83.899;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;83.836;83.824;83.785;83.712;83.594;83.405;83.143;82.862;82.509;82.083;81.608;81.104;80.698;80.321;79.971;79.652;79.362;79.155;79.028;79.034;
+500;83.503;83.491;83.453;83.383;83.263;83.072;82.811;82.533;82.191;81.777;81.311;80.815;80.408;80.04;79.704;79.399;79.125;78.926;78.817;78.84;
+1000;83.169;83.165;83.125;83.054;82.936;82.75;82.495;82.226;81.887;81.476;81.016;80.529;80.119;79.76;79.434;79.139;78.888;78.705;78.606;78.646;
+1500;82.833;82.893;82.854;82.782;82.658;82.466;82.204;81.928;81.593;81.193;80.739;80.251;79.869;79.48;79.165;78.889;78.652;78.487;78.399;78.453;
+2000;82.688;82.641;82.602;82.529;82.403;82.212;81.95;81.684;81.35;80.941;80.477;79.986;79.601;79.207;78.896;78.634;78.416;78.267;78.198;78.261;
+2500;82.407;82.396;82.357;82.287;82.164;81.977;81.72;81.458;81.127;80.722;80.267;79.772;79.364;78.953;78.642;78.381;78.18;78.046;77.997;78.079;
+3000;82.124;82.147;82.111;82.044;81.922;81.74;81.49;81.234;80.914;80.517;80.068;79.57;79.153;78.749;78.424;78.172;77.946;77.825;77.795;77.895;
+3500;81.9;81.889;81.854;81.789;81.669;81.492;81.249;81.002;80.693;80.308;79.871;79.382;78.963;78.555;78.259;77.988;77.769;77.616;77.591;77.711;
+4000;81.673;81.632;81.598;81.536;81.418;81.245;81.008;80.769;80.472;80.1;79.675;79.197;78.775;78.373;78.059;77.816;77.601;77.467;77.431;77.528;
+4500;81.416;81.405;81.367;81.301;81.174;81;80.769;80.537;80.252;79.892;79.48;79.013;78.59;78.194;77.919;77.658;77.457;77.324;77.299;77.41;
+5000;81.232;81.218;81.182;81.117;80.991;80.816;80.576;80.335;80.04;79.686;79.286;78.833;78.409;78.02;77.753;77.501;77.314;77.197;77.182;77.295;
+5500;81.046;81.036;81;80.938;80.813;80.642;80.408;80.176;79.89;79.536;79.126;78.661;78.233;77.85;77.591;77.348;77.172;77.071;77.072;77.196;
+6000;80.859;80.861;80.823;80.762;80.638;80.47;80.243;80.019;79.744;79.401;79.009;78.556;78.065;77.697;77.403;77.199;77.033;76.947;76.961;77.098;
+6500;80.69;80.68;80.647;80.589;80.466;80.302;80.079;79.863;79.6;79.269;78.888;78.454;77.979;77.648;77.336;77.076;76.901;76.828;76.856;76.998;
+7000;80.526;80.511;80.478;80.421;80.297;80.138;79.92;79.712;79.459;79.141;78.773;78.361;77.902;77.567;77.263;77.012;76.828;76.727;76.754;76.901;
+7500;80.373;80.354;80.323;80.268;80.146;79.988;79.773;79.567;79.323;79.021;78.666;78.269;77.831;77.492;77.195;76.953;76.779;76.689;76.706;76.809;
+8000;80.219;80.199;80.17;80.117;79.998;79.844;79.638;79.44;79.205;78.913;78.563;78.181;77.762;77.422;77.132;76.899;76.735;76.656;76.686;76.796;
+8500;80.066;80.053;80.026;79.975;79.86;79.713;79.513;79.322;79.097;78.822;78.482;78.109;77.699;77.359;77.077;76.852;76.696;76.629;76.67;76.783;
+9000;79.912;79.913;79.889;79.84;79.727;79.584;79.391;79.208;78.992;78.735;78.406;78.049;77.652;77.306;77.03;76.815;76.666;76.607;76.658;76.772;
+9500;79.786;79.778;79.756;79.708;79.598;79.46;79.273;79.098;78.893;78.653;78.336;77.994;77.617;77.272;76.998;76.785;76.646;76.595;76.651;76.764;
+10000;79.663;79.649;79.629;79.582;79.475;79.341;79.161;78.994;78.8;78.553;78.272;77.945;77.59;77.216;76.982;76.772;76.634;76.593;76.652;76.76;
+10500;79.516;79.51;79.493;79.447;79.343;79.214;79.04;78.883;78.701;78.47;78.205;77.895;77.565;77.216;76.981;76.743;76.644;76.6;76.662;76.764;
+11000;79.418;79.411;79.394;79.347;79.242;79.113;78.94;78.778;78.601;78.387;78.138;77.845;77.537;77.213;76.977;76.787;76.666;76.63;76.68;76.777;
+11500;79.854;79.847;79.83;79.782;79.678;79.55;79.378;79.218;79.04;78.815;78.549;78.237;77.908;77.567;77.336;77.14;77.012;76.975;77.024;77.12;
+12000;80.295;80.297;80.28;80.231;80.127;79.999;79.829;79.672;79.496;79.27;79.001;78.687;78.355;78.003;77.744;77.521;77.367;77.325;77.375;77.469;
+12500;80.742;80.767;80.749;80.699;80.596;80.468;80.296;80.138;79.958;79.73;79.458;79.14;78.804;78.448;78.188;77.962;77.807;77.738;77.76;77.824;
+13000;81.251;81.244;81.226;81.174;81.07;80.941;80.768;80.609;80.427;80.198;79.923;79.603;79.263;78.903;78.643;78.415;78.256;78.185;78.209;78.275;
+13500;81.766;81.769;81.715;81.663;81.558;81.428;81.253;81.094;80.91;80.678;80.4;80.078;79.737;79.373;79.11;78.877;78.715;78.642;78.67;78.734;
+14000;82.248;82.241;82.222;82.168;82.062;81.931;81.754;81.593;81.407;81.174;80.892;80.566;80.221;79.858;79.588;79.351;79.185;79.115;79.142;79.204;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;80.485;80.475;80.416;80.306;80.133;79.882;79.556;79.168;78.707;78.219;77.704;77.241;76.781;76.275;75.77;75.259;74.803;74.393;74.007;73.727;
+500;80.215;80.181;80.118;80.004;79.826;79.569;79.235;78.85;78.399;77.877;77.404;76.944;76.492;76.004;75.511;75.02;74.572;74.175;73.816;73.561;
+1000;79.944;79.907;79.847;79.738;79.566;79.314;78.984;78.595;78.13;77.593;77.108;76.648;76.203;75.732;75.249;74.78;74.343;73.959;73.624;73.391;
+1500;79.663;79.643;79.584;79.477;79.306;79.059;78.739;78.358;77.899;77.372;76.872;76.385;75.918;75.46;74.991;74.54;74.127;73.75;73.432;73.222;
+2000;79.416;79.399;79.342;79.237;79.068;78.821;78.501;78.126;77.674;77.155;76.654;76.169;75.707;75.233;74.749;74.3;73.901;73.539;73.242;73.051;
+2500;79.168;79.156;79.101;78.999;78.833;78.592;78.278;77.911;77.468;76.952;76.444;75.988;75.5;75.039;74.566;74.106;73.694;73.329;73.052;72.881;
+3000;78.92;78.915;78.861;78.762;78.599;78.364;78.056;77.698;77.264;76.758;76.249;75.793;75.306;74.846;74.391;73.946;73.513;73.165;72.875;72.711;
+3500;78.67;78.667;78.626;78.527;78.368;78.137;77.835;77.488;77.062;76.567;76.058;75.602;75.12;74.675;74.228;73.786;73.37;73.03;72.746;72.578;
+4000;78.505;78.487;78.432;78.331;78.164;77.925;77.618;77.278;76.862;76.379;75.873;75.417;74.941;74.506;74.073;73.648;73.241;72.901;72.634;72.473;
+4500;78.349;78.332;78.277;78.177;78.012;77.776;77.47;77.124;76.697;76.199;75.695;75.236;74.765;74.341;73.921;73.511;73.122;72.795;72.529;72.382;
+5000;78.2;78.188;78.134;78.037;77.875;77.644;77.342;77.002;76.579;76.087;75.563;75.078;74.588;74.176;73.769;73.373;73.001;72.691;72.442;72.303;
+5500;78.05;78.049;77.992;77.896;77.737;77.511;77.215;76.886;76.474;75.992;75.467;74.972;74.479;74.045;73.613;73.237;72.88;72.585;72.354;72.234;
+6000;77.915;77.899;77.849;77.758;77.602;77.38;77.091;76.771;76.371;75.893;75.369;74.871;74.373;73.941;73.532;73.136;72.751;72.48;72.266;72.165;
+6500;77.78;77.752;77.703;77.615;77.46;77.243;76.956;76.645;76.253;75.788;75.272;74.772;74.28;73.851;73.445;73.065;72.704;72.408;72.177;72.096;
+7000;77.646;77.599;77.552;77.466;77.315;77.102;76.822;76.521;76.141;75.686;75.179;74.677;74.188;73.77;73.375;72.999;72.651;72.373;72.157;72.054;
+7500;77.509;77.451;77.405;77.321;77.172;76.965;76.691;76.4;76.032;75.588;75.089;74.587;74.142;73.691;73.308;72.947;72.607;72.34;72.143;72.058;
+8000;77.369;77.37;77.264;77.181;77.034;76.831;76.564;76.283;75.928;75.494;75.005;74.468;74.025;73.62;73.244;72.897;72.575;72.318;72.131;72.065;
+8500;77.182;77.169;77.126;77.046;76.902;76.702;76.44;76.171;75.828;75.405;74.927;74.399;73.989;73.551;73.185;72.851;72.55;72.306;72.129;72.075;
+9000;76.997;77.037;76.995;76.916;76.775;76.58;76.322;76.062;75.733;75.32;74.854;74.336;73.922;73.49;73.132;72.809;72.528;72.298;72.14;72.093;
+9500;76.926;76.913;76.873;76.794;76.656;76.465;76.211;75.958;75.641;75.241;74.789;74.28;73.863;73.436;73.084;72.77;72.507;72.295;72.154;72.125;
+10000;76.845;76.83;76.787;76.705;76.563;76.367;76.109;75.865;75.556;75.169;74.731;74.234;73.813;73.391;73.078;72.745;72.492;72.3;72.174;72.161;
+10500;76.769;76.773;76.731;76.65;76.511;76.319;76.067;75.822;75.511;75.118;74.68;74.198;73.775;73.358;73.052;72.753;72.502;72.309;72.201;72.201;
+11000;76.74;76.725;76.685;76.606;76.469;76.283;76.036;75.8;75.502;75.123;74.698;74.211;73.765;73.372;73.005;72.744;72.505;72.324;72.231;72.244;
+11500;77.212;77.196;77.156;77.075;76.939;76.753;76.506;76.27;75.968;75.586;75.157;74.664;74.217;73.819;73.459;73.14;72.872;72.673;72.576;72.586;
+12000;77.691;77.685;77.644;77.562;77.425;77.238;76.991;76.752;76.448;76.064;75.629;75.13;74.681;74.28;73.917;73.595;73.324;73.109;72.979;72.95;
+12500;78.178;78.191;78.15;78.068;77.93;77.74;77.49;77.248;76.943;76.556;76.115;75.61;75.157;74.753;74.387;74.063;73.788;73.57;73.437;73.407;
+13000;78.729;78.715;78.674;78.59;78.45;78.259;78.006;77.761;77.454;77.061;76.616;76.106;75.649;75.24;74.87;74.542;74.264;74.042;73.906;73.873;
+13500;79.289;79.29;79.217;79.131;78.989;78.795;78.54;78.293;77.982;77.582;77.132;76.617;76.156;75.742;75.368;75.035;74.753;74.527;74.386;74.35;
+14000;79.86;79.861;79.778;79.691;79.547;79.35;79.093;78.843;78.527;78.122;77.665;77.145;76.68;76.261;75.881;75.543;75.255;75.025;74.879;74.838;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;77.136;77.09;77.007;76.857;76.635;76.322;75.926;75.433;74.943;74.468;73.96;73.42;72.808;72.181;71.577;70.95;70.283;69.594;68.914;68.283;
+500;76.854;76.824;76.742;76.594;76.373;76.061;75.668;75.178;74.691;74.204;73.683;73.141;72.538;71.92;71.328;70.727;70.069;69.404;68.751;68.151;
+1000;76.591;76.564;76.484;76.339;76.121;75.814;75.426;74.941;74.452;73.961;73.443;72.936;72.307;71.678;71.078;70.486;69.855;69.214;68.587;68.018;
+1500;76.326;76.321;76.241;76.096;75.878;75.574;75.187;74.711;74.188;73.703;73.213;72.699;72.08;71.462;70.868;70.262;69.631;69.012;68.414;67.879;
+2000;76.121;76.098;76.018;75.874;75.658;75.353;74.969;74.486;73.955;73.462;72.968;72.463;71.864;71.249;70.659;70.063;69.455;68.834;68.233;67.727;
+2500;75.916;75.87;75.791;75.649;75.434;75.13;74.747;74.27;73.745;73.245;72.742;72.241;71.656;71.051;70.464;69.867;69.283;68.684;68.108;67.597;
+3000;75.66;75.634;75.557;75.418;75.206;74.907;74.53;74.062;73.543;73.04;72.542;72.041;71.467;70.858;70.28;69.691;69.119;68.535;67.985;67.501;
+3500;75.513;75.465;75.387;75.242;75.023;74.713;74.324;73.857;73.348;72.848;72.35;71.857;71.294;70.681;70.09;69.528;68.988;68.412;67.864;67.407;
+4000;75.334;75.312;75.234;75.092;74.877;74.574;74.197;73.728;73.201;72.676;72.196;71.676;71.128;70.524;69.942;69.376;68.846;68.288;67.754;67.316;
+4500;75.156;75.163;75.086;74.95;74.741;74.445;74.076;73.615;73.097;72.57;72.083;71.539;70.973;70.373;69.807;69.241;68.706;68.17;67.659;67.235;
+5000;75.047;75.023;74.95;74.817;74.612;74.321;73.958;73.506;72.995;72.469;71.982;71.443;70.891;70.285;69.693;69.111;68.587;68.058;67.567;67.164;
+5500;74.939;74.89;74.819;74.689;74.487;74.201;73.845;73.403;72.899;72.375;71.886;71.352;70.813;70.224;69.642;69.073;68.497;67.972;67.479;67.097;
+6000;74.785;74.762;74.692;74.565;74.367;74.086;73.738;73.304;72.807;72.281;71.795;71.264;70.739;70.167;69.595;69.036;68.471;67.95;67.43;67.032;
+6500;74.63;74.638;74.57;74.445;74.251;73.975;73.633;73.208;72.72;72.191;71.707;71.18;70.67;70.113;69.552;69.004;68.451;67.947;67.449;67.032;
+7000;74.541;74.52;74.453;74.331;74.14;73.869;73.534;73.118;72.638;72.108;71.626;71.102;70.604;70.062;69.513;68.952;68.435;67.943;67.471;67.077;
+7500;74.455;74.454;74.345;74.223;74.035;73.77;73.441;73.034;72.562;72.036;71.553;71.032;70.544;70.018;69.48;68.934;68.426;67.947;67.495;67.124;
+8000;74.322;74.301;74.237;74.121;73.937;73.677;73.356;72.958;72.494;71.967;71.45;70.969;70.487;69.977;69.45;68.924;68.424;67.957;67.528;67.179;
+8500;74.225;74.205;74.142;74.029;73.847;73.591;73.277;72.889;72.433;71.909;71.395;70.912;70.436;69.943;69.43;68.918;68.425;67.974;67.574;67.237;
+9000;74.134;74.137;74.072;73.955;73.769;73.512;73.207;72.828;72.38;71.861;71.348;70.863;70.39;69.909;69.412;68.916;68.431;67.998;67.611;67.3;
+9500;74.136;74.115;74.052;73.937;73.755;73.498;73.186;72.802;72.349;71.811;71.294;70.804;70.337;69.867;69.387;68.905;68.431;68.015;67.658;67.369;
+10000;74.147;74.103;74.041;73.928;73.746;73.492;73.182;72.802;72.351;71.828;71.29;70.813;70.295;69.835;69.37;68.903;68.444;68.037;67.699;67.435;
+10500;74.106;74.087;74.027;73.916;73.738;73.489;73.185;72.814;72.371;71.859;71.32;70.84;70.326;69.854;69.38;68.903;68.465;68.07;67.747;67.501;
+11000;74.078;74.087;74.028;73.919;73.744;73.499;73.202;72.839;72.406;71.902;71.363;70.878;70.365;69.902;69.44;68.98;68.528;68.113;67.804;67.576;
+11500;74.618;74.598;74.538;74.427;74.25;74.002;73.703;73.337;72.899;72.389;71.846;71.358;70.844;70.376;69.909;69.443;68.991;68.57;68.225;67.956;
+12000;75.168;75.127;75.066;74.953;74.774;74.523;74.222;73.852;73.408;72.892;72.346;71.855;71.333;70.861;70.39;69.918;69.459;69.037;68.686;68.412;
+12500;75.697;75.677;75.615;75.5;75.319;75.064;74.758;74.385;73.937;73.415;72.861;72.367;71.838;71.363;70.884;70.407;69.94;69.516;69.158;68.879;
+13000;76.239;76.237;76.173;76.057;75.875;75.619;75.313;74.939;74.487;73.958;73.397;72.897;72.362;71.878;71.395;70.909;70.437;70.005;69.644;69.355;
+13500;76.84;76.818;76.754;76.636;76.45;76.191;75.881;75.501;75.047;74.521;73.959;73.448;72.906;72.414;71.923;71.43;70.949;70.508;70.138;69.834;
+14000;77.457;77.425;77.36;77.239;77.051;76.788;76.472;76.088;75.627;75.094;74.527;74.018;73.471;72.971;72.469;71.968;71.474;71.035;70.639;70.328;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;73.807;73.8;73.707;73.537;73.294;72.957;72.519;72.006;71.563;71.072;70.489;69.817;69.121;68.45;67.741;66.908;65.968;64.921;63.776;62.574;
+500;73.557;73.536;73.443;73.275;73.031;72.695;72.258;71.743;71.298;70.808;70.238;69.574;68.875;68.2;67.492;66.661;65.738;64.728;63.63;62.485;
+1000;73.308;73.303;73.188;73.016;72.774;72.439;72.006;71.498;71.046;70.551;69.991;69.339;68.645;67.965;67.263;66.452;65.546;64.548;63.482;62.392;
+1500;73.063;73.033;72.941;72.774;72.532;72.197;71.765;71.258;70.804;70.309;69.758;69.106;68.417;67.773;67.052;66.248;65.365;64.402;63.368;62.302;
+2000;72.819;72.795;72.703;72.537;72.296;71.964;71.536;71.036;70.578;70.079;69.534;68.886;68.203;67.554;66.846;66.061;65.192;64.255;63.266;62.252;
+2500;72.577;72.561;72.471;72.306;72.068;71.737;71.313;70.816;70.358;69.861;69.325;68.682;68.001;67.352;66.651;65.878;65.035;64.125;63.168;62.202;
+3000;72.441;72.401;72.306;72.134;71.886;71.542;71.102;70.601;70.144;69.648;69.123;68.489;67.817;67.17;66.478;65.715;64.887;64.004;63.081;62.151;
+3500;72.286;72.255;72.16;71.99;71.744;71.402;70.969;70.462;69.986;69.466;68.931;68.304;67.637;66.996;66.321;65.564;64.753;63.887;62.998;62.111;
+4000;72.131;72.117;72.022;71.854;71.611;71.273;70.846;70.342;69.865;69.346;68.824;68.169;67.469;66.828;66.159;65.419;64.627;63.78;62.908;62.053;
+4500;72.018;71.986;71.893;71.726;71.489;71.151;70.729;70.227;69.749;69.231;68.713;68.07;67.395;66.715;66.014;65.269;64.489;63.667;62.825;61.999;
+5000;71.89;71.862;71.77;71.604;71.365;71.034;70.614;70.118;69.633;69.114;68.597;67.958;67.296;66.621;65.929;65.194;64.391;63.558;62.744;61.954;
+5500;71.762;71.741;71.65;71.487;71.25;70.922;70.501;69.999;69.514;68.993;68.482;67.856;67.204;66.537;65.85;65.135;64.352;63.527;62.685;61.91;
+6000;71.638;71.635;71.531;71.365;71.128;70.796;70.38;69.887;69.399;68.879;68.372;67.765;67.122;66.428;65.781;65.084;64.318;63.517;62.702;61.918;
+6500;71.515;71.495;71.405;71.244;71.009;70.681;70.27;69.779;69.292;68.802;68.275;67.684;67.015;66.364;65.719;65.036;64.289;63.511;62.722;61.967;
+7000;71.408;71.378;71.29;71.131;70.899;70.576;70.169;69.684;69.198;68.71;68.185;67.606;66.951;66.303;65.66;64.996;64.266;63.509;62.748;62.022;
+7500;71.299;71.272;71.185;71.029;70.801;70.482;70.082;69.599;69.114;68.626;68.102;67.537;66.896;66.253;65.612;64.963;64.251;63.515;62.779;62.082;
+8000;71.196;71.183;71.095;70.94;70.715;70.398;70.004;69.529;69.04;68.552;68.028;67.477;66.849;66.212;65.568;64.954;64.244;63.529;62.819;62.149;
+8500;71.197;71.168;71.079;70.922;70.69;70.366;69.965;69.476;68.979;68.49;67.967;67.428;66.812;66.181;65.57;64.933;64.262;63.552;62.866;62.223;
+9000;71.208;71.165;71.078;70.922;70.693;70.372;69.976;69.494;68.994;68.486;67.943;67.414;66.787;66.164;65.555;64.924;64.274;63.584;62.92;62.304;
+9500;71.23;71.228;71.095;70.939;70.712;70.394;70.004;69.525;69.026;68.486;67.976;67.447;66.83;66.19;65.561;64.926;64.304;63.627;62.984;62.393;
+10000;71.244;71.216;71.13;70.978;70.751;70.435;70.048;69.574;69.041;68.538;68.023;67.498;66.893;66.269;65.643;64.998;64.345;63.689;63.06;62.492;
+10500;71.278;71.28;71.195;71.044;70.82;70.507;70.125;69.651;69.123;68.608;68.085;67.564;66.975;66.36;65.74;65.102;64.467;63.827;63.178;62.601;
+11000;71.392;71.365;71.282;71.133;70.91;70.601;70.223;69.756;69.232;68.711;68.215;67.657;67.075;66.46;65.84;65.227;64.623;63.979;63.353;62.792;
+11500;71.94;71.912;71.827;71.677;71.451;71.137;70.754;70.282;69.751;69.225;68.723;68.159;67.57;66.949;66.321;65.704;65.091;64.438;63.804;63.235;
+12000;72.505;72.482;72.396;72.243;72.013;71.695;71.307;70.83;70.291;69.759;69.251;68.68;68.084;67.456;66.818;66.198;65.576;64.913;64.27;63.692;
+12500;73.089;73.078;72.989;72.834;72.6;72.277;71.885;71.401;70.856;70.315;69.801;69.22;68.618;67.983;67.334;66.706;66.078;65.403;64.75;64.161;
+13000;73.694;73.701;73.61;73.452;73.214;72.887;72.488;71.998;71.445;70.899;70.374;69.784;69.173;68.53;67.87;67.232;66.598;65.91;65.245;64.645;
+13500;74.489;74.354;74.261;74.099;73.858;73.525;73.12;72.624;72.062;71.508;70.974;70.375;69.752;69.101;68.427;67.778;67.133;66.435;65.758;65.145;
+14000;75.07;75.039;74.945;74.78;74.534;74.195;73.784;73.281;72.711;72.145;71.602;70.994;70.359;69.695;69.036;68.349;67.67;66.97;66.289;65.662;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;70.582;70.486;70.398;70.234;69.999;69.659;69.237;68.808;68.375;67.857;67.216;66.514;65.827;65.054;64.095;62.931;61.49;59.693;57.485;54.487;
+500;71.055;70.226;70.162;69.998;69.764;69.421;68.998;68.565;68.134;67.624;66.989;66.294;65.609;64.846;63.899;62.761;61.373;59.656;57.551;54.765;
+1000;70.077;70.025;69.937;69.771;69.536;69.192;68.772;68.335;67.9;67.388;66.75;66.057;65.372;64.631;63.703;62.595;61.255;59.609;57.616;55.079;
+1500;69.863;69.809;69.72;69.553;69.315;68.967;68.54;68.099;67.662;67.152;66.517;65.826;65.181;64.415;63.509;62.429;61.131;59.557;57.628;55.312;
+2000;69.604;69.576;69.486;69.319;69.083;68.736;68.312;67.87;67.435;66.93;66.297;65.61;64.963;64.204;63.316;62.265;61.01;59.498;57.669;55.51;
+2500;69.457;69.407;69.312;69.136;68.889;68.53;68.088;67.646;67.213;66.713;66.086;65.406;64.758;64.009;63.132;62.102;60.885;59.433;57.696;55.678;
+3000;69.295;69.263;69.167;68.992;68.746;68.388;67.949;67.488;67.035;66.518;65.879;65.196;64.563;63.823;62.961;61.951;60.761;59.365;57.714;55.824;
+3500;69.155;69.123;69.028;68.853;68.607;68.25;67.813;67.354;66.902;66.39;65.748;65.03;64.383;63.64;62.795;61.802;60.647;59.295;57.725;55.948;
+4000;69.015;68.988;68.894;68.719;68.475;68.119;67.686;67.221;66.771;66.261;65.627;64.951;64.273;63.524;62.661;61.661;60.531;59.228;57.721;56.017;
+4500;68.89;68.861;68.765;68.59;68.345;67.99;67.557;67.095;66.646;66.137;65.51;64.841;64.164;63.428;62.581;61.595;60.452;59.157;57.714;56.092;
+5000;68.768;68.738;68.642;68.467;68.223;67.869;67.438;66.975;66.526;66.019;65.4;64.737;64.063;63.337;62.506;61.544;60.43;59.156;57.713;56.156;
+5500;68.655;68.623;68.527;68.352;68.109;67.756;67.327;66.863;66.416;65.91;65.298;64.641;63.968;63.253;62.435;61.496;60.412;59.176;57.783;56.247;
+6000;68.547;68.517;68.422;68.247;68.004;67.652;67.224;66.761;66.313;65.808;65.205;64.551;63.881;63.175;62.371;61.453;60.395;59.19;57.851;56.373;
+6500;68.453;68.423;68.326;68.153;67.909;67.573;67.13;66.667;66.22;65.717;65.122;64.471;63.799;63.099;62.309;61.409;60.378;59.213;57.915;56.495;
+7000;68.368;68.348;68.246;68.066;67.826;67.489;67.05;66.586;66.136;65.641;65.045;64.393;63.723;63.021;62.253;61.372;60.369;59.234;57.969;56.617;
+7500;68.388;68.353;68.251;68.069;67.816;67.467;67.014;66.497;66.06;65.564;64.975;64.298;63.658;62.961;62.209;61.347;60.359;59.246;58.03;56.739;
+8000;68.42;68.369;68.267;68.085;67.83;67.478;67.028;66.516;66.072;65.556;64.949;64.257;63.571;62.91;62.165;61.31;60.349;59.272;58.096;56.861;
+8500;68.432;68.4;68.298;68.115;67.861;67.51;67.062;66.55;66.104;65.59;64.987;64.289;63.576;62.884;62.131;61.286;60.35;59.308;58.172;56.986;
+9000;68.46;68.451;68.347;68.165;67.91;67.559;67.114;66.603;66.142;65.624;65.028;64.341;63.628;62.927;62.179;61.325;60.384;59.353;58.259;57.118;
+9500;68.557;68.521;68.418;68.236;67.981;67.622;67.17;66.652;66.195;65.677;65.09;64.411;63.697;62.992;62.255;61.407;60.479;59.47;58.385;57.262;
+10000;68.675;68.603;68.5;68.316;68.057;67.702;67.252;66.736;66.273;65.752;65.172;64.502;63.787;63.108;62.348;61.513;60.601;59.615;58.565;57.484;
+10500;68.747;68.715;68.611;68.427;68.168;67.811;67.363;66.847;66.376;65.85;65.275;64.611;63.897;63.216;62.464;61.64;60.744;59.783;58.765;57.721;
+11000;68.892;68.857;68.752;68.568;68.308;67.949;67.502;66.986;66.507;65.974;65.406;64.744;64.036;63.351;62.606;61.791;60.909;59.969;58.986;57.982;
+11500;69.512;69.478;69.371;69.184;68.918;68.555;68.101;67.577;67.091;66.55;65.972;65.3;64.581;63.889;63.144;62.305;61.411;60.458;59.462;58.444;
+12000;70.159;70.131;70.021;69.831;69.56;69.191;68.73;68.197;67.704;67.153;66.564;65.884;65.151;64.45;63.682;62.841;61.933;60.965;59.955;58.922;
+12500;70.834;70.82;70.708;70.514;70.237;69.861;69.393;68.852;68.349;67.787;67.186;66.493;65.75;65.037;64.255;63.401;62.477;61.493;60.466;59.418;
+13000;71.586;71.549;71.436;71.238;70.954;70.57;70.089;69.542;69.029;68.456;67.841;67.134;66.378;65.654;64.856;63.986;63.046;62.044;60.998;59.934;
+13500;72.374;72.37;72.194;71.992;71.708;71.324;70.836;70.271;69.749;69.163;68.533;67.81;67.04;66.302;65.488;64.6;63.642;62.621;61.555;60.471;
+14000;73.154;73.115;72.996;72.792;72.501;72.108;71.618;71.053;70.513;69.913;69.266;68.525;67.739;66.985;66.153;65.246;64.268;63.227;62.138;61.031;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;69.216;69.192;69.106;68.943;68.714;68.375;67.949;67.549;67.118;66.566;65.888;65.247;64.516;63.635;62.553;61.187;59.4;57.017;53.422;47.532;
+500;69.822;68.946;68.86;68.696;68.465;68.124;67.696;67.291;66.861;66.318;65.656;65.01;64.292;63.428;62.372;61.049;59.336;57.078;53.766;48.529;
+1000;68.77;68.706;68.622;68.457;68.227;67.884;67.456;67.05;66.596;66.077;65.421;64.775;64.069;63.223;62.193;60.909;59.262;57.123;54.063;49.423;
+1500;68.503;68.479;68.393;68.229;67.997;67.657;67.229;66.82;66.364;65.85;65.198;64.544;63.835;63.019;62.013;60.766;59.182;57.153;54.316;50.128;
+2000;68.291;68.261;68.169;68.004;67.774;67.433;67.009;66.599;66.142;65.637;64.996;64.332;63.62;62.817;61.832;60.622;59.099;57.128;54.534;50.734;
+2500;68.179;68.12;68.028;67.855;67.614;67.26;66.82;66.392;65.927;65.427;64.789;64.092;63.42;62.629;61.658;60.478;59.013;57.139;54.752;51.261;
+3000;68.013;67.983;67.891;67.718;67.477;67.122;66.682;66.255;65.779;65.267;64.608;63.894;63.225;62.451;61.495;60.345;58.926;57.146;54.894;51.717;
+3500;67.847;67.85;67.757;67.585;67.344;66.99;66.553;66.124;65.649;65.142;64.49;63.775;63.077;62.29;61.341;60.212;58.843;57.139;55.012;52.108;
+4000;67.752;67.723;67.63;67.456;67.217;66.864;66.428;65.998;65.552;65.022;64.376;63.667;62.972;62.199;61.248;60.109;58.757;57.125;55.09;52.436;
+4500;67.66;67.604;67.51;67.337;67.097;66.744;66.311;65.879;65.435;64.911;64.268;63.565;62.873;62.114;61.184;60.073;58.737;57.102;55.155;52.721;
+5000;67.522;67.492;67.398;67.222;66.985;66.633;66.201;65.767;65.324;64.805;64.168;63.473;62.783;62.039;61.126;60.039;58.742;57.148;55.207;52.938;
+5500;67.389;67.388;67.294;67.121;66.882;66.53;66.1;65.666;65.224;64.711;64.079;63.392;62.703;61.971;61.074;60.012;58.735;57.196;55.35;53.189;
+6000;67.333;67.304;67.208;67.033;66.794;66.442;66.012;65.576;65.135;64.625;63.997;63.315;62.668;61.909;61.028;59.972;58.725;57.244;55.485;53.453;
+6500;67.289;67.238;67.142;66.967;66.726;66.375;65.946;65.505;65.06;64.549;63.925;63.248;62.596;61.841;60.969;59.938;58.725;57.296;55.618;53.699;
+7000;67.282;67.248;67.147;66.965;66.714;66.353;65.911;65.454;65.002;64.49;63.855;63.164;62.521;61.776;60.918;59.912;58.731;57.351;55.745;53.933;
+7500;67.287;67.274;67.173;66.99;66.739;66.375;65.927;65.461;64.994;64.466;63.817;63.097;62.464;61.721;60.879;59.897;58.745;57.41;55.872;54.155;
+8000;67.342;67.31;67.206;67.02;66.765;66.397;65.95;65.483;65.014;64.487;63.842;63.159;62.469;61.713;60.857;59.891;58.767;57.476;56;54.34;
+8500;67.412;67.354;67.249;67.063;66.806;66.438;65.991;65.521;65.052;64.524;63.884;63.205;62.512;61.766;60.916;59.946;58.817;57.549;56.133;54.548;
+9000;67.454;67.419;67.314;67.127;66.869;66.5;66.054;65.58;65.109;64.579;63.945;63.268;62.575;61.836;60.997;60.043;58.948;57.695;56.291;54.755;
+9500;67.517;67.509;67.404;67.216;66.956;66.587;66.14;65.662;65.188;64.656;64.03;63.354;62.658;61.925;61.095;60.158;59.093;57.871;56.509;55.038;
+10000;67.661;67.629;67.523;67.333;67.072;66.714;66.252;65.771;65.295;64.76;64.142;63.464;62.764;62.024;61.213;60.286;59.242;58.058;56.743;55.337;
+10500;67.834;67.781;67.672;67.481;67.219;66.859;66.398;65.913;65.434;64.896;64.282;63.601;62.894;62.155;61.346;60.431;59.408;58.264;56.995;55.642;
+11000;68.005;67.968;67.86;67.669;67.405;67.043;66.581;66.091;65.606;65.068;64.448;63.732;63.047;62.299;61.506;60.602;59.599;58.488;57.263;55.961;
+11500;68.653;68.623;68.513;68.318;68.048;67.68;67.21;66.712;66.219;65.668;65.044;64.32;63.624;62.866;62.058;61.139;60.12;58.996;57.755;56.432;
+12000;69.332;69.315;69.202;69.003;68.728;68.352;67.874;67.368;66.864;66.301;65.666;64.927;64.23;63.46;62.635;61.701;60.665;59.523;58.268;56.925;
+12500;70.087;70.049;69.932;69.729;69.447;69.064;68.577;68.062;67.546;66.97;66.322;65.605;64.862;64.075;63.242;62.291;61.237;60.074;58.802;57.439;
+13000;70.879;70.828;70.709;70.501;70.211;69.819;69.323;68.798;68.27;67.679;67.017;66.285;65.527;64.724;63.875;62.91;61.838;60.654;59.362;57.977;
+13500;71.717;71.713;71.537;71.321;71.026;70.625;70.115;69.581;69.039;68.432;67.753;67.006;66.232;65.411;64.542;63.557;62.468;61.263;59.95;58.54;
+14000;72.585;72.543;72.417;72.198;71.894;71.484;70.964;70.417;69.859;69.234;68.538;67.773;66.98;66.138;65.249;64.242;63.13;61.905;60.568;59.135;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;67.887;67.866;67.787;67.626;67.404;67.074;66.652;66.287;65.852;65.264;64.619;63.942;63.142;62.165;60.915;59.232;56.891;53.02;45.31;-9999;
+500;67.634;67.622;67.544;67.384;67.161;66.828;66.407;66.035;65.604;65.021;64.384;63.716;62.932;61.977;60.76;59.141;56.917;53.341;46.666;-9999;
+1000;67.414;67.394;67.311;67.151;66.928;66.594;66.171;65.799;65.368;64.786;64.15;63.489;62.722;61.785;60.603;59.044;56.931;53.613;47.718;-9999;
+1500;67.194;67.173;67.087;66.927;66.705;66.371;65.95;65.574;65.142;64.565;63.927;63.265;62.511;61.597;60.446;58.944;56.935;53.841;48.595;-9999;
+2000;67.01;66.981;66.893;66.724;66.49;66.149;65.727;65.354;64.924;64.357;63.72;63.059;62.31;61.409;60.29;58.842;56.885;54.032;49.33;-9999;
+2500;66.788;66.843;66.757;66.587;66.354;66.006;65.567;65.176;64.728;64.151;63.519;62.862;62.127;61.237;60.141;58.744;56.879;54.193;49.969;-9999;
+3000;66.742;66.717;66.628;66.458;66.225;65.877;65.439;65.046;64.6;64.026;63.372;62.693;61.948;61.076;60.003;58.648;56.848;54.364;50.466;-9999;
+3500;66.696;66.597;66.506;66.336;66.103;65.755;65.318;64.923;64.479;63.911;63.263;62.589;61.848;60.963;59.879;58.55;56.791;54.453;50.924;45.553;
+4000;66.511;66.481;66.391;66.221;65.987;65.641;65.206;64.811;64.368;63.809;63.13;62.491;61.761;60.891;59.829;58.486;56.743;54.525;51.256;46.228;
+4500;66.33;66.379;66.289;66.118;65.885;65.538;65.104;64.707;64.266;63.712;63.042;62.401;61.679;60.822;59.765;58.455;56.78;54.611;51.55;47.044;
+5000;66.327;66.299;66.207;66.035;65.801;65.452;65.017;64.613;64.153;63.625;62.961;62.309;61.59;60.74;59.707;58.431;56.815;54.752;51.864;47.761;
+5500;66.328;66.229;66.136;65.963;65.728;65.38;64.946;64.533;64.065;63.533;62.867;62.214;61.503;60.667;59.654;58.411;56.851;54.882;52.187;48.417;
+6000;66.194;66.164;66.07;65.895;65.656;65.302;64.863;64.451;63.982;63.456;62.791;62.131;61.411;60.599;59.608;58.395;56.89;54.973;52.524;49.046;
+6500;66.19;66.158;66.058;65.875;65.625;65.26;64.807;64.378;63.91;63.389;62.742;62.069;61.346;60.544;59.571;58.388;56.93;55.101;52.794;49.615;
+7000;66.197;66.171;66.071;65.886;65.636;65.27;64.817;64.385;63.896;63.363;62.701;62.019;61.298;60.511;59.551;58.388;56.976;55.22;53.047;50.13;
+7500;66.216;66.201;66.099;65.914;65.663;65.295;64.844;64.407;63.917;63.388;62.728;62.004;61.296;60.502;59.549;58.413;57.037;55.349;53.294;50.611;
+8000;66.283;66.25;66.147;65.961;65.708;65.34;64.888;64.448;63.954;63.428;62.77;62.05;61.341;60.561;59.612;58.479;57.115;55.49;53.539;51.056;
+8500;66.368;66.32;66.216;66.029;65.775;65.405;64.953;64.509;64.038;63.489;62.833;62.116;61.405;60.636;59.701;58.594;57.267;55.684;53.808;51.507;
+9000;66.475;66.413;66.309;66.12;65.865;65.494;65.042;64.593;64.12;63.575;62.919;62.203;61.49;60.73;59.806;58.725;57.437;55.903;54.083;51.965;
+9500;66.606;66.537;66.432;66.242;65.984;65.611;65.158;64.703;64.229;63.685;63.029;62.314;61.596;60.843;59.932;58.873;57.62;56.135;54.405;52.403;
+10000;66.766;66.694;66.588;66.396;66.135;65.76;65.305;64.844;64.368;63.823;63.166;62.45;61.769;60.981;60.08;59.037;57.817;56.384;54.736;52.834;
+10500;66.924;66.89;66.78;66.586;66.323;65.947;65.489;65.023;64.542;63.995;63.336;62.618;61.93;61.145;60.251;59.224;58.038;56.66;55.075;53.263;
+11000;67.121;67.129;67.018;66.823;66.556;66.177;65.716;65.242;64.754;64.203;63.54;62.804;62.123;61.34;60.453;59.442;58.29;56.955;55.421;53.699;
+11500;67.855;67.831;67.717;67.517;67.245;66.858;66.387;65.905;65.406;64.845;64.171;63.426;62.729;61.932;61.028;59.999;58.826;57.478;55.926;54.176;
+12000;68.628;68.576;68.46;68.254;67.975;67.581;67.1;66.608;66.097;65.522;64.836;64.079;63.367;62.554;61.635;60.587;59.391;58.026;56.45;54.677;
+12500;69.408;69.37;69.249;69.038;68.752;68.35;67.859;67.355;66.83;66.241;65.54;64.77;64.041;63.211;62.274;61.207;59.99;58.601;57.002;55.205;
+13000;70.234;70.219;70.094;69.876;69.582;69.17;68.668;68.153;67.613;67.006;66.289;65.502;64.756;63.907;62.949;61.863;60.625;59.208;57.586;55.763;
+13500;71.17;71.127;70.998;70.775;70.472;70.049;69.532;69.006;68.449;67.824;67.089;66.287;65.516;64.645;63.666;62.557;61.297;59.855;58.201;56.355;
+14000;72.17;72.102;71.97;71.74;71.427;70.992;70.461;69.92;69.345;68.7;67.944;67.123;66.328;65.432;64.428;63.295;62.01;60.543;58.857;56.982;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;66.644;66.605;66.519;66.374;66.154;65.834;65.453;65.058;64.587;63.978;63.323;62.616;61.747;60.623;59.071;56.922;53.111;44.351;-9999;-9999;
+500;66.424;66.39;66.248;66.075;65.852;65.555;65.176;64.789;64.341;63.736;63.096;62.4;61.551;60.455;58.962;56.912;53.372;45.715;-9999;-9999;
+1000;66.116;66.101;66.032;65.871;65.656;65.33;64.949;64.563;64.115;63.509;62.867;62.185;61.354;60.289;58.853;56.884;53.59;47.01;-9999;-9999;
+1500;65.907;65.888;65.814;65.654;65.44;65.114;64.733;64.348;63.902;63.3;62.654;61.975;61.159;60.128;58.741;56.842;53.774;47.954;-9999;-9999;
+2000;65.653;65.734;65.653;65.486;65.261;64.921;64.524;64.139;63.698;63.103;62.451;61.79;60.98;59.968;58.629;56.747;53.923;48.706;-9999;-9999;
+2500;65.631;65.61;65.527;65.361;65.136;64.798;64.402;64.003;63.545;62.934;62.285;61.613;60.818;59.822;58.506;56.688;54.048;49.351;-9999;-9999;
+3000;65.517;65.495;65.41;65.245;65.022;64.683;64.286;63.888;63.434;62.828;62.181;61.49;60.677;59.668;58.376;56.632;54.176;49.908;-9999;-9999;
+3500;65.416;65.397;65.309;65.143;64.916;64.576;64.177;63.78;63.329;62.727;62.076;61.387;60.582;59.582;58.29;56.573;54.237;50.322;42.976;-9999;
+4000;65.32;65.308;65.211;65.055;64.828;64.484;64.076;63.672;63.216;62.612;61.968;61.286;60.493;59.514;58.258;56.587;54.309;50.674;43.78;-9999;
+4500;65.241;65.216;65.127;64.958;64.73;64.383;63.976;63.572;63.118;62.514;61.869;61.192;60.411;59.451;58.228;56.613;54.44;51.031;44.931;-9999;
+5000;65.168;65.129;65.04;64.87;64.64;64.294;63.885;63.481;63.029;62.429;61.787;61.111;60.336;59.394;58.202;56.641;54.565;51.393;46.02;-9999;
+5500;65.102;65.054;64.965;64.793;64.563;64.215;63.806;63.402;62.951;62.354;61.714;61.043;60.279;59.349;58.181;56.668;54.685;51.73;46.842;-9999;
+6000;65.085;65.054;64.959;64.778;64.536;64.176;63.752;63.333;62.884;62.294;61.653;60.986;60.232;59.319;58.179;56.708;54.809;52.045;47.617;-9999;
+6500;65.078;65.069;64.983;64.795;64.552;64.19;63.738;63.34;62.872;62.274;61.612;60.941;60.195;59.298;58.185;56.759;54.89;52.34;48.32;-9999;
+7000;65.142;65.112;65.014;64.831;64.586;64.222;63.77;63.367;62.897;62.306;61.645;60.96;60.201;59.297;58.202;56.818;55.023;52.657;48.923;-9999;
+7500;65.223;65.17;65.071;64.887;64.64;64.272;63.818;63.412;62.94;62.356;61.695;61.01;60.257;59.367;58.278;56.913;55.16;52.925;49.492;-9999;
+8000;65.281;65.25;65.15;64.964;64.716;64.346;63.89;63.479;63.008;62.427;61.727;61.076;60.329;59.45;58.386;57.059;55.368;53.225;50.058;45.347;
+8500;65.358;65.351;65.259;65.066;64.816;64.444;63.988;63.57;63.084;62.52;61.823;61.164;60.421;59.551;58.509;57.215;55.588;53.537;50.607;46.352;
+9000;65.523;65.49;65.386;65.199;64.944;64.569;64.112;63.687;63.197;62.639;61.943;61.276;60.535;59.671;58.646;57.39;55.823;53.853;51.13;47.332;
+9500;65.719;65.656;65.552;65.36;65.103;64.728;64.267;63.839;63.344;62.785;62.091;61.411;60.655;59.813;58.805;57.589;56.075;54.141;51.634;48.167;
+10000;65.949;65.861;65.755;65.561;65.303;64.926;64.462;64.023;63.52;62.961;62.266;61.579;60.819;59.991;58.997;57.809;56.336;54.466;52.166;48.981;
+10500;66.219;66.114;66.005;65.808;65.545;65.163;64.693;64.248;63.735;63.178;62.5;61.79;61.024;60.202;59.218;58.054;56.603;54.817;52.65;49.743;
+11000;66.535;66.416;66.304;66.104;65.835;65.45;64.979;64.524;64.004;63.444;62.76;62.008;61.27;60.451;59.471;58.306;56.903;55.188;53.14;50.473;
+11500;67.197;67.18;67.064;66.858;66.582;66.187;65.704;65.238;64.704;64.13;63.432;62.665;61.912;61.076;60.082;58.911;57.487;55.745;53.662;50.943;
+12000;67.902;67.995;67.876;67.665;67.381;66.976;66.479;66;65.451;64.859;64.147;63.363;62.593;61.739;60.726;59.544;58.114;56.337;54.216;51.444;
+12500;68.906;68.867;68.743;68.525;68.233;67.819;67.312;66.817;66.251;65.641;64.909;64.105;63.318;62.442;61.409;60.206;58.764;56.963;54.805;51.981;
+13000;69.974;69.802;69.674;69.448;69.147;68.723;68.202;67.695;67.112;66.48;65.729;64.94;64.088;63.193;62.137;60.91;59.456;57.63;55.434;52.558;
+13500;70.856;70.812;70.678;70.444;70.131;69.695;69.159;68.635;68.033;67.38;66.608;65.797;64.92;63.995;62.913;61.662;60.182;58.351;56.108;53.181;
+14000;71.81;71.905;71.766;71.523;71.198;70.747;70.19;69.651;69.025;68.349;67.553;66.718;65.817;64.861;63.746;62.468;60.96;59.114;56.832;53.858;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;64.963;64.938;64.86;64.722;64.514;64.187;63.826;63.47;63.02;62.425;61.765;61.004;60.042;58.728;56.815;53.529;44.975;-9999;-9999;-9999;
+500;64.801;64.783;64.688;64.55;64.34;64.014;63.651;63.284;62.84;62.249;61.601;60.856;59.916;58.64;56.774;53.718;46.19;-9999;-9999;-9999;
+1000;64.631;64.612;64.53;64.389;64.179;63.854;63.49;63.117;62.673;62.081;61.435;60.705;59.787;58.541;56.731;53.886;47.302;-9999;-9999;-9999;
+1500;64.463;64.46;64.375;64.233;64.024;63.699;63.335;62.959;62.52;61.931;61.286;60.553;59.642;58.423;56.681;53.948;48.177;-9999;-9999;-9999;
+2000;64.409;64.388;64.297;64.144;63.924;63.586;63.207;62.811;62.366;61.775;61.13;60.403;59.501;58.31;56.6;54.053;48.882;-9999;-9999;-9999;
+2500;64.367;64.351;64.225;64.071;63.849;63.504;63.118;62.72;62.268;61.659;60.996;60.259;59.374;58.21;56.555;54.125;49.443;-9999;-9999;-9999;
+3000;64.265;64.244;64.167;63.994;63.772;63.426;63.04;62.644;62.189;61.579;60.922;60.19;59.292;58.127;56.504;54.175;49.931;-9999;-9999;-9999;
+3500;64.171;64.176;64.096;63.925;63.702;63.354;62.969;62.574;62.124;61.518;60.859;60.132;59.249;58.097;56.496;54.222;50.297;-9999;-9999;-9999;
+4000;64.139;64.116;64.033;63.862;63.64;63.29;62.903;62.512;62.065;61.462;60.808;60.082;59.197;58.05;56.508;54.336;50.676;42.308;-9999;-9999;
+4500;64.116;64.101;63.965;63.81;63.586;63.233;62.846;62.458;62.007;61.399;60.74;60.021;59.149;58.038;56.539;54.455;51.062;43.699;-9999;-9999;
+5000;64.054;63.94;63.909;63.687;63.509;63.162;62.775;62.387;61.937;61.331;60.676;59.967;59.11;58.026;56.574;54.575;51.409;44.921;-9999;-9999;
+5500;64.013;63.988;63.896;63.722;63.491;63.132;62.729;62.326;61.878;61.275;60.609;59.923;59.08;58.02;56.612;54.692;51.724;45.971;-9999;-9999;
+6000;64.041;64.014;63.922;63.745;63.513;63.151;62.747;62.343;61.876;61.258;60.573;59.889;59.06;58.023;56.659;54.814;52.015;46.886;-9999;-9999;
+6500;64.083;64.057;63.964;63.786;63.552;63.188;62.784;62.379;61.911;61.295;60.607;59.918;59.078;58.04;56.714;54.94;52.332;47.626;-9999;-9999;
+7000;64.142;64.129;64.013;63.848;63.61;63.249;62.841;62.432;61.964;61.349;60.683;59.977;59.15;58.131;56.823;55.05;52.606;48.372;-9999;-9999;
+7500;64.236;64.207;64.112;63.93;63.692;63.332;62.919;62.508;62.037;61.423;60.757;60.055;59.236;58.236;56.966;55.266;52.921;49.054;-9999;-9999;
+8000;64.354;64.32;64.224;64.04;63.799;63.44;63.023;62.606;62.133;61.519;60.852;60.15;59.338;58.359;57.125;55.489;53.237;49.688;43.714;-9999;
+8500;64.497;64.464;64.366;64.18;63.939;63.577;63.154;62.731;62.255;61.639;60.972;60.272;59.468;58.506;57.301;55.709;53.556;50.283;44.636;-9999;
+9000;64.67;64.644;64.545;64.359;64.114;63.745;63.318;62.889;62.409;61.793;61.123;60.422;59.623;58.674;57.495;55.933;53.884;50.85;45.864;-9999;
+9500;64.876;64.869;64.767;64.577;64.328;63.958;63.523;63.087;62.601;61.982;61.307;60.603;59.808;58.865;57.691;56.185;54.224;51.4;46.988;-9999;
+10000;65.121;65.111;65.045;64.846;64.59;64.214;63.773;63.328;62.834;62.212;61.531;60.813;60.012;59.068;57.92;56.462;54.579;51.94;47.955;-9999;
+10500;65.508;65.474;65.365;65.167;64.904;64.522;64.073;63.614;63.111;62.478;61.78;61.054;60.25;59.311;58.181;56.767;54.919;52.482;48.856;-9999;
+11000;65.955;65.866;65.753;65.549;65.279;64.879;64.413;63.942;63.424;62.786;62.078;61.341;60.534;59.597;58.482;57.107;55.336;53.069;49.741;-9999;
+11500;66.705;66.701;66.584;66.374;66.095;65.695;65.198;64.735;64.201;63.547;62.822;62.067;61.241;60.285;59.15;57.756;55.96;53.656;50.272;-9999;
+12000;67.639;67.6;67.478;67.26;66.971;66.56;66.05;65.58;65.032;64.363;63.616;62.842;61.994;61.017;59.86;58.444;56.624;54.284;50.849;-9999;
+12500;68.638;68.569;68.441;68.215;67.915;67.491;66.968;66.479;65.911;65.226;64.466;63.671;62.8;61.798;60.618;59.178;57.333;54.92;51.472;-9999;
+13000;69.66;69.616;69.482;69.247;68.935;68.498;67.96;67.449;66.858;66.151;65.374;64.559;63.664;62.636;61.429;59.963;58.093;55.643;52.157;-9999;
+13500;70.767;70.752;70.612;70.366;70.041;69.59;69.034;68.5;67.883;67.15;66.348;65.507;64.588;63.538;62.301;60.807;58.912;56.427;52.958;-9999;
+14000;72.042;71.994;71.846;71.588;71.244;70.777;70.203;69.642;68.996;68.235;67.404;66.531;65.578;64.503;63.245;61.718;59.795;57.278;53.794;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;63.106;63.084;62.998;62.868;62.722;62.452;62.121;61.774;61.288;60.678;59.971;59.115;57.972;56.304;53.511;46.539;-9999;-9999;-9999;-9999;
+500;62.969;62.949;62.861;62.724;62.575;62.301;61.966;61.616;61.132;60.522;59.827;58.989;57.877;56.241;53.624;47.537;-9999;-9999;-9999;-9999;
+1000;62.838;62.82;62.732;62.588;62.432;62.153;61.816;61.466;60.983;60.372;59.681;58.862;57.781;56.207;53.724;48.342;-9999;-9999;-9999;-9999;
+1500;62.739;62.721;62.628;62.474;62.305;62.022;61.68;61.327;60.848;60.239;59.553;58.737;57.682;56.171;53.872;48.953;-9999;-9999;-9999;-9999;
+2000;62.602;62.677;62.581;62.427;62.257;61.962;61.602;61.236;60.74;60.115;59.434;58.633;57.595;56.127;53.928;49.421;-9999;-9999;-9999;-9999;
+2500;62.654;62.636;62.539;62.387;62.214;61.917;61.556;61.192;60.699;60.073;59.372;58.552;57.518;56.098;53.969;49.953;-9999;-9999;-9999;-9999;
+3000;62.715;62.602;62.503;62.384;62.18;61.879;61.521;61.153;60.665;60.043;59.35;58.542;57.516;56.106;54.021;50.333;-9999;-9999;-9999;-9999;
+3500;62.591;62.577;62.475;62.354;62.151;61.848;61.489;61.121;60.636;60.019;59.334;58.538;57.533;56.162;54.133;50.679;-9999;-9999;-9999;-9999;
+4000;62.579;62.56;62.456;62.333;62.132;61.826;61.465;61.098;60.616;60.002;59.323;58.54;57.555;56.224;54.254;51.049;-9999;-9999;-9999;-9999;
+4500;62.578;62.552;62.447;62.323;62.122;61.814;61.448;61.082;60.604;59.993;59.32;58.547;57.582;56.291;54.406;51.391;43.624;-9999;-9999;-9999;
+5000;62.631;62.608;62.503;62.361;62.152;61.833;61.448;61.078;60.603;59.994;59.325;58.563;57.617;56.359;54.554;51.702;44.926;-9999;-9999;-9999;
+5500;62.699;62.682;62.582;62.438;62.23;61.906;61.516;61.136;60.647;60.024;59.342;58.587;57.658;56.435;54.681;51.909;45.997;-9999;-9999;-9999;
+6000;62.787;62.772;62.698;62.531;62.321;61.994;61.6;61.219;60.732;60.109;59.429;58.662;57.729;56.528;54.838;52.182;46.96;-9999;-9999;-9999;
+6500;62.894;62.891;62.813;62.645;62.432;62.101;61.701;61.319;60.832;60.21;59.534;58.776;57.859;56.684;55.043;52.523;47.787;-9999;-9999;-9999;
+7000;63.053;63.032;62.949;62.78;62.563;62.229;61.843;61.439;60.953;60.333;59.659;58.909;58.004;56.856;55.255;52.833;48.507;-9999;-9999;-9999;
+7500;63.239;63.2;63.113;62.944;62.723;62.386;61.996;61.588;61.1;60.48;59.806;59.061;58.168;57.037;55.47;53.142;49.214;-9999;-9999;-9999;
+8000;63.426;63.402;63.312;63.139;62.914;62.572;62.176;61.763;61.273;60.651;59.976;59.235;58.347;57.218;55.681;53.461;49.863;-9999;-9999;-9999;
+8500;63.647;63.639;63.545;63.368;63.138;62.79;62.388;61.969;61.476;60.851;60.165;59.419;58.533;57.405;55.879;53.787;50.445;43.457;-9999;-9999;
+9000;63.942;63.913;63.817;63.636;63.4;63.047;62.631;62.202;61.7;61.063;60.375;59.609;58.72;57.609;56.156;54.133;51.036;45.128;-9999;-9999;
+9500;64.284;64.224;64.124;63.936;63.692;63.326;62.903;62.454;61.941;61.293;60.566;59.824;58.936;57.848;56.437;54.508;51.613;46.446;-9999;-9999;
+10000;64.615;64.582;64.475;64.28;64.011;63.631;63.192;62.737;62.213;61.553;60.826;60.081;59.196;58.124;56.752;54.875;52.189;47.606;-9999;-9999;
+10500;65.007;64.966;64.855;64.651;64.385;63.994;63.543;63.076;62.541;61.875;61.138;60.388;59.504;58.442;57.105;55.307;52.777;48.634;-9999;-9999;
+11000;65.468;65.431;65.315;65.104;64.827;64.427;63.963;63.483;62.936;62.26;61.504;60.753;59.865;58.812;57.504;55.774;53.388;49.69;-9999;-9999;
+11500;66.423;66.378;66.256;66.036;65.748;65.335;64.856;64.357;63.791;63.096;62.323;61.546;60.637;59.562;58.232;56.48;54.058;50.329;-9999;-9999;
+12000;67.45;67.401;67.273;67.043;66.743;66.315;65.797;65.299;64.71;63.994;63.203;62.397;61.463;60.364;59.011;57.237;54.781;51.03;-9999;-9999;
+12500;68.561;68.51;68.372;68.125;67.82;67.377;66.841;66.318;65.702;64.963;64.148;63.313;62.351;61.225;59.849;58.052;55.564;51.802;-9999;-9999;
+13000;69.767;69.711;69.569;69.323;68.997;68.532;67.995;67.424;66.779;66.012;65.169;64.303;63.309;62.154;60.75;58.933;56.415;52.657;-9999;-9999;
+13500;71.084;71.002;70.851;70.593;70.248;69.782;69.219;68.626;67.951;67.149;66.276;65.375;64.347;63.159;61.727;59.887;57.344;53.612;-9999;-9999;
+14000;72.53;72.415;72.256;71.985;71.62;71.132;70.545;69.934;69.228;68.403;67.516;66.547;65.475;64.251;62.788;60.926;58.364;54.761;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;62.116;62.058;62.014;61.889;61.751;61.487;61.161;60.806;60.296;59.646;58.935;58.021;56.764;54.834;51.244;-9999;-9999;-9999;-9999;-9999;
+500;61.937;61.915;61.892;61.765;61.619;61.348;61.018;60.662;60.157;59.515;58.814;57.921;56.701;54.852;51.526;-9999;-9999;-9999;-9999;-9999;
+1000;61.76;61.832;61.782;61.654;61.506;61.233;60.897;60.535;60.029;59.389;58.692;57.819;56.637;54.866;51.732;49.786;-9999;-9999;-9999;-9999;
+1500;61.772;61.763;61.706;61.57;61.41;61.125;60.787;60.427;59.923;59.283;58.586;57.721;56.569;54.874;51.937;-9999;-9999;-9999;-9999;-9999;
+2000;61.758;61.739;61.679;61.543;61.38;61.093;60.74;60.367;59.851;59.188;58.499;57.645;56.513;54.873;52.128;45.202;-9999;-9999;-9999;-9999;
+2500;61.735;61.721;61.659;61.541;61.357;61.068;60.713;60.342;59.831;59.18;58.474;57.609;56.477;54.891;52.287;46.235;-9999;-9999;-9999;-9999;
+3000;61.722;61.711;61.646;61.526;61.34;61.049;60.693;60.324;59.817;59.187;58.473;57.622;56.515;54.926;52.434;47.048;-9999;-9999;-9999;-9999;
+3500;61.717;61.71;61.643;61.52;61.333;61.04;60.681;60.313;59.811;59.184;58.478;57.641;56.56;55.025;52.705;47.669;-9999;-9999;-9999;-9999;
+4000;61.721;61.704;61.648;61.524;61.334;61.039;60.679;60.311;59.812;59.189;58.49;57.667;56.61;55.126;52.887;48.258;-9999;-9999;-9999;-9999;
+4500;61.777;61.762;61.684;61.548;61.35;61.049;60.689;60.319;59.823;59.203;58.511;57.699;56.663;55.232;53.057;48.817;-9999;-9999;-9999;-9999;
+5000;61.851;61.854;61.773;61.636;61.432;61.116;60.741;60.353;59.846;59.228;58.541;57.74;56.728;55.347;53.225;49.395;-9999;-9999;-9999;-9999;
+5500;61.98;61.962;61.878;61.736;61.53;61.211;60.831;60.443;59.935;59.304;58.604;57.797;56.808;55.47;53.413;49.901;-9999;-9999;-9999;-9999;
+6000;62.105;62.087;62;61.855;61.648;61.324;60.942;60.55;60.044;59.418;58.724;57.927;56.938;55.619;53.625;50.35;-9999;-9999;-9999;-9999;
+6500;62.253;62.237;62.147;61.998;61.787;61.461;61.076;60.682;60.177;59.551;58.86;58.07;57.098;55.801;53.889;50.828;-9999;-9999;-9999;-9999;
+7000;62.428;62.411;62.32;62.168;61.952;61.622;61.231;60.834;60.33;59.703;59.014;58.229;57.265;55.985;54.161;51.282;44.653;-9999;-9999;-9999;
+7500;62.639;62.618;62.538;62.363;62.145;61.81;61.413;61.011;60.506;59.877;59.182;58.394;57.436;56.193;54.417;51.719;45.982;-9999;-9999;-9999;
+8000;62.886;62.854;62.767;62.591;62.367;62.027;61.621;61.209;60.698;60.059;59.363;58.58;57.633;56.42;54.715;52.154;47.089;-9999;-9999;-9999;
+8500;63.173;63.111;63.019;62.84;62.609;62.258;61.842;61.428;60.913;60.271;59.573;58.793;57.857;56.671;55.029;52.533;48.024;-9999;-9999;-9999;
+9000;63.506;63.407;63.309;63.126;62.889;62.532;62.108;61.686;61.166;60.52;59.819;59.04;58.112;56.948;55.365;53.007;48.877;-9999;-9999;-9999;
+9500;63.782;63.753;63.652;63.463;63.218;62.854;62.42;61.99;61.464;60.812;60.105;59.326;58.404;57.257;55.73;53.457;49.735;-9999;-9999;-9999;
+10000;64.116;64.161;64.055;63.86;63.606;63.234;62.788;62.348;61.813;61.154;60.439;59.656;58.738;57.608;56.127;53.94;50.543;-9999;-9999;-9999;
+10500;64.672;64.639;64.528;64.326;64.063;63.68;63.221;62.769;62.223;61.555;60.83;60.04;59.122;58.007;56.537;54.465;51.29;44.958;-9999;-9999;
+11000;65.314;65.201;65.085;64.875;64.6;64.207;63.733;63.265;62.706;62.025;61.287;60.488;59.566;58.434;56.984;55.026;52.089;46.744;-9999;-9999;
+11500;66.22;66.177;66.053;65.834;65.545;65.139;64.65;64.161;63.58;62.88;62.121;61.298;60.355;59.228;57.762;55.77;52.795;47.498;-9999;-9999;
+12000;67.204;67.232;67.101;66.872;66.569;66.147;65.642;65.129;64.522;63.801;63.019;62.17;61.201;60.052;58.584;56.571;53.565;-9999;-9999;-9999;
+12500;68.423;68.378;68.241;67.999;67.68;67.242;66.718;66.177;65.543;64.798;63.988;63.11;62.113;60.939;59.48;57.436;54.409;49.414;-9999;-9999;
+13000;69.752;69.631;69.484;69.23;68.892;68.436;67.89;67.319;66.653;65.879;65.04;64.128;63.1;61.899;60.421;58.378;55.337;-9999;-9999;-9999;
+13500;71.207;71.005;70.848;70.579;70.22;69.743;69.172;68.566;67.864;67.059;66.185;65.235;64.172;62.941;61.443;59.405;56.363;51.762;-9999;-9999;
+14000;72.575;72.519;72.35;72.064;71.68;71.18;70.581;69.935;69.193;68.351;67.437;66.445;65.342;64.077;62.557;60.532;57.505;53.597;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;61.027;61.002;60.97;60.844;60.706;60.444;60.124;59.754;59.231;58.588;57.812;56.83;55.453;53.114;47.942;-9999;-9999;-9999;-9999;-9999;
+500;60.915;60.891;60.872;60.746;60.604;60.339;60.011;59.636;59.114;58.477;57.717;56.758;55.402;53.208;48.462;-9999;-9999;-9999;-9999;-9999;
+1000;60.806;60.782;60.783;60.657;60.512;60.246;59.916;59.543;59.017;58.377;57.621;56.685;55.375;53.289;48.953;-9999;-9999;-9999;-9999;-9999;
+1500;60.803;60.794;60.741;60.606;60.45;60.17;59.827;59.458;58.937;58.302;57.55;56.62;55.343;53.366;49.449;-9999;-9999;-9999;-9999;-9999;
+2000;60.785;60.79;60.734;60.599;60.44;60.159;59.811;59.431;58.896;58.248;57.492;56.58;55.336;53.437;49.868;-9999;-9999;-9999;-9999;-9999;
+2500;60.804;60.793;60.735;60.599;60.437;60.154;59.805;59.427;58.896;58.253;57.5;56.581;55.342;53.513;50.192;-9999;-9999;-9999;-9999;-9999;
+3000;60.824;60.804;60.743;60.606;60.442;60.157;59.806;59.429;58.902;58.236;57.523;56.621;55.414;53.636;50.47;-9999;-9999;-9999;-9999;-9999;
+3500;60.836;60.825;60.762;60.641;60.457;60.169;59.818;59.44;58.918;58.258;57.552;56.666;55.49;53.784;50.766;-9999;-9999;-9999;-9999;-9999;
+4000;60.871;60.858;60.792;60.667;60.482;60.192;59.837;59.461;58.943;58.287;57.588;56.717;55.573;53.933;51.064;-9999;-9999;-9999;-9999;-9999;
+4500;60.962;60.947;60.874;60.738;60.539;60.235;59.867;59.493;58.977;58.326;57.633;56.78;55.67;54.074;51.341;44.925;-9999;-9999;-9999;-9999;
+5000;61.07;61.063;60.986;60.848;60.646;60.339;59.961;59.57;59.043;58.382;57.696;56.857;55.77;54.203;51.61;45.975;-9999;-9999;-9999;-9999;
+5500;61.196;61.201;61.12;60.979;60.774;60.465;60.086;59.694;59.17;58.512;57.81;56.965;55.886;54.335;51.873;46.89;-9999;-9999;-9999;-9999;
+6000;61.38;61.361;61.278;61.133;60.925;60.61;60.226;59.833;59.31;58.656;57.956;57.121;56.042;54.54;52.221;47.652;-9999;-9999;-9999;-9999;
+6500;61.589;61.542;61.456;61.308;61.098;60.775;60.391;59.992;59.469;58.831;58.11;57.272;56.216;54.764;52.522;48.334;-9999;-9999;-9999;-9999;
+7000;61.771;61.75;61.66;61.508;61.294;60.964;60.572;60.165;59.636;58.993;58.275;57.445;56.408;55.002;52.871;49.094;-9999;-9999;-9999;-9999;
+7500;61.991;61.97;61.876;61.719;61.499;61.162;60.766;60.354;59.824;59.18;58.464;57.64;56.62;55.256;53.226;49.773;-9999;-9999;-9999;-9999;
+8000;62.251;62.224;62.125;61.963;61.738;61.395;60.992;60.574;60.042;59.395;58.68;57.861;56.855;55.529;53.595;50.403;-9999;-9999;-9999;-9999;
+8500;62.553;62.535;62.414;62.248;62.016;61.667;61.255;60.831;60.295;59.644;58.927;58.112;57.12;55.827;53.979;50.972;-9999;-9999;-9999;-9999;
+9000;62.899;62.861;62.767;62.579;62.34;61.984;61.564;61.13;60.589;59.933;59.213;58.398;57.418;56.154;54.385;51.565;45.24;-9999;-9999;-9999;
+9500;63.287;63.258;63.157;62.965;62.718;62.354;61.923;61.48;60.932;60.269;59.543;58.727;57.754;56.518;54.818;52.158;46.71;-9999;-9999;-9999;
+10000;63.752;63.722;63.614;63.416;63.159;62.786;62.345;61.888;61.331;60.659;59.926;59.107;58.138;56.925;55.266;52.764;48.007;-9999;-9999;-9999;
+10500;64.297;64.264;64.15;63.944;63.676;63.292;62.837;62.366;61.797;61.114;60.37;59.545;58.576;57.383;55.782;53.398;49.168;-9999;-9999;-9999;
+11000;64.936;64.916;64.772;64.565;64.283;63.886;63.415;62.927;62.343;61.647;60.889;60.052;59.081;57.901;56.351;54.112;50.25;-9999;-9999;-9999;
+11500;65.927;65.919;65.793;65.568;65.272;64.86;64.371;63.86;63.253;62.536;61.754;60.894;59.899;58.7;57.136;54.897;51.034;-9999;-9999;-9999;
+12000;67.075;67.032;66.896;66.659;66.346;65.918;65.408;64.871;64.237;63.497;62.689;61.801;60.781;59.561;57.982;55.739;51.96;-9999;-9999;-9999;
+12500;68.325;68.247;68.1;67.85;67.518;67.071;66.538;65.971;65.307;64.54;63.703;62.783;61.734;60.491;58.898;56.631;52.945;-9999;-9999;-9999;
+13000;69.628;69.575;69.42;69.155;68.801;68.333;67.774;67.174;66.475;65.677;64.807;63.851;62.77;61.503;59.895;57.639;54.056;-9999;-9999;-9999;
+13500;71.069;71.042;70.875;70.593;70.213;69.721;69.133;68.493;67.755;66.922;66.013;65.017;63.9;62.606;60.986;58.748;55.318;-9999;-9999;-9999;
+14000;72.726;72.666;72.484;72.183;71.774;71.254;70.632;69.948;69.165;68.292;67.338;66.297;65.139;63.814;62.183;59.974;56.766;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;59.912;59.891;59.869;59.722;59.583;59.326;59.001;58.606;58.075;57.41;56.593;55.538;53.971;51.064;47.783;-9999;-9999;-9999;-9999;-9999;
+500;59.817;59.791;59.777;59.649;59.507;59.247;58.921;58.527;57.992;57.326;56.525;55.493;53.987;51.249;48.302;-9999;-9999;-9999;-9999;-9999;
+1000;59.726;59.701;59.712;59.584;59.441;59.179;58.853;58.462;57.926;57.264;56.465;55.452;54.005;51.414;48.789;-9999;-9999;-9999;-9999;-9999;
+1500;59.761;59.753;59.702;59.567;59.413;59.139;58.797;58.404;57.871;57.215;56.426;55.425;54.024;51.626;45.663;-9999;-9999;-9999;-9999;-9999;
+2000;59.792;59.769;59.716;59.58;59.424;59.148;58.807;58.411;57.865;57.197;56.4;55.416;54.054;51.769;46.458;-9999;-9999;-9999;-9999;-9999;
+2500;59.806;59.795;59.739;59.603;59.444;59.166;58.822;58.43;57.888;57.227;56.44;55.456;54.082;51.905;47.076;-9999;-9999;-9999;-9999;-9999;
+3000;59.821;59.83;59.772;59.635;59.472;59.193;58.846;58.457;57.918;57.263;56.488;55.524;54.197;52.088;47.551;-9999;-9999;-9999;-9999;-9999;
+3500;59.887;59.876;59.816;59.677;59.511;59.229;58.881;58.493;57.956;57.306;56.542;55.604;54.319;52.285;48.14;-9999;-9999;-9999;-9999;-9999;
+4000;59.958;59.943;59.874;59.731;59.562;59.277;58.925;58.539;58.005;57.364;56.612;55.691;54.442;52.481;48.69;-9999;-9999;-9999;-9999;-9999;
+4500;60.189;60.074;60.003;59.868;59.669;59.37;59.003;58.604;58.073;57.435;56.691;55.786;54.56;52.674;49.173;-9999;-9999;-9999;-9999;-9999;
+5000;60.239;60.222;60.148;60.01;59.807;59.505;59.131;58.73;58.186;57.536;56.782;55.883;54.67;52.869;49.631;-9999;-9999;-9999;-9999;-9999;
+5500;60.31;60.387;60.31;60.168;59.963;59.657;59.28;58.877;58.334;57.679;56.924;56.018;54.823;53.085;50.067;47.722;-9999;-9999;-9999;-9999;
+6000;60.586;60.568;60.488;60.343;60.134;59.821;59.437;59.031;58.484;57.829;57.079;56.186;55.02;53.347;50.47;48.811;-9999;-9999;-9999;-9999;
+6500;60.781;60.761;60.677;60.528;60.315;59.998;59.609;59.201;58.654;57.97;57.254;56.372;55.233;53.621;50.897;-9999;-9999;-9999;-9999;-9999;
+7000;61.005;60.986;60.896;60.743;60.525;60.202;59.807;59.395;58.848;58.168;57.45;56.579;55.464;53.908;51.318;45.678;-9999;-9999;-9999;-9999;
+7500;61.264;61.245;61.148;60.99;60.767;60.438;60.035;59.619;59.071;58.391;57.673;56.81;55.717;54.193;51.739;46.851;-9999;-9999;-9999;-9999;
+8000;61.555;61.536;61.439;61.275;61.047;60.709;60.301;59.877;59.326;58.647;57.926;57.069;55.995;54.524;52.234;47.807;-9999;-9999;-9999;-9999;
+8500;61.902;61.876;61.775;61.606;61.372;61.023;60.609;60.176;59.62;58.939;58.215;57.361;56.304;54.88;52.715;48.68;-9999;-9999;-9999;-9999;
+9000;62.295;62.269;62.162;61.987;61.744;61.387;60.967;60.521;59.957;59.289;58.545;57.692;56.648;55.266;53.215;49.577;-9999;-9999;-9999;-9999;
+9500;62.755;62.724;62.612;62.43;62.177;61.81;61.378;60.92;60.348;59.673;58.924;58.071;57.036;55.69;53.742;50.444;-9999;-9999;-9999;-9999;
+10000;63.29;63.27;63.133;62.942;62.679;62.302;61.857;61.384;60.802;60.117;59.36;58.503;57.476;56.16;54.304;51.274;-9999;-9999;-9999;-9999;
+10500;63.901;63.867;63.751;63.539;63.264;62.875;62.415;61.926;61.33;60.632;59.863;58.999;57.977;56.686;54.912;52.096;-9999;-9999;-9999;-9999;
+11000;64.626;64.591;64.465;64.241;63.948;63.545;63.067;62.559;61.947;61.233;60.449;59.573;58.55;57.28;55.579;52.908;47.744;-9999;-9999;-9999;
+11500;65.705;65.662;65.528;65.292;64.984;64.564;64.065;63.532;62.895;62.158;61.348;60.446;59.401;58.113;56.402;53.737;48.93;-9999;-9999;-9999;
+12000;66.883;66.859;66.684;66.442;66.114;65.674;65.153;64.59;63.924;63.162;62.323;61.392;60.322;59.015;57.298;54.649;-9999;-9999;-9999;-9999;
+12500;68.176;68.15;67.96;67.702;67.351;66.89;66.342;65.745;65.047;64.256;63.384;62.421;61.322;59.998;58.275;55.656;-9999;-9999;-9999;-9999;
+13000;69.589;69.535;69.368;69.09;68.712;68.227;67.649;67.013;66.278;65.453;64.543;63.542;62.412;61.07;59.344;56.774;-9999;-9999;-9999;-9999;
+13500;71.161;71.104;70.923;70.625;70.217;69.704;69.091;68.41;67.633;66.767;65.811;64.767;63.602;62.244;60.52;58.07;-9999;-9999;-9999;-9999;
+14000;72.919;72.851;72.654;72.333;71.889;71.344;70.689;69.957;69.125;68.213;67.208;66.115;64.911;63.53;61.82;59.477;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;58.698;58.671;58.644;58.498;58.356;58.101;57.757;57.324;56.772;56.081;55.236;54.137;52.376;48.539;-9999;-9999;-9999;-9999;-9999;-9999;
+500;58.626;58.599;58.599;58.454;58.309;58.052;57.719;57.283;56.723;56.033;55.199;54.124;52.435;48.903;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;58.558;58.593;58.564;58.417;58.271;58.012;57.68;57.26;56.7;56.006;55.169;54.119;52.496;49.215;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;58.631;58.606;58.571;58.435;58.279;58.009;57.666;57.247;56.687;55.999;55.17;54.114;52.552;49.486;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;58.71;58.664;58.612;58.475;58.317;58.045;57.703;57.288;56.725;56.028;55.19;54.145;52.621;49.714;46.293;-9999;-9999;-9999;-9999;-9999;
+2500;58.727;58.715;58.66;58.523;58.363;58.089;57.747;57.334;56.777;56.091;55.268;54.237;52.717;49.893;46.827;-9999;-9999;-9999;-9999;-9999;
+3000;58.791;58.779;58.721;58.583;58.419;58.143;57.8;57.389;56.841;56.166;55.357;54.346;52.853;50.148;47.343;-9999;-9999;-9999;-9999;-9999;
+3500;58.868;58.845;58.797;58.658;58.491;58.213;57.866;57.461;56.918;56.25;55.451;54.457;52.994;50.43;47.908;-9999;-9999;-9999;-9999;-9999;
+4000;58.961;58.974;58.905;58.757;58.576;58.295;57.944;57.541;57;56.338;55.551;54.55;53.138;50.749;45.205;-9999;-9999;-9999;-9999;-9999;
+4500;59.146;59.13;59.059;58.908;58.722;58.427;58.058;57.643;57.092;56.423;55.636;54.655;53.288;51.026;45.993;-9999;-9999;-9999;-9999;-9999;
+5000;59.353;59.287;59.215;59.076;58.874;58.572;58.197;57.783;57.222;56.545;55.752;54.776;53.435;51.303;46.72;-9999;-9999;-9999;-9999;-9999;
+5500;59.481;59.464;59.388;59.246;59.04;58.734;58.356;57.939;57.379;56.706;55.921;54.96;53.65;51.621;47.421;-9999;-9999;-9999;-9999;-9999;
+6000;59.683;59.664;59.585;59.438;59.228;58.918;58.535;58.116;57.556;56.885;56.107;55.161;53.889;51.954;48.177;-9999;-9999;-9999;-9999;-9999;
+6500;59.913;59.891;59.808;59.658;59.443;59.128;58.739;58.317;57.755;57.085;56.313;55.382;54.144;52.294;48.845;-9999;-9999;-9999;-9999;-9999;
+7000;60.177;60.156;60.064;59.908;59.688;59.367;58.972;58.546;57.982;57.312;56.544;55.625;54.418;52.647;49.469;-9999;-9999;-9999;-9999;-9999;
+7500;60.47;60.448;60.356;60.195;59.968;59.641;59.238;58.807;58.241;57.569;56.802;55.894;54.716;53.016;50.056;-9999;-9999;-9999;-9999;-9999;
+8000;60.809;60.787;60.691;60.523;60.29;59.954;59.543;59.106;58.535;57.86;57.094;56.195;55.042;53.408;50.63;48.529;-9999;-9999;-9999;-9999;
+8500;61.2;61.175;61.074;60.9;60.659;60.315;59.894;59.448;58.872;58.193;57.424;56.531;55.4;53.826;51.174;49.572;-9999;-9999;-9999;-9999;
+9000;61.651;61.623;61.516;61.334;61.084;60.729;60.298;59.841;59.26;58.548;57.802;56.911;55.798;54.279;51.769;46.493;-9999;-9999;-9999;-9999;
+9500;62.172;62.14;62.027;61.836;61.575;61.21;60.764;60.295;59.705;58.986;58.232;57.341;56.242;54.772;52.436;47.889;-9999;-9999;-9999;-9999;
+10000;62.774;62.753;62.618;62.418;62.145;61.765;61.307;60.821;60.218;59.491;58.725;57.831;56.742;55.302;53.163;49.06;-9999;-9999;-9999;-9999;
+10500;63.479;63.441;63.312;63.099;62.81;62.412;61.941;61.432;60.812;60.075;59.293;58.392;57.309;55.908;53.891;50.217;-9999;-9999;-9999;-9999;
+11000;64.318;64.273;64.135;63.909;63.601;63.183;62.689;62.147;61.504;60.756;59.953;59.039;57.957;56.591;54.674;51.378;-9999;-9999;-9999;-9999;
+11500;65.419;65.401;65.255;65.014;64.685;64.248;63.731;63.159;62.492;61.716;60.887;59.949;58.846;57.467;55.566;52.386;-9999;-9999;-9999;-9999;
+12000;66.629;66.603;66.483;66.225;65.872;65.413;64.869;64.267;63.571;62.761;61.901;60.929;59.806;58.423;56.541;53.471;-9999;-9999;-9999;-9999;
+12500;68.06;68.004;67.837;67.558;67.178;66.694;66.118;65.481;64.745;63.903;63.002;61.998;60.849;59.463;57.6;54.698;-9999;-9999;-9999;-9999;
+13000;69.578;69.516;69.332;69.034;68.622;68.109;67.493;66.812;66.033;65.153;64.21;63.169;61.991;60.599;58.769;56.097;-9999;-9999;-9999;-9999;
+13500;71.272;71.198;70.996;70.675;70.223;69.681;69.021;68.28;67.456;66.533;65.542;64.458;63.248;61.848;60.067;57.705;-9999;-9999;-9999;-9999;
+14000;73.176;73.08;72.857;72.508;72.007;71.424;70.721;69.913;69.038;68.066;67.018;65.885;64.639;63.233;61.513;59.569;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;57.42;57.392;57.364;57.225;57.039;56.762;56.399;55.946;55.385;54.674;53.793;52.631;50.6;46.919;-9999;-9999;-9999;-9999;-9999;-9999;
+500;57.366;57.338;57.322;57.195;57.021;56.741;56.379;55.929;55.371;54.665;53.798;52.667;50.721;45.835;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;57.361;57.336;57.298;57.167;57.008;56.728;56.367;55.921;55.363;54.662;53.804;52.703;50.829;46.241;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;57.458;57.392;57.353;57.202;57.046;56.756;56.387;55.933;55.366;54.672;53.829;52.747;50.928;46.598;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;57.471;57.446;57.402;57.263;57.098;56.812;56.445;55.996;55.432;54.732;53.881;52.783;51.028;47.036;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;57.501;57.544;57.487;57.347;57.18;56.893;56.52;56.063;55.508;54.815;53.974;52.879;51.157;47.457;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;57.654;57.629;57.581;57.44;57.272;56.99;56.619;56.165;55.598;54.904;54.056;52.976;51.324;47.898;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;57.824;57.737;57.678;57.537;57.369;57.093;56.722;56.268;55.697;54.994;54.147;53.087;51.494;48.31;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;57.891;57.866;57.807;57.656;57.473;57.186;56.82;56.369;55.8;55.102;54.266;53.21;51.667;48.678;45.259;-9999;-9999;-9999;-9999;-9999;
+4500;57.976;58.041;57.971;57.818;57.631;57.337;56.964;56.499;55.92;55.222;54.397;53.36;51.859;49.035;45.843;-9999;-9999;-9999;-9999;-9999;
+5000;58.245;58.227;58.154;57.999;57.808;57.509;57.139;56.674;56.097;55.393;54.564;53.535;52.078;49.388;46.532;-9999;-9999;-9999;-9999;-9999;
+5500;58.54;58.436;58.36;58.202;58.005;57.702;57.316;56.868;56.29;55.59;54.769;53.759;52.347;49.819;47.199;-9999;-9999;-9999;-9999;-9999;
+6000;58.692;58.672;58.592;58.442;58.228;57.919;57.529;57.083;56.505;55.807;54.993;53.999;52.63;50.261;47.896;-9999;-9999;-9999;-9999;-9999;
+6500;58.875;58.937;58.853;58.699;58.48;58.165;57.77;57.323;56.743;56.046;55.238;54.26;52.93;50.731;45.73;-9999;-9999;-9999;-9999;-9999;
+7000;59.259;59.237;59.149;58.989;58.764;58.442;58.043;57.593;57.009;56.313;55.51;54.544;53.26;51.175;46.612;-9999;-9999;-9999;-9999;-9999;
+7500;59.688;59.576;59.484;59.318;59.086;58.757;58.35;57.897;57.309;56.611;55.811;54.857;53.607;51.631;47.483;-9999;-9999;-9999;-9999;-9999;
+8000;59.99;59.963;59.866;59.693;59.453;59.115;58.699;58.242;57.648;56.947;56.149;55.203;53.983;52.106;48.389;-9999;-9999;-9999;-9999;-9999;
+8500;60.346;60.405;60.302;60.121;59.872;59.525;59.098;58.632;58.034;57.326;56.527;55.589;54.395;52.608;49.272;-9999;-9999;-9999;-9999;-9999;
+9000;60.942;60.911;60.802;60.612;60.352;59.994;59.555;59.078;58.472;57.757;56.955;56.021;54.849;53.148;50.098;-9999;-9999;-9999;-9999;-9999;
+9500;61.62;61.494;61.378;61.179;60.907;60.536;60.081;59.59;58.974;58.251;57.44;56.507;55.355;53.731;50.903;-9999;-9999;-9999;-9999;-9999;
+10000;62.216;62.178;62.052;61.838;61.546;61.162;60.69;60.181;59.552;58.817;57.996;57.06;55.922;54.368;51.719;-9999;-9999;-9999;-9999;-9999;
+10500;62.928;62.981;62.846;62.619;62.31;61.904;61.405;60.867;60.221;59.471;58.634;57.692;56.565;55.07;52.536;50.735;-9999;-9999;-9999;-9999;
+11000;63.961;63.916;63.771;63.529;63.198;62.773;62.251;61.688;61.014;60.236;59.374;58.424;57.303;55.861;53.515;51.857;-9999;-9999;-9999;-9999;
+11500;65.163;65.106;64.95;64.692;64.336;63.889;63.336;62.736;62.031;61.222;60.332;59.354;58.217;56.774;54.497;52.761;-9999;-9999;-9999;-9999;
+12000;66.489;66.46;66.25;65.97;65.587;65.116;64.523;63.878;63.142;62.3;61.38;60.372;59.212;57.788;55.583;53.781;-9999;-9999;-9999;-9999;
+12500;67.959;67.87;67.687;67.383;66.96;66.461;65.83;65.136;64.364;63.485;62.529;61.488;60.304;58.896;56.789;54.883;-9999;-9999;-9999;-9999;
+13000;69.558;69.485;69.289;68.951;68.486;67.946;67.272;66.527;65.714;64.795;63.796;62.717;61.511;60.12;58.136;-9999;-9999;-9999;-9999;-9999;
+13500;71.361;71.29;71.076;70.703;70.183;69.603;68.878;68.074;67.214;66.247;65.198;64.077;62.847;61.474;59.65;57.494;-9999;-9999;-9999;-9999;
+14000;73.416;73.319;73.073;72.663;72.086;71.462;70.678;69.805;68.89;67.866;66.76;65.59;64.334;62.979;61.364;59.185;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;56.088;55.959;55.891;55.729;55.524;55.239;54.865;54.394;53.827;53.097;52.197;50.978;48.317;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;55.995;55.967;55.907;55.752;55.547;55.26;54.886;54.418;53.855;53.138;52.252;51.042;48.544;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;56.055;56.029;55.95;55.792;55.582;55.294;54.923;54.457;53.895;53.184;52.308;51.103;48.761;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;56.228;56.119;56.044;55.881;55.673;55.379;55;54.527;53.956;53.239;52.359;51.171;48.962;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;56.228;56.202;56.132;55.976;55.77;55.476;55.099;54.628;54.058;53.328;52.434;51.251;49.166;45.546;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;56.241;56.287;56.223;56.062;55.858;55.564;55.187;54.718;54.146;53.425;52.543;51.385;49.393;45.924;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;56.397;56.372;56.315;56.158;55.952;55.657;55.28;54.815;54.245;53.53;52.659;51.525;49.628;45.055;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;56.572;56.479;56.421;56.263;56.057;55.761;55.384;54.92;54.352;53.644;52.783;51.672;49.86;45.54;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;56.656;56.63;56.569;56.408;56.189;55.88;55.499;55.037;54.47;53.767;52.917;51.827;50.09;46.038;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;56.77;56.831;56.759;56.595;56.368;56.05;55.661;55.187;54.611;53.904;53.061;51.993;50.329;46.582;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;57.071;57.045;56.975;56.815;56.585;56.263;55.862;55.377;54.799;54.095;53.251;52.195;50.606;47.208;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;57.402;57.296;57.218;57.058;56.824;56.498;56.094;55.608;55.021;54.306;53.47;52.432;50.906;47.783;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;57.592;57.566;57.486;57.323;57.089;56.758;56.35;55.862;55.274;54.562;53.721;52.679;51.222;48.33;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;57.814;57.874;57.787;57.619;57.384;57.047;56.634;56.143;55.554;54.842;54.008;52.979;51.558;48.837;45.753;-9999;-9999;-9999;-9999;-9999;
+7000;58.242;58.217;58.126;57.956;57.714;57.37;56.952;56.456;55.864;55.152;54.322;53.31;51.936;49.36;46.413;-9999;-9999;-9999;-9999;-9999;
+7500;58.722;58.604;58.509;58.333;58.086;57.734;57.308;56.805;56.209;55.496;54.669;53.67;52.341;49.947;47.239;-9999;-9999;-9999;-9999;-9999;
+8000;59.073;59.043;58.942;58.76;58.505;58.145;57.695;57.198;56.597;55.88;55.054;54.067;52.777;50.546;48.04;-9999;-9999;-9999;-9999;-9999;
+8500;59.485;59.543;59.435;59.245;58.982;58.611;58.15;57.643;57.034;56.311;55.484;54.506;53.25;51.164;48.913;-9999;-9999;-9999;-9999;-9999;
+9000;60.147;60.113;59.998;59.799;59.526;59.143;58.669;58.15;57.531;56.798;55.967;54.996;53.772;51.835;47.749;-9999;-9999;-9999;-9999;-9999;
+9500;60.916;60.779;60.654;60.439;60.149;59.753;59.263;58.728;58.096;57.352;56.515;55.547;54.35;52.514;48.909;-9999;-9999;-9999;-9999;-9999;
+10000;61.599;61.556;61.422;61.194;60.885;60.469;59.952;59.393;58.745;57.986;57.142;56.177;54.994;53.249;50.026;-9999;-9999;-9999;-9999;-9999;
+10500;62.401;62.458;62.314;62.071;61.742;61.308;60.77;60.184;59.511;58.727;57.864;56.892;55.725;54.051;51.26;-9999;-9999;-9999;-9999;-9999;
+11000;63.566;63.514;63.358;63.097;62.732;62.288;61.724;61.109;60.411;59.602;58.714;57.721;56.535;54.958;52.461;-9999;-9999;-9999;-9999;-9999;
+11500;64.849;64.764;64.597;64.308;63.909;63.434;62.837;62.185;61.459;60.619;59.701;58.685;57.505;55.961;53.617;-9999;-9999;-9999;-9999;-9999;
+12000;66.274;66.145;65.966;65.646;65.205;64.698;64.064;63.369;62.61;61.735;60.784;59.74;58.563;57.066;54.923;-9999;-9999;-9999;-9999;-9999;
+12500;67.759;67.684;67.474;67.126;66.642;66.101;65.422;64.678;63.88;62.966;61.976;60.903;59.721;58.285;56.409;-9999;-9999;-9999;-9999;-9999;
+13000;69.425;69.386;69.162;68.781;68.248;67.668;66.939;66.137;65.295;64.331;63.296;62.191;61.002;59.644;58.132;-9999;-9999;-9999;-9999;-9999;
+13500;71.413;71.316;71.061;70.642;70.052;69.426;68.637;67.768;66.874;65.854;64.765;63.625;62.429;61.163;60.11;-9999;-9999;-9999;-9999;-9999;
+14000;73.683;73.495;73.212;72.749;72.089;71.409;70.55;69.601;68.648;67.563;66.412;65.226;64.026;62.868;62.424;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;54.327;54.292;54.2;54.036;53.814;53.568;53.227;52.79;52.223;51.438;50.367;48.852;45.57;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;54.375;54.348;54.279;54.115;53.888;53.614;53.271;52.836;52.273;51.5;50.489;49.028;45.805;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;54.475;54.449;54.361;54.193;53.967;53.677;53.324;52.878;52.31;51.536;50.602;49.314;46.149;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;54.56;54.559;54.473;54.305;54.08;53.786;53.415;52.952;52.374;51.593;50.685;49.419;46.617;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;54.706;54.68;54.591;54.424;54.2;53.901;53.523;53.046;52.474;51.719;50.78;49.549;46.882;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;54.858;54.805;54.718;54.551;54.327;54.025;53.645;53.16;52.588;51.858;50.93;49.724;47.176;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;54.97;54.944;54.855;54.687;54.463;54.16;53.775;53.292;52.713;51.978;51.093;49.904;47.557;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;55.101;55.075;55.005;54.835;54.61;54.306;53.919;53.437;52.863;52.137;51.262;50.091;47.893;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;55.323;55.297;55.198;55.022;54.784;54.468;54.076;53.595;53.022;52.306;51.435;50.288;48.224;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;55.568;55.51;55.414;55.237;54.998;54.679;54.279;53.786;53.204;52.484;51.621;50.497;48.574;45.227;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;55.78;55.754;55.653;55.472;55.23;54.908;54.506;54.012;53.431;52.714;51.854;50.752;48.945;45.764;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;56.024;55.997;55.915;55.732;55.486;55.159;54.755;54.259;53.678;52.964;52.111;51.03;49.343;46.419;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;56.34;56.314;56.205;56.019;55.768;55.437;55.028;54.53;53.948;53.236;52.39;51.328;49.726;45.839;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;56.699;56.638;56.528;56.339;56.083;55.746;55.332;54.83;54.245;53.535;52.694;51.65;50.126;46.443;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;57.069;57.042;56.919;56.72;56.449;56.098;55.668;55.163;54.574;53.864;53.029;51.999;50.549;47.183;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;57.494;57.467;57.357;57.152;56.872;56.511;56.073;55.549;54.942;54.23;53.397;52.381;50.999;47.952;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;58.015;57.987;57.85;57.635;57.347;56.976;56.528;55.994;55.381;54.651;53.806;52.807;51.48;48.692;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;58.604;58.539;58.408;58.185;57.885;57.501;57.04;56.494;55.873;55.137;54.292;53.29;51.982;49.422;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;59.237;59.19;59.049;58.811;58.496;58.098;57.622;57.061;56.429;55.687;54.841;53.847;52.551;50.178;47.786;-9999;-9999;-9999;-9999;-9999;
+9500;59.986;59.956;59.806;59.553;59.216;58.796;58.294;57.713;57.069;56.314;55.46;54.472;53.19;51.04;48.69;-9999;-9999;-9999;-9999;-9999;
+10000;60.887;60.831;60.672;60.407;60.05;59.611;59.066;58.475;57.805;57.027;56.162;55.157;53.903;51.957;49.744;-9999;-9999;-9999;-9999;-9999;
+10500;61.926;61.846;61.675;61.392;61.013;60.551;59.979;59.36;58.669;57.859;56.954;55.936;54.717;52.944;50.813;-9999;-9999;-9999;-9999;-9999;
+11000;63.08;63.014;62.831;62.528;62.122;61.631;61.025;60.371;59.647;58.805;57.879;56.851;55.649;54.021;52.075;-9999;-9999;-9999;-9999;-9999;
+11500;64.407;64.321;64.121;63.794;63.354;62.833;62.189;61.494;60.738;59.865;58.91;57.862;56.668;55.139;53.215;-9999;-9999;-9999;-9999;-9999;
+12000;65.848;65.764;65.545;65.19;64.71;64.152;63.465;62.727;61.944;61.033;60.044;58.976;57.792;56.385;54.499;-9999;-9999;-9999;-9999;-9999;
+12500;67.465;67.378;67.138;66.749;66.223;65.621;64.882;64.092;63.266;62.324;61.3;60.208;59.037;57.779;55.956;-9999;-9999;-9999;-9999;-9999;
+13000;69.277;69.194;68.928;68.5;67.892;67.265;66.468;65.614;64.742;63.751;62.695;61.579;60.424;59.35;57.622;-9999;-9999;-9999;-9999;-9999;
+13500;71.371;71.25;70.954;70.48;69.8;69.119;68.251;67.324;66.395;65.347;64.241;63.11;61.977;61.131;59.535;-9999;-9999;-9999;-9999;-9999;
+14000;73.782;73.73;73.268;72.734;71.967;71.221;70.269;69.256;68.258;67.141;65.972;64.81;63.727;63.168;61.788;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;52.365;52.339;52.251;52.137;51.958;51.689;51.319;50.84;50.189;49.335;48.19;46.305;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;52.45;52.424;52.38;52.241;52.066;51.793;51.427;50.951;50.317;49.471;48.328;46.614;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;52.626;52.602;52.516;52.366;52.2;51.92;51.55;51.072;50.446;49.612;48.49;46.87;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;52.784;52.759;52.663;52.519;52.345;52.08;51.715;51.242;50.612;49.776;48.657;47.111;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;52.956;52.931;52.823;52.662;52.483;52.23;51.879;51.419;50.799;49.98;48.873;47.376;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;53.138;53.091;52.991;52.823;52.624;52.375;52.024;51.569;50.99;50.182;49.128;47.674;44.739;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;53.308;53.283;53.177;53.002;52.776;52.528;52.177;51.725;51.149;50.376;49.363;47.952;45.01;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;53.5;53.472;53.372;53.195;52.955;52.695;52.341;51.89;51.315;50.55;49.586;48.235;45.443;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;53.751;53.725;53.611;53.425;53.17;52.877;52.517;52.066;51.494;50.737;49.788;48.569;45.932;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;54.027;53.978;53.87;53.684;53.423;53.111;52.74;52.275;51.696;50.937;50.016;48.832;46.467;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;54.297;54.271;54.153;53.963;53.699;53.372;52.997;52.524;51.944;51.194;50.293;49.14;46.929;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;54.603;54.576;54.463;54.268;54;53.665;53.275;52.794;52.215;51.471;50.592;49.489;47.466;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;54.952;54.925;54.8;54.603;54.33;53.986;53.578;53.089;52.512;51.773;50.912;49.833;47.956;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;55.342;55.291;55.172;54.972;54.693;54.343;53.92;53.415;52.838;52.106;51.228;50.198;48.453;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;55.751;55.723;55.589;55.383;55.095;54.738;54.306;53.779;53.198;52.471;51.612;50.6;48.959;46.187;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;56.221;56.193;56.056;55.842;55.545;55.178;54.737;54.201;53.606;52.877;52.038;51.038;49.487;46.871;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;56.763;56.734;56.584;56.363;56.053;55.675;55.223;54.677;54.068;53.339;52.509;51.502;50.058;47.667;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;57.381;57.329;57.184;56.947;56.632;56.239;55.773;55.214;54.592;53.865;53.032;52.015;50.653;47.871;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;58.113;58.082;57.905;57.645;57.299;56.882;56.398;55.822;55.192;54.453;53.595;52.588;51.292;48.686;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;58.967;58.934;58.74;58.463;58.101;57.658;57.136;56.516;55.855;55.095;54.234;53.233;51.991;49.732;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;59.919;59.856;59.679;59.389;59.002;58.536;57.987;57.342;56.649;55.85;54.97;53.97;52.787;50.824;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;61.023;60.961;60.77;60.46;60.045;59.551;58.972;58.293;57.576;56.755;55.846;54.833;53.682;51.959;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;62.327;62.253;62.045;61.711;61.262;60.735;60.118;59.401;58.653;57.803;56.871;55.852;54.713;53.19;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;63.667;63.628;63.391;63.025;62.537;61.973;61.314;60.551;59.769;58.886;57.927;56.903;55.809;54.546;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;65.167;65.126;64.892;64.492;63.958;63.348;62.642;61.827;60.998;60.079;59.089;58.063;57.026;56.086;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;66.962;66.853;66.577;66.138;65.548;64.886;64.124;63.248;62.397;61.442;60.411;59.365;58.387;57.85;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;69.007;68.788;68.483;67.995;67.34;66.616;65.788;64.87;63.972;62.974;61.904;60.805;59.925;59.888;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;71.137;70.993;70.648;70.106;69.371;68.573;67.691;66.708;65.748;64.692;63.578;62.454;61.626;62.262;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;73.582;73.525;73.132;72.521;71.626;70.816;69.868;68.788;67.755;66.631;65.465;64.332;63.589;65.062;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;50.263;50.225;50.127;49.973;49.78;49.501;49.117;48.608;47.932;47.046;45.968;44.606;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;50.378;50.373;50.278;50.146;49.926;49.649;49.27;48.766;48.099;47.226;46.14;44.525;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;50.59;50.565;50.488;50.341;50.111;49.829;49.449;48.94;48.27;47.41;46.32;44.592;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;50.814;50.76;50.677;50.538;50.312;50.03;49.655;49.153;48.485;47.623;46.509;44.764;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;51.052;50.964;50.886;50.744;50.507;50.237;49.867;49.371;48.713;47.865;46.75;45.016;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;51.204;51.18;51.106;50.959;50.738;50.45;50.085;49.596;48.946;48.115;47.004;45.319;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;51.429;51.404;51.331;51.179;50.979;50.677;50.313;49.829;49.189;48.372;47.255;45.69;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;51.672;51.648;51.57;51.413;51.219;50.916;50.552;50.07;49.441;48.638;47.534;46.076;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;51.943;51.918;51.84;51.68;51.477;51.17;50.803;50.326;49.705;48.917;47.845;46.473;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;52.234;52.21;52.13;51.967;51.75;51.458;51.091;50.607;49.988;49.212;48.178;46.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;52.572;52.547;52.415;52.274;52.056;51.76;51.384;50.903;50.32;49.551;48.551;47.281;44.942;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;52.946;52.92;52.787;52.613;52.388;52.086;51.706;51.222;50.639;49.889;48.942;47.677;45.271;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;53.362;53.281;53.156;52.981;52.748;52.441;52.055;51.567;50.983;50.239;49.333;48.091;45.809;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;53.826;53.717;53.583;53.391;53.146;52.831;52.438;51.945;51.36;50.622;49.727;48.561;46.409;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;54.345;54.201;54.062;53.847;53.59;53.266;52.864;52.365;51.775;51.039;50.144;48.979;47.077;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;54.791;54.763;54.596;54.367;54.084;53.748;53.337;52.829;52.234;51.496;50.594;49.459;47.765;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;55.306;55.331;55.181;54.947;54.637;54.288;53.866;53.345;52.738;51.981;51.09;49.985;48.483;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;56.066;56.036;55.848;55.595;55.244;54.877;54.44;53.903;53.284;52.527;51.639;50.567;49.252;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;56.935;56.777;56.607;56.328;55.963;55.562;55.098;54.536;53.906;53.145;52.262;51.214;50.034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;57.73;57.698;57.482;57.183;56.796;56.359;55.867;55.279;54.629;53.856;52.971;51.949;50.885;49.591;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;58.662;58.682;58.485;58.17;57.756;57.279;56.754;56.138;55.469;54.684;53.793;52.787;51.813;50.604;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;59.95;59.914;59.66;59.317;58.871;58.348;57.789;57.135;56.439;55.636;54.734;53.739;52.836;51.701;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;61.472;61.432;61.037;60.659;60.174;59.613;58.999;58.299;57.571;56.741;55.821;54.858;53.987;54.044;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;62.742;62.701;62.421;62.01;61.478;60.89;60.247;59.505;58.743;57.886;56.95;55.962;55.205;56.219;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;64.171;64.127;63.974;63.523;62.946;62.329;61.64;60.844;60.042;59.153;58.199;57.188;56.605;58.833;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;66.174;66.045;65.725;65.236;64.62;63.946;63.197;62.335;61.488;60.562;59.589;58.601;58.169;62.012;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;68.472;68.072;67.711;67.192;66.513;65.768;64.947;64.01;63.107;62.139;61.144;60.186;59.947;65.938;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;70.573;70.516;70.026;69.458;68.665;67.832;66.924;65.898;64.932;63.914;62.895;61.975;61.986;63.621;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;73.299;73.116;72.68;72.039;71.131;70.19;69.176;68.043;67.001;65.923;64.877;64.008;64.343;67.078;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;47.856;47.803;47.712;47.538;47.334;47.054;46.657;46.127;45.438;44.6;43.841;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;48.03;48.006;47.882;47.753;47.543;47.253;46.844;46.337;45.661;44.823;44.003;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;48.309;48.264;48.17;47.998;47.788;47.495;47.1;46.573;45.888;45.045;44.199;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;48.557;48.533;48.429;48.247;48.041;47.746;47.353;46.831;46.154;45.298;44.409;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;48.82;48.777;48.653;48.54;48.3;48.001;47.614;47.094;46.426;45.575;44.651;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;49.082;49.058;48.95;48.809;48.565;48.268;47.885;47.369;46.705;45.861;44.909;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;49.364;49.322;49.199;49.075;48.84;48.544;48.158;47.652;46.992;46.162;45.176;44.073;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;49.652;49.628;49.515;49.373;49.126;48.83;48.446;47.944;47.291;46.475;45.46;44.188;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;49.981;49.956;49.838;49.647;49.408;49.13;48.747;48.249;47.603;46.801;45.764;44.422;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;50.335;50.311;50.189;49.995;49.768;49.467;49.079;48.578;47.939;47.151;46.117;44.768;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;50.719;50.695;50.564;50.391;50.143;49.831;49.444;48.947;48.314;47.531;46.475;45.187;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;51.116;51.092;50.967;50.776;50.553;50.221;49.834;49.339;48.71;47.925;46.896;45.69;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;51.552;51.514;51.398;51.201;50.976;50.639;50.251;49.756;49.133;48.345;47.344;46.224;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;52.016;51.991;51.865;51.662;51.43;51.09;50.699;50.203;49.574;48.795;47.818;46.767;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;52.526;52.501;52.368;52.166;51.89;51.565;51.174;50.669;50.043;49.277;48.322;47.289;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;53.104;53.077;52.926;52.716;52.422;52.077;51.677;51.163;50.559;49.797;48.864;47.835;46.843;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;53.772;53.744;53.556;53.331;53.022;52.655;52.233;51.707;51.101;50.354;49.451;48.424;47.335;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;54.548;54.427;54.282;54.046;53.708;53.307;52.869;52.324;51.709;50.958;50.085;49.07;48.079;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;55.334;55.303;55.114;54.84;54.499;54.075;53.607;53.028;52.394;51.637;50.775;49.792;48.985;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;56.25;56.238;56.059;55.768;55.401;54.951;54.448;53.848;53.193;52.425;51.574;50.601;49.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;57.324;57.352;57.153;56.84;56.439;55.958;55.424;54.787;54.11;53.331;52.479;51.539;51.105;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;58.731;58.694;58.435;58.086;57.644;57.126;56.553;55.878;55.172;54.38;53.516;52.617;52.346;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;60.29;60.25;59.937;59.55;59.059;58.492;57.872;57.148;56.409;55.593;54.714;53.834;53.696;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;61.719;61.677;61.387;60.964;60.418;59.798;59.132;58.358;57.584;56.745;55.87;55.051;55.252;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;63.446;63.401;63.022;62.548;61.938;61.256;60.533;59.711;58.902;58.036;57.153;56.411;57.004;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;65.413;65.207;64.86;64.338;63.648;62.89;62.115;61.23;60.379;59.488;58.591;57.939;59.024;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;67.671;67.351;66.956;66.396;65.578;64.742;63.894;62.94;62.036;61.117;60.225;59.667;61.373;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;70.012;69.955;69.368;68.716;67.784;66.857;65.922;64.873;63.907;62.954;62.074;61.634;64.128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;72.721;72.659;72.135;71.388;70.34;69.283;68.237;67.074;66.035;65.044;64.179;63.89;67.405;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;45.063;45.042;44.904;44.761;44.537;44.232;43.836;43.302;42.651;42.203;43.96;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;45.352;45.332;45.16;45.053;44.83;44.513;44.123;43.585;42.931;42.401;43.471;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;45.633;45.632;45.484;45.329;45.138;44.825;44.426;43.891;43.226;42.618;43.034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;45.982;45.961;45.832;45.642;45.45;45.143;44.741;44.208;43.55;42.875;42.864;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;46.306;46.284;46.154;45.965;45.754;45.455;45.061;44.528;43.87;43.159;42.889;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;46.649;46.592;46.484;46.296;46.074;45.8;45.375;44.859;44.212;43.448;43.006;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;47.012;46.93;46.824;46.636;46.41;46.119;45.704;45.192;44.557;43.773;43.213;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;47.329;47.306;47.185;46.988;46.759;46.457;46.047;45.55;44.896;44.093;43.513;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;47.667;47.655;47.545;47.352;47.124;46.815;46.436;45.921;45.25;44.446;43.853;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;48.089;48.066;47.941;47.74;47.509;47.193;46.802;46.283;45.624;44.837;44.187;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;48.544;48.455;48.312;48.154;47.914;47.596;47.203;46.688;46.035;45.271;44.555;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;48.95;48.926;48.792;48.626;48.345;48.023;47.629;47.117;46.47;45.714;44.951;45.063;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;49.393;49.384;49.233;49.093;48.807;48.481;48.085;47.574;46.931;46.185;45.383;45.185;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;49.952;49.928;49.783;49.612;49.28;48.973;48.574;48.062;47.423;46.686;45.848;45.517;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;50.569;50.544;50.349;50.169;49.842;49.508;49.101;48.587;47.951;47.223;46.376;45.988;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;51.15;51.125;50.961;50.753;50.461;50.089;49.675;49.157;48.522;47.803;46.975;46.578;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;51.816;51.806;51.648;51.413;51.121;50.727;50.304;49.779;49.144;48.432;47.623;47.293;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;52.656;52.629;52.438;52.174;51.866;51.441;51.001;50.463;49.836;49.121;48.339;48.073;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;53.609;53.492;53.312;53.049;52.704;52.256;51.799;51.237;50.603;49.893;49.127;48.861;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;54.628;54.598;54.356;54.059;53.647;53.186;52.707;52.112;51.466;50.755;49.998;49.703;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;55.825;55.764;55.536;55.221;54.764;54.264;53.744;53.107;52.445;51.718;50.974;50.673;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;57.284;57.249;56.933;56.572;56.065;55.516;54.954;54.273;53.588;52.832;52.079;51.738;53.801;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;59.015;58.846;58.56;58.125;57.594;56.984;56.366;55.636;54.916;54.153;53.377;52.9;55.098;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;60.419;60.379;60.014;59.531;58.944;58.275;57.612;56.833;56.086;55.3;54.57;54.224;57.46;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;62.146;62.103;61.659;61.12;60.457;59.717;59;58.171;57.386;56.592;55.899;55.733;60.266;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;64.115;63.896;63.5;62.957;62.159;61.335;60.565;59.666;58.852;58.031;57.391;57.444;63.674;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;66.378;66.071;65.618;64.997;64.086;63.168;62.314;61.349;60.495;59.664;59.071;59.401;67.838;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;68.81;68.756;68.066;67.331;66.287;65.259;64.307;63.25;62.345;61.545;60.977;61.656;73.045;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;71.634;71.479;70.859;70.023;68.829;67.651;66.579;65.412;64.446;63.652;63.156;64.298;79.721;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/V2527-A5_XN_HPC.csv b/engine/test/stubs/V2527-A5/V2527-A5_XN_HPC.csv
new file mode 100644
index 00000000..4f692aab
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/V2527-A5_XN_HPC.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.085;1.0852;1.0855;1.0861;1.0869;1.0881;1.0895;1.0913;1.0934;1.0957;1.0986;1.1016;1.1049;1.1084;1.1123;1.1164;1.1207;1.1253;1.1299;1.1347;
+500;1.082;1.0821;1.0825;1.083;1.0839;1.085;1.0864;1.0881;1.0901;1.0924;1.0952;1.0981;1.1014;1.1049;1.1087;1.1128;1.1172;1.1218;1.1264;1.1313;
+1000;1.0789;1.079;1.0794;1.08;1.0808;1.0819;1.0833;1.085;1.0869;1.0892;1.0917;1.0947;1.0979;1.1014;1.1052;1.1093;1.1136;1.1181;1.1229;1.1278;
+1500;1.0757;1.0759;1.0762;1.0768;1.0777;1.0789;1.0802;1.0819;1.0838;1.086;1.0886;1.0914;1.0945;1.0979;1.1017;1.1057;1.11;1.1145;1.1193;1.1242;
+2000;1.0725;1.0726;1.073;1.0736;1.0745;1.0757;1.0771;1.0788;1.0807;1.0829;1.0854;1.0881;1.0911;1.0944;1.0981;1.1021;1.1063;1.1108;1.1156;1.1206;
+2500;1.0691;1.0692;1.0696;1.0703;1.0712;1.0724;1.0739;1.0756;1.0776;1.0798;1.0822;1.085;1.0879;1.0911;1.0946;1.0985;1.1027;1.1071;1.1118;1.1168;
+3000;1.0655;1.0656;1.0661;1.0668;1.0678;1.069;1.0705;1.0723;1.0743;1.0766;1.079;1.0818;1.0847;1.0878;1.0912;1.095;1.0991;1.1035;1.1081;1.113;
+3500;1.0618;1.062;1.0624;1.0631;1.0641;1.0654;1.067;1.0689;1.071;1.0733;1.0758;1.0786;1.0815;1.0846;1.0879;1.0915;1.0955;1.0998;1.1044;1.1092;
+4000;1.058;1.0582;1.0586;1.0594;1.0604;1.0617;1.0634;1.0653;1.0674;1.0698;1.0724;1.0753;1.0782;1.0813;1.0846;1.0882;1.092;1.0962;1.1007;1.1055;
+4500;1.0542;1.0544;1.0549;1.0556;1.0567;1.058;1.0596;1.0615;1.0637;1.0662;1.069;1.0718;1.0748;1.078;1.0813;1.0848;1.0886;1.0926;1.0971;1.1018;
+5000;1.0504;1.0506;1.0511;1.0519;1.0529;1.0543;1.0559;1.0578;1.06;1.0624;1.0653;1.0682;1.0714;1.0746;1.078;1.0815;1.0852;1.0892;1.0934;1.098;
+5500;1.0466;1.0467;1.0472;1.048;1.049;1.0504;1.0521;1.0541;1.0563;1.0588;1.0616;1.0645;1.0677;1.0711;1.0745;1.0781;1.0818;1.0857;1.0899;1.0943;
+6000;1.0427;1.0427;1.0431;1.0439;1.045;1.0464;1.0482;1.0502;1.0525;1.055;1.0579;1.0609;1.0641;1.0674;1.0709;1.0746;1.0784;1.0823;1.0864;1.0907;
+6500;1.0386;1.0387;1.0392;1.0398;1.0409;1.0423;1.0441;1.0462;1.0485;1.0512;1.054;1.0571;1.0603;1.0638;1.0674;1.0711;1.0749;1.0788;1.0829;1.0871;
+7000;1.0348;1.035;1.0354;1.0361;1.0372;1.0385;1.0399;1.042;1.0444;1.0471;1.05;1.0531;1.0565;1.06;1.0637;1.0675;1.0714;1.0753;1.0794;1.0836;
+7500;1.0311;1.0312;1.0316;1.0323;1.0334;1.0347;1.0363;1.0381;1.0402;1.0429;1.0459;1.0491;1.0524;1.056;1.0598;1.0637;1.0677;1.0718;1.0759;1.0801;
+8000;1.0273;1.0273;1.0278;1.0285;1.0295;1.0308;1.0324;1.0343;1.0364;1.0389;1.0416;1.0449;1.0483;1.052;1.0558;1.0598;1.0639;1.0682;1.0724;1.0766;
+8500;1.0235;1.0235;1.0239;1.0246;1.0256;1.027;1.0285;1.0304;1.0325;1.035;1.0377;1.0406;1.0441;1.0478;1.0517;1.0558;1.06;1.0643;1.0687;1.0731;
+9000;1.0191;1.0192;1.0197;1.0204;1.0215;1.0228;1.0245;1.0264;1.0286;1.031;1.0338;1.0367;1.0399;1.0435;1.0475;1.0517;1.0559;1.0603;1.0648;1.0694;
+9500;1.0146;1.0148;1.0153;1.0161;1.0171;1.0185;1.0202;1.0221;1.0244;1.0269;1.0297;1.0327;1.0359;1.0393;1.0431;1.0474;1.0517;1.0562;1.0608;1.0654;
+10000;1.0104;1.0106;1.011;1.0118;1.0128;1.0141;1.0158;1.0178;1.0201;1.0226;1.0254;1.0284;1.0317;1.0353;1.0389;1.0429;1.0474;1.052;1.0567;1.0614;
+10500;1.0062;1.0063;1.0068;1.0075;1.0085;1.0098;1.0114;1.0133;1.0156;1.0182;1.021;1.024;1.0273;1.0309;1.0347;1.0387;1.0428;1.0476;1.0524;1.0572;
+11000;1.0019;1.002;1.0025;1.0032;1.0042;1.0055;1.0071;1.009;1.0111;1.0137;1.0165;1.0196;1.0229;1.0264;1.0302;1.0342;1.0385;1.0429;1.0479;1.0529;
+11500;1.0021;1.0023;1.0027;1.0034;1.0045;1.0058;1.0074;1.0092;1.0114;1.0138;1.0167;1.0198;1.0231;1.0267;1.0304;1.0345;1.0387;1.0432;1.0483;1.0535;
+12000;1.0023;1.0025;1.0029;1.0037;1.0047;1.006;1.0076;1.0095;1.0116;1.0141;1.017;1.0201;1.0234;1.0269;1.0307;1.0347;1.039;1.0435;1.0486;1.0538;
+12500;1.0026;1.0027;1.0032;1.0039;1.0049;1.0063;1.0079;1.0097;1.0119;1.0143;1.0172;1.0203;1.0236;1.0272;1.0309;1.035;1.0392;1.0437;1.0488;1.054;
+13000;1.0029;1.0029;1.0034;1.0042;1.0052;1.0065;1.0081;1.01;1.0121;1.0146;1.0175;1.0206;1.0239;1.0274;1.0312;1.0352;1.0395;1.044;1.0491;1.0543;
+13500;1.003;1.0031;1.0036;1.0044;1.0054;1.0067;1.0083;1.0102;1.0124;1.0148;1.0177;1.0208;1.0241;1.0277;1.0314;1.0355;1.0397;1.0443;1.0494;1.0546;
+14000;1.0024;1.0026;1.003;1.0038;1.0049;1.0064;1.0081;1.0101;1.0124;1.0151;1.018;1.0211;1.0244;1.0279;1.0317;1.0357;1.04;1.0445;1.0496;1.0548;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0635;1.0636;1.0639;1.0645;1.0654;1.0665;1.0679;1.0696;1.0716;1.074;1.0768;1.0797;1.083;1.0864;1.0901;1.094;1.0982;1.1027;1.1075;1.1127;
+500;1.0601;1.0602;1.0606;1.0611;1.062;1.0631;1.0645;1.0661;1.0682;1.0707;1.0734;1.0764;1.0796;1.083;1.0867;1.0906;1.0948;1.0992;1.1039;1.109;
+1000;1.0567;1.0568;1.0572;1.0577;1.0586;1.0597;1.0611;1.0628;1.0648;1.0671;1.0699;1.0729;1.0762;1.0796;1.0833;1.0872;1.0913;1.0957;1.1003;1.1053;
+1500;1.0533;1.0534;1.0538;1.0543;1.0552;1.0563;1.0576;1.0593;1.0614;1.0638;1.0665;1.0695;1.0727;1.0762;1.0799;1.0838;1.0879;1.0922;1.0968;1.1016;
+2000;1.0499;1.05;1.0504;1.0509;1.0518;1.0528;1.0542;1.0559;1.058;1.0604;1.0631;1.066;1.0692;1.0726;1.0763;1.0803;1.0844;1.0887;1.0932;1.098;
+2500;1.0465;1.0466;1.047;1.0475;1.0484;1.0494;1.0508;1.0525;1.0545;1.057;1.0596;1.0626;1.0657;1.0692;1.0728;1.0767;1.0809;1.0852;1.0897;1.0944;
+3000;1.0431;1.0433;1.0436;1.0442;1.045;1.0461;1.0474;1.0491;1.0511;1.0534;1.0562;1.0591;1.0622;1.0657;1.0693;1.0732;1.0773;1.0816;1.0861;1.0908;
+3500;1.0399;1.04;1.0404;1.0409;1.0417;1.0427;1.0441;1.0457;1.0477;1.05;1.0527;1.0556;1.0587;1.0621;1.0658;1.0696;1.0737;1.078;1.0825;1.0872;
+4000;1.0367;1.0369;1.0372;1.0377;1.0384;1.0395;1.0408;1.0424;1.0443;1.0466;1.0492;1.052;1.0552;1.0585;1.0622;1.066;1.0701;1.0744;1.0789;1.0836;
+4500;1.0336;1.0338;1.0341;1.0347;1.0354;1.0364;1.0377;1.0392;1.041;1.0432;1.0458;1.0485;1.0516;1.0549;1.0585;1.0624;1.0665;1.0708;1.0753;1.08;
+5000;1.0307;1.0308;1.0311;1.0316;1.0324;1.0334;1.0347;1.0362;1.038;1.04;1.0423;1.0451;1.0481;1.0514;1.0549;1.0587;1.0628;1.0671;1.0716;1.0763;
+5500;1.0275;1.0276;1.028;1.0285;1.0293;1.0304;1.0317;1.0332;1.035;1.037;1.0392;1.0418;1.0446;1.0478;1.0513;1.0551;1.0591;1.0634;1.0679;1.0725;
+6000;1.0242;1.0244;1.0247;1.0253;1.0261;1.0272;1.0286;1.0301;1.0319;1.0339;1.0362;1.0387;1.0414;1.0444;1.0477;1.0514;1.0553;1.0596;1.0641;1.0687;
+6500;1.021;1.021;1.0214;1.022;1.0229;1.024;1.0254;1.0269;1.0288;1.0308;1.0331;1.0355;1.0383;1.0412;1.0444;1.0479;1.0517;1.0558;1.0602;1.0649;
+7000;1.0174;1.0176;1.0179;1.0186;1.0195;1.0206;1.0221;1.0237;1.0256;1.0277;1.0299;1.0325;1.0351;1.038;1.0411;1.0445;1.0482;1.0522;1.0564;1.061;
+7500;1.0138;1.0139;1.0143;1.015;1.016;1.0172;1.0186;1.0203;1.0223;1.0244;1.0267;1.0293;1.032;1.0348;1.0379;1.0411;1.0447;1.0486;1.0528;1.0572;
+8000;1.01;1.0101;1.0105;1.0112;1.0122;1.0135;1.015;1.0168;1.0188;1.021;1.0234;1.026;1.0288;1.0317;1.0347;1.0379;1.0413;1.0451;1.0491;1.0535;
+8500;1.0062;1.0061;1.0065;1.0073;1.0083;1.0096;1.0112;1.013;1.0151;1.0174;1.0199;1.0226;1.0255;1.0284;1.0315;1.0347;1.038;1.0417;1.0456;1.0498;
+9000;1.0016;1.0017;1.0022;1.003;1.004;1.0054;1.0071;1.009;1.0112;1.0136;1.0163;1.019;1.022;1.025;1.0282;1.0315;1.0348;1.0383;1.0421;1.0462;
+9500;0.99696;0.99696;0.99768;0.99847;0.99956;1.001;1.0027;1.0047;1.0069;1.0094;1.0123;1.0153;1.0183;1.0215;1.0247;1.0281;1.0315;1.0351;1.0388;1.0427;
+10000;0.99275;0.9929;0.99334;0.99406;0.99508;0.99637;0.99812;1.0002;1.0025;1.0051;1.008;1.011;1.0143;1.0177;1.0211;1.0246;1.0281;1.0318;1.0355;1.0393;
+10500;0.98855;0.98862;0.98905;0.98978;0.99079;0.9921;0.9937;0.99549;0.99784;1.0006;1.0035;1.0066;1.0099;1.0134;1.0171;1.0208;1.0246;1.0283;1.0321;1.0359;
+11000;0.98414;0.98428;0.98472;0.98544;0.98646;0.98776;0.98936;0.99124;0.99339;0.99575;0.99878;1.002;1.0054;1.009;1.0128;1.0167;1.0206;1.0247;1.0286;1.0325;
+11500;0.98434;0.98452;0.98495;0.98568;0.98669;0.988;0.9896;0.99148;0.99363;0.99599;0.99903;1.0022;1.0057;1.0093;1.013;1.0169;1.0209;1.0249;1.029;1.033;
+12000;0.98454;0.98475;0.98518;0.98591;0.98692;0.98823;0.98983;0.99171;0.99387;0.99623;0.99928;1.0025;1.0059;1.0095;1.0133;1.0172;1.0211;1.0252;1.0292;1.0333;
+12500;0.98483;0.98498;0.98541;0.98614;0.98716;0.98847;0.99007;0.99195;0.99411;0.99647;0.99953;1.0028;1.0062;1.0098;1.0135;1.0174;1.0214;1.0254;1.0295;1.0336;
+13000;0.98513;0.98521;0.98565;0.98637;0.98739;0.9887;0.9903;0.99218;0.99435;0.99672;0.99978;1.003;1.0064;1.01;1.0138;1.0177;1.0216;1.0257;1.0297;1.0338;
+13500;0.98502;0.98518;0.98565;0.98643;0.98752;0.98891;0.99054;0.99243;0.9946;0.99697;1;1.0033;1.0067;1.0103;1.0141;1.0179;1.0219;1.0259;1.03;1.0341;
+14000;0.98452;0.98468;0.98515;0.98593;0.98703;0.98844;0.99016;0.99219;0.99451;0.99714;1.0003;1.0035;1.0069;1.0105;1.0143;1.0182;1.0221;1.0262;1.0303;1.0344;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0422;1.0423;1.0426;1.0432;1.0439;1.0449;1.0462;1.0477;1.0496;1.0518;1.0545;1.0575;1.0608;1.0645;1.0684;1.0726;1.0771;1.0819;1.0869;1.0922;
+500;1.0389;1.0391;1.0394;1.0399;1.0407;1.0417;1.0429;1.0444;1.0462;1.0485;1.0511;1.054;1.0573;1.0609;1.0648;1.069;1.0734;1.0782;1.0831;1.0884;
+1000;1.0357;1.0359;1.0362;1.0367;1.0375;1.0385;1.0397;1.0412;1.043;1.0451;1.0477;1.0505;1.0538;1.0573;1.0612;1.0653;1.0698;1.0744;1.0794;1.0846;
+1500;1.0325;1.0326;1.0329;1.0335;1.0342;1.0352;1.0364;1.0379;1.0397;1.0418;1.0443;1.0471;1.0503;1.0538;1.0576;1.0617;1.0661;1.0707;1.0756;1.0808;
+2000;1.0292;1.0293;1.0296;1.0301;1.0309;1.0319;1.0331;1.0347;1.0364;1.0385;1.0411;1.0438;1.0469;1.0503;1.054;1.058;1.0624;1.067;1.0718;1.0769;
+2500;1.0258;1.0258;1.0262;1.0268;1.0275;1.0286;1.0298;1.0313;1.0331;1.0353;1.0378;1.0405;1.0436;1.0469;1.0505;1.0544;1.0586;1.0632;1.068;1.0731;
+3000;1.0223;1.0224;1.0228;1.0233;1.0241;1.0251;1.0264;1.028;1.0298;1.0319;1.0345;1.0372;1.0402;1.0435;1.047;1.0508;1.0549;1.0594;1.0642;1.0692;
+3500;1.0188;1.019;1.0193;1.0198;1.0206;1.0217;1.023;1.0245;1.0264;1.0286;1.0311;1.0339;1.0369;1.0401;1.0436;1.0473;1.0514;1.0557;1.0604;1.0653;
+4000;1.0155;1.0156;1.0159;1.0164;1.0172;1.0182;1.0195;1.021;1.0229;1.0252;1.0277;1.0305;1.0335;1.0367;1.0402;1.0439;1.0478;1.0521;1.0566;1.0615;
+4500;1.0121;1.0121;1.0125;1.0131;1.0138;1.0148;1.0161;1.0177;1.0195;1.0217;1.0243;1.0271;1.0301;1.0333;1.0367;1.0404;1.0443;1.0485;1.0529;1.0577;
+5000;1.0087;1.0088;1.0091;1.0097;1.0104;1.0114;1.0127;1.0143;1.0161;1.0183;1.0209;1.0236;1.0266;1.0298;1.0333;1.0369;1.0408;1.0449;1.0492;1.0539;
+5500;1.0053;1.0054;1.0057;1.0062;1.007;1.008;1.0093;1.0108;1.0127;1.0149;1.0175;1.0202;1.0232;1.0264;1.0298;1.0334;1.0373;1.0413;1.0456;1.0502;
+6000;1.0019;1.002;1.0023;1.0028;1.0036;1.0046;1.0058;1.0074;1.0093;1.0115;1.014;1.0168;1.0197;1.0229;1.0264;1.0299;1.0337;1.0377;1.042;1.0465;
+6500;0.99853;0.99863;0.99894;0.99945;1.0002;1.0012;1.0024;1.004;1.0059;1.008;1.0106;1.0133;1.0163;1.0195;1.0229;1.0265;1.0303;1.0342;1.0384;1.0428;
+7000;0.99529;0.99539;0.99568;0.99618;0.9969;0.99786;0.9991;1.0006;1.0025;1.0046;1.0072;1.0098;1.0127;1.0159;1.0193;1.023;1.0268;1.0307;1.0348;1.0391;
+7500;0.99205;0.99222;0.99251;0.993;0.9937;0.99464;0.99585;0.99735;0.99914;1.0012;1.0037;1.0064;1.0093;1.0124;1.0158;1.0194;1.0232;1.0272;1.0313;1.0356;
+8000;0.98898;0.98908;0.98937;0.98986;0.99057;0.99151;0.99271;0.99416;0.99588;0.99788;1.0003;1.0029;1.0058;1.0089;1.0122;1.0158;1.0196;1.0236;1.0277;1.032;
+8500;0.98591;0.98577;0.98607;0.9866;0.98736;0.98835;0.9896;0.99104;0.99272;0.99467;0.99686;0.99946;1.0022;1.0053;1.0086;1.0122;1.0159;1.0199;1.0241;1.0284;
+9000;0.98216;0.98227;0.98259;0.98315;0.98393;0.98497;0.98625;0.98775;0.9895;0.99149;0.99365;0.99613;0.99881;1.0018;1.0051;1.0086;1.0123;1.0162;1.0204;1.0247;
+9500;0.97853;0.97865;0.97899;0.97956;0.98039;0.98147;0.98278;0.98433;0.98611;0.9881;0.9903;0.99271;0.99547;0.99832;1.0015;1.0049;1.0086;1.0125;1.0167;1.021;
+10000;0.97473;0.97485;0.97522;0.97583;0.9767;0.97782;0.97917;0.98077;0.98261;0.98464;0.98686;0.98927;0.99198;0.99484;0.99796;1.0013;1.0049;1.0088;1.0129;1.0172;
+10500;0.97076;0.97089;0.97128;0.97192;0.97282;0.97398;0.9754;0.97706;0.97895;0.98104;0.98332;0.98577;0.9885;0.99132;0.99436;0.99765;1.0013;1.0051;1.0091;1.0134;
+11000;0.96665;0.96679;0.96719;0.96786;0.96879;0.96999;0.97144;0.97316;0.97512;0.97728;0.97972;0.98226;0.98494;0.98778;0.99079;0.99401;0.99747;1.0013;1.0053;1.0096;
+11500;0.96685;0.96702;0.96742;0.96809;0.96902;0.97022;0.97168;0.97339;0.97535;0.97751;0.97996;0.98249;0.98518;0.98803;0.99104;0.99426;0.99773;1.0015;1.0056;1.0099;
+12000;0.96704;0.96725;0.96765;0.96832;0.96925;0.97045;0.97191;0.97363;0.97559;0.97775;0.9802;0.98273;0.98542;0.98827;0.99128;0.9945;0.99799;1.0018;1.0059;1.0102;
+12500;0.96734;0.96748;0.96788;0.96855;0.96948;0.97068;0.97214;0.97386;0.97582;0.97798;0.98043;0.98297;0.98566;0.98851;0.99153;0.99477;0.99826;1.0021;1.0062;1.0105;
+13000;0.96765;0.9677;0.96811;0.96878;0.96971;0.97091;0.97237;0.9741;0.97605;0.97822;0.98067;0.98321;0.98591;0.98875;0.99179;0.99503;0.99853;1.0023;1.0064;1.0108;
+13500;0.96742;0.96757;0.968;0.96872;0.96972;0.971;0.97257;0.97433;0.97629;0.97845;0.98091;0.98345;0.98615;0.98901;0.99205;0.99529;0.9988;1.0026;1.0067;1.0111;
+14000;0.96698;0.96712;0.96756;0.96828;0.96928;0.97056;0.97213;0.97397;0.97607;0.97839;0.98102;0.98369;0.9864;0.98927;0.99231;0.99556;0.99907;1.0029;1.007;1.0113;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0213;1.0214;1.0218;1.0224;1.0232;1.0243;1.0257;1.0273;1.0293;1.0316;1.0342;1.0372;1.0405;1.0442;1.0482;1.0526;1.0572;1.0621;1.0672;1.0726;
+500;1.0179;1.018;1.0184;1.0189;1.0197;1.0208;1.0221;1.0238;1.0257;1.028;1.0306;1.0336;1.0369;1.0405;1.0445;1.0488;1.0534;1.0583;1.0634;1.0687;
+1000;1.0144;1.0146;1.0149;1.0155;1.0163;1.0173;1.0186;1.0203;1.0222;1.0244;1.0269;1.0299;1.0332;1.0368;1.0408;1.0451;1.0496;1.0544;1.0595;1.0648;
+1500;1.0111;1.0112;1.0115;1.012;1.0128;1.0138;1.0151;1.0168;1.0187;1.0209;1.0234;1.0263;1.0295;1.0332;1.0371;1.0413;1.0458;1.0506;1.0556;1.0609;
+2000;1.0077;1.0077;1.0081;1.0086;1.0094;1.0104;1.0117;1.0132;1.0151;1.0173;1.0199;1.0228;1.0259;1.0295;1.0333;1.0375;1.042;1.0467;1.0517;1.057;
+2500;1.0042;1.0043;1.0046;1.0052;1.0059;1.0069;1.0082;1.0097;1.0116;1.0138;1.0164;1.0192;1.0224;1.0259;1.0297;1.0337;1.0382;1.0429;1.0478;1.053;
+3000;1.0008;1.0009;1.0012;1.0017;1.0025;1.0035;1.0047;1.0062;1.0081;1.0103;1.0128;1.0156;1.0188;1.0223;1.026;1.03;1.0344;1.039;1.0439;1.0491;
+3500;0.99746;0.99756;0.99786;0.99836;0.99908;1;1.0012;1.0027;1.0046;1.0067;1.0093;1.0121;1.0152;1.0186;1.0224;1.0263;1.0306;1.0351;1.0399;1.0451;
+4000;0.99413;0.9943;0.99459;0.99509;0.99579;0.99672;0.99789;0.99934;1.0011;1.0032;1.0057;1.0085;1.0116;1.015;1.0187;1.0226;1.0269;1.0313;1.0361;1.0411;
+4500;0.99095;0.99105;0.99134;0.99183;0.99252;0.99344;0.99459;0.99601;0.99775;0.9998;1.0022;1.0049;1.008;1.0114;1.015;1.0189;1.0231;1.0275;1.0322;1.0372;
+5000;0.98778;0.98778;0.98809;0.98857;0.98926;0.99017;0.9913;0.99269;0.99441;0.99642;0.99883;1.0015;1.0045;1.0078;1.0114;1.0152;1.0194;1.0237;1.0283;1.0332;
+5500;0.9846;0.98455;0.98484;0.98532;0.986;0.9869;0.98803;0.9894;0.99108;0.99307;0.99537;0.99809;1.001;1.0043;1.0078;1.0115;1.0156;1.0199;1.0245;1.0293;
+6000;0.98116;0.98126;0.98155;0.98203;0.98272;0.98363;0.98476;0.98613;0.98779;0.98975;0.99202;0.99469;0.99759;1.0008;1.0042;1.0079;1.0119;1.0161;1.0206;1.0254;
+6500;0.9778;0.9779;0.97819;0.97869;0.97939;0.9803;0.98145;0.98284;0.98449;0.98645;0.98871;0.99134;0.99418;0.99729;1.0007;1.0043;1.0082;1.0124;1.0168;1.0215;
+7000;0.97444;0.97444;0.97478;0.97527;0.97598;0.97691;0.97807;0.97949;0.98116;0.98313;0.98548;0.98802;0.99082;0.99386;0.99717;1.0007;1.0046;1.0087;1.0131;1.0176;
+7500;0.97091;0.97101;0.97131;0.97181;0.97252;0.97345;0.97463;0.97607;0.97777;0.97977;0.98215;0.98469;0.98747;0.99047;0.99371;0.99721;1.001;1.005;1.0093;1.0138;
+8000;0.96733;0.96743;0.96773;0.96825;0.96898;0.96995;0.97113;0.97259;0.97432;0.97635;0.97876;0.98132;0.9841;0.98708;0.99028;0.99371;0.99739;1.0013;1.0055;1.01;
+8500;0.96361;0.96371;0.96401;0.96453;0.96526;0.96623;0.96746;0.96896;0.97076;0.97286;0.9753;0.97789;0.98069;0.98367;0.98685;0.99024;0.99385;0.99772;1.0019;1.0062;
+9000;0.95989;0.95997;0.96027;0.96078;0.96152;0.96249;0.96372;0.96523;0.96704;0.96916;0.97166;0.97433;0.97721;0.98022;0.9834;0.98677;0.99034;0.99413;0.99817;1.0025;
+9500;0.95617;0.95623;0.95653;0.95704;0.95777;0.95874;0.95996;0.96148;0.96335;0.96542;0.96793;0.9706;0.97349;0.97659;0.97987;0.98328;0.98683;0.99056;0.99452;0.99873;
+10000;0.9524;0.95251;0.9528;0.95331;0.95403;0.955;0.95622;0.95773;0.95955;0.96164;0.96415;0.96681;0.9697;0.97281;0.97612;0.97961;0.98325;0.98701;0.99091;0.99503;
+10500;0.94874;0.94884;0.94913;0.94962;0.95033;0.95128;0.95249;0.954;0.9558;0.95787;0.96035;0.96298;0.96586;0.96897;0.97229;0.9758;0.97949;0.98331;0.98727;0.99136;
+11000;0.94515;0.94524;0.94553;0.94601;0.94671;0.94764;0.94883;0.9503;0.95206;0.9541;0.95654;0.95914;0.96199;0.96507;0.96838;0.9719;0.97561;0.97948;0.98348;0.98761;
+11500;0.94535;0.94548;0.94576;0.94625;0.94694;0.94788;0.94907;0.95055;0.95231;0.95435;0.95679;0.95939;0.96225;0.96533;0.96865;0.97217;0.97588;0.97975;0.98375;0.98788;
+12000;0.94556;0.94571;0.946;0.94648;0.94718;0.94811;0.94931;0.95079;0.95255;0.95459;0.95704;0.95965;0.96251;0.9656;0.96891;0.97244;0.97615;0.98002;0.98403;0.98816;
+12500;0.94585;0.94594;0.94623;0.94672;0.94742;0.94835;0.94955;0.95103;0.9528;0.95484;0.9573;0.95991;0.96277;0.96586;0.96918;0.9727;0.97642;0.98029;0.9843;0.98843;
+13000;0.94613;0.94613;0.94647;0.94695;0.94766;0.94859;0.94979;0.95127;0.95305;0.9551;0.95756;0.96017;0.96303;0.96612;0.96944;0.97297;0.97669;0.98056;0.98457;0.98871;
+13500;0.94577;0.94589;0.9462;0.94673;0.94749;0.94849;0.94977;0.95136;0.95324;0.95545;0.95782;0.96043;0.96329;0.96639;0.96971;0.97324;0.97695;0.98083;0.98484;0.98898;
+14000;0.94543;0.94554;0.94586;0.94639;0.94715;0.94817;0.94946;0.95106;0.95295;0.95523;0.95772;0.96046;0.96346;0.96665;0.96997;0.9735;0.97722;0.9811;0.98511;0.98925;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.002;1.0022;1.0025;1.0031;1.004;1.0052;1.0066;1.0082;1.0102;1.0125;1.015;1.018;1.0213;1.0248;1.0287;1.033;1.0376;1.0424;1.0474;1.0527;
+500;0.99849;0.99862;0.99898;0.99959;1.0005;1.0016;1.0029;1.0046;1.0065;1.0088;1.0113;1.0143;1.0175;1.0211;1.025;1.0293;1.0338;1.0386;1.0436;1.0489;
+1000;0.99494;0.995;0.99536;0.99598;0.99685;0.998;0.99934;1.001;1.0029;1.005;1.0076;1.0106;1.0138;1.0174;1.0213;1.0255;1.0301;1.0348;1.0398;1.0451;
+1500;0.99139;0.99137;0.99173;0.99233;0.99319;0.99433;0.99568;0.99732;0.99922;1.0014;1.0039;1.0068;1.01;1.0136;1.0175;1.0218;1.0263;1.031;1.036;1.0412;
+2000;0.98761;0.98773;0.98808;0.98868;0.98953;0.99065;0.99199;0.99362;0.99554;0.99774;1.0003;1.0032;1.0063;1.0098;1.0137;1.0179;1.0224;1.0272;1.0322;1.0374;
+2500;0.98382;0.98408;0.98443;0.98502;0.98586;0.98696;0.9883;0.98991;0.99182;0.99401;0.99662;0.99946;1.0026;1.0061;1.01;1.0141;1.0186;1.0233;1.0283;1.0334;
+3000;0.98035;0.98047;0.9808;0.98137;0.98218;0.98326;0.98459;0.9862;0.98809;0.99027;0.99286;0.99572;0.9989;1.0024;1.0062;1.0103;1.0147;1.0194;1.0243;1.0295;
+3500;0.9768;0.97692;0.97725;0.97781;0.9786;0.97965;0.98095;0.98252;0.98436;0.98653;0.98909;0.99194;0.99512;0.99863;1.0024;1.0065;1.0109;1.0155;1.0204;1.0255;
+4000;0.97325;0.97337;0.9737;0.97425;0.97503;0.97606;0.97735;0.9789;0.98073;0.98285;0.98535;0.98814;0.99131;0.99483;0.99865;1.0027;1.0071;1.0116;1.0165;1.0215;
+4500;0.96974;0.96985;0.97017;0.9707;0.97146;0.97247;0.97375;0.97529;0.9771;0.9792;0.98167;0.98443;0.98753;0.99099;0.99481;0.99889;1.0032;1.0077;1.0125;1.0176;
+5000;0.96625;0.96636;0.96667;0.96719;0.96793;0.96891;0.97017;0.97169;0.97349;0.97557;0.97801;0.98074;0.98381;0.98723;0.99097;0.995;0.9993;1.0038;1.0086;1.0136;
+5500;0.96276;0.96287;0.96318;0.96369;0.96442;0.96538;0.96662;0.96812;0.9699;0.97196;0.97432;0.97706;0.98009;0.98348;0.98717;0.99115;0.9954;0.99988;1.0046;1.0096;
+6000;0.95927;0.95941;0.9597;0.9602;0.96092;0.96186;0.96308;0.96457;0.96632;0.96837;0.97071;0.97342;0.97641;0.97974;0.98338;0.98731;0.99151;0.99597;1.0006;1.0055;
+6500;0.95586;0.95596;0.95625;0.95673;0.95743;0.95835;0.95955;0.96102;0.96276;0.96478;0.9671;0.96979;0.97275;0.97604;0.97962;0.98348;0.98761;0.99202;0.99668;1.0015;
+7000;0.95245;0.95256;0.95283;0.9533;0.95397;0.95487;0.95603;0.95748;0.9592;0.9612;0.96357;0.96618;0.96912;0.97235;0.97588;0.97967;0.98374;0.98808;0.99269;0.99754;
+7500;0.94904;0.94912;0.9494;0.94986;0.95053;0.95141;0.95254;0.95396;0.95565;0.95763;0.95998;0.96258;0.96549;0.96868;0.97215;0.97589;0.97989;0.98416;0.98869;0.99349;
+8000;0.9456;0.94569;0.94596;0.94642;0.94707;0.94793;0.94903;0.95042;0.95209;0.95405;0.95639;0.95897;0.96186;0.96502;0.96844;0.97211;0.97605;0.98025;0.98471;0.98944;
+8500;0.94216;0.94225;0.94252;0.94298;0.94362;0.94446;0.94553;0.9469;0.94853;0.95044;0.95274;0.95533;0.95822;0.96136;0.96474;0.96835;0.97222;0.97636;0.98075;0.9854;
+9000;0.9387;0.93879;0.93906;0.93952;0.94016;0.941;0.94206;0.94339;0.94499;0.94687;0.94913;0.95166;0.9545;0.95763;0.96101;0.96461;0.96842;0.97248;0.9768;0.98137;
+9500;0.93519;0.93528;0.93555;0.93601;0.93665;0.9375;0.93856;0.93988;0.94146;0.94332;0.94548;0.94804;0.95081;0.95388;0.95721;0.96079;0.96459;0.96862;0.97287;0.97736;
+10000;0.93168;0.93168;0.93196;0.93242;0.93308;0.93394;0.93502;0.93633;0.93792;0.93977;0.94192;0.94444;0.94716;0.95015;0.95341;0.95694;0.9607;0.9647;0.96892;0.97337;
+10500;0.92787;0.92797;0.92826;0.92873;0.92941;0.93029;0.93139;0.93272;0.93432;0.9362;0.93835;0.94086;0.94354;0.94647;0.94965;0.95309;0.9568;0.96075;0.96493;0.96933;
+11000;0.92407;0.92418;0.92447;0.92495;0.92563;0.92653;0.92766;0.92903;0.93066;0.93256;0.93482;0.93725;0.93992;0.9428;0.94592;0.94928;0.9529;0.9568;0.96092;0.96527;
+11500;0.92428;0.92442;0.9247;0.92519;0.92587;0.92677;0.9279;0.92927;0.9309;0.93281;0.93507;0.9375;0.94017;0.94306;0.94617;0.94953;0.95315;0.95705;0.96118;0.96552;
+12000;0.92449;0.92465;0.92494;0.92543;0.92611;0.92701;0.92814;0.92951;0.93115;0.93306;0.93532;0.93775;0.94042;0.9433;0.94642;0.94978;0.95341;0.9573;0.96143;0.96578;
+12500;0.92479;0.92489;0.92518;0.92566;0.92635;0.92725;0.92839;0.92975;0.93139;0.9333;0.93557;0.938;0.94067;0.94355;0.94667;0.95004;0.95366;0.95756;0.96168;0.96603;
+13000;0.92468;0.92479;0.9251;0.92561;0.92634;0.9273;0.92849;0.92994;0.93162;0.93354;0.93581;0.93825;0.94091;0.9438;0.94692;0.95029;0.95391;0.95781;0.96193;0.96629;
+13500;0.9244;0.92451;0.92482;0.92533;0.92607;0.92703;0.92823;0.92969;0.93141;0.93342;0.9358;0.93835;0.94113;0.94405;0.94717;0.95053;0.95416;0.95806;0.96219;0.96654;
+14000;0.92412;0.92424;0.92455;0.92507;0.92582;0.92678;0.92799;0.92945;0.93118;0.9332;0.93559;0.93814;0.94094;0.94395;0.9472;0.95069;0.95441;0.95831;0.96245;0.9668;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.98327;0.98338;0.98376;0.9844;0.98535;0.9865;0.98783;0.98945;0.9914;0.99362;0.99614;0.9989;1.0019;1.0052;1.0088;1.0128;1.0171;1.0217;1.0266;1.0317;
+500;0.97962;0.97973;0.98011;0.98075;0.98168;0.98281;0.98412;0.98572;0.98766;0.98988;0.99244;0.99523;0.99824;1.0015;1.0052;1.0092;1.0135;1.0181;1.023;1.028;
+1000;0.97597;0.97607;0.97644;0.97708;0.97801;0.97912;0.98043;0.98203;0.98394;0.98613;0.98867;0.99151;0.99455;0.99786;1.0015;1.0055;1.0098;1.0144;1.0193;1.0244;
+1500;0.97233;0.97239;0.97277;0.9734;0.97432;0.97542;0.97673;0.97832;0.98023;0.9824;0.98492;0.98776;0.9908;0.99415;0.99781;1.0018;1.0061;1.0107;1.0156;1.0206;
+2000;0.96858;0.9687;0.96907;0.96971;0.97061;0.9717;0.97301;0.97459;0.97649;0.97866;0.98117;0.984;0.98704;0.99039;0.99408;0.99808;1.0024;1.007;1.0119;1.0169;
+2500;0.96484;0.96499;0.96536;0.96599;0.96689;0.96796;0.96927;0.97085;0.97268;0.9749;0.9774;0.98022;0.98327;0.98662;0.99033;0.99432;0.99866;1.0033;1.0081;1.0131;
+3000;0.96122;0.96134;0.9617;0.96232;0.9632;0.96425;0.96553;0.96709;0.96891;0.97112;0.97361;0.97641;0.97948;0.98283;0.98654;0.99057;0.99488;0.99945;1.0043;1.0093;
+3500;0.95761;0.95768;0.95804;0.95864;0.95951;0.96055;0.96183;0.96338;0.96518;0.96735;0.9698;0.97259;0.97567;0.97904;0.98273;0.98676;0.9911;0.99565;1.0004;1.0054;
+4000;0.95391;0.95402;0.95438;0.95497;0.95583;0.95685;0.95813;0.95966;0.96145;0.9636;0.96604;0.96879;0.97184;0.97521;0.97889;0.98291;0.98724;0.99183;0.99657;1.0015;
+4500;0.95021;0.95036;0.95071;0.95129;0.95213;0.95315;0.95442;0.95594;0.95772;0.95984;0.96227;0.96505;0.96804;0.97139;0.97504;0.97905;0.98335;0.98791;0.9927;0.99765;
+5000;0.94657;0.94669;0.94703;0.94761;0.94843;0.94944;0.9507;0.95221;0.95398;0.95608;0.95849;0.96125;0.96423;0.96757;0.97122;0.97519;0.97944;0.98398;0.98875;0.99373;
+5500;0.94294;0.94301;0.94334;0.94391;0.94472;0.94572;0.94697;0.94847;0.95023;0.95236;0.95471;0.95745;0.96045;0.96376;0.96739;0.97134;0.97557;0.98004;0.98476;0.98973;
+6000;0.93921;0.93932;0.93965;0.9402;0.941;0.94199;0.94323;0.94472;0.94647;0.94858;0.95091;0.95364;0.95663;0.95993;0.96355;0.96748;0.97168;0.97612;0.9808;0.98569;
+6500;0.93554;0.93564;0.93597;0.93651;0.93729;0.93827;0.93949;0.94097;0.9427;0.94479;0.9471;0.94982;0.95279;0.95608;0.9597;0.9636;0.96778;0.97219;0.97683;0.98169;
+7000;0.93186;0.93191;0.93223;0.93276;0.93353;0.93452;0.93574;0.93722;0.93894;0.94101;0.94329;0.94598;0.94894;0.95222;0.95582;0.95971;0.96385;0.96823;0.97284;0.97768;
+7500;0.92806;0.92816;0.92848;0.929;0.92976;0.93074;0.93195;0.93341;0.93513;0.93719;0.93947;0.94215;0.94509;0.94835;0.95193;0.95579;0.9599;0.96425;0.96883;0.97364;
+8000;0.92425;0.92441;0.92472;0.92524;0.92598;0.92695;0.92816;0.92961;0.93132;0.93329;0.93566;0.93827;0.9412;0.94446;0.94802;0.95185;0.95594;0.96025;0.9648;0.96956;
+8500;0.92056;0.92067;0.92097;0.92148;0.9222;0.92316;0.92436;0.9258;0.9275;0.92946;0.93179;0.93438;0.93729;0.94052;0.94407;0.94789;0.95195;0.95623;0.96074;0.96547;
+9000;0.91687;0.91692;0.91721;0.91771;0.91842;0.91937;0.92056;0.92199;0.92368;0.92563;0.92794;0.93049;0.93337;0.93659;0.94009;0.94388;0.94791;0.95218;0.95666;0.96136;
+9500;0.91307;0.91317;0.91346;0.91395;0.91464;0.91558;0.91676;0.91818;0.91986;0.9218;0.92408;0.92661;0.92946;0.93264;0.93611;0.93985;0.94384;0.94807;0.95254;0.95721;
+10000;0.90928;0.90942;0.90971;0.91018;0.91087;0.91178;0.91296;0.91437;0.91604;0.91797;0.92017;0.92274;0.92556;0.9287;0.93212;0.93581;0.93975;0.94394;0.94837;0.95301;
+10500;0.90558;0.90568;0.90596;0.90643;0.90709;0.90799;0.90915;0.91055;0.9122;0.91413;0.91632;0.91887;0.92167;0.92477;0.92814;0.93177;0.93566;0.93979;0.94417;0.94878;
+11000;0.90188;0.90199;0.90225;0.9027;0.90335;0.90421;0.90535;0.90673;0.90837;0.91027;0.91253;0.915;0.91778;0.92084;0.92416;0.92774;0.93156;0.93564;0.93996;0.94453;
+11500;0.9021;0.90221;0.90247;0.90293;0.90357;0.90444;0.90558;0.90696;0.9086;0.91051;0.91276;0.91523;0.91801;0.92107;0.92439;0.92797;0.93179;0.93587;0.9402;0.94476;
+12000;0.90231;0.90242;0.9027;0.90315;0.9038;0.90467;0.90581;0.90719;0.90883;0.91074;0.91299;0.91546;0.91824;0.9213;0.92463;0.9282;0.93203;0.9361;0.94044;0.945;
+12500;0.90232;0.90243;0.90271;0.90319;0.90387;0.90479;0.90598;0.90742;0.90907;0.91098;0.91316;0.9157;0.91847;0.92153;0.92486;0.92843;0.93226;0.93634;0.94067;0.94524;
+13000;0.90214;0.90224;0.90253;0.90301;0.9037;0.90462;0.90582;0.90727;0.90898;0.91096;0.91329;0.91585;0.91871;0.92176;0.92509;0.92866;0.93249;0.93658;0.94091;0.94547;
+13500;0.90196;0.90207;0.90236;0.90284;0.90354;0.90447;0.90568;0.90713;0.90885;0.91084;0.91317;0.91574;0.9186;0.92175;0.92517;0.92884;0.93272;0.93681;0.94115;0.94571;
+14000;0.90177;0.90191;0.9022;0.90269;0.90339;0.90433;0.90554;0.907;0.90873;0.91073;0.91307;0.91564;0.91851;0.92166;0.92508;0.92876;0.9327;0.9369;0.94133;0.94595;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.96446;0.9646;0.96497;0.96559;0.9665;0.96752;0.9688;0.97029;0.97215;0.97425;0.97656;0.97907;0.98183;0.9848;0.98808;0.99174;0.99579;1.0002;1.005;1.0101;
+500;0.96082;0.96096;0.96133;0.96196;0.96279;0.96385;0.96512;0.96659;0.96846;0.97056;0.97289;0.9754;0.97818;0.98119;0.98445;0.98816;0.99219;0.99662;1.0014;1.0065;
+1000;0.95717;0.9573;0.95767;0.9583;0.95913;0.96019;0.96145;0.96293;0.96477;0.96686;0.96916;0.97171;0.9745;0.97755;0.98082;0.98457;0.98858;0.99299;0.99776;1.0028;
+1500;0.95352;0.95362;0.95399;0.95462;0.95545;0.9565;0.95776;0.95924;0.96108;0.96318;0.96547;0.96801;0.97079;0.97387;0.97717;0.98091;0.98496;0.98936;0.99409;0.9991;
+2000;0.94979;0.94991;0.95028;0.95091;0.95174;0.95279;0.95405;0.95553;0.95737;0.95947;0.96177;0.96431;0.96709;0.97016;0.9735;0.97721;0.98129;0.98571;0.99041;0.99538;
+2500;0.9461;0.94623;0.94659;0.94721;0.94802;0.94906;0.95031;0.95179;0.95363;0.95573;0.95805;0.96059;0.96338;0.96646;0.96981;0.97348;0.97757;0.98202;0.98671;0.99164;
+3000;0.94244;0.94256;0.94292;0.94354;0.9444;0.94537;0.94661;0.94807;0.94989;0.95197;0.95429;0.95684;0.95964;0.96272;0.9661;0.96977;0.97384;0.97827;0.98299;0.98789;
+3500;0.93877;0.93888;0.93924;0.93986;0.94071;0.94168;0.94292;0.94437;0.94618;0.94825;0.95056;0.95308;0.95587;0.95895;0.96236;0.96605;0.97011;0.97452;0.97919;0.98413;
+4000;0.93511;0.93518;0.93554;0.93616;0.937;0.93797;0.9392;0.94065;0.94245;0.94452;0.94683;0.94935;0.95213;0.95518;0.95858;0.9623;0.96634;0.97076;0.97542;0.98029;
+4500;0.93144;0.93147;0.93183;0.93244;0.93328;0.93424;0.93547;0.93692;0.9387;0.94076;0.94311;0.94561;0.94839;0.95144;0.95483;0.95853;0.96257;0.96696;0.97161;0.97647;
+5000;0.92763;0.92775;0.9281;0.92871;0.92954;0.93049;0.93171;0.93316;0.93493;0.93699;0.93933;0.94184;0.94462;0.94767;0.95106;0.95478;0.95881;0.96313;0.96776;0.97261;
+5500;0.92381;0.92401;0.92436;0.92496;0.92578;0.92673;0.92795;0.92939;0.93114;0.9332;0.93553;0.93806;0.94083;0.94389;0.94731;0.95101;0.95505;0.95936;0.9639;0.96871;
+6000;0.92011;0.92023;0.92058;0.92118;0.922;0.92295;0.92417;0.9256;0.92734;0.92939;0.93171;0.93426;0.93702;0.94008;0.9435;0.94721;0.95125;0.95556;0.96009;0.96482;
+6500;0.9163;0.91642;0.91676;0.91736;0.91816;0.91912;0.92033;0.92177;0.9235;0.92555;0.92787;0.93043;0.93319;0.93625;0.93967;0.94338;0.94742;0.95172;0.95624;0.96095;
+7000;0.91248;0.91258;0.91293;0.91352;0.91431;0.91526;0.91647;0.91791;0.91962;0.92167;0.92398;0.92657;0.92933;0.93239;0.93581;0.93952;0.94355;0.94784;0.95234;0.95705;
+7500;0.90867;0.90873;0.90907;0.90965;0.91044;0.91139;0.91259;0.91403;0.91579;0.91777;0.92007;0.92266;0.92542;0.9285;0.93192;0.93564;0.93965;0.94393;0.94841;0.95311;
+8000;0.90485;0.90485;0.90519;0.90576;0.90654;0.90749;0.90869;0.91012;0.91187;0.91384;0.91612;0.9187;0.92148;0.92456;0.92799;0.93171;0.93572;0.93998;0.94445;0.94912;
+8500;0.90084;0.90095;0.90129;0.90185;0.90262;0.90357;0.90476;0.90619;0.90792;0.90988;0.91215;0.91472;0.91751;0.92064;0.92403;0.92774;0.93175;0.93599;0.94044;0.9451;
+9000;0.89682;0.89703;0.89736;0.89792;0.89867;0.89962;0.90081;0.90223;0.90395;0.9059;0.90816;0.91071;0.91352;0.91665;0.92004;0.92375;0.92773;0.93196;0.93639;0.94103;
+9500;0.89298;0.89309;0.89341;0.89396;0.89471;0.89565;0.89683;0.89825;0.89997;0.9019;0.90415;0.90669;0.9095;0.91263;0.91602;0.91972;0.92368;0.92788;0.9323;0.93692;
+10000;0.88914;0.88914;0.88945;0.88999;0.89073;0.89167;0.89285;0.89426;0.89591;0.89788;0.90012;0.9027;0.90546;0.90859;0.91197;0.91567;0.91961;0.92378;0.92817;0.93277;
+10500;0.88507;0.88517;0.88549;0.88601;0.88674;0.88767;0.88884;0.89024;0.89189;0.89384;0.89607;0.89864;0.90144;0.90452;0.90791;0.91158;0.9155;0.91964;0.924;0.92857;
+11000;0.88099;0.88121;0.88151;0.88203;0.88275;0.88367;0.88483;0.88622;0.88785;0.88978;0.892;0.89456;0.89735;0.90043;0.90381;0.90746;0.91135;0.91547;0.9198;0.92434;
+11500;0.8813;0.88141;0.88172;0.88223;0.88295;0.88388;0.88504;0.88643;0.88806;0.89;0.89222;0.89478;0.89757;0.90065;0.90403;0.90767;0.91157;0.91569;0.92001;0.92455;
+12000;0.88134;0.88145;0.88177;0.8823;0.88305;0.88401;0.88521;0.88664;0.88827;0.89021;0.89243;0.89499;0.89778;0.90086;0.90424;0.90789;0.91178;0.9159;0.92023;0.92476;
+12500;0.88122;0.88133;0.88165;0.88219;0.88294;0.88391;0.88511;0.88655;0.88824;0.89023;0.89257;0.89514;0.898;0.90108;0.90446;0.9081;0.91199;0.91611;0.92044;0.92497;
+13000;0.88111;0.88123;0.88155;0.88209;0.88284;0.88381;0.88502;0.88647;0.88816;0.89017;0.89251;0.89508;0.89794;0.9011;0.90455;0.90827;0.91221;0.91632;0.92065;0.92518;
+13500;0.88099;0.88113;0.88146;0.882;0.88276;0.88373;0.88495;0.8864;0.8881;0.89011;0.89245;0.89503;0.8979;0.90106;0.90451;0.90824;0.91221;0.91641;0.92081;0.92539;
+14000;0.88095;0.88105;0.88138;0.88192;0.88268;0.88366;0.88488;0.88634;0.88805;0.89006;0.89241;0.89499;0.89787;0.90103;0.90449;0.90821;0.91219;0.91639;0.9208;0.92541;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.94549;0.94565;0.94599;0.94658;0.94739;0.94835;0.94951;0.95093;0.95258;0.95442;0.95643;0.95865;0.96109;0.96406;0.96735;0.971;0.97501;0.97932;0.98399;0.98905;
+500;0.94183;0.94201;0.94236;0.94294;0.94374;0.94469;0.94584;0.94724;0.94891;0.95076;0.95277;0.95501;0.95744;0.96038;0.96366;0.9673;0.9713;0.97565;0.98032;0.98537;
+1000;0.93824;0.93836;0.93871;0.93929;0.94008;0.94103;0.94218;0.94359;0.94525;0.94709;0.9491;0.95134;0.95378;0.95668;0.95995;0.96358;0.96757;0.97193;0.97663;0.98166;
+1500;0.93456;0.93468;0.93503;0.93561;0.9364;0.93735;0.9385;0.93991;0.94158;0.94344;0.94544;0.94767;0.9501;0.95297;0.95623;0.95984;0.96382;0.96817;0.97291;0.97793;
+2000;0.93088;0.93099;0.93134;0.93191;0.93269;0.93364;0.9348;0.9362;0.93788;0.93972;0.94177;0.94401;0.94643;0.94926;0.95249;0.95609;0.96005;0.96438;0.96911;0.97418;
+2500;0.92721;0.92733;0.92768;0.92825;0.92903;0.92996;0.93111;0.9325;0.93417;0.93601;0.93808;0.94032;0.94275;0.94556;0.94876;0.95231;0.95626;0.96058;0.96529;0.97034;
+3000;0.92355;0.92366;0.92401;0.92458;0.92535;0.92629;0.92743;0.92882;0.93049;0.93233;0.93439;0.93662;0.93906;0.94184;0.94503;0.94857;0.95247;0.95676;0.96146;0.96648;
+3500;0.91989;0.91998;0.92033;0.9209;0.92167;0.9226;0.92374;0.92513;0.92681;0.92865;0.93072;0.93297;0.93539;0.93805;0.94129;0.94473;0.94869;0.95295;0.9576;0.96259;
+4000;0.91617;0.91628;0.91662;0.9172;0.91796;0.9189;0.92004;0.92142;0.92311;0.92496;0.92703;0.9293;0.93174;0.93441;0.93757;0.94105;0.9449;0.94914;0.95377;0.9587;
+4500;0.91245;0.91256;0.9129;0.91348;0.91424;0.91517;0.91631;0.91769;0.91938;0.92128;0.92332;0.92559;0.92807;0.93074;0.93387;0.93733;0.94114;0.94532;0.94992;0.95481;
+5000;0.9087;0.90882;0.90916;0.90974;0.91049;0.91142;0.91256;0.91394;0.91563;0.91754;0.91959;0.92186;0.92436;0.92706;0.93016;0.9336;0.9374;0.94155;0.94607;0.95091;
+5500;0.90492;0.90503;0.90537;0.90596;0.90671;0.90764;0.90878;0.91016;0.91186;0.91377;0.91583;0.91811;0.92062;0.92336;0.92642;0.92985;0.93363;0.93778;0.94227;0.94704;
+6000;0.90113;0.90122;0.90156;0.90215;0.90289;0.90382;0.90497;0.90634;0.90805;0.90997;0.91204;0.91433;0.91686;0.91962;0.92267;0.92609;0.92985;0.93399;0.93846;0.94318;
+6500;0.89735;0.89735;0.89773;0.89832;0.89905;0.89999;0.90113;0.9025;0.90421;0.90614;0.90822;0.91052;0.91306;0.91584;0.91887;0.92231;0.92606;0.93018;0.93462;0.93931;
+7000;0.89341;0.89353;0.89388;0.89446;0.89519;0.89612;0.89727;0.89863;0.90034;0.90227;0.90436;0.90667;0.90922;0.91203;0.91508;0.91851;0.92225;0.92635;0.93076;0.93542;
+7500;0.88948;0.88965;0.89;0.89059;0.89131;0.89224;0.89338;0.8948;0.89645;0.89838;0.90049;0.9028;0.90535;0.90818;0.91125;0.91467;0.91842;0.92251;0.92688;0.9315;
+8000;0.88563;0.88575;0.88609;0.88668;0.8874;0.88833;0.88947;0.89089;0.89254;0.89446;0.8966;0.8989;0.90146;0.9043;0.90739;0.9108;0.91456;0.91864;0.92299;0.92757;
+8500;0.88179;0.88179;0.88216;0.88276;0.88346;0.88439;0.88553;0.88694;0.88859;0.89052;0.89267;0.89497;0.89753;0.90038;0.90349;0.90688;0.91066;0.91474;0.91907;0.92361;
+9000;0.87776;0.87787;0.87822;0.8788;0.8795;0.88043;0.88157;0.88298;0.88462;0.88655;0.88868;0.89101;0.89358;0.89642;0.89956;0.90297;0.90674;0.91081;0.91511;0.91963;
+9500;0.87372;0.8739;0.87424;0.87482;0.87552;0.87644;0.87758;0.87899;0.88062;0.88255;0.8847;0.88703;0.8896;0.89249;0.89559;0.89901;0.90278;0.90684;0.91113;0.91562;
+10000;0.86979;0.8699;0.87024;0.87081;0.8715;0.87242;0.87356;0.8749;0.87659;0.87852;0.8807;0.88301;0.88559;0.88848;0.89159;0.89506;0.8988;0.90283;0.90711;0.91157;
+10500;0.86585;0.86585;0.86621;0.86678;0.86747;0.86838;0.86952;0.87086;0.87254;0.87445;0.87663;0.87896;0.88155;0.88444;0.88759;0.89104;0.89479;0.8988;0.90304;0.90749;
+11000;0.86169;0.8618;0.86214;0.86269;0.86339;0.86431;0.86545;0.86679;0.86845;0.87036;0.87253;0.87487;0.87746;0.88031;0.88352;0.88698;0.89073;0.89474;0.89895;0.90337;
+11500;0.86171;0.86184;0.86218;0.86275;0.86346;0.86441;0.86558;0.86696;0.86864;0.87055;0.87272;0.87506;0.87765;0.88054;0.88371;0.88717;0.89092;0.89492;0.89913;0.90355;
+12000;0.86165;0.86176;0.86211;0.86268;0.86339;0.86435;0.86552;0.8669;0.86861;0.87056;0.87278;0.87518;0.87782;0.88073;0.88389;0.88735;0.89111;0.89511;0.89931;0.90374;
+12500;0.86158;0.8617;0.86204;0.86261;0.86333;0.86429;0.86546;0.86685;0.86856;0.87052;0.87274;0.87514;0.87779;0.88075;0.88397;0.88749;0.8913;0.89529;0.8995;0.90392;
+13000;0.86152;0.86164;0.86199;0.86255;0.86328;0.86424;0.86541;0.8668;0.86852;0.87048;0.87271;0.87511;0.87777;0.88072;0.88395;0.88747;0.8913;0.89536;0.89963;0.9041;
+13500;0.86148;0.86159;0.86194;0.86251;0.86323;0.86419;0.86537;0.86676;0.86848;0.87045;0.87268;0.87509;0.87774;0.8807;0.88393;0.88746;0.89128;0.89535;0.89962;0.90412;
+14000;0.86144;0.86155;0.8619;0.86247;0.86319;0.86415;0.86533;0.86673;0.86845;0.87042;0.87266;0.87507;0.87773;0.88069;0.88392;0.88744;0.89127;0.89534;0.89961;0.9041;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.92651;0.92663;0.92695;0.92748;0.9282;0.92907;0.9301;0.93138;0.93283;0.93444;0.93626;0.93831;0.94085;0.94374;0.94695;0.95048;0.95431;0.95857;0.9631;0.96795;
+500;0.9229;0.92301;0.92333;0.92386;0.92457;0.92543;0.92644;0.92772;0.92917;0.93079;0.93261;0.93465;0.93716;0.94003;0.94324;0.94677;0.95059;0.95483;0.95936;0.96426;
+1000;0.91929;0.91936;0.91969;0.92022;0.92092;0.92178;0.9228;0.92408;0.92553;0.92713;0.92894;0.93098;0.93345;0.93632;0.93951;0.94302;0.94684;0.95108;0.95559;0.9605;
+1500;0.91568;0.91571;0.91603;0.91656;0.91727;0.91813;0.91914;0.92042;0.92187;0.92348;0.92528;0.9273;0.92982;0.93258;0.93576;0.93927;0.94308;0.94731;0.95181;0.95671;
+2000;0.91207;0.91207;0.91239;0.91292;0.91362;0.91447;0.91547;0.91676;0.91821;0.91982;0.92162;0.92362;0.92611;0.92883;0.93199;0.93549;0.9393;0.94351;0.94801;0.95289;
+2500;0.90832;0.90843;0.90875;0.90927;0.90997;0.91082;0.91183;0.91311;0.91455;0.91615;0.91794;0.91994;0.92239;0.9251;0.92823;0.93169;0.9355;0.9397;0.94419;0.94906;
+3000;0.90457;0.90475;0.90507;0.9056;0.9063;0.90716;0.90817;0.90945;0.9109;0.9125;0.91429;0.91626;0.91867;0.92136;0.92447;0.92799;0.93168;0.93587;0.94034;0.94521;
+3500;0.90095;0.90106;0.90138;0.90191;0.90261;0.90347;0.90449;0.90577;0.90723;0.90883;0.91062;0.91259;0.91497;0.91763;0.92078;0.92421;0.92796;0.93203;0.93648;0.94133;
+4000;0.89733;0.89734;0.89766;0.89819;0.89889;0.89976;0.90078;0.90208;0.90354;0.90515;0.90694;0.90891;0.91126;0.9139;0.91696;0.92043;0.92415;0.92821;0.93263;0.93744;
+4500;0.89348;0.89359;0.89391;0.89444;0.89514;0.89601;0.89705;0.89835;0.89982;0.90144;0.90324;0.90521;0.90753;0.91015;0.91328;0.91666;0.92036;0.92439;0.92878;0.93357;
+5000;0.8897;0.8898;0.89013;0.89066;0.89135;0.89223;0.89327;0.89459;0.89609;0.89771;0.89951;0.90148;0.90378;0.90639;0.9095;0.91286;0.91655;0.92057;0.92494;0.92968;
+5500;0.88592;0.886;0.88632;0.88686;0.88755;0.88843;0.88947;0.89079;0.8923;0.89395;0.89576;0.89774;0.90002;0.90262;0.9057;0.90905;0.91273;0.91673;0.92109;0.92582;
+6000;0.88214;0.88214;0.8825;0.88303;0.88372;0.8846;0.88564;0.88697;0.88849;0.89015;0.89198;0.89397;0.89615;0.89882;0.90182;0.90522;0.90888;0.91288;0.91722;0.92193;
+6500;0.87822;0.87833;0.87865;0.87919;0.87987;0.88074;0.88179;0.88312;0.88465;0.88633;0.88817;0.89017;0.89236;0.89507;0.89806;0.90137;0.90501;0.909;0.91333;0.91802;
+7000;0.87431;0.87446;0.87478;0.87531;0.87599;0.87687;0.87791;0.87925;0.88078;0.88247;0.88433;0.88635;0.88854;0.89122;0.8942;0.8975;0.90113;0.9051;0.90942;0.91408;
+7500;0.87039;0.87056;0.87088;0.87141;0.87209;0.87297;0.87402;0.87535;0.87688;0.87858;0.88046;0.88251;0.88471;0.88735;0.89031;0.8936;0.89722;0.90117;0.90548;0.91012;
+8000;0.86647;0.86663;0.86695;0.86749;0.86816;0.86904;0.87009;0.87142;0.87296;0.87468;0.87656;0.87863;0.88085;0.88346;0.88641;0.88968;0.89328;0.89722;0.90152;0.90613;
+8500;0.86255;0.86268;0.863;0.86353;0.86421;0.86508;0.86614;0.86747;0.86902;0.87075;0.87263;0.87472;0.87696;0.87955;0.88248;0.88574;0.88933;0.89325;0.89754;0.90212;
+9000;0.85863;0.8587;0.85902;0.85956;0.86023;0.86111;0.86216;0.8635;0.86505;0.86679;0.86868;0.87078;0.87305;0.87561;0.87853;0.88178;0.88535;0.88926;0.89353;0.89808;
+9500;0.85456;0.85467;0.855;0.85553;0.85621;0.85709;0.85816;0.8595;0.86105;0.86281;0.8647;0.8668;0.8691;0.87165;0.87457;0.8778;0.88135;0.88525;0.8895;0.89402;
+10000;0.85049;0.85063;0.85096;0.85148;0.85216;0.85304;0.85411;0.85545;0.85702;0.85877;0.86069;0.8628;0.86512;0.86764;0.87058;0.8738;0.87734;0.88122;0.88544;0.88993;
+10500;0.84645;0.84656;0.84689;0.84742;0.84809;0.84897;0.85004;0.85138;0.85296;0.85471;0.85666;0.85879;0.86112;0.86367;0.86658;0.86972;0.87331;0.87717;0.88136;0.88582;
+11000;0.84221;0.84232;0.84266;0.84319;0.84388;0.84479;0.84588;0.84725;0.84886;0.85062;0.85258;0.85472;0.85709;0.85966;0.86255;0.86575;0.86926;0.8731;0.87726;0.88168;
+11500;0.84215;0.84226;0.8426;0.84313;0.84382;0.84473;0.84583;0.8472;0.84882;0.85063;0.85262;0.85482;0.85723;0.85983;0.86271;0.86591;0.86942;0.87326;0.87743;0.88185;
+12000;0.84208;0.84221;0.84255;0.84308;0.84377;0.84468;0.84578;0.84716;0.84878;0.85059;0.85259;0.85478;0.8572;0.85981;0.86275;0.86601;0.86958;0.87343;0.8776;0.88202;
+12500;0.84202;0.84216;0.8425;0.84303;0.84372;0.84464;0.84574;0.84712;0.84874;0.85055;0.85255;0.85475;0.85717;0.85978;0.86273;0.86598;0.86956;0.87347;0.8777;0.88219;
+13000;0.842;0.84212;0.84246;0.84299;0.84369;0.8446;0.8457;0.84709;0.84871;0.85052;0.85253;0.85473;0.85714;0.85976;0.8627;0.86596;0.86953;0.87344;0.87768;0.88217;
+13500;0.84199;0.84199;0.84242;0.84295;0.84365;0.84457;0.84568;0.84707;0.84869;0.8505;0.85251;0.8547;0.85712;0.85973;0.86268;0.86593;0.86951;0.87342;0.87766;0.88215;
+14000;0.84194;0.84206;0.84239;0.84293;0.84363;0.84454;0.84565;0.84704;0.84867;0.85048;0.85249;0.85469;0.8571;0.8597;0.86265;0.86591;0.86949;0.87341;0.87764;0.88213;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.90711;0.90724;0.90753;0.90801;0.90866;0.90944;0.91037;0.91148;0.91276;0.91431;0.9161;0.91833;0.92088;0.92364;0.92669;0.93002;0.93374;0.9378;0.94224;0.94697;
+500;0.90359;0.90369;0.90398;0.90446;0.90509;0.90585;0.90676;0.90786;0.90914;0.91059;0.91245;0.91466;0.91719;0.91995;0.923;0.92631;0.93;0.93403;0.93847;0.94318;
+1000;0.90006;0.9001;0.90039;0.90086;0.90149;0.90225;0.90317;0.90427;0.90553;0.90697;0.90878;0.91096;0.91348;0.91624;0.91927;0.92259;0.92624;0.93025;0.93469;0.93938;
+1500;0.8964;0.89649;0.89678;0.89725;0.89787;0.89863;0.89955;0.90065;0.90191;0.90335;0.90513;0.90726;0.90974;0.9125;0.91553;0.91884;0.92257;0.92656;0.93088;0.93557;
+2000;0.89279;0.89289;0.89318;0.89364;0.89426;0.89502;0.89592;0.89702;0.89828;0.89971;0.90147;0.90357;0.90603;0.90876;0.91176;0.91508;0.91878;0.92275;0.92705;0.93172;
+2500;0.88919;0.88926;0.88955;0.89002;0.89064;0.89139;0.8923;0.8934;0.89466;0.89607;0.8978;0.89994;0.90231;0.90503;0.90802;0.9113;0.91497;0.91892;0.9232;0.92786;
+3000;0.88559;0.88561;0.8859;0.88637;0.88699;0.88775;0.88865;0.88976;0.89102;0.89243;0.89414;0.89625;0.89858;0.90128;0.90426;0.90753;0.91107;0.91508;0.91934;0.92398;
+3500;0.88198;0.88198;0.88223;0.88269;0.88331;0.88407;0.88498;0.8861;0.88736;0.88878;0.89046;0.89254;0.89486;0.89755;0.90051;0.90374;0.90728;0.91124;0.91548;0.92009;
+4000;0.87812;0.87822;0.87851;0.87898;0.8796;0.88037;0.88129;0.88241;0.88367;0.88509;0.88676;0.88882;0.89111;0.89379;0.89674;0.89997;0.90348;0.9074;0.91161;0.91619;
+4500;0.87437;0.87447;0.87476;0.87523;0.87586;0.87663;0.87755;0.87868;0.87995;0.88139;0.88304;0.88508;0.88736;0.89002;0.89296;0.89618;0.89968;0.90358;0.90775;0.9123;
+5000;0.87062;0.87069;0.87099;0.87146;0.87209;0.87286;0.87378;0.87492;0.8762;0.87764;0.8793;0.88132;0.88359;0.88623;0.88917;0.89237;0.89586;0.89974;0.90389;0.90841;
+5500;0.86687;0.86687;0.8672;0.86767;0.8683;0.86907;0.87;0.87115;0.87244;0.87388;0.87553;0.87752;0.87978;0.88242;0.88535;0.88855;0.89202;0.89588;0.90001;0.90452;
+6000;0.86299;0.86309;0.86339;0.86386;0.86449;0.86527;0.8662;0.86735;0.86865;0.87009;0.87174;0.87371;0.87595;0.87858;0.8815;0.8847;0.88817;0.89201;0.89612;0.90061;
+6500;0.85911;0.85926;0.85955;0.86003;0.86066;0.86143;0.86236;0.86353;0.86483;0.86628;0.86792;0.86987;0.8721;0.87471;0.87763;0.88082;0.88428;0.88811;0.89221;0.89668;
+7000;0.85523;0.85539;0.85569;0.85617;0.8568;0.85758;0.85851;0.85968;0.86099;0.86245;0.86408;0.86601;0.86822;0.87082;0.87373;0.87692;0.88037;0.88419;0.88828;0.89273;
+7500;0.85135;0.85149;0.85179;0.85228;0.85291;0.8537;0.85463;0.85581;0.85713;0.85858;0.86022;0.86212;0.8644;0.86691;0.86981;0.87299;0.87644;0.88025;0.88433;0.88876;
+8000;0.84747;0.84747;0.84785;0.84833;0.84897;0.84977;0.85071;0.85191;0.85324;0.8547;0.85633;0.85815;0.8604;0.86298;0.86586;0.86903;0.87248;0.87629;0.88035;0.88477;
+8500;0.84347;0.84357;0.84387;0.84436;0.84499;0.84579;0.84675;0.84796;0.8493;0.85079;0.85243;0.85424;0.85653;0.85903;0.86189;0.86505;0.8685;0.8723;0.87635;0.88076;
+9000;0.83946;0.83956;0.83986;0.84035;0.84099;0.84179;0.84275;0.84398;0.84534;0.84682;0.84848;0.8503;0.85256;0.85505;0.8579;0.86105;0.86449;0.86828;0.87233;0.87673;
+9500;0.83542;0.83552;0.83582;0.83631;0.83695;0.83776;0.83872;0.83996;0.84134;0.84283;0.84449;0.84632;0.84858;0.85104;0.85388;0.85702;0.86046;0.86424;0.86828;0.87267;
+10000;0.83127;0.83137;0.83168;0.83217;0.83283;0.83366;0.83466;0.83591;0.83731;0.83881;0.84048;0.84231;0.84453;0.84701;0.84992;0.85298;0.8564;0.86018;0.86421;0.86858;
+10500;0.82711;0.82714;0.82745;0.82794;0.8286;0.82943;0.83043;0.83172;0.83316;0.83472;0.83644;0.83828;0.84047;0.84294;0.84585;0.84897;0.85238;0.85608;0.86011;0.86447;
+11000;0.82278;0.82288;0.82319;0.82368;0.82434;0.82518;0.82617;0.82747;0.82892;0.8305;0.83224;0.83413;0.83634;0.83891;0.84166;0.84486;0.84827;0.85196;0.85598;0.86033;
+11500;0.82274;0.82284;0.82314;0.82364;0.82429;0.82513;0.82613;0.82742;0.82888;0.83045;0.83219;0.83408;0.8363;0.83887;0.84175;0.84493;0.84839;0.85212;0.85613;0.86048;
+12000;0.82269;0.82279;0.8231;0.82359;0.82425;0.82509;0.82609;0.82738;0.82884;0.8304;0.83214;0.83403;0.83626;0.83883;0.84171;0.84489;0.84836;0.85211;0.85618;0.8606;
+12500;0.82264;0.82275;0.82306;0.82355;0.82421;0.82505;0.82605;0.82734;0.82879;0.83035;0.83209;0.83398;0.83622;0.83879;0.84168;0.84486;0.84832;0.85207;0.85615;0.86056;
+13000;0.8226;0.82271;0.82301;0.82351;0.82417;0.82501;0.82601;0.8273;0.82874;0.83029;0.83204;0.83393;0.83617;0.83876;0.84164;0.84482;0.84829;0.85204;0.85611;0.86052;
+13500;0.82256;0.82256;0.82297;0.82346;0.82412;0.82496;0.82596;0.82725;0.82868;0.83024;0.83199;0.83388;0.83613;0.83872;0.8416;0.84479;0.84826;0.85201;0.85608;0.86048;
+14000;0.82252;0.82252;0.82293;0.82342;0.82408;0.82491;0.82592;0.82719;0.82863;0.83019;0.83194;0.83384;0.83609;0.83868;0.84157;0.84476;0.84822;0.85197;0.85604;0.86045;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.88723;0.88733;0.88761;0.88804;0.88864;0.88936;0.89022;0.89121;0.89257;0.89428;0.89625;0.89856;0.90097;0.90374;0.90694;0.91034;0.91394;0.91775;0.9218;0.92611;
+500;0.88363;0.8838;0.88407;0.88451;0.88509;0.8858;0.88665;0.88762;0.88895;0.89064;0.89257;0.89487;0.89727;0.90001;0.90317;0.90654;0.91015;0.91397;0.91802;0.92235;
+1000;0.88015;0.88024;0.88051;0.88095;0.88153;0.88223;0.88308;0.88404;0.88535;0.887;0.88889;0.89119;0.89357;0.89627;0.89939;0.90273;0.90635;0.91016;0.91422;0.91856;
+1500;0.87667;0.87669;0.87696;0.87739;0.87796;0.87865;0.87948;0.88045;0.88165;0.88327;0.88523;0.88748;0.88985;0.89253;0.8956;0.89891;0.90253;0.90634;0.9104;0.91475;
+2000;0.87304;0.87313;0.87339;0.87382;0.87439;0.87508;0.87591;0.87687;0.87805;0.87963;0.88156;0.88378;0.88613;0.88876;0.8918;0.89508;0.8987;0.9025;0.90656;0.91091;
+2500;0.86941;0.86954;0.86981;0.87023;0.8708;0.87149;0.87232;0.87328;0.87445;0.87599;0.87788;0.88007;0.88239;0.885;0.888;0.89123;0.89484;0.89864;0.9027;0.90706;
+3000;0.86584;0.86594;0.8662;0.86662;0.86719;0.86787;0.86871;0.86966;0.87083;0.87234;0.87419;0.87635;0.87866;0.88122;0.88419;0.88738;0.89098;0.89476;0.89882;0.90318;
+3500;0.86227;0.86229;0.86255;0.86298;0.86354;0.86423;0.86506;0.86602;0.86717;0.86866;0.87047;0.87262;0.87492;0.87744;0.88031;0.88354;0.88709;0.89083;0.89491;0.89927;
+4000;0.85853;0.85861;0.85887;0.8593;0.85986;0.86055;0.86137;0.86233;0.86348;0.86495;0.86682;0.86886;0.87117;0.87366;0.87651;0.87969;0.88321;0.88694;0.89099;0.89534;
+4500;0.85478;0.8549;0.85517;0.85559;0.85615;0.85682;0.85765;0.85861;0.85976;0.8612;0.86304;0.86508;0.86739;0.86987;0.87269;0.87583;0.87932;0.88303;0.88709;0.89141;
+5000;0.85107;0.85116;0.85142;0.85184;0.85239;0.85307;0.8539;0.85486;0.85601;0.85743;0.85925;0.86126;0.86357;0.86606;0.86886;0.87196;0.87541;0.87911;0.88316;0.88747;
+5500;0.84736;0.84738;0.84764;0.84806;0.84862;0.8493;0.85013;0.85109;0.85224;0.85365;0.85543;0.85742;0.85972;0.86222;0.865;0.86815;0.87149;0.87519;0.8792;0.88351;
+6000;0.84349;0.84358;0.84384;0.84426;0.84482;0.8455;0.84633;0.8473;0.84844;0.84983;0.8516;0.85357;0.85586;0.85836;0.86113;0.86425;0.86755;0.87124;0.87517;0.87953;
+6500;0.83962;0.83972;0.83999;0.84041;0.84097;0.84166;0.84251;0.84348;0.84462;0.84599;0.84774;0.84969;0.85198;0.85447;0.85724;0.86032;0.8636;0.86726;0.87117;0.87552;
+7000;0.83575;0.83584;0.83611;0.83653;0.83709;0.83778;0.83863;0.83962;0.84078;0.84213;0.84386;0.84579;0.84807;0.85056;0.85332;0.8563;0.85962;0.86326;0.86716;0.8715;
+7500;0.83188;0.83188;0.8322;0.83263;0.83319;0.83388;0.83474;0.83573;0.83689;0.83823;0.83997;0.84189;0.84415;0.84664;0.84939;0.85237;0.85566;0.85926;0.86322;0.86746;
+8000;0.82791;0.828;0.82826;0.82869;0.82926;0.82995;0.83082;0.83182;0.83299;0.83432;0.83596;0.83795;0.84021;0.84269;0.84543;0.84841;0.85168;0.85524;0.8592;0.86341;
+8500;0.82396;0.82405;0.82432;0.82475;0.82532;0.82602;0.82688;0.82789;0.82905;0.83038;0.832;0.83397;0.83623;0.83872;0.84144;0.84442;0.84768;0.85121;0.85506;0.85935;
+9000;0.82002;0.82003;0.82031;0.82075;0.82134;0.82205;0.82291;0.82393;0.82509;0.82641;0.82802;0.82996;0.83221;0.8347;0.83744;0.84041;0.84364;0.84716;0.85109;0.85526;
+9500;0.81579;0.81589;0.81616;0.81661;0.8172;0.81792;0.81882;0.81987;0.82108;0.82243;0.82401;0.82593;0.82816;0.83065;0.83338;0.83637;0.83958;0.8431;0.847;0.85116;
+10000;0.81157;0.81171;0.81198;0.81243;0.81302;0.81375;0.81466;0.81572;0.81693;0.81829;0.81989;0.82189;0.82408;0.82657;0.8293;0.83228;0.8355;0.83901;0.84289;0.84704;
+10500;0.8074;0.8075;0.80777;0.80822;0.80881;0.80955;0.81046;0.81153;0.81275;0.81411;0.8157;0.81768;0.81986;0.82238;0.82515;0.82816;0.83138;0.83489;0.83876;0.84289;
+11000;0.80324;0.80325;0.80353;0.80398;0.80457;0.80531;0.80622;0.8073;0.80853;0.8099;0.81149;0.81344;0.81561;0.81812;0.82089;0.8239;0.82716;0.83071;0.8346;0.83871;
+11500;0.80307;0.80317;0.80345;0.80389;0.80449;0.80522;0.80614;0.80722;0.80845;0.80983;0.81141;0.81337;0.81554;0.81805;0.82082;0.82383;0.82709;0.83065;0.83459;0.83876;
+12000;0.8029;0.80308;0.80336;0.80381;0.8044;0.80514;0.80606;0.80714;0.80837;0.80975;0.81134;0.8133;0.81547;0.81799;0.82076;0.82378;0.82704;0.83059;0.83453;0.8387;
+12500;0.8029;0.80299;0.80327;0.80372;0.80431;0.80505;0.80597;0.80706;0.80829;0.80967;0.81127;0.81323;0.81541;0.81793;0.8207;0.82372;0.82699;0.83053;0.83447;0.83864;
+13000;0.8029;0.80291;0.80318;0.80363;0.80423;0.80497;0.80589;0.80697;0.80821;0.80959;0.81119;0.81316;0.81534;0.81787;0.82065;0.82367;0.82693;0.83048;0.83442;0.83858;
+13500;0.80272;0.80282;0.80309;0.80354;0.80414;0.80488;0.80581;0.80689;0.80813;0.80951;0.81111;0.81309;0.81528;0.81781;0.82059;0.82361;0.82688;0.83042;0.83436;0.83852;
+14000;0.80254;0.80273;0.803;0.80345;0.80405;0.80479;0.80572;0.80681;0.80804;0.80943;0.81103;0.81302;0.81521;0.81774;0.82053;0.82355;0.82682;0.83045;0.8343;0.83846;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.86637;0.86652;0.86681;0.86726;0.86788;0.86864;0.86954;0.87065;0.8723;0.87423;0.8763;0.87853;0.88105;0.88399;0.8871;0.89027;0.89346;0.89664;0.89976;0.90285;
+500;0.86296;0.86305;0.86333;0.86377;0.86438;0.86513;0.866;0.86709;0.86871;0.8706;0.87268;0.8749;0.8774;0.88029;0.88342;0.88658;0.88979;0.89302;0.8962;0.89938;
+1000;0.85954;0.85954;0.85984;0.86027;0.86087;0.8616;0.86246;0.86353;0.86511;0.86696;0.86904;0.87124;0.87372;0.87658;0.8797;0.88287;0.8861;0.88936;0.89261;0.89587;
+1500;0.85598;0.85608;0.85635;0.85677;0.85736;0.85807;0.85892;0.85996;0.86151;0.86333;0.86539;0.86756;0.87001;0.8729;0.87596;0.87913;0.88238;0.88568;0.88898;0.89232;
+2000;0.85242;0.85257;0.85283;0.85325;0.85383;0.85453;0.85536;0.85639;0.8579;0.85968;0.86173;0.86387;0.86629;0.86914;0.87219;0.87536;0.87862;0.88195;0.88533;0.88874;
+2500;0.84886;0.84904;0.8493;0.84971;0.85028;0.85097;0.85179;0.8528;0.85428;0.85603;0.85807;0.86018;0.86257;0.86537;0.8684;0.87156;0.87483;0.8782;0.88162;0.88511;
+3000;0.8453;0.84547;0.84573;0.84614;0.8467;0.84738;0.84819;0.84919;0.85064;0.85236;0.85438;0.85648;0.85884;0.86161;0.86461;0.86775;0.87102;0.8744;0.87788;0.88144;
+3500;0.8418;0.84188;0.84214;0.84254;0.8431;0.84376;0.84457;0.84554;0.84697;0.84866;0.85067;0.85275;0.85508;0.85782;0.86081;0.86393;0.8672;0.87057;0.87409;0.87773;
+4000;0.83829;0.83827;0.83852;0.83892;0.83947;0.84012;0.84091;0.84187;0.84327;0.84492;0.84694;0.849;0.85128;0.85402;0.85697;0.86009;0.86335;0.86674;0.87027;0.87395;
+4500;0.83454;0.83462;0.83487;0.83527;0.83582;0.83646;0.83724;0.83819;0.83955;0.84117;0.84316;0.84521;0.84753;0.85018;0.85311;0.85622;0.85947;0.86287;0.86643;0.87015;
+5000;0.83086;0.83094;0.83119;0.83159;0.83213;0.83278;0.83355;0.83448;0.83581;0.83739;0.83936;0.84141;0.8437;0.84632;0.84921;0.85232;0.85556;0.85896;0.86254;0.86631;
+5500;0.82718;0.82722;0.82747;0.82786;0.8284;0.82904;0.82982;0.83075;0.83205;0.8336;0.83553;0.83757;0.83985;0.84242;0.84528;0.84839;0.85163;0.85503;0.85861;0.86242;
+6000;0.8235;0.8235;0.82372;0.8241;0.82464;0.82528;0.82605;0.82698;0.82825;0.82978;0.83169;0.83371;0.83596;0.83843;0.84133;0.84444;0.84767;0.85108;0.85467;0.85848;
+6500;0.81982;0.81968;0.81993;0.82032;0.82085;0.82148;0.82225;0.82317;0.82442;0.826;0.8278;0.82983;0.83198;0.8345;0.83735;0.84046;0.84369;0.84709;0.8507;0.85453;
+7000;0.81579;0.81587;0.81611;0.8165;0.81703;0.81766;0.81842;0.81933;0.82056;0.82211;0.82388;0.82591;0.82806;0.83055;0.83337;0.83646;0.83967;0.84308;0.84669;0.85054;
+7500;0.81195;0.81203;0.81227;0.81265;0.81317;0.81379;0.81456;0.81546;0.81667;0.81819;0.81994;0.82196;0.8241;0.82658;0.82935;0.83243;0.83564;0.83904;0.84266;0.84652;
+8000;0.80811;0.80814;0.80838;0.80877;0.80928;0.8099;0.81066;0.81156;0.81275;0.81425;0.81598;0.81799;0.82011;0.82256;0.8253;0.82838;0.83157;0.83497;0.83859;0.84246;
+8500;0.80402;0.8041;0.80435;0.80474;0.80527;0.80591;0.80669;0.80761;0.8088;0.81028;0.81199;0.81398;0.81609;0.81851;0.82129;0.82428;0.82748;0.83087;0.83449;0.83838;
+9000;0.79992;0.80003;0.80028;0.80067;0.8012;0.80183;0.80262;0.80353;0.80471;0.8062;0.80792;0.80996;0.81206;0.81444;0.81718;0.82014;0.82335;0.82675;0.83037;0.83426;
+9500;0.79583;0.79583;0.79617;0.79656;0.79709;0.79773;0.79851;0.79942;0.80059;0.80199;0.80375;0.80578;0.8079;0.81029;0.81304;0.81598;0.81919;0.82259;0.82621;0.8301;
+10000;0.79169;0.79178;0.79202;0.79241;0.79294;0.79358;0.79437;0.79528;0.79636;0.79782;0.79955;0.80156;0.80369;0.80606;0.80879;0.81171;0.81497;0.81837;0.82202;0.82592;
+10500;0.78756;0.78759;0.78784;0.78823;0.78876;0.7894;0.79019;0.7911;0.79219;0.79361;0.79532;0.79731;0.79945;0.80181;0.80451;0.80739;0.81064;0.81404;0.81774;0.8217;
+11000;0.78328;0.78337;0.78361;0.78401;0.78454;0.78518;0.78597;0.78688;0.78797;0.78937;0.79112;0.79303;0.79518;0.79752;0.80012;0.80305;0.80627;0.80967;0.81337;0.81734;
+11500;0.7832;0.78329;0.78354;0.78393;0.78446;0.7851;0.7859;0.78681;0.78791;0.78931;0.79106;0.79298;0.79512;0.79747;0.80007;0.803;0.80623;0.80962;0.81332;0.81728;
+12000;0.78312;0.78322;0.78346;0.78386;0.78439;0.78503;0.78583;0.78675;0.78784;0.78925;0.791;0.79292;0.79507;0.79742;0.80002;0.80296;0.80619;0.80958;0.81328;0.81723;
+12500;0.78304;0.78314;0.78339;0.78379;0.78432;0.78496;0.78576;0.78668;0.78777;0.78918;0.79094;0.79287;0.79502;0.79737;0.79998;0.80292;0.80615;0.80954;0.81323;0.81719;
+13000;0.78296;0.78307;0.78332;0.78372;0.78424;0.78489;0.78569;0.78661;0.78771;0.78912;0.79089;0.79282;0.79497;0.79732;0.79994;0.80288;0.80611;0.8095;0.81319;0.81714;
+13500;0.78288;0.783;0.78325;0.78364;0.78417;0.78482;0.78562;0.78654;0.78764;0.78906;0.79083;0.79277;0.79492;0.79728;0.7999;0.80285;0.80608;0.80946;0.81315;0.8171;
+14000;0.78284;0.78293;0.78317;0.78357;0.7841;0.78475;0.78555;0.78648;0.78758;0.789;0.79077;0.79271;0.79487;0.79724;0.79994;0.80282;0.80605;0.80946;0.81311;0.81705;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.84479;0.84503;0.84536;0.84586;0.84657;0.84738;0.84838;0.84975;0.85154;0.85349;0.85548;0.85775;0.86043;0.86319;0.86588;0.86837;0.87045;0.87179;0.87184;0.86932;
+500;0.84277;0.8416;0.84192;0.84242;0.84311;0.84389;0.84487;0.84621;0.84799;0.84993;0.85191;0.85417;0.85682;0.85959;0.86229;0.86482;0.86698;0.86849;0.86888;0.86722;
+1000;0.83805;0.83816;0.83847;0.83895;0.83963;0.8404;0.84137;0.84268;0.84443;0.84636;0.84832;0.85057;0.85319;0.85596;0.85867;0.86124;0.86348;0.86515;0.86585;0.86497;
+1500;0.83461;0.8347;0.83501;0.83548;0.83615;0.83691;0.83785;0.83915;0.84086;0.84277;0.84472;0.84695;0.84959;0.85231;0.85503;0.85763;0.85994;0.86175;0.86275;0.86243;
+2000;0.83111;0.83121;0.83152;0.83198;0.83264;0.83339;0.83432;0.83559;0.83729;0.83919;0.84111;0.84333;0.84593;0.84863;0.85136;0.85398;0.85636;0.8583;0.85955;0.8597;
+2500;0.82761;0.82769;0.82799;0.82845;0.8291;0.82984;0.83076;0.83202;0.8337;0.83558;0.8375;0.8397;0.84227;0.84496;0.84767;0.85031;0.85275;0.85482;0.85629;0.85683;
+3000;0.82412;0.82414;0.82443;0.82488;0.82552;0.82625;0.82716;0.8284;0.83006;0.83195;0.83385;0.83601;0.83859;0.84127;0.84398;0.84664;0.84912;0.85129;0.85295;0.85384;
+3500;0.82046;0.82056;0.82085;0.82129;0.82192;0.82264;0.82354;0.82476;0.8264;0.82827;0.83016;0.83228;0.83488;0.83757;0.84028;0.84294;0.84547;0.84771;0.84954;0.85074;
+4000;0.81681;0.81695;0.81723;0.81767;0.81829;0.81901;0.81989;0.82109;0.82272;0.82459;0.82645;0.82861;0.83113;0.83382;0.83655;0.83922;0.84177;0.8441;0.84606;0.84756;
+4500;0.8132;0.8133;0.81358;0.81401;0.81463;0.81533;0.81621;0.8174;0.81901;0.82086;0.82272;0.82485;0.82735;0.83004;0.83277;0.83547;0.83805;0.84043;0.84253;0.84424;
+5000;0.80959;0.80963;0.8099;0.81033;0.81093;0.81163;0.8125;0.81366;0.81526;0.81709;0.81895;0.82107;0.82354;0.82622;0.82896;0.83168;0.8343;0.83674;0.83894;0.84086;
+5500;0.80584;0.80593;0.8062;0.80662;0.80721;0.8079;0.80875;0.8099;0.81147;0.81328;0.81515;0.81726;0.8197;0.82237;0.82511;0.82785;0.83051;0.83303;0.83534;0.83742;
+6000;0.80208;0.80221;0.80247;0.80288;0.80347;0.80414;0.80498;0.80611;0.80765;0.80944;0.81131;0.81341;0.81583;0.81849;0.82123;0.82399;0.82671;0.82929;0.83171;0.83391;
+6500;0.79837;0.79846;0.79872;0.79912;0.79969;0.80039;0.80118;0.80229;0.80381;0.80557;0.80744;0.80951;0.81192;0.8146;0.81734;0.82013;0.82287;0.82551;0.82801;0.83035;
+7000;0.79466;0.79467;0.79493;0.79533;0.79589;0.79657;0.79736;0.79844;0.79995;0.80168;0.80356;0.80562;0.80799;0.81066;0.81342;0.81622;0.819;0.82169;0.82427;0.82673;
+7500;0.79068;0.79077;0.79103;0.79143;0.79199;0.79268;0.79348;0.79451;0.79608;0.79781;0.79966;0.80164;0.80404;0.80668;0.80944;0.81226;0.81507;0.81782;0.82047;0.82305;
+8000;0.78671;0.78685;0.78711;0.78751;0.78807;0.78875;0.78955;0.79055;0.79209;0.79382;0.7957;0.79769;0.8;0.80266;0.80543;0.80825;0.8111;0.81391;0.81663;0.81931;
+8500;0.78283;0.78292;0.78317;0.78356;0.78412;0.78478;0.78557;0.78656;0.78807;0.78978;0.79164;0.79362;0.79591;0.79856;0.80137;0.80419;0.80706;0.80994;0.81274;0.81552;
+9000;0.77896;0.77895;0.7792;0.77959;0.78013;0.78079;0.78157;0.78254;0.78401;0.7857;0.78754;0.78952;0.79177;0.79438;0.79718;0.80004;0.80296;0.8059;0.8088;0.81167;
+9500;0.77487;0.77495;0.77519;0.77558;0.77611;0.77676;0.77753;0.77849;0.77993;0.78159;0.78341;0.78537;0.7876;0.79017;0.79297;0.79582;0.79875;0.80173;0.80474;0.80776;
+10000;0.77077;0.77092;0.77116;0.77154;0.77206;0.77269;0.77345;0.77439;0.7758;0.77743;0.77925;0.7812;0.78339;0.78598;0.78871;0.79156;0.7945;0.79751;0.80057;0.80368;
+10500;0.76677;0.76685;0.76708;0.76745;0.76797;0.76859;0.76934;0.77027;0.77164;0.77324;0.77506;0.77699;0.77915;0.7817;0.78443;0.78726;0.79021;0.79324;0.79635;0.79954;
+11000;0.76266;0.76273;0.76297;0.76334;0.76385;0.76446;0.7652;0.76611;0.76746;0.76902;0.77083;0.77274;0.77488;0.77739;0.7801;0.78293;0.78588;0.78893;0.79208;0.79534;
+11500;0.76256;0.76265;0.76289;0.76326;0.76377;0.76438;0.76513;0.76604;0.76739;0.76896;0.77077;0.77268;0.77483;0.77734;0.7801;0.78288;0.78582;0.78886;0.79199;0.79523;
+12000;0.76246;0.76257;0.7628;0.76318;0.76369;0.7643;0.76505;0.76597;0.76732;0.7689;0.77071;0.77264;0.77477;0.77729;0.77999;0.78282;0.78575;0.78878;0.79191;0.79513;
+12500;0.76237;0.76248;0.76272;0.76309;0.76361;0.76422;0.76497;0.7659;0.76726;0.76884;0.77065;0.77258;0.77472;0.77723;0.77994;0.78276;0.78569;0.78871;0.79182;0.79502;
+13000;0.76231;0.76239;0.76263;0.763;0.76352;0.76414;0.7649;0.76582;0.76719;0.76878;0.77059;0.77252;0.77466;0.77718;0.77988;0.7827;0.78562;0.78864;0.79173;0.79491;
+13500;0.76226;0.76226;0.76254;0.76291;0.76343;0.76406;0.76482;0.76575;0.76712;0.76871;0.77052;0.77246;0.77461;0.77713;0.77983;0.78264;0.78556;0.78856;0.79164;0.7948;
+14000;0.76213;0.76221;0.76245;0.76282;0.76334;0.76397;0.76473;0.76567;0.76705;0.76864;0.77046;0.7724;0.77455;0.77707;0.77977;0.78258;0.78549;0.78849;0.79155;0.79468;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.8358;0.83592;0.83627;0.83681;0.83756;0.8384;0.83942;0.84093;0.84279;0.84469;0.8467;0.84912;0.85177;0.8544;0.85684;0.85883;0.85991;0.85919;0.85383;0.83628;
+500;0.83516;0.83255;0.8329;0.83343;0.83416;0.83498;0.83597;0.83744;0.83928;0.84118;0.84319;0.84557;0.8482;0.85083;0.85331;0.85537;0.85662;0.85631;0.85218;0.83827;
+1000;0.82907;0.82918;0.82952;0.83003;0.83076;0.83155;0.83253;0.83397;0.83574;0.83765;0.83965;0.84199;0.84462;0.84725;0.84974;0.85187;0.85328;0.85332;0.85023;0.83935;
+1500;0.82568;0.82578;0.82612;0.82662;0.82733;0.82812;0.82909;0.8305;0.83223;0.83413;0.8361;0.83839;0.84103;0.84364;0.84615;0.84835;0.8499;0.85023;0.84801;0.83978;
+2000;0.82224;0.82235;0.82268;0.82318;0.82388;0.82465;0.82562;0.827;0.82871;0.83061;0.83253;0.8348;0.83739;0.84;0.84254;0.84479;0.84647;0.84709;0.84556;0.83922;
+2500;0.8188;0.81887;0.8192;0.81968;0.82038;0.82115;0.8221;0.82348;0.82517;0.82706;0.82897;0.83116;0.83378;0.83637;0.83891;0.8412;0.84299;0.84386;0.843;0.83815;
+3000;0.81526;0.81537;0.81568;0.81616;0.81685;0.81761;0.81855;0.81991;0.82159;0.82348;0.82538;0.82756;0.83014;0.83274;0.83527;0.8376;0.83947;0.84055;0.84018;0.83665;
+3500;0.81171;0.81183;0.81214;0.81261;0.81329;0.81404;0.81497;0.81631;0.81797;0.81986;0.82175;0.82391;0.82647;0.82907;0.83161;0.83395;0.83592;0.83717;0.83721;0.83478;
+4000;0.80814;0.80824;0.80855;0.80901;0.80968;0.81043;0.81136;0.81268;0.81436;0.8162;0.81808;0.82024;0.82277;0.82537;0.82792;0.8303;0.83231;0.83373;0.83408;0.83255;
+4500;0.80456;0.80463;0.80493;0.80538;0.80604;0.80678;0.80769;0.80899;0.81067;0.81251;0.81438;0.81653;0.81903;0.82164;0.82419;0.8266;0.82869;0.83022;0.83085;0.83001;
+5000;0.80088;0.80098;0.80127;0.80172;0.80237;0.8031;0.804;0.80528;0.80694;0.80877;0.81065;0.8128;0.81526;0.81787;0.82043;0.82286;0.82502;0.82668;0.82756;0.82721;
+5500;0.7972;0.79731;0.79759;0.79804;0.79867;0.79939;0.80028;0.80153;0.80317;0.805;0.80686;0.80901;0.81147;0.81408;0.81664;0.8191;0.82131;0.82309;0.8242;0.82423;
+6000;0.79351;0.7936;0.79388;0.79432;0.79494;0.79565;0.79652;0.79776;0.79938;0.80119;0.80304;0.80517;0.80767;0.81025;0.81282;0.8153;0.81757;0.81945;0.82076;0.82117;
+6500;0.78981;0.78987;0.79014;0.79057;0.79118;0.79188;0.79274;0.79395;0.79555;0.79735;0.79919;0.8013;0.80377;0.80636;0.80897;0.81146;0.81378;0.81577;0.81726;0.818;
+7000;0.78592;0.78602;0.7863;0.78672;0.78734;0.78804;0.78891;0.79011;0.7917;0.79348;0.7953;0.79738;0.79985;0.80244;0.80505;0.8076;0.80996;0.81204;0.81369;0.81472;
+7500;0.78203;0.78214;0.78241;0.78283;0.78344;0.78412;0.78498;0.78616;0.78774;0.78954;0.79137;0.79342;0.79589;0.79848;0.8011;0.80367;0.8061;0.80826;0.81006;0.81135;
+8000;0.77814;0.77823;0.77849;0.77891;0.7795;0.78018;0.78102;0.78218;0.78374;0.78553;0.78733;0.78941;0.79184;0.79445;0.79711;0.79971;0.80218;0.80444;0.80637;0.80792;
+8500;0.77424;0.77429;0.77455;0.77495;0.77554;0.7762;0.77704;0.77817;0.7797;0.78147;0.78327;0.78533;0.78773;0.79033;0.79299;0.79564;0.7982;0.80055;0.80263;0.8044;
+9000;0.77023;0.77031;0.77057;0.77097;0.77154;0.7722;0.77302;0.77413;0.77564;0.77738;0.77917;0.78121;0.78358;0.78617;0.78883;0.7915;0.7941;0.79654;0.79881;0.8008;
+9500;0.76621;0.76631;0.76656;0.76696;0.76752;0.76816;0.76897;0.77006;0.77155;0.77326;0.77504;0.77706;0.7794;0.78198;0.78463;0.78731;0.78995;0.79248;0.79486;0.79703;
+10000;0.76219;0.76227;0.76252;0.76291;0.76346;0.76412;0.76489;0.76596;0.76742;0.7691;0.77089;0.77288;0.77518;0.77777;0.7804;0.7831;0.78579;0.78839;0.79085;0.79317;
+10500;0.75817;0.7582;0.75844;0.75882;0.75937;0.76002;0.76078;0.76182;0.76326;0.76492;0.7667;0.76867;0.77094;0.77349;0.77616;0.77887;0.78158;0.78424;0.78678;0.78924;
+11000;0.754;0.75409;0.75433;0.7547;0.75524;0.75588;0.75663;0.75765;0.75906;0.76071;0.76249;0.76438;0.76669;0.76922;0.77188;0.77459;0.77733;0.78004;0.78267;0.78524;
+11500;0.75393;0.75402;0.75426;0.75464;0.75517;0.75581;0.75657;0.7576;0.75901;0.76065;0.76242;0.76431;0.76662;0.76914;0.7718;0.77451;0.77724;0.77993;0.78254;0.78508;
+12000;0.75386;0.75396;0.7542;0.75457;0.75511;0.75575;0.7565;0.75754;0.75895;0.7606;0.76237;0.76426;0.76655;0.76907;0.77172;0.77443;0.77715;0.77982;0.7824;0.78492;
+12500;0.75381;0.75389;0.75413;0.75451;0.75504;0.75568;0.75644;0.75748;0.75889;0.76054;0.76231;0.76425;0.76649;0.76902;0.77165;0.77434;0.77705;0.77971;0.78227;0.78476;
+13000;0.75376;0.75382;0.75406;0.75444;0.75497;0.75562;0.75637;0.75741;0.75883;0.76048;0.76225;0.7642;0.76644;0.76897;0.77159;0.77426;0.77696;0.77959;0.78213;0.78459;
+13500;0.75371;0.75371;0.75399;0.75437;0.7549;0.75555;0.75631;0.75735;0.75877;0.76042;0.76219;0.76414;0.76639;0.76891;0.77152;0.7742;0.77687;0.77948;0.78199;0.78443;
+14000;0.7536;0.75368;0.75392;0.7543;0.75483;0.75548;0.75624;0.75729;0.75871;0.76036;0.76213;0.76408;0.76633;0.76886;0.77146;0.77413;0.77679;0.77937;0.78186;0.78426;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.82622;0.82638;0.82678;0.82735;0.82817;0.82907;0.83015;0.83184;0.83379;0.83563;0.83776;0.84026;0.84282;0.84526;0.84728;0.84836;0.84729;0.83987;0.81231;-9999;
+500;0.8229;0.82305;0.82345;0.82401;0.82482;0.82569;0.82674;0.82839;0.83031;0.83214;0.83425;0.83673;0.83929;0.84175;0.84384;0.84507;0.84442;0.83846;0.81587;-9999;
+1000;0.81959;0.81974;0.82011;0.82067;0.82146;0.82231;0.82334;0.82495;0.82684;0.82864;0.83072;0.83318;0.83574;0.83823;0.84036;0.84173;0.84145;0.83672;0.81832;-9999;
+1500;0.81629;0.81641;0.81676;0.81731;0.81808;0.81892;0.81993;0.82151;0.82337;0.82516;0.8272;0.82961;0.83217;0.83467;0.83685;0.83834;0.83838;0.83469;0.81979;-9999;
+2000;0.81291;0.81303;0.81339;0.81392;0.81469;0.81551;0.81651;0.81806;0.8199;0.82168;0.82369;0.82606;0.82859;0.83108;0.83331;0.83491;0.83523;0.83242;0.8207;-9999;
+2500;0.80952;0.80961;0.80997;0.8105;0.81125;0.81206;0.81305;0.81458;0.81639;0.81818;0.82016;0.8225;0.82502;0.82749;0.82974;0.83144;0.832;0.82994;0.8207;-9999;
+3000;0.80606;0.80618;0.80653;0.80705;0.80778;0.80858;0.80955;0.81105;0.81285;0.81463;0.8166;0.81892;0.82143;0.8239;0.82616;0.82793;0.8287;0.82735;0.82015;-9999;
+3500;0.80259;0.8027;0.80304;0.80354;0.80427;0.80506;0.80602;0.8075;0.80927;0.81105;0.81299;0.81529;0.81779;0.82027;0.82256;0.82439;0.82532;0.82445;0.81893;0.80223;
+4000;0.79907;0.79918;0.79951;0.80001;0.80073;0.8015;0.80245;0.80391;0.80567;0.80745;0.80932;0.81163;0.81413;0.81661;0.81892;0.82082;0.8219;0.82141;0.81707;0.80298;
+4500;0.79556;0.79563;0.79596;0.79644;0.79715;0.79791;0.79885;0.80028;0.80202;0.8038;0.80569;0.80795;0.81043;0.81291;0.81524;0.8172;0.81843;0.81825;0.81492;0.80366;
+5000;0.79193;0.79204;0.79236;0.79284;0.79354;0.79429;0.79522;0.79662;0.79832;0.80012;0.802;0.80423;0.80671;0.80918;0.81153;0.81355;0.81491;0.81503;0.81251;0.80362;
+5500;0.78831;0.78843;0.78873;0.7892;0.78989;0.79063;0.79155;0.79293;0.7946;0.7964;0.79827;0.80047;0.80295;0.80543;0.80779;0.80986;0.81134;0.81172;0.80993;0.80311;
+6000;0.78467;0.78477;0.78507;0.78553;0.7862;0.78693;0.78784;0.7892;0.79086;0.79265;0.79452;0.79667;0.79916;0.80163;0.80402;0.80613;0.80772;0.80836;0.80722;0.80191;
+6500;0.78089;0.78099;0.7813;0.78176;0.78243;0.78317;0.78408;0.78544;0.78707;0.78886;0.7907;0.79285;0.79531;0.79779;0.8002;0.80237;0.80405;0.80491;0.80424;0.80029;
+7000;0.77711;0.77718;0.77748;0.77793;0.77859;0.77932;0.78022;0.78155;0.78318;0.785;0.78685;0.789;0.79143;0.79391;0.79633;0.79855;0.80035;0.80138;0.80112;0.79828;
+7500;0.77333;0.77333;0.77362;0.77407;0.77472;0.77543;0.77632;0.77763;0.77923;0.78105;0.78289;0.785;0.78748;0.78999;0.79243;0.79469;0.79658;0.7978;0.7979;0.79595;
+8000;0.76935;0.76945;0.76974;0.77018;0.77081;0.77152;0.77239;0.77367;0.77525;0.77707;0.77889;0.781;0.78344;0.78595;0.78842;0.79074;0.79275;0.79415;0.79457;0.79334;
+8500;0.76538;0.76554;0.76582;0.76625;0.76687;0.76757;0.76843;0.76968;0.77129;0.77305;0.77486;0.77695;0.77936;0.78188;0.78435;0.78671;0.78878;0.79035;0.79111;0.79056;
+9000;0.7614;0.76159;0.76187;0.76229;0.7629;0.76359;0.76444;0.76566;0.76724;0.76899;0.77079;0.77286;0.77526;0.77777;0.78025;0.78263;0.78477;0.78648;0.78751;0.78744;
+9500;0.75743;0.75761;0.75788;0.75829;0.7589;0.75957;0.76041;0.76161;0.76317;0.7649;0.76668;0.76874;0.77111;0.77363;0.77612;0.77852;0.78072;0.78255;0.78379;0.78414;
+10000;0.75346;0.7536;0.75386;0.75427;0.75486;0.75552;0.75635;0.75753;0.75906;0.76078;0.76254;0.76458;0.76696;0.76944;0.77195;0.77437;0.77662;0.77856;0.78;0.78071;
+10500;0.74946;0.74955;0.7498;0.7502;0.75078;0.75144;0.75225;0.75341;0.75492;0.75662;0.75837;0.76038;0.76274;0.76522;0.76774;0.77019;0.77249;0.77452;0.77614;0.77715;
+11000;0.74546;0.74546;0.74571;0.74611;0.74667;0.74732;0.74812;0.74925;0.75074;0.75243;0.75417;0.75612;0.75849;0.76096;0.76348;0.76596;0.7683;0.77042;0.7722;0.77349;
+11500;0.7453;0.74539;0.74565;0.74604;0.74661;0.74725;0.74806;0.74919;0.75067;0.75237;0.7541;0.75606;0.75842;0.76089;0.76341;0.76587;0.7682;0.7703;0.77204;0.77327;
+12000;0.74515;0.74533;0.74558;0.74597;0.74654;0.74718;0.74799;0.74912;0.75061;0.7523;0.75404;0.756;0.75835;0.76082;0.76332;0.76578;0.76809;0.77017;0.77188;0.77306;
+12500;0.74517;0.74526;0.74551;0.7459;0.74647;0.74711;0.74792;0.74906;0.75055;0.75224;0.75397;0.75594;0.75828;0.76075;0.76324;0.76569;0.76799;0.77004;0.77172;0.77284;
+13000;0.7452;0.74519;0.74544;0.74583;0.7464;0.74704;0.74785;0.74899;0.75048;0.75217;0.75391;0.75589;0.75822;0.76067;0.76316;0.76559;0.76788;0.76991;0.77155;0.77261;
+13500;0.74502;0.74511;0.74536;0.74576;0.74633;0.74697;0.74778;0.74892;0.75042;0.7521;0.75384;0.75583;0.75815;0.7606;0.76308;0.7655;0.76777;0.76977;0.77138;0.77238;
+14000;0.74485;0.74503;0.74528;0.74568;0.74625;0.74689;0.74771;0.74885;0.75035;0.75203;0.75377;0.75576;0.75808;0.76053;0.763;0.76541;0.76766;0.76964;0.77121;0.77215;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.81627;0.81648;0.81689;0.81759;0.8185;0.81948;0.82077;0.82252;0.82452;0.8264;0.82861;0.83108;0.83351;0.83561;0.83684;0.83577;0.82768;0.79207;-9999;-9999;
+500;0.81295;0.81315;0.8136;0.81424;0.81516;0.81614;0.81739;0.8191;0.82108;0.82296;0.82514;0.82761;0.83005;0.83219;0.83355;0.83289;0.82623;0.79692;-9999;-9999;
+1000;0.80978;0.80995;0.8104;0.81099;0.81186;0.81281;0.81402;0.81571;0.81764;0.81948;0.82163;0.82411;0.82655;0.82874;0.83021;0.82991;0.82449;0.80067;-9999;-9999;
+1500;0.80649;0.80666;0.80709;0.80767;0.80853;0.80945;0.81065;0.8123;0.81422;0.81603;0.81813;0.82058;0.82303;0.82525;0.82683;0.82685;0.82248;0.8028;-9999;-9999;
+2000;0.80321;0.80333;0.80374;0.80432;0.80517;0.80607;0.80724;0.80888;0.81077;0.81257;0.81461;0.81707;0.81949;0.82173;0.82341;0.8237;0.82025;0.80417;-9999;-9999;
+2500;0.79981;0.79997;0.80036;0.80093;0.80176;0.80265;0.8038;0.80541;0.80729;0.80908;0.81115;0.81355;0.81597;0.81821;0.81995;0.82047;0.81781;0.80496;-9999;-9999;
+3000;0.7964;0.79655;0.79694;0.7975;0.79833;0.7992;0.80033;0.80192;0.80378;0.80554;0.80759;0.80999;0.81241;0.81468;0.81646;0.81717;0.81525;0.80485;-9999;-9999;
+3500;0.793;0.79311;0.79349;0.79404;0.79485;0.7957;0.79681;0.79839;0.80024;0.80199;0.80401;0.80639;0.80881;0.8111;0.81295;0.81381;0.81238;0.80412;0.77647;-9999;
+4000;0.78959;0.78959;0.78998;0.79055;0.79134;0.79218;0.79327;0.79482;0.79665;0.7984;0.80041;0.80277;0.80518;0.80748;0.80939;0.8104;0.8094;0.80264;0.77765;-9999;
+4500;0.78601;0.78615;0.78651;0.78704;0.78781;0.78863;0.7897;0.79122;0.79303;0.79477;0.79676;0.79912;0.80152;0.80383;0.80579;0.80693;0.80632;0.80084;0.78;-9999;
+5000;0.78244;0.78262;0.78297;0.78349;0.78425;0.78505;0.7861;0.7876;0.78939;0.79111;0.79308;0.79541;0.79783;0.80015;0.80215;0.80343;0.80314;0.79877;0.78192;-9999;
+5500;0.77886;0.77906;0.77941;0.77992;0.78066;0.78145;0.78247;0.78395;0.78572;0.78742;0.78937;0.79168;0.79409;0.79644;0.79848;0.79986;0.79987;0.79644;0.78266;-9999;
+6000;0.77527;0.77539;0.77573;0.77624;0.77699;0.77777;0.7788;0.78027;0.78202;0.78371;0.78564;0.78791;0.79032;0.79267;0.79477;0.79626;0.79651;0.79389;0.783;-9999;
+6500;0.77168;0.77168;0.77203;0.77251;0.77324;0.77401;0.77495;0.77646;0.77822;0.77993;0.78186;0.78412;0.78652;0.78887;0.791;0.7926;0.79309;0.79113;0.78251;-9999;
+7000;0.76782;0.76794;0.76826;0.76875;0.76947;0.77022;0.77115;0.77262;0.77436;0.77606;0.77797;0.78022;0.78264;0.78504;0.7872;0.78888;0.78959;0.78828;0.78155;-9999;
+7500;0.76397;0.76416;0.76448;0.76496;0.76566;0.7664;0.76731;0.76876;0.77046;0.77217;0.77404;0.77626;0.77868;0.78107;0.78329;0.78508;0.78601;0.78519;0.77994;-9999;
+8000;0.76024;0.76035;0.76066;0.76113;0.76182;0.76255;0.76344;0.76486;0.76654;0.76824;0.77004;0.77228;0.77468;0.77708;0.77932;0.78117;0.78227;0.78186;0.7779;0.7643;
+8500;0.75652;0.75652;0.75681;0.75726;0.75794;0.75865;0.75954;0.76093;0.76257;0.76428;0.76607;0.76826;0.77066;0.77305;0.77531;0.77723;0.77848;0.77841;0.77547;0.76513;
+9000;0.7525;0.7526;0.7529;0.75335;0.75402;0.75472;0.7556;0.75696;0.75858;0.76028;0.76208;0.76422;0.7666;0.76899;0.77126;0.77325;0.77463;0.77486;0.77276;0.76492;
+9500;0.74849;0.74867;0.74896;0.7494;0.75006;0.75075;0.75162;0.75295;0.75455;0.75625;0.75804;0.76014;0.76255;0.7649;0.76719;0.76922;0.77071;0.77124;0.7698;0.76405;
+10000;0.74447;0.7447;0.74499;0.74542;0.74606;0.74674;0.7476;0.74891;0.75049;0.75218;0.75398;0.75603;0.75841;0.76077;0.76307;0.76514;0.76675;0.76751;0.76671;0.76242;
+10500;0.74046;0.74069;0.74097;0.74139;0.74202;0.7427;0.74355;0.74482;0.74638;0.74808;0.74984;0.75189;0.75423;0.7566;0.75891;0.76103;0.76273;0.76371;0.76336;0.76033;
+11000;0.73645;0.73665;0.73692;0.73733;0.73795;0.73862;0.73946;0.7407;0.74223;0.74393;0.74567;0.74767;0.75003;0.7524;0.75472;0.75687;0.75866;0.75983;0.75987;0.75785;
+11500;0.73647;0.73657;0.73684;0.73725;0.73787;0.73854;0.73938;0.74063;0.74216;0.74385;0.74559;0.74759;0.74995;0.75231;0.75462;0.75676;0.75852;0.75966;0.75963;0.75743;
+12000;0.7365;0.73649;0.73676;0.73717;0.73779;0.73846;0.73929;0.74055;0.74208;0.74377;0.74551;0.7475;0.74986;0.75222;0.75452;0.75665;0.75841;0.75948;0.75938;0.75699;
+12500;0.73632;0.73641;0.73668;0.73709;0.73771;0.73837;0.73921;0.74047;0.742;0.74369;0.74543;0.74742;0.74978;0.75213;0.75443;0.75654;0.75826;0.75931;0.75913;0.75654;
+13000;0.73614;0.73633;0.7366;0.73701;0.73763;0.73829;0.73912;0.74039;0.74192;0.7436;0.74534;0.74737;0.74969;0.75203;0.75433;0.75642;0.75812;0.75913;0.75887;0.75608;
+13500;0.73615;0.73624;0.73651;0.73693;0.73755;0.73821;0.73904;0.7403;0.74184;0.74351;0.74526;0.74728;0.7496;0.75194;0.75423;0.75631;0.75799;0.75895;0.75861;0.7556;
+14000;0.73617;0.73615;0.73642;0.73684;0.73746;0.73812;0.73896;0.74022;0.74176;0.74343;0.74517;0.74719;0.74951;0.75184;0.75413;0.7562;0.75784;0.75877;0.75835;0.7551;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.80697;0.8072;0.8077;0.80849;0.80951;0.81065;0.81209;0.81395;0.81594;0.81786;0.82008;0.82241;0.82446;0.82566;0.82471;0.81668;0.77931;-9999;-9999;-9999;
+500;0.80364;0.80364;0.80432;0.8051;0.8061;0.80719;0.8086;0.81041;0.81239;0.81429;0.8165;0.81885;0.82095;0.82228;0.82171;0.81496;0.78463;-9999;-9999;-9999;
+1000;0.8003;0.80049;0.80096;0.80171;0.80269;0.80375;0.80512;0.80691;0.80886;0.81072;0.8129;0.81526;0.81741;0.81886;0.81862;0.813;0.78797;-9999;-9999;-9999;
+1500;0.79696;0.79712;0.79757;0.7983;0.79927;0.8003;0.80165;0.80341;0.80534;0.80718;0.80932;0.81165;0.81383;0.81541;0.81547;0.81112;0.78987;-9999;-9999;-9999;
+2000;0.79354;0.79373;0.79416;0.79487;0.79582;0.79683;0.79815;0.7999;0.8018;0.80362;0.80575;0.80808;0.81025;0.81191;0.81218;0.8088;0.79116;-9999;-9999;-9999;
+2500;0.79012;0.79012;0.79071;0.79142;0.79235;0.79334;0.79463;0.79635;0.79825;0.80005;0.80216;0.80449;0.80669;0.8084;0.80888;0.80629;0.79186;-9999;-9999;-9999;
+3000;0.78666;0.78684;0.78732;0.78792;0.78884;0.78981;0.79108;0.79279;0.79466;0.79645;0.79854;0.80087;0.80309;0.80487;0.80557;0.80354;0.79171;-9999;-9999;-9999;
+3500;0.78319;0.78336;0.78382;0.7844;0.78531;0.78626;0.7875;0.78918;0.79105;0.79283;0.7949;0.79722;0.79946;0.80132;0.80226;0.80072;0.79103;-9999;-9999;-9999;
+4000;0.77968;0.77985;0.78029;0.78087;0.78175;0.78269;0.7839;0.78555;0.78741;0.78917;0.79123;0.79357;0.79584;0.79781;0.7989;0.79778;0.78969;0.75368;-9999;-9999;
+4500;0.77617;0.77617;0.77669;0.77732;0.77818;0.77909;0.78028;0.78191;0.78375;0.78551;0.78759;0.78994;0.79225;0.79424;0.79545;0.79473;0.78805;0.75891;-9999;-9999;
+5000;0.7726;0.77285;0.7732;0.77381;0.77463;0.77553;0.7767;0.77831;0.78014;0.78188;0.78393;0.78627;0.78859;0.79064;0.79196;0.79159;0.78611;0.76179;-9999;-9999;
+5500;0.76906;0.76921;0.7696;0.77017;0.77102;0.77191;0.77308;0.77468;0.77649;0.77822;0.78025;0.78258;0.7849;0.78698;0.78842;0.78835;0.78391;0.76376;-9999;-9999;
+6000;0.76542;0.76557;0.76595;0.76651;0.76734;0.76822;0.76936;0.77094;0.77276;0.7745;0.77653;0.77885;0.78117;0.78328;0.78481;0.78503;0.78147;0.76502;-9999;-9999;
+6500;0.76178;0.7619;0.76228;0.76282;0.76364;0.76449;0.7656;0.76716;0.76896;0.77068;0.77268;0.77502;0.77737;0.77954;0.78115;0.7816;0.77893;0.76563;-9999;-9999;
+7000;0.75815;0.75815;0.75854;0.75911;0.7599;0.76073;0.76182;0.76335;0.76513;0.76683;0.76882;0.77114;0.77348;0.77567;0.77739;0.77805;0.77607;0.76533;-9999;-9999;
+7500;0.75435;0.75448;0.75484;0.75536;0.75614;0.75694;0.75801;0.75952;0.76128;0.76296;0.76492;0.76722;0.76956;0.77177;0.77355;0.77438;0.77295;0.76458;-9999;-9999;
+8000;0.75056;0.75072;0.75107;0.75158;0.75234;0.75313;0.75417;0.75565;0.75739;0.75905;0.761;0.76328;0.76561;0.76783;0.76967;0.77065;0.76969;0.76301;0.7399;-9999;
+8500;0.74676;0.74693;0.74727;0.74777;0.74851;0.74928;0.7503;0.75176;0.75347;0.75512;0.75704;0.7593;0.76162;0.76386;0.76575;0.76687;0.76631;0.76104;0.74018;-9999;
+9000;0.74297;0.74311;0.74344;0.74392;0.74465;0.7454;0.7464;0.74783;0.74953;0.75116;0.75306;0.7553;0.7576;0.75985;0.76178;0.76303;0.76281;0.75872;0.74209;-9999;
+9500;0.73918;0.73925;0.73957;0.74005;0.74076;0.74149;0.74247;0.74388;0.74555;0.74717;0.74904;0.75125;0.75355;0.7558;0.75778;0.75914;0.75921;0.7561;0.74314;-9999;
+10000;0.73538;0.73538;0.73568;0.73613;0.73683;0.73755;0.7385;0.73989;0.74154;0.74315;0.74499;0.74717;0.74947;0.75172;0.75373;0.75519;0.75553;0.75322;0.7433;-9999;
+10500;0.73132;0.73142;0.73173;0.73218;0.73287;0.73357;0.7345;0.73586;0.73749;0.7391;0.74091;0.74306;0.74535;0.7476;0.74964;0.7512;0.75177;0.75013;0.74272;-9999;
+11000;0.72726;0.72745;0.72775;0.72819;0.72886;0.72956;0.73047;0.7318;0.73341;0.73501;0.73679;0.73891;0.74119;0.74344;0.74551;0.74715;0.74792;0.7469;0.74116;-9999;
+11500;0.72725;0.72736;0.72765;0.7281;0.72877;0.72946;0.73031;0.7317;0.73332;0.73491;0.7367;0.73882;0.74109;0.74334;0.7454;0.74701;0.74774;0.74664;0.74059;-9999;
+12000;0.72715;0.72726;0.72755;0.728;0.72867;0.72936;0.73021;0.73161;0.73322;0.73481;0.7366;0.73872;0.741;0.74324;0.74529;0.74688;0.74757;0.74636;0.73999;-9999;
+12500;0.72706;0.72716;0.72745;0.72789;0.72857;0.72926;0.73012;0.73151;0.73313;0.73472;0.73651;0.73863;0.7409;0.74314;0.74517;0.74674;0.74739;0.74601;0.73939;-9999;
+13000;0.72695;0.72705;0.72735;0.72779;0.72846;0.72915;0.73001;0.73141;0.73303;0.73462;0.73641;0.73853;0.7408;0.74303;0.74505;0.7466;0.7472;0.74572;0.73876;-9999;
+13500;0.72685;0.72695;0.72724;0.72769;0.72836;0.72905;0.72991;0.73131;0.73293;0.73451;0.73631;0.73843;0.7407;0.74292;0.74494;0.74646;0.74702;0.74542;0.73791;-9999;
+14000;0.72673;0.72684;0.72713;0.72758;0.72826;0.72894;0.72981;0.73121;0.73283;0.73441;0.73621;0.73833;0.7406;0.74282;0.74482;0.74632;0.74683;0.74512;0.73721;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.79782;0.7981;0.79873;0.79953;0.80084;0.80208;0.80372;0.80573;0.80768;0.80967;0.81182;0.8138;0.81504;0.81438;0.80738;0.77343;-9999;-9999;-9999;-9999;
+500;0.79453;0.79453;0.79533;0.79612;0.79739;0.7986;0.80018;0.80215;0.80409;0.80605;0.80823;0.81025;0.81162;0.81114;0.80535;0.77729;-9999;-9999;-9999;-9999;
+1000;0.79124;0.79137;0.79195;0.79271;0.79394;0.79512;0.79667;0.79861;0.80052;0.80245;0.8046;0.80667;0.80816;0.80797;0.80314;0.77964;-9999;-9999;-9999;-9999;
+1500;0.78775;0.78798;0.78853;0.78929;0.79048;0.79163;0.79314;0.79506;0.79697;0.79887;0.80101;0.80307;0.80465;0.80475;0.80083;0.78079;-9999;-9999;-9999;-9999;
+2000;0.78425;0.78456;0.78509;0.78584;0.78699;0.78812;0.7896;0.79149;0.79339;0.79528;0.79742;0.79952;0.80114;0.80145;0.79828;0.78136;-9999;-9999;-9999;-9999;
+2500;0.78088;0.7811;0.78162;0.78234;0.78347;0.78458;0.78603;0.78791;0.7898;0.79168;0.79381;0.79593;0.79764;0.79813;0.79553;0.78134;-9999;-9999;-9999;-9999;
+3000;0.77752;0.77762;0.77812;0.77889;0.77993;0.78102;0.78243;0.78428;0.78618;0.78804;0.79017;0.79232;0.79409;0.79478;0.7927;0.78073;-9999;-9999;-9999;-9999;
+3500;0.77392;0.77412;0.77461;0.77535;0.77637;0.77744;0.77881;0.78064;0.78252;0.78438;0.78651;0.78867;0.79051;0.79136;0.78977;0.77955;-9999;-9999;-9999;-9999;
+4000;0.77041;0.77061;0.77107;0.7718;0.77279;0.77383;0.77517;0.77697;0.77885;0.78068;0.7828;0.785;0.7869;0.7879;0.78674;0.77807;-9999;-9999;-9999;-9999;
+4500;0.76689;0.76707;0.76752;0.76822;0.7692;0.77021;0.77151;0.77329;0.77515;0.77696;0.77907;0.78128;0.78324;0.78439;0.78359;0.7763;0.74192;-9999;-9999;-9999;
+5000;0.76324;0.76343;0.76386;0.76456;0.76552;0.76653;0.76782;0.76959;0.77143;0.77323;0.77531;0.77753;0.77953;0.78082;0.78036;0.77427;0.74624;-9999;-9999;-9999;
+5500;0.75958;0.75976;0.76017;0.76085;0.7618;0.76277;0.76403;0.76579;0.76764;0.76944;0.77154;0.77376;0.77579;0.77719;0.77696;0.77209;0.74882;-9999;-9999;-9999;
+6000;0.75592;0.75607;0.75653;0.75712;0.75805;0.75899;0.76021;0.76196;0.7638;0.76557;0.76765;0.76991;0.772;0.77351;0.77356;0.76966;0.75025;-9999;-9999;-9999;
+6500;0.75226;0.75235;0.75278;0.75336;0.75427;0.7552;0.75638;0.7581;0.75992;0.76168;0.76374;0.766;0.76811;0.76971;0.77002;0.76707;0.75091;-9999;-9999;-9999;
+7000;0.74843;0.74859;0.74901;0.74958;0.75047;0.75137;0.75258;0.75422;0.75603;0.75776;0.7598;0.76205;0.76419;0.76586;0.76639;0.76414;0.75099;-9999;-9999;-9999;
+7500;0.74459;0.74481;0.74521;0.74577;0.74664;0.74752;0.74871;0.75032;0.75211;0.75382;0.75584;0.75809;0.76024;0.76198;0.76269;0.76107;0.75036;-9999;-9999;-9999;
+8000;0.74085;0.74101;0.74139;0.74194;0.74279;0.74365;0.74481;0.74639;0.74817;0.74986;0.75185;0.75409;0.75626;0.75805;0.759;0.75787;0.74918;-9999;-9999;-9999;
+8500;0.73711;0.73718;0.73755;0.73809;0.73892;0.73976;0.74088;0.74244;0.7442;0.74587;0.74783;0.75007;0.75224;0.75413;0.75531;0.75454;0.74765;0.71598;-9999;-9999;
+9000;0.73318;0.73332;0.73368;0.73421;0.73502;0.73583;0.73693;0.73847;0.7402;0.74185;0.74379;0.74605;0.74826;0.75022;0.75147;0.7511;0.74556;0.72092;-9999;-9999;
+9500;0.72925;0.72943;0.72979;0.7303;0.73109;0.73188;0.73296;0.73448;0.7362;0.73785;0.7398;0.74204;0.74426;0.74625;0.7476;0.74754;0.74315;0.72279;-9999;-9999;
+10000;0.72538;0.72551;0.72586;0.72636;0.72716;0.72796;0.72902;0.73052;0.73223;0.73387;0.73578;0.73801;0.74022;0.74223;0.74368;0.74386;0.74047;0.72421;-9999;-9999;
+10500;0.72151;0.72164;0.72198;0.72248;0.72325;0.72402;0.72506;0.72653;0.72822;0.72984;0.73173;0.73393;0.73614;0.73818;0.73971;0.74012;0.73755;0.72489;-9999;-9999;
+11000;0.7176;0.71772;0.71806;0.71854;0.71929;0.72005;0.72106;0.72251;0.72418;0.72577;0.72761;0.72982;0.73203;0.73408;0.73569;0.7363;0.73441;0.72448;-9999;-9999;
+11500;0.71749;0.71761;0.71795;0.71843;0.71919;0.71994;0.72096;0.7224;0.72407;0.72567;0.72751;0.72972;0.73192;0.73397;0.73556;0.73612;0.73413;0.72374;-9999;-9999;
+12000;0.71738;0.7175;0.71784;0.71832;0.71908;0.71983;0.7208;0.7223;0.72397;0.72557;0.72742;0.72962;0.73182;0.73385;0.73542;0.73595;0.73383;0.72298;-9999;-9999;
+12500;0.71727;0.71739;0.71773;0.71822;0.71897;0.71972;0.72069;0.72219;0.72387;0.72546;0.72733;0.72952;0.73171;0.73374;0.73529;0.73577;0.73354;0.72218;-9999;-9999;
+13000;0.71715;0.71731;0.71763;0.71811;0.71886;0.71961;0.72055;0.72209;0.72377;0.72536;0.72723;0.72942;0.73161;0.73362;0.73515;0.73559;0.73323;0.72135;-9999;-9999;
+13500;0.71704;0.71725;0.71757;0.71804;0.7188;0.71953;0.72048;0.72199;0.72366;0.72526;0.72713;0.72932;0.7315;0.73351;0.73501;0.73541;0.73292;0.7205;-9999;-9999;
+14000;0.71693;0.71719;0.71751;0.71798;0.71874;0.71947;0.72042;0.72191;0.72357;0.72515;0.72698;0.72921;0.7314;0.73339;0.73487;0.73522;0.7326;0.71943;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.79331;0.79363;0.79432;0.79518;0.79664;0.79799;0.79977;0.80185;0.80374;0.80571;0.80778;0.80946;0.80997;0.80742;0.79351;-9999;-9999;-9999;-9999;-9999;
+500;0.79003;0.79003;0.79091;0.79175;0.79316;0.79447;0.7962;0.79823;0.80012;0.80209;0.80417;0.80593;0.80662;0.80457;0.7926;-9999;-9999;-9999;-9999;-9999;
+1000;0.78676;0.78687;0.78751;0.78833;0.78969;0.79097;0.79265;0.79465;0.79652;0.79846;0.80053;0.80236;0.80323;0.80165;0.79149;0.78957;-9999;-9999;-9999;-9999;
+1500;0.78323;0.78348;0.78409;0.78489;0.78621;0.78746;0.78909;0.79108;0.79294;0.79488;0.79694;0.79877;0.79979;0.79864;0.78997;-9999;-9999;-9999;-9999;-9999;
+2000;0.77971;0.78005;0.78063;0.78142;0.7827;0.78393;0.78553;0.78749;0.78935;0.79128;0.79334;0.79522;0.79634;0.79552;0.78821;0.75325;-9999;-9999;-9999;-9999;
+2500;0.77635;0.77659;0.77715;0.77802;0.77916;0.78036;0.78193;0.78388;0.78574;0.78767;0.78972;0.79165;0.79289;0.79237;0.78612;0.75706;-9999;-9999;-9999;-9999;
+3000;0.77288;0.77311;0.77364;0.77449;0.77561;0.77678;0.77831;0.78023;0.78209;0.78399;0.78608;0.78805;0.7894;0.78904;0.78386;0.75934;-9999;-9999;-9999;-9999;
+3500;0.76941;0.7696;0.77012;0.77094;0.77202;0.77317;0.77466;0.77656;0.77842;0.78031;0.78241;0.78442;0.78587;0.78577;0.78152;0.76032;-9999;-9999;-9999;-9999;
+4000;0.76594;0.76594;0.76656;0.76736;0.76842;0.76954;0.771;0.77287;0.77472;0.7766;0.7787;0.78075;0.7823;0.78245;0.77892;0.76062;-9999;-9999;-9999;-9999;
+4500;0.76227;0.76248;0.76297;0.76375;0.76481;0.7659;0.76731;0.76916;0.77101;0.77286;0.77496;0.77704;0.77867;0.77906;0.77619;0.7606;-9999;-9999;-9999;-9999;
+5000;0.75861;0.75882;0.75929;0.76005;0.76109;0.76217;0.76356;0.76541;0.76727;0.7691;0.7712;0.7733;0.77501;0.77559;0.77333;0.76008;-9999;-9999;-9999;-9999;
+5500;0.75494;0.75514;0.75559;0.75633;0.75734;0.75839;0.75975;0.76158;0.76343;0.76527;0.76738;0.76953;0.77131;0.77207;0.77032;0.75917;-9999;-9999;-9999;-9999;
+6000;0.75124;0.75143;0.75186;0.75258;0.75358;0.7546;0.75593;0.75773;0.75956;0.76138;0.76348;0.76564;0.76751;0.76846;0.76716;0.75796;-9999;-9999;-9999;-9999;
+6500;0.74753;0.7477;0.74812;0.74881;0.74979;0.75078;0.75208;0.75385;0.75567;0.75747;0.75956;0.76173;0.76364;0.76474;0.76384;0.75615;-9999;-9999;-9999;-9999;
+7000;0.74383;0.74383;0.74434;0.74502;0.74598;0.74694;0.74821;0.74995;0.75176;0.75354;0.7556;0.75779;0.75975;0.76097;0.76042;0.75405;0.7241;-9999;-9999;-9999;
+7500;0.73999;0.74017;0.74063;0.74121;0.74215;0.74308;0.74432;0.74603;0.74783;0.74958;0.75163;0.75382;0.75581;0.75715;0.75682;0.75169;0.7274;-9999;-9999;-9999;
+8000;0.73614;0.73637;0.7368;0.73737;0.73829;0.7392;0.74041;0.74209;0.74387;0.7456;0.74763;0.74982;0.75184;0.75328;0.75324;0.74928;0.72907;-9999;-9999;-9999;
+8500;0.7323;0.73253;0.73294;0.73351;0.7344;0.73529;0.73646;0.73812;0.73989;0.74159;0.7436;0.74579;0.74784;0.74936;0.74958;0.74635;0.72981;-9999;-9999;-9999;
+9000;0.72845;0.72867;0.72906;0.72962;0.73049;0.73136;0.73249;0.73413;0.73588;0.73756;0.73955;0.74173;0.7438;0.7454;0.74585;0.74348;0.73009;-9999;-9999;-9999;
+9500;0.72463;0.72478;0.72516;0.7257;0.72656;0.7274;0.7285;0.73011;0.73185;0.73351;0.73547;0.73765;0.73973;0.7414;0.74205;0.74033;0.72954;-9999;-9999;-9999;
+10000;0.7208;0.72086;0.72123;0.72176;0.72259;0.72341;0.72448;0.72607;0.72779;0.72942;0.73136;0.73353;0.73562;0.73736;0.73817;0.73703;0.72839;-9999;-9999;-9999;
+10500;0.71677;0.71691;0.71727;0.71779;0.7186;0.7194;0.72044;0.722;0.7237;0.72531;0.72722;0.72938;0.73149;0.73327;0.7343;0.73359;0.72683;0.69516;-9999;-9999;
+11000;0.71274;0.71293;0.71328;0.71378;0.71458;0.71535;0.71636;0.71789;0.71958;0.72117;0.72305;0.72521;0.72731;0.72919;0.73041;0.73003;0.72468;0.70006;-9999;-9999;
+11500;0.71273;0.71287;0.71322;0.71373;0.71452;0.7153;0.71631;0.71785;0.71952;0.72112;0.723;0.72515;0.72725;0.72906;0.73023;0.72981;0.72424;0.69857;-9999;-9999;
+12000;0.71272;0.71282;0.71317;0.71367;0.71447;0.71524;0.71626;0.7178;0.71948;0.72107;0.72295;0.7251;0.7272;0.72899;0.73008;0.7296;0.7238;-9999;-9999;-9999;
+12500;0.71264;0.71276;0.71312;0.71362;0.71442;0.71519;0.71622;0.71775;0.71943;0.72102;0.7229;0.72505;0.72714;0.72892;0.72993;0.72938;0.72334;0.69674;-9999;-9999;
+13000;0.71255;0.71271;0.71307;0.71357;0.71437;0.71514;0.71618;0.71771;0.71939;0.72098;0.72286;0.72501;0.72709;0.72885;0.72982;0.72915;0.72287;-9999;-9999;-9999;
+13500;0.71246;0.71266;0.71302;0.71352;0.71433;0.7151;0.71614;0.71767;0.71935;0.72094;0.72282;0.72497;0.72704;0.72879;0.72972;0.72893;0.72239;0.68871;-9999;-9999;
+14000;0.71249;0.71262;0.71298;0.71347;0.71429;0.71505;0.7161;0.71763;0.71931;0.7209;0.72278;0.72492;0.72699;0.72872;0.72962;0.7287;0.7219;0.68867;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.78888;0.78888;0.79005;0.791;0.79265;0.79412;0.79607;0.7982;0.80007;0.80205;0.80386;0.80509;0.80463;0.79877;0.77189;-9999;-9999;-9999;-9999;-9999;
+500;0.78562;0.78562;0.78662;0.78754;0.78912;0.79055;0.79243;0.79453;0.79638;0.79836;0.80023;0.80157;0.80123;0.79639;0.77344;-9999;-9999;-9999;-9999;-9999;
+1000;0.78235;0.78235;0.78318;0.78408;0.78561;0.78701;0.78884;0.79091;0.79273;0.79469;0.79656;0.79801;0.79795;0.79387;0.77418;-9999;-9999;-9999;-9999;-9999;
+1500;0.77877;0.77905;0.77974;0.78062;0.78209;0.78346;0.78524;0.78728;0.7891;0.79105;0.79295;0.79444;0.7946;0.79122;0.77407;-9999;-9999;-9999;-9999;-9999;
+2000;0.77519;0.7756;0.77627;0.77712;0.77855;0.7799;0.78164;0.78366;0.78547;0.78741;0.78933;0.7909;0.79126;0.78843;0.7737;-9999;-9999;-9999;-9999;-9999;
+2500;0.77186;0.77213;0.77277;0.77361;0.77499;0.7763;0.778;0.78001;0.78183;0.78376;0.78571;0.78734;0.78788;0.78556;0.77278;-9999;-9999;-9999;-9999;-9999;
+3000;0.76853;0.76863;0.76925;0.77007;0.77141;0.77269;0.77434;0.77633;0.77814;0.78003;0.78207;0.78376;0.78446;0.7826;0.77155;-9999;-9999;-9999;-9999;-9999;
+3500;0.76488;0.76512;0.76571;0.76662;0.76781;0.76905;0.77067;0.77264;0.77445;0.77633;0.77838;0.78015;0.78101;0.77956;0.77014;-9999;-9999;-9999;-9999;-9999;
+4000;0.76135;0.76159;0.76215;0.76303;0.76419;0.7654;0.76698;0.76893;0.77073;0.77262;0.77467;0.77649;0.77751;0.77644;0.76838;-9999;-9999;-9999;-9999;-9999;
+4500;0.75773;0.75796;0.75851;0.75938;0.76052;0.76172;0.76327;0.76519;0.76699;0.76888;0.77093;0.77279;0.77394;0.77323;0.76637;0.7331;-9999;-9999;-9999;-9999;
+5000;0.75411;0.7543;0.75483;0.75566;0.75678;0.75795;0.75947;0.76139;0.76321;0.76512;0.76716;0.76907;0.77033;0.76981;0.76416;0.73634;-9999;-9999;-9999;-9999;
+5500;0.75049;0.75061;0.75111;0.75192;0.75301;0.75415;0.75564;0.75753;0.75935;0.76125;0.76331;0.76528;0.76668;0.76645;0.76173;0.73849;-9999;-9999;-9999;-9999;
+6000;0.74667;0.74689;0.74737;0.74816;0.74925;0.75034;0.75178;0.75365;0.75546;0.75736;0.75941;0.76141;0.7629;0.76295;0.75915;0.73906;-9999;-9999;-9999;-9999;
+6500;0.74286;0.74315;0.74361;0.74437;0.74544;0.7465;0.74791;0.74975;0.75155;0.75339;0.75548;0.75751;0.75909;0.75936;0.75628;0.73935;-9999;-9999;-9999;-9999;
+7000;0.73918;0.73938;0.73983;0.74057;0.7416;0.74264;0.74401;0.74582;0.74762;0.74944;0.75152;0.75357;0.75523;0.75572;0.75324;0.73903;-9999;-9999;-9999;-9999;
+7500;0.7354;0.73559;0.73602;0.73674;0.73775;0.73876;0.74009;0.74188;0.74367;0.74546;0.74753;0.74961;0.75133;0.75201;0.75007;0.73823;-9999;-9999;-9999;-9999;
+8000;0.73161;0.73178;0.73219;0.73289;0.73388;0.73486;0.73615;0.73791;0.73969;0.74146;0.74351;0.74561;0.7474;0.74824;0.74678;0.73696;-9999;-9999;-9999;-9999;
+8500;0.72783;0.72783;0.72833;0.72901;0.72998;0.73093;0.73219;0.73392;0.73569;0.73743;0.73947;0.74158;0.74342;0.74442;0.74338;0.73539;-9999;-9999;-9999;-9999;
+9000;0.72405;0.72408;0.72453;0.7251;0.72605;0.72698;0.72821;0.72991;0.73166;0.73338;0.7354;0.73752;0.7394;0.74054;0.73987;0.73332;0.70158;-9999;-9999;-9999;
+9500;0.72001;0.72019;0.72061;0.72118;0.7221;0.723;0.7242;0.72587;0.72761;0.72931;0.7313;0.73343;0.73535;0.73661;0.73628;0.73095;0.70559;-9999;-9999;-9999;
+10000;0.71609;0.71626;0.71666;0.71722;0.71812;0.719;0.72016;0.72181;0.72353;0.72521;0.72718;0.7293;0.73126;0.73262;0.73251;0.72831;0.70773;-9999;-9999;-9999;
+10500;0.71217;0.7123;0.71269;0.71324;0.71412;0.71497;0.7161;0.71772;0.71943;0.72108;0.72302;0.72515;0.72713;0.72858;0.72874;0.72543;0.70878;-9999;-9999;-9999;
+11000;0.70826;0.70826;0.70865;0.70923;0.71009;0.71091;0.71202;0.7136;0.71529;0.71692;0.71884;0.72096;0.72296;0.7245;0.72489;0.72245;0.70918;-9999;-9999;-9999;
+11500;0.70813;0.70826;0.70866;0.70919;0.71005;0.71087;0.71198;0.71357;0.71526;0.71688;0.71881;0.72093;0.72291;0.72443;0.72478;0.72218;0.70837;-9999;-9999;-9999;
+12000;0.70809;0.70824;0.70862;0.70915;0.71002;0.71084;0.71195;0.71354;0.71523;0.71685;0.71878;0.72089;0.72287;0.72437;0.72466;0.72193;0.70743;-9999;-9999;-9999;
+12500;0.70805;0.70823;0.70859;0.70912;0.70999;0.71081;0.71192;0.71351;0.7152;0.71682;0.71875;0.72086;0.72283;0.72431;0.72455;0.72157;0.70656;-9999;-9999;-9999;
+13000;0.70804;0.70817;0.70856;0.70909;0.70996;0.71078;0.71189;0.71349;0.71518;0.7168;0.71873;0.72083;0.7228;0.72425;0.72444;0.72131;0.70566;-9999;-9999;-9999;
+13500;0.70803;0.70813;0.70853;0.70906;0.70994;0.71075;0.71187;0.71347;0.71515;0.71678;0.7187;0.72081;0.72276;0.72419;0.72434;0.72104;0.70472;-9999;-9999;-9999;
+14000;0.70797;0.70812;0.7085;0.70903;0.70992;0.71073;0.71184;0.71345;0.71514;0.71676;0.71869;0.72079;0.72273;0.72413;0.72422;0.72078;0.70377;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.78466;0.78517;0.78623;0.78711;0.78897;0.7906;0.79258;0.79489;0.79674;0.7986;0.80012;0.80063;0.79846;0.78689;0.77144;-9999;-9999;-9999;-9999;-9999;
+500;0.78141;0.78141;0.78257;0.78358;0.78537;0.78695;0.78889;0.79114;0.79298;0.79485;0.79645;0.79714;0.79541;0.7853;0.7731;-9999;-9999;-9999;-9999;-9999;
+1000;0.77816;0.77816;0.77908;0.78007;0.7818;0.78333;0.78522;0.78745;0.78926;0.79112;0.79275;0.79361;0.79229;0.78352;0.77507;-9999;-9999;-9999;-9999;-9999;
+1500;0.77448;0.7748;0.7756;0.77656;0.77823;0.77973;0.78168;0.78378;0.78557;0.78744;0.78911;0.79007;0.78908;0.78172;0.74657;-9999;-9999;-9999;-9999;-9999;
+2000;0.7708;0.77132;0.77209;0.77302;0.77464;0.7761;0.77802;0.78011;0.78188;0.78376;0.78547;0.78655;0.78586;0.77947;0.75007;-9999;-9999;-9999;-9999;-9999;
+2500;0.76752;0.76782;0.76856;0.76948;0.77103;0.77246;0.77433;0.7764;0.77818;0.78008;0.78183;0.78302;0.78244;0.77708;0.75223;-9999;-9999;-9999;-9999;-9999;
+3000;0.76424;0.76431;0.76501;0.76591;0.76742;0.76881;0.77063;0.77267;0.77445;0.77636;0.77817;0.77946;0.77915;0.77455;0.75295;-9999;-9999;-9999;-9999;-9999;
+3500;0.76049;0.76077;0.76145;0.76232;0.76378;0.76514;0.76691;0.76894;0.77071;0.77262;0.77446;0.77586;0.7758;0.77191;0.75316;-9999;-9999;-9999;-9999;-9999;
+4000;0.75693;0.7572;0.75786;0.75872;0.76013;0.76145;0.76318;0.76518;0.76695;0.76886;0.77073;0.77221;0.7724;0.76915;0.75269;-9999;-9999;-9999;-9999;-9999;
+4500;0.75337;0.75355;0.75418;0.75514;0.75641;0.75771;0.75941;0.76141;0.76317;0.76507;0.76697;0.76853;0.76892;0.76625;0.75197;-9999;-9999;-9999;-9999;-9999;
+5000;0.74962;0.74987;0.75048;0.7514;0.75264;0.75391;0.75557;0.75755;0.75932;0.76124;0.76319;0.76483;0.7654;0.76325;0.751;-9999;-9999;-9999;-9999;-9999;
+5500;0.74587;0.74618;0.74675;0.74765;0.74885;0.75009;0.7517;0.75366;0.75543;0.75734;0.75932;0.76103;0.7618;0.76012;0.74962;0.74627;-9999;-9999;-9999;-9999;
+6000;0.74221;0.74245;0.74301;0.74388;0.74505;0.74625;0.74782;0.74976;0.75152;0.75342;0.75541;0.75718;0.7581;0.75683;0.748;0.74724;-9999;-9999;-9999;-9999;
+6500;0.73847;0.73871;0.73924;0.74008;0.74121;0.74239;0.74392;0.74583;0.74759;0.74944;0.75148;0.7533;0.75436;0.75346;0.74598;-9999;-9999;-9999;-9999;-9999;
+7000;0.73473;0.73473;0.73543;0.73625;0.73736;0.73851;0.73999;0.74188;0.74364;0.74548;0.74752;0.74938;0.75056;0.75;0.74372;0.71231;-9999;-9999;-9999;-9999;
+7500;0.731;0.731;0.73161;0.73241;0.73351;0.7346;0.73605;0.7379;0.73966;0.7415;0.74353;0.74543;0.74673;0.74635;0.74124;0.71568;-9999;-9999;-9999;-9999;
+8000;0.72726;0.72731;0.72777;0.72853;0.72961;0.73067;0.73208;0.7339;0.73565;0.73749;0.73951;0.74144;0.74284;0.74274;0.73865;0.71737;-9999;-9999;-9999;-9999;
+8500;0.72324;0.72345;0.7239;0.72463;0.72568;0.72671;0.72808;0.72988;0.73163;0.73345;0.73546;0.73742;0.73891;0.73907;0.73572;0.71773;-9999;-9999;-9999;-9999;
+9000;0.71937;0.71957;0.72;0.72071;0.72174;0.72274;0.72406;0.72584;0.72758;0.72934;0.73137;0.73337;0.73494;0.73532;0.73264;0.71769;-9999;-9999;-9999;-9999;
+9500;0.7155;0.71567;0.71607;0.71676;0.71776;0.71873;0.72002;0.72178;0.7235;0.72524;0.72725;0.72927;0.73093;0.73151;0.7294;0.71707;-9999;-9999;-9999;-9999;
+10000;0.71163;0.71163;0.71211;0.71279;0.71376;0.71471;0.71596;0.71768;0.7194;0.72112;0.72311;0.72514;0.72687;0.72763;0.72604;0.71592;-9999;-9999;-9999;-9999;
+10500;0.70759;0.70777;0.70821;0.70878;0.70974;0.71065;0.71187;0.71357;0.71527;0.71697;0.71894;0.72098;0.72276;0.72369;0.72255;0.71429;-9999;-9999;-9999;-9999;
+11000;0.70355;0.70378;0.70419;0.70476;0.70569;0.70657;0.70776;0.70942;0.71112;0.71278;0.71474;0.71679;0.71861;0.71969;0.71894;0.71234;0.67984;-9999;-9999;-9999;
+11500;0.70359;0.70376;0.70417;0.70474;0.70568;0.70656;0.70775;0.70941;0.7111;0.71277;0.71473;0.71678;0.71858;0.71963;0.71881;0.71196;0.67826;-9999;-9999;-9999;
+12000;0.70363;0.70363;0.7041;0.70473;0.70567;0.70655;0.70774;0.70941;0.71109;0.71276;0.71472;0.71676;0.71856;0.71957;0.71868;0.71157;-9999;-9999;-9999;-9999;
+12500;0.70367;0.70367;0.70409;0.70472;0.70566;0.70654;0.70773;0.70941;0.71109;0.71276;0.71472;0.71675;0.71853;0.71952;0.71855;0.71118;-9999;-9999;-9999;-9999;
+13000;0.70355;0.70372;0.70414;0.7047;0.70566;0.70654;0.70773;0.70941;0.71109;0.71275;0.71472;0.71675;0.71851;0.71946;0.71842;0.71078;-9999;-9999;-9999;-9999;
+13500;0.70343;0.70373;0.70413;0.7047;0.70566;0.70654;0.70773;0.70941;0.71109;0.71276;0.71473;0.71676;0.71851;0.71941;0.7183;0.71027;-9999;-9999;-9999;-9999;
+14000;0.70355;0.70372;0.70413;0.7047;0.70566;0.70654;0.70773;0.70942;0.7111;0.71277;0.71474;0.71677;0.7185;0.71937;0.71817;0.70985;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.78079;0.78147;0.78269;0.78366;0.78577;0.78759;0.78971;0.79216;0.79398;0.7956;0.79658;0.79588;0.79073;0.76933;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.77757;0.77757;0.77912;0.78004;0.78207;0.78383;0.78588;0.78827;0.79013;0.7918;0.79292;0.79251;0.78809;0.76936;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.77435;0.77439;0.77554;0.77644;0.7784;0.78011;0.78212;0.78446;0.78628;0.78799;0.78923;0.78908;0.78535;0.76888;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.77051;0.77051;0.77178;0.77285;0.77475;0.77641;0.77838;0.78066;0.78247;0.78422;0.78553;0.78561;0.78249;0.76803;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.76666;0.76733;0.76822;0.76925;0.77108;0.7727;0.77465;0.7769;0.77869;0.78045;0.78184;0.78211;0.77955;0.76686;0.74813;-9999;-9999;-9999;-9999;-9999;
+2500;0.76344;0.76378;0.76464;0.76564;0.76741;0.76899;0.7709;0.77312;0.7749;0.7767;0.77816;0.7786;0.77648;0.76535;0.75105;-9999;-9999;-9999;-9999;-9999;
+3000;0.75989;0.76022;0.76104;0.76202;0.76373;0.76527;0.76714;0.76934;0.7711;0.77291;0.77445;0.77507;0.77338;0.76359;0.7524;-9999;-9999;-9999;-9999;-9999;
+3500;0.75634;0.75634;0.75741;0.75838;0.76003;0.76153;0.76348;0.76554;0.76728;0.7691;0.7707;0.77149;0.77021;0.76166;0.75384;-9999;-9999;-9999;-9999;-9999;
+4000;0.75279;0.75302;0.75377;0.75472;0.75632;0.75778;0.75968;0.76172;0.76346;0.76529;0.76694;0.76788;0.76694;0.75972;0.72494;-9999;-9999;-9999;-9999;-9999;
+4500;0.74903;0.74933;0.75006;0.75099;0.75254;0.75397;0.75584;0.75789;0.75963;0.76147;0.76316;0.76423;0.76361;0.75737;0.72817;-9999;-9999;-9999;-9999;-9999;
+5000;0.74527;0.74563;0.74633;0.74736;0.74873;0.75013;0.75195;0.75398;0.75572;0.75759;0.75934;0.76055;0.76004;0.75488;0.73013;-9999;-9999;-9999;-9999;-9999;
+5500;0.74163;0.74191;0.74258;0.74358;0.74491;0.74627;0.74804;0.75005;0.75178;0.75366;0.75545;0.75676;0.75654;0.75216;0.73097;-9999;-9999;-9999;-9999;-9999;
+6000;0.73789;0.73817;0.7388;0.73977;0.74107;0.74239;0.74411;0.74611;0.74783;0.74971;0.75154;0.75294;0.75296;0.74929;0.73104;-9999;-9999;-9999;-9999;-9999;
+6500;0.73416;0.73416;0.735;0.73595;0.73721;0.73849;0.74016;0.74214;0.74386;0.74574;0.7476;0.74908;0.74933;0.7463;0.73049;-9999;-9999;-9999;-9999;-9999;
+7000;0.73043;0.73043;0.73119;0.7321;0.73332;0.73457;0.7362;0.73815;0.73987;0.74174;0.74363;0.74518;0.74563;0.74317;0.72967;-9999;-9999;-9999;-9999;-9999;
+7500;0.72655;0.7268;0.72735;0.72823;0.72942;0.73063;0.73221;0.73414;0.73585;0.73772;0.73963;0.74125;0.74189;0.73994;0.72848;-9999;-9999;-9999;-9999;-9999;
+8000;0.72268;0.72296;0.72349;0.72433;0.72549;0.72667;0.72821;0.73011;0.73181;0.73367;0.7356;0.73729;0.73809;0.7366;0.72693;0.72442;-9999;-9999;-9999;-9999;
+8500;0.7188;0.71909;0.7196;0.72041;0.72158;0.72269;0.72418;0.72605;0.72775;0.72959;0.73155;0.73328;0.73423;0.73315;0.7251;0.72481;-9999;-9999;-9999;-9999;
+9000;0.71492;0.7152;0.71568;0.71647;0.7176;0.71868;0.72013;0.72198;0.72367;0.72544;0.72745;0.72924;0.73033;0.72961;0.7229;0.68828;-9999;-9999;-9999;-9999;
+9500;0.71105;0.71128;0.71174;0.7125;0.7136;0.71465;0.71605;0.71787;0.71956;0.72133;0.72333;0.72516;0.72637;0.72598;0.72041;0.69321;-9999;-9999;-9999;-9999;
+10000;0.70717;0.70717;0.70776;0.7085;0.70957;0.71058;0.71195;0.71374;0.71543;0.71719;0.71918;0.72105;0.72237;0.72216;0.71782;0.69521;-9999;-9999;-9999;-9999;
+10500;0.70314;0.70334;0.70376;0.70447;0.70551;0.7065;0.70782;0.70959;0.71127;0.71303;0.715;0.71689;0.71831;0.71837;0.71484;0.69621;-9999;-9999;-9999;-9999;
+11000;0.69911;0.69933;0.69973;0.70042;0.70143;0.70239;0.70367;0.70541;0.70709;0.70883;0.71078;0.7127;0.71421;0.71451;0.71169;0.69631;-9999;-9999;-9999;-9999;
+11500;0.6992;0.69934;0.69974;0.70042;0.70145;0.7024;0.70368;0.70543;0.7071;0.70884;0.71079;0.71271;0.7142;0.71445;0.71152;0.69556;-9999;-9999;-9999;-9999;
+12000;0.6993;0.6993;0.69975;0.70044;0.70147;0.70242;0.7037;0.70545;0.70712;0.70885;0.71081;0.71273;0.7142;0.7144;0.71134;0.69481;-9999;-9999;-9999;-9999;
+12500;0.69918;0.69938;0.69986;0.70045;0.70149;0.70244;0.70373;0.70548;0.70715;0.70888;0.71085;0.71276;0.71421;0.71435;0.71117;0.69403;-9999;-9999;-9999;-9999;
+13000;0.6992;0.6994;0.69988;0.70047;0.70152;0.70246;0.70376;0.70552;0.70719;0.70891;0.71089;0.71279;0.71423;0.71432;0.71099;0.69323;-9999;-9999;-9999;-9999;
+13500;0.69922;0.69942;0.6999;0.70049;0.70155;0.70249;0.70379;0.70557;0.70723;0.70895;0.71094;0.71283;0.71425;0.71429;0.71082;0.69242;-9999;-9999;-9999;-9999;
+14000;0.69924;0.69945;0.69993;0.70052;0.70159;0.70253;0.70388;0.70563;0.70728;0.70899;0.71099;0.71287;0.71427;0.71426;0.71064;0.69159;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77761;0.77761;0.77954;0.78058;0.78305;0.78511;0.78731;0.7898;0.79156;0.79282;0.7931;0.79088;0.78065;0.75473;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.77412;0.77412;0.77567;0.7769;0.77926;0.78126;0.78342;0.78586;0.78762;0.78893;0.78939;0.7876;0.77854;0.74051;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.77052;0.77052;0.77205;0.77326;0.7755;0.77746;0.77958;0.78199;0.78373;0.78509;0.78566;0.78424;0.77631;0.7441;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76693;0.76742;0.76868;0.76964;0.77179;0.77369;0.77578;0.77816;0.77988;0.7813;0.78199;0.78087;0.77391;0.74652;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.7634;0.7634;0.76483;0.76599;0.76807;0.76993;0.77199;0.77435;0.77608;0.77754;0.77833;0.77729;0.77141;0.74766;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75986;0.76017;0.76117;0.76228;0.76429;0.76609;0.76814;0.7705;0.77225;0.77377;0.77469;0.77394;0.7688;0.7478;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.75614;0.75614;0.75746;0.75856;0.76051;0.76224;0.76426;0.76659;0.76836;0.76998;0.77101;0.77055;0.76611;0.7476;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.75242;0.75287;0.75378;0.75484;0.75672;0.75839;0.76037;0.76266;0.76443;0.76609;0.76729;0.7671;0.76333;0.74693;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.74881;0.74881;0.75003;0.75109;0.75291;0.75454;0.75647;0.75874;0.76049;0.76219;0.76348;0.76355;0.76041;0.74587;0.72438;-9999;-9999;-9999;-9999;-9999;
+4500;0.74519;0.74543;0.74628;0.74729;0.74905;0.75064;0.75255;0.75479;0.75655;0.75828;0.75966;0.75993;0.75735;0.74465;0.72657;-9999;-9999;-9999;-9999;-9999;
+5000;0.74135;0.74169;0.74249;0.74349;0.74519;0.74673;0.74859;0.75081;0.75255;0.75432;0.75579;0.75626;0.75416;0.74306;0.72914;-9999;-9999;-9999;-9999;-9999;
+5500;0.73752;0.73792;0.73869;0.73966;0.7413;0.74281;0.74477;0.74682;0.74855;0.75034;0.75187;0.75252;0.75085;0.74119;0.73043;-9999;-9999;-9999;-9999;-9999;
+6000;0.73382;0.73413;0.73487;0.73596;0.73741;0.73887;0.74077;0.74281;0.74453;0.74633;0.74792;0.74873;0.74745;0.7391;0.73163;-9999;-9999;-9999;-9999;-9999;
+6500;0.73013;0.73033;0.73104;0.73209;0.73349;0.73491;0.73676;0.73878;0.74049;0.74231;0.74395;0.7449;0.74398;0.73699;0.70279;-9999;-9999;-9999;-9999;-9999;
+7000;0.72622;0.7265;0.72718;0.72819;0.72956;0.73094;0.73273;0.73474;0.73644;0.73827;0.73996;0.74104;0.74023;0.73447;0.70613;-9999;-9999;-9999;-9999;-9999;
+7500;0.7223;0.72266;0.7233;0.72428;0.72561;0.72694;0.72868;0.73068;0.73237;0.73421;0.73594;0.73713;0.73664;0.73176;0.70823;-9999;-9999;-9999;-9999;-9999;
+8000;0.71852;0.71879;0.71941;0.72035;0.72164;0.72293;0.72462;0.72659;0.72828;0.73012;0.73189;0.73319;0.73297;0.7289;0.70876;-9999;-9999;-9999;-9999;-9999;
+8500;0.71474;0.7149;0.71549;0.71639;0.71764;0.7189;0.72054;0.72249;0.72416;0.72601;0.72781;0.7292;0.72925;0.72587;0.7086;-9999;-9999;-9999;-9999;-9999;
+9000;0.71073;0.71098;0.71154;0.71242;0.71363;0.71485;0.71645;0.71836;0.72003;0.72188;0.7237;0.72518;0.72545;0.72271;0.70806;-9999;-9999;-9999;-9999;-9999;
+9500;0.70673;0.70704;0.70757;0.70842;0.70959;0.71078;0.71233;0.71422;0.71587;0.71771;0.71957;0.72112;0.7216;0.71942;0.70709;-9999;-9999;-9999;-9999;-9999;
+10000;0.70283;0.70307;0.70357;0.70439;0.70558;0.70669;0.70818;0.71005;0.71169;0.71352;0.7154;0.71701;0.71769;0.716;0.70569;-9999;-9999;-9999;-9999;-9999;
+10500;0.69894;0.69907;0.69955;0.70033;0.70149;0.70256;0.70401;0.70585;0.70749;0.7093;0.7112;0.71288;0.71371;0.71247;0.70395;0.70344;-9999;-9999;-9999;-9999;
+11000;0.69482;0.69504;0.6955;0.69625;0.69738;0.69841;0.69982;0.70163;0.70326;0.70505;0.70697;0.70869;0.70968;0.70867;0.70177;0.70225;-9999;-9999;-9999;-9999;
+11500;0.69489;0.69508;0.69554;0.69629;0.69743;0.69846;0.69987;0.70169;0.70333;0.70511;0.70703;0.70875;0.70972;0.70878;0.70147;0.70195;-9999;-9999;-9999;-9999;
+12000;0.69496;0.69496;0.69557;0.69634;0.69748;0.69851;0.69993;0.70177;0.70339;0.70519;0.7071;0.70881;0.70975;0.70874;0.70117;0.70161;-9999;-9999;-9999;-9999;
+12500;0.69503;0.69518;0.69563;0.69639;0.69755;0.69857;0.7;0.70185;0.70347;0.70526;0.70717;0.70887;0.7098;0.7087;0.70086;0.70116;-9999;-9999;-9999;-9999;
+13000;0.69501;0.69524;0.69568;0.69645;0.69762;0.69865;0.70008;0.70193;0.70355;0.70535;0.70725;0.70894;0.70984;0.70866;0.70055;-9999;-9999;-9999;-9999;-9999;
+13500;0.69499;0.6953;0.69575;0.69651;0.6977;0.69873;0.70017;0.70202;0.70364;0.70543;0.70734;0.70902;0.70989;0.70863;0.70024;0.69955;-9999;-9999;-9999;-9999;
+14000;0.69514;0.69537;0.69583;0.69659;0.69779;0.69882;0.70026;0.70212;0.70373;0.70552;0.70742;0.7091;0.70994;0.70861;0.69992;0.69953;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77442;0.77557;0.77726;0.77845;0.78123;0.78353;0.78577;0.78827;0.78989;0.79063;0.78988;0.7849;0.76617;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.77125;0.77125;0.77345;0.77458;0.77726;0.77949;0.7817;0.78416;0.78581;0.78662;0.78612;0.78182;0.76508;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.7675;0.7675;0.76964;0.77074;0.77333;0.77551;0.77769;0.78013;0.78175;0.78266;0.78233;0.77863;0.76373;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76375;0.76433;0.76585;0.76695;0.76946;0.77158;0.77373;0.77615;0.77776;0.77874;0.7786;0.77542;0.76217;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.76014;0.76014;0.76213;0.76317;0.7656;0.76765;0.76978;0.77218;0.77382;0.77489;0.77491;0.77217;0.76059;0.73042;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75653;0.75694;0.75834;0.75939;0.76173;0.76374;0.76584;0.76822;0.76987;0.77103;0.77124;0.76894;0.75863;0.73293;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.7528;0.7528;0.75435;0.7556;0.75787;0.75982;0.76189;0.76425;0.76591;0.76715;0.76752;0.76566;0.75649;0.71802;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74908;0.74957;0.75085;0.75182;0.75401;0.75591;0.75795;0.76028;0.76196;0.76326;0.76379;0.7623;0.75421;0.72162;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.74542;0.74542;0.74684;0.74802;0.75016;0.75199;0.75401;0.75632;0.758;0.75936;0.76003;0.75888;0.75177;0.72362;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.74177;0.74203;0.74301;0.74415;0.74622;0.74804;0.75005;0.75234;0.75403;0.75546;0.75625;0.75542;0.74922;0.72464;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73781;0.73781;0.73912;0.74024;0.74224;0.744;0.746;0.74829;0.75002;0.75151;0.75243;0.75189;0.7465;0.72514;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.73386;0.73436;0.73526;0.73633;0.73825;0.73997;0.74193;0.7442;0.74592;0.74751;0.74857;0.7483;0.74366;0.72486;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.73015;0.73015;0.73135;0.73241;0.73426;0.73592;0.73785;0.74009;0.74181;0.74343;0.74463;0.74448;0.7407;0.72419;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.72643;0.72664;0.72746;0.72848;0.73025;0.73187;0.73376;0.73597;0.73768;0.73934;0.74063;0.74072;0.73761;0.7232;0.70225;-9999;-9999;-9999;-9999;-9999;
+7000;0.72242;0.72275;0.72354;0.72469;0.72623;0.7278;0.72967;0.73184;0.73354;0.73523;0.7366;0.7369;0.73434;0.72179;0.70508;-9999;-9999;-9999;-9999;-9999;
+7500;0.7184;0.71885;0.7196;0.7207;0.7222;0.72372;0.72555;0.7277;0.72938;0.7311;0.73255;0.73304;0.73097;0.7201;0.70668;-9999;-9999;-9999;-9999;-9999;
+8000;0.71461;0.71492;0.71564;0.7167;0.71815;0.71963;0.72154;0.72355;0.72521;0.72696;0.72847;0.72914;0.7275;0.71816;0.70851;-9999;-9999;-9999;-9999;-9999;
+8500;0.71083;0.71098;0.71167;0.71269;0.71409;0.71552;0.71738;0.71937;0.72103;0.72279;0.72436;0.72518;0.72396;0.71597;0.70921;-9999;-9999;-9999;-9999;-9999;
+9000;0.70674;0.70702;0.70767;0.70866;0.71001;0.7114;0.71319;0.71518;0.71683;0.7186;0.72022;0.72119;0.72034;0.71371;0.68177;-9999;-9999;-9999;-9999;-9999;
+9500;0.70264;0.70304;0.70366;0.7046;0.70592;0.70726;0.709;0.71097;0.7126;0.71439;0.71606;0.71715;0.71663;0.71103;0.68469;-9999;-9999;-9999;-9999;-9999;
+10000;0.69876;0.69903;0.69962;0.70053;0.7018;0.7031;0.70478;0.70674;0.70836;0.71015;0.71186;0.71307;0.71271;0.70817;0.68613;-9999;-9999;-9999;-9999;-9999;
+10500;0.69488;0.69499;0.69555;0.69643;0.69767;0.69892;0.70055;0.70248;0.7041;0.70589;0.70763;0.70894;0.70886;0.70511;0.68662;-9999;-9999;-9999;-9999;-9999;
+11000;0.69069;0.69093;0.69146;0.69231;0.69358;0.69472;0.69629;0.6982;0.69981;0.7016;0.70337;0.70478;0.70494;0.7019;0.68628;-9999;-9999;-9999;-9999;-9999;
+11500;0.6907;0.69101;0.69154;0.6924;0.69368;0.69483;0.69641;0.69832;0.69992;0.70171;0.70348;0.70487;0.70501;0.70183;0.68572;-9999;-9999;-9999;-9999;-9999;
+12000;0.69072;0.69111;0.69163;0.69249;0.6938;0.69495;0.69652;0.69844;0.70004;0.70183;0.70359;0.70498;0.70507;0.70177;0.68515;-9999;-9999;-9999;-9999;-9999;
+12500;0.69095;0.69121;0.69174;0.6926;0.69393;0.69507;0.69665;0.69857;0.70016;0.70195;0.70371;0.70509;0.70515;0.70171;0.68456;-9999;-9999;-9999;-9999;-9999;
+13000;0.69119;0.69119;0.69186;0.69272;0.69406;0.6952;0.69678;0.6987;0.70029;0.70208;0.70384;0.7052;0.70522;0.70165;0.68401;-9999;-9999;-9999;-9999;-9999;
+13500;0.69121;0.69146;0.69199;0.69285;0.69419;0.69533;0.69691;0.69884;0.70042;0.70221;0.70397;0.70531;0.7053;0.7016;0.68339;-9999;-9999;-9999;-9999;-9999;
+14000;0.69124;0.69159;0.69212;0.69297;0.69433;0.69546;0.69704;0.69897;0.70056;0.70234;0.7041;0.70543;0.70539;0.70155;0.68275;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77355;0.77429;0.77621;0.77749;0.78061;0.78318;0.78538;0.78779;0.78916;0.78896;0.78569;0.77225;0.7384;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.76965;0.76965;0.77179;0.77335;0.77636;0.77889;0.78106;0.78344;0.78485;0.78496;0.78298;0.77116;0.74086;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.76565;0.76565;0.76776;0.76928;0.77219;0.77465;0.77681;0.77919;0.78061;0.78084;0.77942;0.7718;0.7427;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76166;0.76237;0.76412;0.7653;0.76812;0.7705;0.77267;0.77502;0.77646;0.7768;0.77563;0.76889;0.74507;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.7579;0.7579;0.75987;0.76132;0.76405;0.76635;0.76854;0.7709;0.77237;0.77302;0.77178;0.76592;0.74466;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75414;0.75459;0.75597;0.75736;0.76;0.76224;0.76439;0.76675;0.76827;0.76903;0.76806;0.76294;0.74381;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.75019;0.75019;0.75201;0.7534;0.75596;0.75814;0.76026;0.76261;0.76417;0.7649;0.7643;0.75986;0.7427;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74623;0.74623;0.74809;0.74946;0.75194;0.75405;0.75615;0.75848;0.76005;0.7609;0.76052;0.7567;0.74129;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.7425;0.7425;0.74419;0.74551;0.74792;0.74998;0.75205;0.75437;0.75595;0.7569;0.75673;0.75346;0.73969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73876;0.73913;0.7403;0.74158;0.7439;0.7459;0.74795;0.75026;0.75186;0.7529;0.75292;0.75016;0.73791;0.70712;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73479;0.73479;0.73636;0.73763;0.73987;0.74182;0.74385;0.74614;0.74775;0.74887;0.74908;0.74678;0.73593;0.7098;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.73082;0.73082;0.73244;0.73368;0.73584;0.73774;0.73974;0.74202;0.74363;0.74484;0.74521;0.74333;0.73397;0.71197;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72707;0.72707;0.72851;0.72972;0.73181;0.73365;0.73563;0.73788;0.7395;0.74078;0.7413;0.73982;0.7316;0.69748;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.72331;0.72358;0.72458;0.72575;0.72777;0.72955;0.7315;0.73373;0.73536;0.7367;0.73737;0.73624;0.72907;0.70021;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71919;0.71919;0.72052;0.72168;0.72364;0.7254;0.72735;0.72958;0.73121;0.73261;0.73341;0.7326;0.72639;0.70149;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71507;0.71507;0.71648;0.7176;0.71949;0.7212;0.72312;0.72533;0.72701;0.72849;0.72941;0.7289;0.72356;0.70214;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.7112;0.7112;0.71242;0.71368;0.71534;0.71699;0.71888;0.72106;0.72274;0.72428;0.72537;0.72515;0.72059;0.7019;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70734;0.70754;0.70837;0.70956;0.71118;0.71278;0.71463;0.71679;0.71845;0.72004;0.72123;0.72114;0.71752;0.70124;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.70316;0.7035;0.70429;0.70543;0.707;0.70855;0.71037;0.7125;0.71415;0.71577;0.71705;0.7172;0.71423;0.70019;0.68137;-9999;-9999;-9999;-9999;-9999;
+9500;0.69898;0.69898;0.70017;0.70129;0.70281;0.70431;0.7061;0.70819;0.70983;0.71149;0.71285;0.7132;0.7108;0.6987;0.68352;-9999;-9999;-9999;-9999;-9999;
+10000;0.69504;0.69536;0.69607;0.69713;0.6986;0.70005;0.70193;0.70388;0.7055;0.70718;0.70861;0.70916;0.70727;0.6969;0.68371;-9999;-9999;-9999;-9999;-9999;
+10500;0.69111;0.69126;0.69193;0.69295;0.69437;0.69578;0.69759;0.69953;0.70115;0.70285;0.70435;0.70507;0.70364;0.69482;0.68695;-9999;-9999;-9999;-9999;-9999;
+11000;0.68685;0.68714;0.68778;0.68876;0.69013;0.69149;0.69325;0.69518;0.69677;0.69849;0.70005;0.70093;0.6999;0.69246;0.68678;-9999;-9999;-9999;-9999;-9999;
+11500;0.68697;0.68731;0.68794;0.68892;0.6903;0.69166;0.69342;0.69535;0.69694;0.69866;0.70022;0.70107;0.7;0.69232;0.68638;-9999;-9999;-9999;-9999;-9999;
+12000;0.68718;0.68749;0.68811;0.68908;0.69047;0.69183;0.69359;0.69552;0.69712;0.69883;0.70039;0.70122;0.70009;0.69217;0.68596;-9999;-9999;-9999;-9999;-9999;
+12500;0.6874;0.68765;0.68828;0.68925;0.69064;0.69201;0.69377;0.6957;0.6973;0.69901;0.70056;0.70138;0.70019;0.69202;0.68553;-9999;-9999;-9999;-9999;-9999;
+13000;0.68761;0.68783;0.68846;0.68942;0.69094;0.6922;0.69395;0.69589;0.69748;0.69919;0.70073;0.70154;0.7003;0.69188;0.68509;-9999;-9999;-9999;-9999;-9999;
+13500;0.68771;0.68802;0.68864;0.6896;0.69113;0.69238;0.69414;0.69607;0.69767;0.69937;0.70092;0.7017;0.70041;0.69173;0.68474;-9999;-9999;-9999;-9999;-9999;
+14000;0.68781;0.68781;0.68881;0.68978;0.69132;0.69257;0.69433;0.69627;0.69786;0.69957;0.70111;0.70189;0.70052;0.69158;0.68416;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77231;0.77231;0.77516;0.77647;0.77949;0.7821;0.78387;0.78555;0.78558;0.78325;0.77485;0.75154;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.7686;0.7686;0.77093;0.77269;0.77557;0.77818;0.77998;0.78172;0.78193;0.78003;0.7728;0.75186;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.76501;0.76501;0.76729;0.76919;0.77175;0.77434;0.77616;0.77793;0.77833;0.77681;0.77064;0.75173;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76103;0.76103;0.76336;0.76501;0.76813;0.77058;0.77243;0.77425;0.77479;0.77362;0.76833;0.75126;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75704;0.75704;0.75915;0.76079;0.76381;0.76635;0.76844;0.77056;0.77127;0.77044;0.76601;0.7505;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75306;0.75345;0.755;0.75657;0.75951;0.762;0.76407;0.76637;0.76762;0.76705;0.76359;0.7496;0.71482;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.74874;0.74874;0.75081;0.75236;0.75525;0.75766;0.75973;0.76202;0.76332;0.76334;0.76097;0.74863;0.71737;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74441;0.74529;0.74672;0.74818;0.75099;0.75335;0.75541;0.75768;0.75903;0.7592;0.75769;0.74744;0.71924;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.74067;0.74067;0.74257;0.74405;0.74674;0.74906;0.7511;0.75336;0.75475;0.75506;0.75387;0.74679;0.72062;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73692;0.73719;0.73853;0.73993;0.74252;0.7448;0.74684;0.74907;0.75049;0.75093;0.75003;0.74381;0.72128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73263;0.73263;0.73442;0.73582;0.73833;0.74054;0.74257;0.7448;0.74624;0.7468;0.74616;0.74073;0.72063;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72834;0.72834;0.73032;0.73171;0.73414;0.73626;0.73831;0.74052;0.74199;0.74267;0.74227;0.73761;0.71967;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72461;0.72461;0.72626;0.72759;0.72994;0.732;0.73404;0.73625;0.73774;0.73853;0.73835;0.73433;0.71833;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.72088;0.72106;0.7222;0.72348;0.72575;0.72775;0.72975;0.73197;0.73349;0.7344;0.73429;0.73098;0.71677;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71657;0.71657;0.71809;0.71936;0.72156;0.7235;0.72547;0.72769;0.72922;0.73024;0.73031;0.72754;0.715;0.68388;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71225;0.71225;0.71399;0.71524;0.71736;0.71924;0.7212;0.72339;0.72494;0.72606;0.72629;0.72401;0.71302;0.68698;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.7085;0.7085;0.7099;0.71111;0.71316;0.71498;0.71691;0.71909;0.72066;0.72186;0.72225;0.72041;0.71105;0.68937;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70474;0.70486;0.70582;0.70716;0.70895;0.71072;0.71262;0.71478;0.71636;0.71762;0.71816;0.71673;0.70859;0.67424;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.70033;0.70033;0.70162;0.70294;0.7047;0.70644;0.70832;0.71046;0.71204;0.71336;0.71405;0.71298;0.70597;0.67704;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69592;0.69592;0.69739;0.69867;0.70037;0.70206;0.70393;0.70609;0.7077;0.70908;0.7099;0.70917;0.70317;0.67858;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.69199;0.69235;0.69318;0.69438;0.69604;0.69767;0.69951;0.70164;0.70326;0.70474;0.70572;0.70529;0.7002;0.67922;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68805;0.68814;0.68894;0.69009;0.69169;0.69327;0.69508;0.69719;0.6988;0.70032;0.70142;0.70117;0.69709;0.67893;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.6836;0.68393;0.68468;0.68579;0.68734;0.68886;0.69064;0.69271;0.69432;0.69587;0.69707;0.69707;0.69376;0.67816;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.68392;0.68392;0.6849;0.68601;0.68757;0.6891;0.69087;0.69295;0.69456;0.69611;0.6973;0.69728;0.69387;0.6778;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.68424;0.68424;0.68513;0.68624;0.6878;0.68933;0.69111;0.69318;0.6948;0.69636;0.69754;0.69762;0.69398;0.67743;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.6843;0.68464;0.68537;0.68647;0.68804;0.68957;0.69135;0.69342;0.69502;0.69656;0.69775;0.69782;0.6941;0.67706;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68437;0.68489;0.68561;0.68671;0.68828;0.68982;0.6916;0.69364;0.69522;0.69675;0.69794;0.69804;0.6942;0.67667;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68479;0.68513;0.68586;0.68694;0.68853;0.69007;0.69182;0.69384;0.69542;0.69695;0.69813;0.6981;0.6943;0.67628;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68521;0.68521;0.6861;0.68719;0.68895;0.69031;0.69204;0.69405;0.69563;0.69716;0.69833;0.69826;0.69442;0.67586;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.76967;0.77076;0.77337;0.77491;0.77826;0.78076;0.78208;0.78316;0.78192;0.77595;0.75941;0.71885;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.76601;0.76687;0.76938;0.77053;0.77414;0.77664;0.77803;0.77921;0.77829;0.77308;0.7583;0.72187;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.76234;0.76234;0.76526;0.76671;0.77021;0.77266;0.7741;0.77534;0.77468;0.77016;0.75704;0.72425;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.75868;0.75951;0.76175;0.76294;0.76632;0.76875;0.77028;0.77161;0.77119;0.76727;0.75559;0.72607;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75501;0.75584;0.75798;0.75919;0.76243;0.76484;0.76644;0.76786;0.7677;0.76437;0.75411;0.72731;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75142;0.75142;0.75379;0.75545;0.75844;0.76093;0.76259;0.76409;0.76395;0.76139;0.75246;0.728;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.74777;0.74777;0.75004;0.75177;0.75448;0.75702;0.75872;0.76032;0.7604;0.75831;0.75059;0.7285;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74412;0.74412;0.74627;0.74803;0.75059;0.7531;0.75484;0.75651;0.7568;0.75515;0.74856;0.72858;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.7402;0.7402;0.74238;0.74401;0.7467;0.74917;0.75095;0.75268;0.75318;0.75192;0.74637;0.72839;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73595;0.73595;0.73806;0.73964;0.74251;0.74499;0.74698;0.74885;0.74952;0.74862;0.74398;0.7277;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73169;0.73169;0.73414;0.73529;0.73807;0.74049;0.74248;0.74468;0.74584;0.74528;0.74145;0.72703;0.6901;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72743;0.72743;0.72944;0.73095;0.73365;0.736;0.73798;0.74018;0.74142;0.7414;0.73878;0.72617;0.69312;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72318;0.72383;0.72518;0.72663;0.72923;0.73152;0.7335;0.73568;0.73697;0.7371;0.73549;0.72504;0.69543;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.71892;0.7196;0.72089;0.7223;0.72483;0.72706;0.72903;0.73119;0.73252;0.7328;0.73153;0.72443;0.69711;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71466;0.71538;0.71662;0.71799;0.72044;0.7226;0.72455;0.72671;0.72808;0.72849;0.72753;0.72136;0.69758;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71064;0.71064;0.71231;0.71369;0.71604;0.71815;0.72009;0.72223;0.72363;0.72417;0.7235;0.71817;0.69723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.70661;0.70693;0.70808;0.70938;0.71166;0.7137;0.71562;0.71776;0.71918;0.71984;0.71943;0.71486;0.69639;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70223;0.70223;0.70377;0.70508;0.70728;0.70925;0.71117;0.71328;0.71473;0.71549;0.71518;0.71144;0.69515;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.69785;0.69848;0.69953;0.70098;0.70291;0.7048;0.70671;0.7088;0.71026;0.71114;0.71105;0.70791;0.69362;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69381;0.69381;0.69523;0.69665;0.69853;0.70036;0.70224;0.70431;0.7058;0.70677;0.70688;0.70429;0.69182;0.66133;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.68976;0.69;0.69096;0.69231;0.69413;0.69592;0.69775;0.69981;0.70131;0.70238;0.70268;0.70058;0.68977;0.6646;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68533;0.68533;0.68663;0.68795;0.68972;0.69147;0.69327;0.69531;0.69681;0.69797;0.69843;0.69678;0.68774;0.66705;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.6809;0.6809;0.68228;0.68359;0.6853;0.68699;0.68878;0.6908;0.69231;0.69354;0.69416;0.69291;0.68517;0.65138;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.68145;0.68145;0.6826;0.68389;0.68561;0.68728;0.68906;0.69107;0.69257;0.6938;0.6944;0.69317;0.6851;0.65045;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.682;0.682;0.68292;0.68419;0.68591;0.68756;0.68933;0.69135;0.69285;0.69408;0.69466;0.69343;0.68515;0.6493;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.68199;0.68238;0.68324;0.68449;0.68618;0.68784;0.68961;0.69163;0.69314;0.69436;0.69493;0.69365;0.68523;0.64813;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68199;0.68271;0.68356;0.68477;0.68646;0.68812;0.6899;0.69193;0.69344;0.69464;0.6952;0.69388;0.68531;0.64691;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68263;0.68263;0.68382;0.68497;0.68675;0.68842;0.69021;0.69224;0.69375;0.69493;0.69549;0.69411;0.68539;0.66653;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68294;0.68331;0.68413;0.68526;0.68704;0.68871;0.69053;0.69256;0.69407;0.69524;0.69577;0.69435;0.68547;0.66593;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.76894;0.77012;0.77285;0.77541;0.77853;0.78072;0.78159;0.78178;0.77813;0.76586;0.73597;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.76487;0.76487;0.76871;0.77095;0.77412;0.77638;0.77761;0.77764;0.7745;0.76377;0.73683;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.7608;0.76211;0.76455;0.76676;0.76995;0.77225;0.77315;0.77362;0.77088;0.76139;0.73732;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.75721;0.75721;0.76048;0.76259;0.7658;0.76812;0.76913;0.76975;0.76745;0.75902;0.73723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75362;0.75428;0.75692;0.75807;0.76167;0.76402;0.7651;0.76588;0.76399;0.75661;0.73693;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.74951;0.74951;0.75253;0.754;0.75756;0.75991;0.76107;0.762;0.76048;0.75406;0.73629;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.7454;0.74655;0.74897;0.75006;0.75346;0.75581;0.75707;0.7581;0.75694;0.7514;0.73544;0.69636;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74185;0.74185;0.74466;0.74604;0.74937;0.75172;0.75306;0.7542;0.75335;0.74862;0.73442;0.69915;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.73811;0.73811;0.7407;0.74229;0.74529;0.74763;0.74904;0.75028;0.74974;0.74573;0.73322;0.70136;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73437;0.73437;0.73674;0.73844;0.74124;0.74361;0.74507;0.74639;0.7461;0.74276;0.73189;0.70304;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73063;0.73063;0.73287;0.73447;0.73722;0.7396;0.74112;0.74253;0.74248;0.73973;0.73033;0.70431;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72683;0.72683;0.72898;0.73067;0.73318;0.73558;0.73716;0.73865;0.7386;0.73661;0.72858;0.70513;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72303;0.72368;0.72509;0.72677;0.72916;0.73154;0.73317;0.73472;0.7349;0.73335;0.72653;0.70547;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.71901;0.71901;0.72107;0.72284;0.72513;0.72747;0.72916;0.73077;0.73115;0.73;0.72426;0.70536;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71452;0.71452;0.71651;0.71809;0.72079;0.72316;0.72512;0.72679;0.72735;0.72656;0.72178;0.70499;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71004;0.71004;0.71197;0.7135;0.71615;0.71844;0.72036;0.72242;0.7235;0.72302;0.71912;0.70444;0.66558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.70555;0.70555;0.70745;0.70894;0.7115;0.71376;0.71565;0.7177;0.71887;0.71904;0.71628;0.70362;0.66918;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70107;0.70167;0.70296;0.70437;0.70685;0.70907;0.71093;0.71299;0.71421;0.71438;0.71273;0.70247;0.67195;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.6967;0.6967;0.6984;0.70006;0.7022;0.70437;0.70623;0.7083;0.70957;0.70988;0.70855;0.70154;0.67369;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69233;0.69277;0.69392;0.69545;0.69757;0.69967;0.70155;0.7036;0.70492;0.70536;0.70434;0.69832;0.6739;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.68797;0.68833;0.68941;0.69088;0.69294;0.69497;0.69685;0.6989;0.70026;0.70082;0.70009;0.69495;0.67372;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68344;0.68344;0.68489;0.68634;0.68832;0.69028;0.69214;0.69418;0.69557;0.69623;0.6958;0.69151;0.67294;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.679;0.679;0.68041;0.6818;0.68369;0.6856;0.68744;0.68947;0.69087;0.69164;0.69147;0.68788;0.67177;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.67949;0.67949;0.68078;0.68215;0.68407;0.68598;0.68782;0.68985;0.69126;0.69203;0.69182;0.68815;0.67159;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.67976;0.67976;0.68114;0.68252;0.68445;0.68637;0.68822;0.69022;0.69162;0.6924;0.69204;0.68843;0.67149;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.68003;0.68058;0.68154;0.68288;0.68485;0.68678;0.68859;0.69059;0.69198;0.69275;0.69241;0.68871;0.67139;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68029;0.68097;0.68193;0.6832;0.68526;0.68717;0.68898;0.69095;0.69234;0.6931;0.69275;0.68899;0.67128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68091;0.68091;0.6823;0.68361;0.68566;0.68755;0.68935;0.69132;0.69271;0.69347;0.69309;0.68929;0.67117;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68153;0.68153;0.68272;0.68402;0.68603;0.68792;0.68973;0.6917;0.69309;0.69384;0.69344;0.68959;0.67106;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77209;0.77209;0.77534;0.77811;0.78087;0.78316;0.78329;0.78214;0.77423;0.75084;0.69701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.7674;0.7674;0.77092;0.77345;0.77625;0.77856;0.77836;0.77773;0.77064;0.74965;0.70063;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.7627;0.7631;0.76639;0.76921;0.77183;0.77408;0.77439;0.77352;0.76711;0.74831;0.70445;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.75821;0.75821;0.76179;0.76448;0.76736;0.76968;0.77008;0.76941;0.76378;0.74691;0.70706;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75372;0.75372;0.75742;0.75991;0.76284;0.76513;0.76581;0.76516;0.76033;0.74541;0.70907;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.74922;0.75045;0.75301;0.75543;0.75836;0.76039;0.76146;0.76104;0.75692;0.74371;0.71077;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.74473;0.7461;0.74872;0.75099;0.75393;0.75612;0.75714;0.75692;0.75353;0.74178;0.71229;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.7411;0.7411;0.74443;0.74657;0.74954;0.75175;0.75284;0.75287;0.74999;0.73968;0.7133;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.73747;0.73806;0.74031;0.74224;0.7452;0.7474;0.74833;0.7488;0.7464;0.73741;0.71382;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73322;0.73322;0.73622;0.73805;0.74099;0.74314;0.74414;0.74477;0.74282;0.73504;0.71388;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.72897;0.73013;0.7325;0.73386;0.73682;0.73898;0.74005;0.74084;0.73926;0.73262;0.71352;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72536;0.72536;0.72812;0.72939;0.73264;0.73481;0.73595;0.73687;0.73564;0.72992;0.71289;0.67034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72176;0.72215;0.72426;0.72532;0.72845;0.73061;0.73183;0.73286;0.73197;0.72708;0.71206;0.6738;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.71742;0.71742;0.71983;0.72123;0.72431;0.72639;0.72769;0.72882;0.72823;0.7241;0.71099;0.67658;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71308;0.71308;0.71561;0.71713;0.71996;0.72215;0.72353;0.72476;0.72445;0.72098;0.70978;0.67884;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.70941;0.70941;0.71149;0.71311;0.71562;0.71791;0.71935;0.72067;0.72061;0.71775;0.70816;0.68043;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.70575;0.706;0.7074;0.70899;0.71137;0.71365;0.71515;0.71655;0.71671;0.7144;0.70627;0.68171;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70134;0.70134;0.70316;0.70481;0.70712;0.70937;0.71092;0.7124;0.71258;0.71095;0.70411;0.68229;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.69693;0.69765;0.69897;0.70047;0.70285;0.70507;0.70667;0.70821;0.7086;0.70738;0.70171;0.68236;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69229;0.69229;0.69411;0.69562;0.69815;0.70046;0.70225;0.704;0.70456;0.70372;0.69908;0.68214;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.68765;0.68812;0.68938;0.6908;0.69322;0.69548;0.69729;0.69929;0.70034;0.69996;0.69626;0.68166;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68282;0.68282;0.68455;0.686;0.68833;0.6905;0.69234;0.69431;0.69541;0.69555;0.69322;0.68083;0.64574;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.67798;0.67863;0.6798;0.6814;0.68346;0.68555;0.68738;0.68934;0.6905;0.69066;0.68918;0.68136;0.64874;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.67871;0.67871;0.68027;0.68187;0.68392;0.68602;0.68787;0.68982;0.69098;0.69126;0.6896;0.68152;0.6483;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.67914;0.67914;0.68074;0.68233;0.68439;0.68652;0.68836;0.6903;0.69146;0.69172;0.69003;0.68183;0.64793;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.67958;0.68017;0.68127;0.68264;0.68487;0.68702;0.68882;0.69078;0.69193;0.6922;0.69046;0.68215;0.64737;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68001;0.68066;0.68175;0.68313;0.68538;0.68753;0.68932;0.69126;0.69241;0.69265;0.69092;0.68248;0.64692;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68064;0.68064;0.6822;0.68363;0.68589;0.68802;0.68982;0.69176;0.6929;0.69297;0.69138;0.68281;0.64645;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68126;0.68164;0.68273;0.68414;0.68639;0.68852;0.69033;0.69227;0.69341;0.69346;0.69185;0.68314;0.64594;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
\ No newline at end of file
diff --git a/engine/test/stubs/V2527-A5/V2527-A5_sNOx.csv b/engine/test/stubs/V2527-A5/V2527-A5_sNOx.csv
new file mode 100644
index 00000000..ccb55541
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/V2527-A5_sNOx.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.7744;1.7774;1.7846;1.7968;1.8146;1.8383;1.8688;1.9059;1.9498;2.0016;2.0638;2.1323;2.2095;2.296;2.3927;2.5006;2.6201;2.752;2.8965;3.054;
+500;1.6987;1.702;1.7089;1.7207;1.7376;1.7601;1.7888;1.8237;1.8656;1.9146;1.9729;2.0381;2.1115;2.1938;2.2856;2.3879;2.5017;2.6274;2.7658;2.9169;
+1000;1.6257;1.629;1.6357;1.6471;1.6636;1.6854;1.7128;1.7459;1.7853;1.8316;1.8846;1.9475;2.0172;2.0954;2.1827;2.2797;2.3877;2.5073;2.6392;2.784;
+1500;1.5554;1.5576;1.5643;1.5756;1.5917;1.613;1.6394;1.6711;1.7087;1.7525;1.8045;1.8616;1.9266;2.0007;2.0837;2.1758;2.2781;2.3917;2.5172;2.6552;
+2000;1.4854;1.4877;1.4943;1.5055;1.5215;1.5423;1.5679;1.5987;1.635;1.6765;1.7257;1.7801;1.8413;1.9101;1.9884;2.076;2.173;2.2804;2.3996;2.5309;
+2500;1.4166;1.4188;1.4255;1.4366;1.4524;1.4728;1.4979;1.528;1.5633;1.6033;1.6484;1.7017;1.7598;1.8248;1.8977;1.9799;2.072;2.1739;2.2865;2.4113;
+3000;1.3486;1.3508;1.3574;1.3684;1.384;1.4042;1.429;1.4586;1.4929;1.5318;1.5755;1.6263;1.6814;1.7431;1.8119;1.8889;1.9755;2.0716;2.1783;2.2962;
+3500;1.2823;1.2844;1.2909;1.3016;1.3168;1.3364;1.3608;1.39;1.4237;1.4617;1.5042;1.5534;1.6061;1.6646;1.7299;1.8024;1.8835;1.9743;2.0745;2.186;
+4000;1.2176;1.2198;1.226;1.2364;1.2511;1.2702;1.2938;1.3222;1.3551;1.3925;1.4342;1.4821;1.5331;1.5891;1.651;1.7198;1.7959;1.8811;1.9761;2.0808;
+4500;1.1558;1.1585;1.1645;1.1743;1.1883;1.2064;1.2288;1.2559;1.2877;1.324;1.3666;1.412;1.4617;1.516;1.5752;1.6404;1.7126;1.7923;1.8816;1.9809;
+5000;1.0966;1.099;1.1048;1.1143;1.1278;1.1453;1.1671;1.193;1.2232;1.2575;1.2982;1.3428;1.3916;1.4445;1.5018;1.5642;1.6325;1.708;1.7914;1.8848;
+5500;1.0392;1.0411;1.0466;1.0559;1.0689;1.0858;1.1069;1.1319;1.161;1.1943;1.2332;1.2753;1.3222;1.3741;1.43;1.4903;1.5556;1.6271;1.706;1.793;
+6000;0.98418;0.98493;0.99004;0.99893;1.0115;1.0279;1.0482;1.0723;1.1004;1.1325;1.1701;1.2109;1.2559;1.3055;1.3595;1.4182;1.4813;1.5495;1.6239;1.7061;
+6500;0.93101;0.93253;0.93718;0.94409;0.95603;0.97162;0.99103;1.0143;1.0414;1.0733;1.1086;1.1479;1.1915;1.2394;1.2917;1.3481;1.4088;1.4745;1.5455;1.623;
+7000;0.88304;0.88453;0.88894;0.8963;0.90673;0.92034;0.93649;0.95848;0.98421;1.0147;1.0486;1.0865;1.1286;1.1748;1.2254;1.2803;1.3394;1.402;1.4698;1.5434;
+7500;0.83723;0.83861;0.84277;0.84974;0.8596;0.87248;0.88851;0.90773;0.92953;0.95857;0.99087;1.027;1.0673;1.1118;1.1606;1.2137;1.2712;1.3327;1.3977;1.4669;
+8000;0.79352;0.79412;0.79862;0.80522;0.81454;0.82671;0.84181;0.85992;0.88123;0.90585;0.9351;0.96984;1.0084;1.0508;1.0975;1.1487;1.2042;1.264;1.3278;1.395;
+8500;0.75205;0.7526;0.75643;0.76258;0.7714;0.78291;0.79717;0.81425;0.83429;0.85749;0.88477;0.9143;0.95133;0.99219;1.0369;1.0856;1.1388;1.1966;1.2587;1.3246;
+9000;0.71146;0.71248;0.71602;0.72193;0.73034;0.74123;0.75457;0.77058;0.78944;0.81132;0.83692;0.86548;0.89767;0.93515;0.97818;1.0251;1.076;1.1309;1.1908;1.255;
+9500;0.67284;0.67373;0.67723;0.68279;0.69071;0.70101;0.71378;0.7291;0.74684;0.76735;0.79137;0.8181;0.84835;0.88226;0.92106;0.96616;1.0151;1.0681;1.1251;1.1865;
+10000;0.63657;0.63759;0.64067;0.64582;0.65311;0.66259;0.67449;0.68942;0.70645;0.72606;0.74821;0.77329;0.80152;0.83315;0.86871;0.90888;0.95593;1.0069;1.0618;1.1208;
+10500;0.60203;0.60313;0.60604;0.61089;0.61774;0.62663;0.63764;0.65085;0.66714;0.68567;0.70684;0.73055;0.75711;0.78682;0.81996;0.85679;0.8984;0.9473;1.0001;1.0569;
+11000;0.56932;0.57025;0.57299;0.57756;0.58399;0.59234;0.60267;0.61507;0.62963;0.64702;0.66694;0.68949;0.71471;0.74264;0.77376;0.80833;0.84667;0.88945;0.94011;0.99469;
+11500;0.55476;0.55587;0.55854;0.56299;0.56927;0.57742;0.5875;0.59958;0.6138;0.63024;0.65018;0.67218;0.6967;0.72395;0.7543;0.78804;0.82546;0.86715;0.91617;0.96901;
+12000;0.54058;0.54186;0.54446;0.54881;0.55494;0.56288;0.57272;0.58451;0.59838;0.61442;0.63385;0.65532;0.67916;0.70574;0.73536;0.76828;0.80479;0.84547;0.8933;0.94488;
+12500;0.52738;0.52822;0.53076;0.535;0.54098;0.54874;0.55833;0.56985;0.58337;0.599;0.61795;0.63886;0.66208;0.68801;0.71692;0.74903;0.78466;0.82434;0.87104;0.92138;
+13000;0.51451;0.51488;0.51742;0.52156;0.52739;0.53496;0.54432;0.55555;0.56874;0.584;0.60246;0.62279;0.64544;0.67074;0.69894;0.73029;0.76505;0.80376;0.84936;0.8985;
+13500;0.50099;0.50182;0.5043;0.50843;0.51416;0.52154;0.53068;0.54163;0.5545;0.5694;0.58738;0.60715;0.62923;0.65393;0.68146;0.71203;0.74593;0.78373;0.82824;0.8762;
+14000;0.48714;0.48796;0.49037;0.49439;0.50006;0.50741;0.51651;0.52743;0.54026;0.55512;0.57269;0.5919;0.61346;0.63756;0.66441;0.69423;0.72731;0.76422;0.80767;0.85449;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.4469;1.4484;1.4541;1.4635;1.4772;1.4953;1.5183;1.5466;1.5809;1.6217;1.6709;1.7251;1.7859;1.8533;1.9283;2.0105;2.1019;2.2042;2.3192;2.4485;
+500;1.3833;1.3853;1.3907;1.3998;1.4127;1.4298;1.4517;1.4786;1.5115;1.5522;1.5979;1.6501;1.7084;1.7731;1.8447;1.9239;2.0106;2.1069;2.2148;2.3362;
+1000;1.3226;1.3244;1.3296;1.3383;1.3506;1.3671;1.3881;1.414;1.4454;1.4826;1.5275;1.5773;1.6333;1.6954;1.764;1.8396;1.9229;2.0141;2.1155;2.2291;
+1500;1.2642;1.2659;1.2708;1.2791;1.2909;1.3067;1.3267;1.3516;1.3819;1.4188;1.4602;1.5073;1.5604;1.62;1.6858;1.7582;1.8378;1.9251;2.0209;2.1274;
+2000;1.2079;1.2095;1.2142;1.2222;1.2335;1.2486;1.2678;1.2917;1.3206;1.3559;1.3955;1.4404;1.4909;1.5471;1.61;1.6794;1.7555;1.8391;1.9304;2.0308;
+2500;1.1536;1.1553;1.1599;1.1675;1.1783;1.1927;1.2112;1.2341;1.2617;1.2953;1.3331;1.3759;1.4239;1.4776;1.5371;1.603;1.676;1.7557;1.8433;1.9385;
+3000;1.1011;1.1036;1.108;1.1152;1.1255;1.1392;1.1568;1.1788;1.205;1.2357;1.2729;1.3136;1.3593;1.4104;1.4673;1.5301;1.5993;1.6753;1.7587;1.85;
+3500;1.0531;1.0546;1.0586;1.0654;1.0752;1.0882;1.1049;1.1257;1.1506;1.1798;1.2151;1.2537;1.2971;1.3457;1.3998;1.4597;1.5257;1.5982;1.6772;1.7642;
+4000;1.0067;1.008;1.0118;1.0182;1.0273;1.0397;1.0556;1.0752;1.0985;1.1261;1.1595;1.1961;1.2372;1.2833;1.3347;1.3917;1.4546;1.5237;1.5994;1.6816;
+4500;0.96197;0.96412;0.96776;0.97393;0.98279;0.99455;1.0095;1.0276;1.0491;1.075;1.1061;1.1407;1.1797;1.2234;1.2721;1.3262;1.386;1.4519;1.5241;1.6029;
+5000;0.92041;0.9216;0.92515;0.93115;0.93977;0.95124;0.96565;0.98299;1.0035;1.0274;1.0548;1.0877;1.1245;1.1658;1.212;1.2632;1.32;1.3826;1.4513;1.5266;
+5500;0.87889;0.88008;0.88358;0.88948;0.89795;0.90916;0.92311;0.93985;0.95957;0.98229;1.0082;1.0387;1.0724;1.1106;1.1542;1.2027;1.2564;1.3158;1.3812;1.4527;
+6000;0.83819;0.83935;0.84283;0.84869;0.85708;0.86803;0.88156;0.89781;0.91694;0.93883;0.96342;0.99222;1.0238;1.0594;1.0996;1.1447;1.1955;1.2516;1.3136;1.3816;
+6500;0.79869;0.79974;0.80321;0.80908;0.81737;0.82801;0.8411;0.85676;0.87529;0.89641;0.92024;0.94669;0.97746;1.0108;1.0483;1.0905;1.1376;1.1901;1.2487;1.3131;
+7000;0.75952;0.76066;0.76408;0.76986;0.77803;0.78863;0.80171;0.81719;0.83507;0.85527;0.87799;0.90449;0.93303;0.9646;0.99974;1.039;1.0832;1.1324;1.1866;1.2473;
+7500;0.72135;0.72249;0.72586;0.73149;0.73944;0.74974;0.76248;0.77778;0.79556;0.8154;0.8375;0.86284;0.89003;0.9202;0.95345;0.99029;1.0314;1.0775;1.1287;1.1851;
+8000;0.68411;0.68521;0.6885;0.69398;0.7017;0.7117;0.72408;0.73894;0.75614;0.77575;0.79762;0.82241;0.84878;0.87765;0.90912;0.94385;0.98234;1.0252;1.0732;1.1264;
+8500;0.64889;0.64892;0.65209;0.65737;0.6648;0.67451;0.68653;0.70092;0.71756;0.73653;0.75788;0.78249;0.80833;0.83634;0.8668;0.89981;0.93573;0.97574;1.0203;1.0702;
+9000;0.61272;0.61378;0.61684;0.62196;0.62916;0.6385;0.65006;0.66387;0.67985;0.69818;0.71955;0.74271;0.76827;0.7958;0.82537;0.85734;0.89182;0.92921;0.97039;1.0167;
+9500;0.57822;0.57862;0.58249;0.58744;0.59438;0.60339;0.61458;0.62792;0.64336;0.66099;0.68152;0.70375;0.72848;0.75557;0.78471;0.81576;0.84916;0.88502;0.92382;0.96643;
+10000;0.54725;0.54813;0.55072;0.55505;0.56117;0.56925;0.57998;0.5928;0.60771;0.62527;0.64458;0.66609;0.68983;0.71584;0.7443;0.77492;0.80737;0.8421;0.87928;0.91943;
+10500;0.51794;0.51854;0.52098;0.52507;0.53085;0.5384;0.5478;0.55873;0.57294;0.58985;0.60848;0.62926;0.6522;0.67735;0.70476;0.73444;0.76632;0.80008;0.83606;0.87447;
+11000;0.48946;0.49024;0.49255;0.49641;0.50187;0.50899;0.51785;0.52845;0.54089;0.55502;0.57327;0.59329;0.61543;0.63971;0.6662;0.69492;0.7259;0.75886;0.79376;0.83091;
+11500;0.47683;0.47772;0.47997;0.48374;0.48907;0.49602;0.50465;0.51499;0.52713;0.5409;0.55874;0.57827;0.59986;0.62354;0.64938;0.67739;0.7076;0.73967;0.77346;0.80933;
+12000;0.46453;0.46554;0.46774;0.47141;0.4766;0.48338;0.49181;0.50189;0.51372;0.52716;0.54459;0.56364;0.58469;0.60779;0.63299;0.66033;0.68977;0.72098;0.75395;0.78893;
+12500;0.45297;0.45368;0.45582;0.45941;0.46447;0.47108;0.4793;0.48913;0.50067;0.5138;0.53081;0.54939;0.56993;0.59246;0.61704;0.6437;0.67234;0.70278;0.73494;0.76906;
+13000;0.4417;0.44213;0.44422;0.44772;0.45266;0.4591;0.46712;0.47671;0.48799;0.5008;0.5174;0.53551;0.55555;0.57753;0.60151;0.62752;0.65537;0.68506;0.71643;0.74971;
+13500;0.42983;0.43053;0.43261;0.43609;0.44101;0.44741;0.45527;0.46464;0.47565;0.48814;0.50433;0.522;0.54155;0.56299;0.58639;0.61176;0.63886;0.66781;0.69841;0.73086;
+14000;0.41793;0.41861;0.42064;0.42402;0.42882;0.43508;0.44286;0.45217;0.46311;0.47592;0.4916;0.50884;0.52792;0.54883;0.57167;0.59641;0.62276;0.65101;0.68086;0.71251;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.1776;1.1791;1.1832;1.1902;1.2002;1.2134;1.2301;1.2507;1.2756;1.3061;1.3433;1.3863;1.4359;1.492;1.555;1.6253;1.7036;1.7907;1.8878;1.9953;
+500;1.1281;1.1301;1.134;1.1407;1.1501;1.1626;1.1783;1.1976;1.2212;1.2509;1.2851;1.3255;1.3723;1.4256;1.4853;1.5519;1.6261;1.7086;1.8003;1.9024;
+1000;1.0805;1.0827;1.0865;1.0929;1.102;1.1139;1.129;1.1475;1.1697;1.1966;1.2296;1.2678;1.3116;1.3619;1.4184;1.4816;1.5518;1.6299;1.7166;1.813;
+1500;1.0355;1.0367;1.0404;1.0466;1.0553;1.0668;1.0813;1.0991;1.1204;1.146;1.1773;1.213;1.2539;1.301;1.3543;1.414;1.4806;1.5545;1.6365;1.7275;
+2000;0.99086;0.99207;0.99562;1.0016;1.0101;1.0212;1.0352;1.0523;1.0729;1.0973;1.1273;1.1611;1.1997;1.2433;1.2929;1.3493;1.4122;1.4822;1.5597;1.6457;
+2500;0.948;0.94834;0.95211;0.95786;0.96607;0.97686;0.99041;1.007;1.0269;1.0504;1.0792;1.1114;1.1479;1.1891;1.2353;1.2874;1.3467;1.4129;1.4862;1.5675;
+3000;0.90555;0.90666;0.90995;0.91547;0.92336;0.93377;0.94689;0.96297;0.98225;1.0051;1.0328;1.0635;1.0983;1.1372;1.1807;1.2295;1.2844;1.3465;1.4158;1.4925;
+3500;0.86443;0.86556;0.86876;0.87413;0.88181;0.89196;0.90466;0.92018;0.93888;0.96107;0.98777;1.0173;1.0505;1.0874;1.1286;1.1745;1.2258;1.2836;1.3483;1.4209;
+4000;0.82578;0.8268;0.82979;0.83483;0.84204;0.85158;0.86368;0.8786;0.89678;0.91851;0.94407;0.97247;1.0043;1.0395;1.0786;1.122;1.1703;1.2241;1.2848;1.3524;
+4500;0.78864;0.78896;0.79236;0.79717;0.80406;0.81318;0.82475;0.83908;0.85643;0.8771;0.9016;0.92895;0.95947;0.99324;1.0305;1.0717;1.1172;1.1678;1.2243;1.2878;
+5000;0.75266;0.75358;0.7563;0.7609;0.76747;0.7762;0.78728;0.801;0.81766;0.83749;0.86123;0.88722;0.91606;0.94838;0.98405;1.0233;1.0664;1.1141;1.167;1.2262;
+5500;0.71821;0.71901;0.72162;0.726;0.73227;0.74062;0.75124;0.76438;0.78037;0.79924;0.82194;0.84699;0.87485;0.90545;0.93914;0.97655;1.0176;1.0628;1.1126;1.1679;
+6000;0.68536;0.68619;0.68863;0.69275;0.69866;0.70652;0.71661;0.7292;0.74453;0.76247;0.78412;0.80791;0.83461;0.8642;0.89651;0.93192;0.9706;1.0135;1.0606;1.1125;
+6500;0.65426;0.65502;0.65734;0.66126;0.66689;0.67438;0.68394;0.69585;0.71026;0.72714;0.74771;0.77029;0.79562;0.82391;0.85513;0.88908;0.92615;0.9665;1.0107;1.0597;
+7000;0.62472;0.62544;0.62762;0.6313;0.6366;0.64369;0.65281;0.6642;0.67781;0.69378;0.71309;0.73428;0.75812;0.78494;0.81474;0.84751;0.88304;0.9217;0.96368;1.0094;
+7500;0.59617;0.59729;0.59937;0.60287;0.60791;0.61463;0.62325;0.63395;0.64678;0.66187;0.68005;0.70007;0.72259;0.74775;0.77571;0.80697;0.84121;0.87825;0.91844;0.96201;
+8000;0.56964;0.57031;0.57232;0.57569;0.58054;0.58699;0.59524;0.60534;0.61731;0.63142;0.64846;0.66727;0.68852;0.71232;0.7388;0.76812;0.80048;0.83611;0.87461;0.91627;
+8500;0.54479;0.54446;0.54639;0.54965;0.55433;0.56054;0.56842;0.57801;0.58938;0.60264;0.61783;0.63596;0.65591;0.67833;0.70334;0.73108;0.76171;0.79543;0.83207;0.87198;
+9000;0.5187;0.51932;0.52123;0.52446;0.52908;0.53521;0.54283;0.55198;0.56274;0.57522;0.58946;0.60623;0.62481;0.64581;0.66935;0.69553;0.72448;0.75637;0.79141;0.82929;
+9500;0.49403;0.49469;0.49658;0.49976;0.50433;0.51037;0.51782;0.52674;0.53717;0.54911;0.56259;0.5777;0.59535;0.61487;0.63687;0.66148;0.68877;0.71889;0.75201;0.78831;
+10000;0.46972;0.47037;0.47226;0.47546;0.48002;0.48593;0.49321;0.50194;0.51214;0.52371;0.53667;0.55113;0.56776;0.58582;0.60603;0.62896;0.65459;0.68296;0.7142;0.74851;
+10500;0.44586;0.44649;0.44836;0.45151;0.45598;0.46178;0.46895;0.47752;0.48746;0.49874;0.51135;0.52532;0.54126;0.55836;0.57728;0.59836;0.62202;0.64859;0.67798;0.71031;
+11000;0.42253;0.42315;0.42498;0.42808;0.43243;0.43806;0.44504;0.4534;0.46312;0.47414;0.48686;0.50054;0.51553;0.53192;0.54987;0.56962;0.59154;0.61611;0.64339;0.67375;
+11500;0.41151;0.41225;0.41404;0.41705;0.42129;0.42679;0.43359;0.44174;0.45121;0.46195;0.47436;0.48769;0.50231;0.51828;0.53578;0.55504;0.57642;0.60043;0.62706;0.6564;
+12000;0.40079;0.40164;0.40338;0.40632;0.41046;0.41582;0.42244;0.43039;0.43963;0.45009;0.46219;0.47519;0.48944;0.50501;0.52207;0.54085;0.56175;0.58517;0.61116;0.63978;
+12500;0.39074;0.39131;0.39301;0.39588;0.39991;0.40513;0.4116;0.41934;0.42835;0.43855;0.45035;0.46302;0.47691;0.49209;0.50872;0.52708;0.54747;0.57032;0.59567;0.62363;
+13000;0.38096;0.38125;0.38292;0.38571;0.38964;0.39474;0.40104;0.40859;0.41737;0.42731;0.43882;0.45117;0.46471;0.47951;0.49576;0.51367;0.53357;0.55586;0.58061;0.60792;
+13500;0.37049;0.37105;0.37271;0.37548;0.37939;0.38445;0.39071;0.39812;0.40668;0.41637;0.4276;0.43964;0.45284;0.46731;0.48316;0.50063;0.52003;0.54178;0.56596;0.59261;
+14000;0.36026;0.36079;0.3624;0.3651;0.3689;0.37383;0.37992;0.38722;0.39571;0.40533;0.41651;0.42842;0.44133;0.45544;0.47089;0.48793;0.50686;0.52809;0.5517;0.57772;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.96114;0.96244;0.96599;0.97198;0.98053;0.99184;1.0061;1.0237;1.0448;1.0697;1.0987;1.1334;1.1728;1.2184;1.2701;1.3281;1.3928;1.4647;1.5445;1.6329;
+500;0.9193;0.92072;0.92407;0.92973;0.93781;0.9485;0.96201;0.97861;0.99867;1.0223;1.05;1.0829;1.1203;1.1636;1.2126;1.2676;1.3289;1.3971;1.4727;1.5565;
+1000;0.87915;0.88068;0.88384;0.88919;0.89683;0.90692;0.91968;0.93564;0.95478;0.97713;1.0033;1.0345;1.0701;1.1111;1.1575;1.2096;1.2677;1.3322;1.4038;1.4831;
+1500;0.84125;0.84223;0.84523;0.85029;0.85751;0.86705;0.87909;0.89424;0.91247;0.93396;0.95897;0.98841;1.022;1.0608;1.1047;1.154;1.2089;1.27;1.3377;1.4128;
+2000;0.80484;0.80534;0.80819;0.81296;0.81978;0.8288;0.84018;0.85452;0.87183;0.89228;0.91677;0.94465;0.97647;1.0129;1.0542;1.1007;1.1526;1.2104;1.2745;1.3455;
+2500;0.76917;0.77008;0.77274;0.77722;0.78362;0.79212;0.80288;0.81643;0.83288;0.8523;0.87564;0.90223;0.93295;0.96743;1.0063;1.0497;1.0987;1.1533;1.2138;1.281;
+3000;0.73562;0.73644;0.73893;0.74313;0.74914;0.7571;0.76717;0.77993;0.79553;0.81396;0.83617;0.86149;0.89074;0.92387;0.96064;1.0016;1.0474;1.0986;1.1558;1.2192;
+3500;0.70391;0.70469;0.70701;0.7109;0.71646;0.72382;0.73318;0.74507;0.75975;0.77721;0.79832;0.82242;0.85021;0.88165;0.91689;0.95566;0.99879;1.0468;1.1002;1.1601;
+4000;0.67339;0.67453;0.67673;0.68042;0.68568;0.69263;0.70142;0.71238;0.72596;0.74212;0.76203;0.78495;0.81133;0.84112;0.8745;0.91161;0.95233;0.99755;1.0478;1.1037;
+4500;0.6449;0.6456;0.64769;0.6512;0.6562;0.66279;0.67112;0.68142;0.6942;0.70939;0.72788;0.74921;0.77402;0.80225;0.83383;0.86895;0.90785;0.95051;0.99784;1.0504;
+5000;0.61741;0.61762;0.61971;0.62306;0.62784;0.63414;0.64206;0.6518;0.66384;0.67822;0.69564;0.71571;0.73882;0.76518;0.79482;0.82803;0.86487;0.90551;0.95011;0.99954;
+5500;0.59088;0.59108;0.59298;0.59618;0.60072;0.60669;0.61421;0.62339;0.63479;0.64842;0.66448;0.68384;0.70551;0.73016;0.75797;0.78898;0.82363;0.86214;0.90451;0.95103;
+6000;0.5646;0.56523;0.56707;0.57016;0.57455;0.58032;0.58757;0.59642;0.60716;0.62004;0.63519;0.65345;0.67382;0.6969;0.72287;0.75209;0.78458;0.82054;0.86067;0.90471;
+6500;0.53948;0.54008;0.54186;0.54485;0.54911;0.5547;0.56172;0.5703;0.58061;0.59296;0.60747;0.62467;0.64373;0.66527;0.68955;0.71682;0.74742;0.78136;0.81884;0.86034;
+7000;0.51537;0.51558;0.51741;0.52027;0.52437;0.52977;0.53659;0.54492;0.5549;0.56681;0.5812;0.59718;0.61523;0.63545;0.65804;0.68336;0.71189;0.74385;0.77921;0.81819;
+7500;0.49155;0.49211;0.49374;0.4965;0.50042;0.50561;0.51217;0.52023;0.52993;0.54145;0.55536;0.57068;0.58787;0.607;0.62827;0.65195;0.67836;0.70799;0.74128;0.77804;
+8000;0.46894;0.46946;0.471;0.4736;0.47732;0.48224;0.48854;0.4963;0.50566;0.51682;0.53027;0.54501;0.56148;0.57968;0.5998;0.62209;0.64683;0.67437;0.70514;0.73963;
+8500;0.44726;0.44775;0.44923;0.45172;0.45528;0.46;0.46599;0.47337;0.48232;0.49297;0.50586;0.52007;0.53588;0.55331;0.57246;0.59354;0.61681;0.64258;0.67123;0.70323;
+9000;0.42642;0.42685;0.42826;0.43064;0.43404;0.43856;0.44429;0.45139;0.46001;0.47022;0.48248;0.49596;0.51098;0.52773;0.54608;0.56614;0.58813;0.61234;0.63912;0.66887;
+9500;0.40634;0.40677;0.40812;0.41039;0.41364;0.41795;0.42343;0.43024;0.43868;0.44826;0.45998;0.47284;0.48719;0.50308;0.52053;0.53968;0.56061;0.58348;0.60861;0.63637;
+10000;0.38709;0.38754;0.38881;0.39097;0.39407;0.39819;0.40343;0.40994;0.41784;0.42708;0.43825;0.45049;0.46415;0.47932;0.49603;0.51431;0.53414;0.5558;0.57951;0.60553;
+10500;0.36877;0.36917;0.37039;0.37243;0.37535;0.37926;0.38426;0.39049;0.398;0.40676;0.41734;0.42892;0.44189;0.45631;0.47225;0.48974;0.50882;0.52944;0.55172;0.57615;
+11000;0.3512;0.35159;0.35274;0.35469;0.35749;0.36123;0.36602;0.37192;0.37899;0.38727;0.39727;0.40819;0.42046;0.43412;0.44925;0.4659;0.48413;0.50396;0.52533;0.54837;
+11500;0.34203;0.34248;0.34361;0.3455;0.34823;0.35188;0.35652;0.36226;0.36915;0.37723;0.38698;0.39764;0.40961;0.42293;0.43769;0.45393;0.47171;0.49105;0.51188;0.53435;
+12000;0.3331;0.33362;0.33471;0.33656;0.33923;0.34278;0.34727;0.35287;0.35958;0.36746;0.37697;0.38738;0.39905;0.41205;0.42644;0.44228;0.45962;0.47847;0.49879;0.5207;
+12500;0.32465;0.325;0.32606;0.32787;0.33047;0.33389;0.33827;0.34372;0.35027;0.35795;0.36725;0.3774;0.38878;0.40145;0.41549;0.43094;0.44785;0.46622;0.48604;0.50741;
+13000;0.31641;0.31657;0.31765;0.31941;0.32191;0.32524;0.32951;0.33483;0.34122;0.34872;0.35778;0.36769;0.37878;0.39114;0.40483;0.4199;0.43638;0.45431;0.47364;0.49448;
+13500;0.30759;0.30795;0.30899;0.31071;0.3132;0.3165;0.32074;0.32602;0.33235;0.34004;0.34858;0.35823;0.36906;0.38111;0.39445;0.40915;0.42522;0.4427;0.46155;0.48188;
+14000;0.29916;0.29949;0.30049;0.30217;0.30459;0.30782;0.31195;0.3171;0.32327;0.33082;0.33926;0.34879;0.35948;0.37133;0.38435;0.39868;0.41435;0.4314;0.44979;0.46962;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.79264;0.79369;0.79675;0.80192;0.80944;0.81946;0.8311;0.84548;0.86252;0.88308;0.90651;0.93458;0.96634;1.0022;1.0428;1.0891;1.1409;1.1983;1.2618;1.3318;
+500;0.75788;0.75885;0.76174;0.76663;0.77364;0.78297;0.79396;0.80749;0.82372;0.84326;0.8655;0.89221;0.92249;0.95692;0.99601;1.0401;1.0894;1.1441;1.2044;1.2709;
+1000;0.72485;0.7254;0.72814;0.73276;0.73938;0.74817;0.75864;0.7715;0.78679;0.80466;0.82619;0.85156;0.88035;0.91323;0.95077;0.99302;1.0399;1.0919;1.1493;1.2125;
+1500;0.69317;0.69326;0.69586;0.70023;0.70648;0.71477;0.72473;0.73697;0.75153;0.76853;0.78883;0.81274;0.83994;0.87129;0.90706;0.94754;0.99228;1.0416;1.0962;1.1562;
+2000;0.66157;0.66241;0.66486;0.66898;0.67488;0.6827;0.69218;0.70381;0.71767;0.73388;0.75355;0.77587;0.80159;0.83115;0.8651;0.9035;0.94642;0.99334;1.0451;1.1022;
+2500;0.63133;0.63281;0.63511;0.63901;0.64456;0.65192;0.66094;0.67198;0.68516;0.70061;0.71927;0.7405;0.76495;0.79302;0.82515;0.86126;0.9019;0.94693;0.99601;1.0502;
+3000;0.60385;0.60455;0.6067;0.61033;0.6155;0.62241;0.63098;0.64145;0.65396;0.66865;0.68638;0.70656;0.72981;0.7565;0.78698;0.82122;0.85939;0.90187;0.94889;1.0002;
+3500;0.57707;0.57775;0.57978;0.58319;0.58806;0.59449;0.60254;0.61237;0.62411;0.63802;0.65481;0.67399;0.6961;0.72148;0.75039;0.78283;0.81894;0.85896;0.90328;0.95227;
+4000;0.55137;0.55207;0.55397;0.55718;0.56176;0.56781;0.57546;0.58477;0.5959;0.60902;0.62473;0.64276;0.66376;0.6879;0.71531;0.74601;0.78017;0.81801;0.85989;0.90617;
+4500;0.527;0.52758;0.52936;0.53235;0.53661;0.54226;0.54952;0.55836;0.56892;0.58136;0.59623;0.61325;0.63298;0.65569;0.68166;0.71072;0.743;0.77878;0.81835;0.86208;
+5000;0.50375;0.5043;0.50597;0.50877;0.51278;0.51807;0.52489;0.5332;0.54315;0.5549;0.56898;0.58509;0.60374;0.62526;0.64961;0.6769;0.7074;0.74119;0.77858;0.81986;
+5500;0.48141;0.48199;0.48356;0.4862;0.48997;0.49494;0.50138;0.50927;0.5187;0.52982;0.5428;0.55823;0.57583;0.59615;0.61913;0.64487;0.67345;0.70521;0.74049;0.77946;
+6000;0.45995;0.46063;0.4621;0.46458;0.46812;0.4728;0.47887;0.48635;0.49529;0.50585;0.51819;0.5328;0.5494;0.56845;0.59;0.61425;0.64122;0.67109;0.7041;0.74079;
+6500;0.43971;0.44017;0.44155;0.44388;0.44721;0.45161;0.45732;0.4644;0.47287;0.4829;0.49462;0.50849;0.52422;0.5422;0.56245;0.58508;0.61036;0.63854;0.66968;0.70405;
+7000;0.42023;0.42068;0.42197;0.42414;0.42724;0.43135;0.43669;0.44339;0.4514;0.4609;0.4723;0.48524;0.50016;0.5171;0.53618;0.55747;0.58115;0.60748;0.63675;0.66915;
+7500;0.40191;0.40227;0.40347;0.4055;0.40839;0.41217;0.41704;0.42329;0.43083;0.43982;0.45066;0.46298;0.47713;0.49313;0.51109;0.53111;0.55336;0.57807;0.60549;0.63582;
+8000;0.38432;0.38469;0.38583;0.38774;0.39047;0.39407;0.39867;0.40452;0.41148;0.41979;0.42994;0.44163;0.45506;0.47019;0.48712;0.50593;0.52684;0.55004;0.57575;0.60426;
+8500;0.3674;0.36778;0.36887;0.37069;0.37328;0.3767;0.38101;0.3865;0.39313;0.40103;0.41053;0.42144;0.43399;0.44822;0.46418;0.4819;0.50154;0.52332;0.54743;0.57414;
+9000;0.3511;0.35146;0.3525;0.35424;0.35673;0.35999;0.3641;0.36925;0.37552;0.38297;0.39202;0.40236;0.41415;0.42751;0.44238;0.45892;0.4774;0.49784;0.52046;0.54547;
+9500;0.33527;0.3356;0.33661;0.33829;0.34069;0.34384;0.34779;0.35268;0.35863;0.36569;0.37402;0.38406;0.39523;0.40774;0.42179;0.43735;0.45452;0.47354;0.49476;0.5182;
+10000;0.32005;0.32017;0.32113;0.32276;0.32509;0.32814;0.33197;0.33666;0.34236;0.34911;0.35705;0.36654;0.37706;0.38893;0.40204;0.41671;0.43294;0.45079;0.47044;0.49222;
+10500;0.30476;0.30508;0.30603;0.30762;0.30987;0.31284;0.31657;0.3211;0.3266;0.33311;0.34073;0.34976;0.35969;0.37082;0.38325;0.39695;0.41222;0.42908;0.44759;0.46794;
+11000;0.29015;0.29047;0.29137;0.2929;0.29507;0.29794;0.30155;0.30597;0.31129;0.31759;0.3252;0.3336;0.34304;0.35353;0.36519;0.37815;0.39241;0.40825;0.42571;0.44486;
+11500;0.2825;0.2829;0.28378;0.28527;0.28738;0.29018;0.2937;0.29801;0.30319;0.30934;0.31676;0.32495;0.33414;0.34437;0.35573;0.36835;0.38222;0.39766;0.41468;0.43334;
+12000;0.27506;0.27553;0.27639;0.27784;0.2799;0.28262;0.28606;0.29026;0.29531;0.30131;0.30854;0.31652;0.32548;0.33544;0.34652;0.35878;0.3723;0.38736;0.40394;0.42212;
+12500;0.26808;0.26836;0.2692;0.27061;0.27262;0.27528;0.27862;0.28271;0.28764;0.2935;0.30054;0.30831;0.31704;0.32676;0.33756;0.34947;0.36264;0.37732;0.39348;0.41122;
+13000;0.26083;0.26113;0.26196;0.26336;0.26535;0.26797;0.27128;0.27532;0.28016;0.28588;0.29274;0.30032;0.30883;0.3183;0.32883;0.34041;0.35325;0.36755;0.38331;0.4006;
+13500;0.2537;0.25398;0.25479;0.25615;0.25809;0.26065;0.26388;0.26782;0.27256;0.27818;0.28496;0.29243;0.30081;0.31007;0.32034;0.33159;0.3441;0.35804;0.37341;0.39027;
+14000;0.24673;0.24705;0.24783;0.24916;0.25106;0.25355;0.2567;0.26054;0.26516;0.27064;0.27725;0.28453;0.29271;0.3018;0.31187;0.32293;0.33521;0.34879;0.36378;0.38021;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.65797;0.65872;0.66128;0.66565;0.67209;0.67995;0.6891;0.7003;0.71406;0.73002;0.74886;0.76997;0.79373;0.82054;0.8513;0.88625;0.92626;0.9713;1.0208;1.0753;
+500;0.62903;0.62977;0.6322;0.63636;0.64241;0.64978;0.65842;0.66901;0.6821;0.6973;0.71527;0.73555;0.7583;0.78403;0.81349;0.84699;0.88528;0.92827;0.97589;1.0276;
+1000;0.60131;0.60194;0.60425;0.60821;0.61396;0.62091;0.62917;0.63927;0.65162;0.66597;0.68301;0.70247;0.72421;0.74886;0.77707;0.8092;0.84579;0.88679;0.93215;0.98192;
+1500;0.57475;0.57524;0.57743;0.58117;0.58662;0.59319;0.60106;0.6107;0.62246;0.63612;0.65228;0.67091;0.69143;0.71502;0.74201;0.77279;0.80776;0.84681;0.88999;0.93747;
+2000;0.5489;0.54959;0.55167;0.55522;0.56038;0.56658;0.57409;0.58326;0.59444;0.60745;0.62282;0.64057;0.66019;0.68256;0.70827;0.73773;0.77114;0.80832;0.84938;0.89455;
+2500;0.52415;0.52494;0.52691;0.53028;0.53516;0.54101;0.54818;0.55693;0.5672;0.5799;0.59453;0.61142;0.63026;0.65161;0.67611;0.70398;0.73585;0.77126;0.81028;0.85322;
+3000;0.50092;0.50154;0.5034;0.50656;0.51113;0.51662;0.52339;0.53164;0.54142;0.55346;0.56737;0.58343;0.60151;0.62187;0.6453;0.67185;0.70198;0.73557;0.77267;0.81345;
+3500;0.47865;0.4791;0.48084;0.48382;0.48813;0.49333;0.49978;0.50764;0.51689;0.5282;0.5413;0.55656;0.57387;0.59345;0.61567;0.64104;0.66962;0.70143;0.73647;0.77521;
+4000;0.45718;0.45773;0.45938;0.46217;0.46621;0.47111;0.47721;0.48463;0.4934;0.50412;0.51656;0.53093;0.54737;0.566;0.58722;0.6114;0.63852;0.66869;0.70196;0.73851;
+4500;0.43653;0.43716;0.43874;0.44141;0.44521;0.44986;0.45567;0.46273;0.47105;0.48111;0.49286;0.50669;0.52212;0.53983;0.55992;0.58292;0.60868;0.63723;0.66877;0.70348;
+5000;0.41675;0.41724;0.41873;0.42125;0.42487;0.42936;0.43495;0.44171;0.44962;0.45912;0.47029;0.48339;0.49794;0.51478;0.53395;0.55572;0.58001;0.60707;0.6369;0.66979;
+5500;0.39778;0.39813;0.39953;0.4019;0.40529;0.40955;0.41486;0.42133;0.42898;0.43829;0.44867;0.4611;0.47509;0.491;0.50912;0.52969;0.55275;0.57822;0.60633;0.63744;
+6000;0.37938;0.37982;0.38114;0.38336;0.38655;0.39058;0.39561;0.40174;0.40902;0.41789;0.42787;0.43972;0.45304;0.46818;0.48545;0.50494;0.52668;0.5507;0.57725;0.60644;
+6500;0.36195;0.36236;0.36357;0.36564;0.36862;0.37243;0.37719;0.383;0.38989;0.39828;0.40773;0.41911;0.43188;0.4463;0.46273;0.48121;0.50177;0.5245;0.5495;0.57703;
+7000;0.34578;0.34597;0.34711;0.34903;0.35177;0.35532;0.35975;0.36515;0.37161;0.37952;0.38847;0.39924;0.41142;0.42531;0.44093;0.45844;0.47789;0.49937;0.52303;0.54903;
+7500;0.3299;0.33026;0.33133;0.33313;0.33571;0.33907;0.34327;0.34838;0.35448;0.36185;0.37015;0.38023;0.39175;0.40498;0.42001;0.4366;0.45499;0.47528;0.49763;0.52222;
+8000;0.31469;0.31518;0.3162;0.31789;0.32031;0.32349;0.32748;0.33233;0.33811;0.34487;0.35313;0.36246;0.3732;0.38552;0.39973;0.41564;0.43303;0.4522;0.47329;0.4965;
+8500;0.30042;0.30075;0.3017;0.30329;0.30555;0.30856;0.31235;0.31695;0.32244;0.32887;0.33663;0.34547;0.35565;0.36734;0.3806;0.39543;0.41198;0.43008;0.44999;0.47188;
+9000;0.28672;0.28692;0.2878;0.28929;0.29142;0.29426;0.29785;0.30222;0.30743;0.31353;0.32087;0.32921;0.33884;0.34992;0.36245;0.37644;0.39195;0.40898;0.42767;0.44831;
+9500;0.27338;0.27365;0.27448;0.27588;0.27788;0.28056;0.28397;0.28811;0.29305;0.29886;0.3058;0.31368;0.32278;0.33325;0.34506;0.35825;0.37286;0.389;0.40666;0.42581;
+10000;0.26059;0.26093;0.26172;0.26303;0.26491;0.26742;0.27066;0.27458;0.27928;0.2848;0.29122;0.29885;0.30745;0.31732;0.32843;0.34085;0.35459;0.36978;0.38653;0.40479;
+10500;0.24851;0.24877;0.2495;0.25073;0.25249;0.25485;0.25791;0.26161;0.26607;0.27131;0.27742;0.28465;0.2928;0.30211;0.31255;0.3242;0.33712;0.3514;0.36716;0.3845;
+11000;0.23691;0.23719;0.23786;0.23901;0.24064;0.24283;0.24571;0.24921;0.25342;0.25838;0.26435;0.27106;0.2788;0.28757;0.29739;0.30831;0.32042;0.33384;0.34863;0.36494;
+11500;0.23067;0.23092;0.23159;0.2327;0.23429;0.23643;0.23923;0.24264;0.24675;0.2516;0.2574;0.26394;0.27148;0.28002;0.28959;0.30023;0.31203;0.3251;0.33953;0.35542;
+12000;0.22459;0.22483;0.22548;0.22656;0.22812;0.2302;0.23293;0.23626;0.24026;0.24499;0.25064;0.25701;0.26435;0.27268;0.282;0.29237;0.30386;0.31659;0.33067;0.34616;
+12500;0.21857;0.21879;0.21943;0.2205;0.22203;0.22409;0.22677;0.23004;0.23395;0.23856;0.24392;0.25027;0.25742;0.26553;0.27461;0.28471;0.29591;0.30834;0.32205;0.33715;
+13000;0.21263;0.21284;0.21346;0.21451;0.216;0.21801;0.22063;0.22382;0.22765;0.23217;0.23759;0.24367;0.25068;0.25857;0.26742;0.27727;0.28818;0.30029;0.31367;0.32837;
+13500;0.20683;0.20706;0.20767;0.20869;0.21015;0.21211;0.21467;0.21778;0.22152;0.22593;0.23121;0.23714;0.24397;0.25171;0.26037;0.27;0.28067;0.29247;0.3055;0.31982;
+14000;0.20117;0.20147;0.20206;0.20306;0.20448;0.20639;0.20889;0.21193;0.21557;0.21988;0.22502;0.23081;0.23747;0.24501;0.25345;0.26284;0.27327;0.28481;0.29754;0.31151;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.5471;0.54786;0.54992;0.55341;0.55848;0.56418;0.57136;0.57977;0.59049;0.60273;0.61635;0.63159;0.64874;0.66781;0.69007;0.716;0.74593;0.78046;0.81993;0.86405;
+500;0.52313;0.52391;0.52589;0.52923;0.5337;0.5394;0.54619;0.55417;0.56441;0.57614;0.58931;0.60385;0.62036;0.63877;0.65953;0.68463;0.71312;0.74605;0.7836;0.82549;
+1000;0.50027;0.50091;0.50279;0.50599;0.51024;0.51567;0.52217;0.5298;0.53949;0.55063;0.563;0.57718;0.593;0.61083;0.63073;0.65453;0.68166;0.71301;0.74869;0.78844;
+1500;0.47836;0.47878;0.48057;0.48363;0.48767;0.49285;0.49906;0.50635;0.51562;0.52628;0.53813;0.55159;0.56668;0.5839;0.60304;0.6256;0.65148;0.68133;0.71515;0.75286;
+2000;0.45678;0.45735;0.45909;0.46206;0.46595;0.47088;0.47681;0.48379;0.49265;0.50286;0.51424;0.52714;0.54154;0.55795;0.57642;0.5978;0.62251;0.65092;0.68298;0.71869;
+2500;0.4362;0.43675;0.4384;0.44121;0.44487;0.4496;0.45532;0.46209;0.47054;0.48031;0.49125;0.5036;0.51741;0.53313;0.5508;0.57105;0.59469;0.62173;0.65213;0.6859;
+3000;0.41666;0.41718;0.41873;0.4214;0.42512;0.42932;0.43471;0.44112;0.44922;0.45863;0.46914;0.48095;0.49418;0.50921;0.52625;0.54557;0.56801;0.5937;0.62254;0.65448;
+3500;0.39796;0.39842;0.3999;0.40243;0.40596;0.40997;0.4151;0.42118;0.42886;0.43778;0.44789;0.45921;0.47184;0.48619;0.50261;0.52115;0.54249;0.56691;0.59412;0.62437;
+4000;0.38004;0.38041;0.38182;0.38423;0.38757;0.39138;0.39627;0.40208;0.40937;0.41788;0.42757;0.43837;0.45053;0.46412;0.47986;0.49763;0.51794;0.54122;0.56705;0.59552;
+4500;0.36289;0.36313;0.36447;0.36676;0.36992;0.37355;0.3782;0.38374;0.39065;0.39876;0.40815;0.41838;0.43001;0.44314;0.45814;0.47505;0.49441;0.51649;0.54105;0.56801;
+5000;0.34612;0.34655;0.34782;0.34999;0.35297;0.35643;0.36085;0.36613;0.37267;0.38042;0.38936;0.39916;0.41028;0.42286;0.43731;0.45362;0.47198;0.49272;0.51602;0.54162;
+5500;0.33009;0.33064;0.33184;0.3339;0.33671;0.34;0.34421;0.34924;0.35542;0.3628;0.37132;0.38074;0.39134;0.40338;0.41727;0.43294;0.45062;0.47029;0.49201;0.51624;
+6000;0.31524;0.3156;0.31672;0.31863;0.32123;0.32429;0.32824;0.33303;0.33887;0.3459;0.354;0.36307;0.37316;0.38464;0.39792;0.4129;0.42996;0.44878;0.46941;0.49206;
+6500;0.30095;0.3013;0.30236;0.30417;0.30662;0.30953;0.31327;0.31774;0.32315;0.32972;0.33737;0.34608;0.35569;0.36666;0.37933;0.39364;0.4099;0.428;0.44766;0.46911;
+7000;0.28727;0.28756;0.28856;0.29027;0.29258;0.29536;0.29892;0.30318;0.3083;0.31455;0.32173;0.32993;0.33892;0.34939;0.36147;0.37513;0.3906;0.4078;0.42671;0.44709;
+7500;0.27416;0.27435;0.2753;0.27691;0.2791;0.28175;0.28513;0.28919;0.29423;0.29999;0.3068;0.31465;0.32323;0.33306;0.34436;0.35734;0.37205;0.38837;0.4063;0.42589;
+8000;0.26161;0.26165;0.26255;0.26408;0.26614;0.26867;0.27189;0.27575;0.28053;0.28599;0.29245;0.29991;0.30815;0.31754;0.32835;0.34056;0.35428;0.36969;0.38667;0.40528;
+8500;0.24919;0.24947;0.25031;0.25174;0.25369;0.2561;0.25916;0.26284;0.26737;0.27255;0.27868;0.28575;0.29365;0.30275;0.31296;0.32458;0.33763;0.35204;0.36783;0.38544;
+9000;0.23731;0.23776;0.23855;0.23989;0.24172;0.24402;0.24693;0.25044;0.25473;0.25965;0.26546;0.27217;0.27975;0.28842;0.29817;0.30923;0.3216;0.33528;0.35025;0.36662;
+9500;0.22628;0.22652;0.22726;0.22852;0.23025;0.23244;0.2352;0.23854;0.24261;0.24727;0.25278;0.25914;0.26639;0.27465;0.28395;0.29449;0.3062;0.31914;0.33334;0.34885;
+10000;0.2157;0.21575;0.21645;0.21763;0.21926;0.22134;0.22396;0.22713;0.23086;0.23539;0.24062;0.24679;0.25355;0.26145;0.27029;0.2803;0.29141;0.30364;0.31706;0.33177;
+10500;0.20521;0.20544;0.20609;0.20719;0.20873;0.2107;0.21319;0.21619;0.21973;0.224;0.22897;0.23481;0.24135;0.24877;0.2572;0.26667;0.27719;0.28876;0.30144;0.31533;
+11000;0.19519;0.19557;0.19617;0.1972;0.19865;0.20052;0.20287;0.20571;0.20907;0.21309;0.21779;0.22334;0.22955;0.23661;0.24463;0.2536;0.26353;0.27447;0.28645;0.29956;
+11500;0.19013;0.19035;0.19094;0.19195;0.19335;0.19518;0.19746;0.20023;0.2035;0.20742;0.21201;0.2174;0.22346;0.23033;0.23814;0.24688;0.25655;0.2672;0.27886;0.29162;
+12000;0.18502;0.18522;0.18581;0.18679;0.18817;0.18995;0.19219;0.1949;0.19809;0.20191;0.20637;0.21164;0.21753;0.22423;0.23183;0.24033;0.24975;0.26012;0.27149;0.28391;
+12500;0.18001;0.1802;0.18077;0.18173;0.18308;0.18482;0.187;0.18964;0.19276;0.1965;0.20098;0.20601;0.21176;0.21829;0.22569;0.23397;0.24314;0.25324;0.26431;0.27641;
+13000;0.17513;0.17534;0.17589;0.17683;0.17814;0.17983;0.18197;0.18455;0.18759;0.19124;0.19561;0.20051;0.20612;0.21249;0.2197;0.22777;0.23672;0.24655;0.25733;0.26911;
+13500;0.17037;0.17062;0.17116;0.17207;0.17335;0.17501;0.17709;0.1796;0.18257;0.18614;0.19039;0.19517;0.20064;0.20684;0.21388;0.22174;0.23045;0.24004;0.25053;0.26202;
+14000;0.16587;0.16604;0.16657;0.16746;0.1687;0.17032;0.17235;0.17481;0.1777;0.18118;0.18532;0.18999;0.19532;0.20136;0.20822;0.21588;0.22437;0.23371;0.24394;0.25513;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.45455;0.4552;0.45684;0.45956;0.46336;0.46785;0.4733;0.47999;0.48784;0.49662;0.50638;0.51733;0.52953;0.54476;0.56218;0.58226;0.60534;0.6318;0.66213;0.69695;
+500;0.43442;0.43519;0.43674;0.43934;0.4429;0.44714;0.4523;0.45863;0.46621;0.47476;0.48422;0.49474;0.50645;0.52086;0.53746;0.55659;0.57857;0.60383;0.6328;0.66598;
+1000;0.41546;0.41596;0.41744;0.41991;0.42329;0.42733;0.43226;0.43829;0.44553;0.45366;0.46268;0.47292;0.48425;0.49789;0.51371;0.53193;0.55287;0.57693;0.60459;0.63618;
+1500;0.39699;0.39746;0.39887;0.40123;0.40444;0.4083;0.413;0.41876;0.4257;0.43354;0.44209;0.45184;0.46272;0.47583;0.4909;0.50826;0.5282;0.55111;0.57751;0.60754;
+2000;0.3793;0.37976;0.3811;0.38333;0.38635;0.39001;0.39449;0.4;0.40663;0.41395;0.42237;0.43169;0.44207;0.45441;0.46894;0.48553;0.50452;0.52634;0.55146;0.58002;
+2500;0.36232;0.36294;0.36421;0.36634;0.3692;0.37266;0.37689;0.38207;0.38835;0.39533;0.40344;0.41232;0.42227;0.43398;0.44776;0.46365;0.48179;0.50256;0.52648;0.55358;
+3000;0.34639;0.34679;0.34801;0.35004;0.35275;0.35606;0.3601;0.36504;0.37105;0.37769;0.38536;0.39378;0.40325;0.41437;0.42748;0.4426;0.45997;0.47975;0.5025;0.52818;
+3500;0.33112;0.33129;0.33245;0.3344;0.33698;0.34013;0.34399;0.34868;0.35445;0.36084;0.36817;0.37627;0.38523;0.39537;0.40805;0.42208;0.43892;0.45793;0.4795;0.50384;
+4000;0.31603;0.31639;0.3175;0.31937;0.32181;0.32483;0.32851;0.333;0.33852;0.34466;0.35166;0.35944;0.36805;0.37774;0.38962;0.40314;0.41875;0.4368;0.45756;0.48051;
+4500;0.3016;0.30207;0.30313;0.30492;0.30725;0.31012;0.31364;0.31792;0.32322;0.32925;0.33579;0.34323;0.35156;0.3608;0.37203;0.38489;0.39965;0.41663;0.43627;0.45825;
+5000;0.28799;0.28833;0.28932;0.29104;0.29324;0.29599;0.29935;0.30342;0.3085;0.31428;0.32055;0.32767;0.33568;0.34458;0.35515;0.36737;0.38143;0.39756;0.416;0.43674;
+5500;0.27513;0.27544;0.27639;0.278;0.28004;0.2826;0.28574;0.28952;0.29435;0.29989;0.3059;0.31272;0.32039;0.329;0.33896;0.35057;0.36394;0.37931;0.39679;0.41629;
+6000;0.26282;0.26305;0.26395;0.2655;0.26743;0.26988;0.27288;0.27648;0.28104;0.28624;0.29188;0.29835;0.3057;0.31398;0.32343;0.33447;0.34717;0.36179;0.37838;0.3968;
+6500;0.25103;0.25105;0.25199;0.25347;0.25531;0.25764;0.26051;0.26394;0.26832;0.2733;0.27872;0.28484;0.29171;0.29954;0.30846;0.31904;0.33109;0.34497;0.3607;0.37814;
+7000;0.2394;0.23968;0.2405;0.24191;0.24365;0.24588;0.24862;0.25189;0.25608;0.26084;0.26606;0.27193;0.27851;0.28601;0.29441;0.30425;0.31569;0.32886;0.34373;0.36023;
+7500;0.22828;0.22867;0.22945;0.2308;0.23245;0.23457;0.23719;0.24046;0.24432;0.24887;0.25391;0.25951;0.26582;0.27302;0.2811;0.29043;0.30112;0.31344;0.32748;0.34304;
+8000;0.21784;0.21809;0.21884;0.22013;0.22168;0.22371;0.22621;0.22932;0.233;0.23735;0.24222;0.24756;0.25361;0.26053;0.26829;0.27717;0.2874;0.29904;0.31206;0.32659;
+8500;0.20785;0.20787;0.20864;0.20987;0.21134;0.21327;0.21565;0.21862;0.22213;0.22628;0.23098;0.23607;0.24187;0.24849;0.25596;0.26438;0.2742;0.28527;0.29761;0.31117;
+9000;0.19796;0.19818;0.19886;0.20002;0.20141;0.20325;0.20552;0.20835;0.21168;0.21564;0.22009;0.22503;0.23058;0.23689;0.24408;0.25218;0.2615;0.27205;0.28372;0.29655;
+9500;0.18849;0.18881;0.18946;0.19055;0.19187;0.19362;0.19579;0.19848;0.20165;0.20542;0.20969;0.21441;0.21973;0.22584;0.23264;0.24041;0.24929;0.25933;0.27039;0.28251;
+10000;0.17952;0.17972;0.18034;0.18138;0.18265;0.18433;0.18642;0.18889;0.19201;0.1956;0.19975;0.20421;0.2093;0.21514;0.22165;0.22915;0.23758;0.24708;0.25758;0.26904;
+10500;0.17095;0.17097;0.17159;0.17257;0.17377;0.17537;0.17736;0.17972;0.18271;0.18617;0.19012;0.1944;0.19928;0.20486;0.21114;0.21826;0.22633;0.23531;0.24524;0.25611;
+11000;0.16248;0.16267;0.16322;0.16412;0.16527;0.16679;0.16867;0.17091;0.17374;0.17702;0.18082;0.18498;0.18963;0.19488;0.20097;0.20778;0.21549;0.22403;0.23339;0.24366;
+11500;0.15809;0.15828;0.15881;0.15969;0.16081;0.16229;0.16413;0.16632;0.16907;0.17227;0.17597;0.18;0.18453;0.18972;0.19557;0.2022;0.20969;0.21801;0.22712;0.23712;
+12000;0.15382;0.15399;0.15452;0.15538;0.15646;0.15791;0.15971;0.16184;0.16452;0.16764;0.17125;0.17515;0.17956;0.18462;0.19031;0.19676;0.20406;0.21215;0.22102;0.23076;
+12500;0.14966;0.14984;0.15035;0.15118;0.15224;0.15366;0.15541;0.15749;0.16011;0.16315;0.16666;0.17046;0.17476;0.17967;0.18521;0.19148;0.19858;0.20646;0.21508;0.22457;
+13000;0.14561;0.14581;0.14631;0.14712;0.14815;0.14953;0.15124;0.15326;0.15582;0.15879;0.1622;0.1659;0.17009;0.17487;0.18027;0.18638;0.19329;0.20095;0.20933;0.21855;
+13500;0.14175;0.1419;0.14239;0.14318;0.14418;0.14553;0.14719;0.14916;0.15166;0.15455;0.15787;0.16147;0.16555;0.17021;0.17547;0.18142;0.18816;0.19561;0.20378;0.21276;
+14000;0.13798;0.13811;0.13858;0.13935;0.14033;0.14164;0.14326;0.14518;0.14762;0.15044;0.15366;0.15717;0.16115;0.16568;0.17081;0.17661;0.18316;0.19043;0.19839;0.20713;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.37768;0.37814;0.37941;0.38149;0.3843;0.3877;0.39167;0.39666;0.40231;0.40863;0.41581;0.42395;0.4342;0.44615;0.45987;0.47548;0.49305;0.51321;0.5359;0.56203;
+500;0.36118;0.36158;0.36279;0.36477;0.36743;0.37064;0.37441;0.37916;0.38459;0.39066;0.39751;0.4053;0.41499;0.42636;0.43945;0.45434;0.47118;0.49066;0.51232;0.53727;
+1000;0.34537;0.34567;0.34681;0.3487;0.35123;0.35431;0.35792;0.36247;0.36764;0.3734;0.37993;0.38736;0.39651;0.40735;0.41982;0.43401;0.45011;0.46878;0.48965;0.51347;
+1500;0.33023;0.33045;0.33154;0.33334;0.33574;0.33866;0.34209;0.34642;0.35136;0.35689;0.36311;0.37016;0.37909;0.38906;0.40095;0.41451;0.42988;0.44769;0.46772;0.49059;
+2000;0.3157;0.3159;0.31693;0.31864;0.32091;0.32368;0.32694;0.3311;0.33583;0.34109;0.347;0.3537;0.36212;0.37155;0.38282;0.39575;0.41044;0.42743;0.44654;0.46855;
+2500;0.30161;0.30194;0.30293;0.30456;0.30672;0.30937;0.31248;0.31645;0.32095;0.32595;0.33162;0.33799;0.34591;0.35482;0.3655;0.37776;0.39177;0.40796;0.42618;0.44718;
+3000;0.28814;0.28852;0.28947;0.29103;0.29309;0.29562;0.2986;0.30239;0.30671;0.31151;0.31691;0.32296;0.33041;0.33889;0.34899;0.36085;0.37386;0.38926;0.40664;0.42665;
+3500;0.27532;0.27562;0.27653;0.27802;0.27998;0.28241;0.28526;0.28889;0.29303;0.29762;0.3028;0.30858;0.31562;0.32365;0.33347;0.3445;0.35707;0.37138;0.38788;0.40695;
+4000;0.26307;0.26323;0.26409;0.26552;0.26738;0.2697;0.27244;0.27592;0.27988;0.28429;0.28924;0.29476;0.30142;0.30905;0.31816;0.32885;0.34077;0.35441;0.37003;0.38805;
+4500;0.25119;0.25145;0.25225;0.25358;0.25531;0.2575;0.26011;0.26345;0.26725;0.27147;0.27622;0.28149;0.28778;0.29504;0.30394;0.31388;0.32524;0.33816;0.353;0.37011;
+5000;0.24006;0.24031;0.24107;0.24234;0.24397;0.24604;0.24848;0.2516;0.25517;0.25915;0.2637;0.26874;0.2747;0.28159;0.29005;0.29951;0.31033;0.32264;0.33674;0.35293;
+5500;0.22941;0.22959;0.23032;0.23153;0.23308;0.23506;0.23739;0.24038;0.24381;0.24758;0.25182;0.25653;0.26215;0.26869;0.27673;0.28571;0.296;0.30774;0.32116;0.33656;
+6000;0.21921;0.21923;0.21999;0.22115;0.22262;0.2245;0.22673;0.22959;0.23288;0.23652;0.24058;0.24509;0.25011;0.25638;0.26376;0.27248;0.28226;0.29343;0.3062;0.32083;
+6500;0.20918;0.2094;0.21006;0.21116;0.21256;0.21435;0.21648;0.21921;0.22236;0.22587;0.22976;0.23408;0.2389;0.24501;0.25194;0.2599;0.26909;0.27971;0.29186;0.30574;
+7000;0.19956;0.19985;0.20049;0.20156;0.20289;0.20461;0.20663;0.20924;0.21226;0.21562;0.21938;0.22352;0.22814;0.2339;0.24049;0.24806;0.25672;0.26663;0.27811;0.29126;
+7500;0.19029;0.1906;0.19121;0.19223;0.1935;0.19516;0.19712;0.19965;0.20255;0.20578;0.20939;0.21338;0.2178;0.22323;0.2295;0.23669;0.24493;0.25436;0.26516;0.27738;
+8000;0.18142;0.18171;0.18229;0.18326;0.18447;0.18605;0.18793;0.19035;0.19315;0.19629;0.19977;0.20364;0.20786;0.21298;0.21893;0.22578;0.23361;0.24258;0.25286;0.26445;
+8500;0.17295;0.17316;0.17372;0.17464;0.17579;0.1773;0.1791;0.1814;0.18408;0.1871;0.19044;0.19419;0.19831;0.20314;0.2088;0.21531;0.22275;0.23127;0.24105;0.25203;
+9000;0.16486;0.16497;0.1655;0.16637;0.16747;0.16891;0.17063;0.17282;0.17538;0.17829;0.18147;0.18506;0.18905;0.19366;0.19906;0.20525;0.21233;0.22043;0.22971;0.2401;
+9500;0.15692;0.1571;0.1576;0.15843;0.15948;0.16085;0.16249;0.16459;0.16704;0.16984;0.17286;0.1763;0.18013;0.18449;0.18967;0.1956;0.20232;0.21003;0.21883;0.22866;
+10000;0.14935;0.14955;0.15004;0.15082;0.15182;0.15313;0.15469;0.15669;0.15903;0.16165;0.16461;0.16789;0.17157;0.17568;0.18063;0.18628;0.19274;0.20005;0.2084;0.21768;
+10500;0.14217;0.14232;0.14279;0.14353;0.14447;0.14572;0.14721;0.14912;0.15136;0.15387;0.15671;0.15985;0.16337;0.16732;0.17198;0.17721;0.18346;0.19049;0.19839;0.20716;
+11000;0.13524;0.13539;0.13583;0.13653;0.13743;0.13861;0.14004;0.14184;0.14399;0.1464;0.14911;0.15212;0.15551;0.15929;0.1637;0.16877;0.17457;0.18124;0.1888;0.19707;
+11500;0.13156;0.13171;0.13214;0.13282;0.1337;0.13485;0.13624;0.138;0.14009;0.14244;0.14507;0.14799;0.15128;0.15496;0.15925;0.16418;0.16983;0.17632;0.18366;0.19172;
+12000;0.12797;0.12813;0.12855;0.12922;0.13007;0.13119;0.13255;0.13427;0.1363;0.13859;0.14116;0.144;0.14721;0.15078;0.15495;0.15973;0.16523;0.17155;0.17867;0.18651;
+12500;0.12448;0.12467;0.12508;0.12572;0.12655;0.12765;0.12897;0.13065;0.13263;0.13485;0.13735;0.14012;0.14325;0.14673;0.15079;0.15545;0.1608;0.16694;0.17385;0.18145;
+13000;0.12117;0.1213;0.1217;0.12233;0.12314;0.12421;0.12549;0.12713;0.12906;0.13123;0.13367;0.13637;0.13941;0.1428;0.14675;0.15129;0.1565;0.16248;0.16919;0.17659;
+13500;0.11795;0.11796;0.11843;0.11904;0.11983;0.12087;0.12212;0.12372;0.12561;0.12771;0.13009;0.13272;0.13568;0.13898;0.14282;0.14725;0.15233;0.15815;0.16466;0.17186;
+14000;0.11476;0.11488;0.11526;0.11585;0.11662;0.11764;0.11885;0.12041;0.12225;0.12429;0.12662;0.12918;0.13206;0.13525;0.13902;0.14333;0.14828;0.15393;0.16026;0.16727;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.31343;0.31383;0.31478;0.31632;0.31839;0.32089;0.32382;0.32731;0.33132;0.33614;0.34169;0.34871;0.35685;0.36583;0.37601;0.3875;0.40085;0.41607;0.43348;0.45312;
+500;0.30005;0.30033;0.30125;0.30271;0.30464;0.30697;0.30973;0.31305;0.31689;0.32119;0.32674;0.33339;0.34113;0.34975;0.3595;0.37044;0.38311;0.39759;0.41428;0.43301;
+1000;0.28721;0.28736;0.28822;0.28961;0.29145;0.29368;0.29632;0.29949;0.30311;0.30718;0.31237;0.31865;0.32602;0.33427;0.34356;0.35405;0.36608;0.37985;0.39584;0.41373;
+1500;0.27458;0.27486;0.27568;0.277;0.27875;0.28089;0.28342;0.28646;0.28992;0.29383;0.2987;0.30457;0.3115;0.31938;0.32825;0.33831;0.35006;0.3632;0.37811;0.3952;
+2000;0.26262;0.26288;0.26367;0.26493;0.2666;0.26862;0.27104;0.27394;0.27725;0.28098;0.2856;0.29114;0.29772;0.30518;0.31357;0.32318;0.33433;0.34684;0.36108;0.37739;
+2500;0.25115;0.25136;0.25211;0.25332;0.25491;0.25686;0.25916;0.26195;0.26512;0.26868;0.27302;0.27845;0.28449;0.29161;0.29962;0.30872;0.31927;0.33114;0.34471;0.36027;
+3000;0.24016;0.24027;0.24098;0.24214;0.24367;0.24553;0.24774;0.25042;0.25345;0.25686;0.26098;0.2661;0.27182;0.27857;0.28622;0.2949;0.30463;0.31615;0.32903;0.34384;
+3500;0.22962;0.22967;0.23029;0.23139;0.23285;0.23463;0.23675;0.23933;0.24224;0.24551;0.2494;0.25424;0.25967;0.26612;0.2734;0.28162;0.29093;0.30184;0.31407;0.32814;
+4000;0.21929;0.2195;0.22014;0.22118;0.22254;0.2242;0.22618;0.22866;0.23145;0.23458;0.23827;0.24285;0.24799;0.25413;0.26109;0.26895;0.2778;0.28812;0.29976;0.31312;
+4500;0.20959;0.2098;0.21042;0.21142;0.21274;0.21434;0.21624;0.21856;0.22116;0.22407;0.22757;0.23189;0.23678;0.24262;0.24925;0.25674;0.26519;0.27502;0.28606;0.29875;
+5000;0.20025;0.20041;0.201;0.20196;0.20322;0.20476;0.20659;0.20885;0.21138;0.21422;0.21747;0.22146;0.22602;0.23158;0.2379;0.24503;0.25309;0.26243;0.27294;0.28502;
+5500;0.19131;0.19135;0.19196;0.19287;0.19407;0.19555;0.1973;0.19948;0.20191;0.20464;0.20778;0.2116;0.21593;0.22111;0.22702;0.2338;0.24147;0.25035;0.26035;0.27184;
+6000;0.18253;0.18272;0.18326;0.18414;0.18528;0.1867;0.18838;0.19047;0.1928;0.19542;0.19841;0.20202;0.20618;0.21117;0.21681;0.22318;0.23034;0.23876;0.24827;0.2592;
+6500;0.17413;0.17438;0.1749;0.17574;0.17683;0.17819;0.17979;0.1818;0.18405;0.18656;0.1894;0.19281;0.19677;0.20152;0.20698;0.21308;0.21991;0.2278;0.23669;0.24709;
+7000;0.1661;0.16638;0.16687;0.16768;0.16872;0.17001;0.17154;0.17348;0.17563;0.17804;0.18075;0.18397;0.18772;0.19225;0.19744;0.20333;0.20988;0.21741;0.22586;0.23557;
+7500;0.15845;0.15869;0.15915;0.15993;0.16092;0.16215;0.16362;0.16547;0.16755;0.16985;0.17244;0.17548;0.17917;0.18334;0.18828;0.19389;0.2002;0.20743;0.21548;0.22472;
+8000;0.15115;0.15117;0.15175;0.15248;0.15343;0.15461;0.156;0.15779;0.15978;0.16198;0.16445;0.16722;0.1707;0.17479;0.17948;0.18483;0.19084;0.19779;0.20552;0.21431;
+8500;0.14406;0.1442;0.14463;0.14533;0.14623;0.14736;0.1487;0.1504;0.15231;0.15442;0.15679;0.15942;0.16282;0.16658;0.17104;0.17613;0.18187;0.18848;0.1959;0.20433;
+9000;0.13729;0.13739;0.1378;0.13846;0.13932;0.1404;0.14168;0.14332;0.14515;0.14716;0.14943;0.15194;0.15514;0.15871;0.16294;0.16778;0.17326;0.17954;0.18661;0.1947;
+9500;0.13072;0.13085;0.13124;0.13187;0.13268;0.13371;0.13493;0.13651;0.13827;0.14019;0.14237;0.14477;0.14777;0.15116;0.15517;0.15976;0.16499;0.17097;0.17769;0.18539;
+10000;0.12446;0.12458;0.12495;0.12555;0.12632;0.1273;0.12846;0.12997;0.13167;0.13351;0.13558;0.13788;0.14071;0.14392;0.14784;0.1521;0.15706;0.16276;0.16915;0.17647;
+10500;0.11849;0.11858;0.11893;0.11949;0.12023;0.12116;0.12227;0.12371;0.12534;0.1271;0.12908;0.13127;0.13394;0.13698;0.1407;0.14484;0.14955;0.15488;0.16096;0.1679;
+11000;0.11271;0.11282;0.11315;0.11369;0.11439;0.11528;0.11633;0.11771;0.11927;0.12097;0.12286;0.12495;0.12746;0.13042;0.13376;0.13778;0.14225;0.14732;0.1531;0.15969;
+11500;0.10964;0.10974;0.11007;0.11059;0.11127;0.11214;0.11316;0.11451;0.11603;0.11768;0.11952;0.12155;0.12399;0.12688;0.13021;0.13402;0.13836;0.14328;0.14889;0.15531;
+12000;0.10665;0.10676;0.10707;0.10758;0.10824;0.10909;0.11009;0.1114;0.11288;0.11447;0.11627;0.11825;0.12062;0.12343;0.12667;0.13038;0.1346;0.13938;0.14483;0.15105;
+12500;0.10374;0.10386;0.10417;0.10466;0.10531;0.10613;0.10711;0.10838;0.10981;0.11136;0.11311;0.11503;0.11735;0.12009;0.12324;0.12685;0.13095;0.1356;0.14091;0.14696;
+13000;0.10094;0.10104;0.10134;0.10182;0.10245;0.10325;0.1042;0.10544;0.10683;0.10834;0.11004;0.11191;0.11417;0.11683;0.1199;0.12341;0.12741;0.13193;0.13709;0.14298;
+13500;0.098222;0.098233;0.098603;0.099066;0.099682;0.10046;0.10139;0.10259;0.10394;0.10541;0.10706;0.10888;0.11108;0.11367;0.11666;0.12008;0.12396;0.12837;0.13339;0.13912;
+14000;0.095577;0.095588;0.09594;0.09639;0.096989;0.097746;0.098646;0.09981;0.10112;0.10255;0.10417;0.10594;0.10808;0.1106;0.11351;0.11683;0.12062;0.1249;0.12978;0.13536;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.25962;0.25986;0.26059;0.26173;0.26326;0.26508;0.26724;0.26965;0.27293;0.2771;0.28186;0.2875;0.29337;0.30025;0.30851;0.31757;0.32747;0.33839;0.35054;0.36425;
+500;0.24845;0.24882;0.24952;0.25061;0.25205;0.25376;0.2558;0.25808;0.26119;0.2651;0.26957;0.27494;0.28055;0.28709;0.29491;0.30351;0.31302;0.32348;0.33514;0.34832;
+1000;0.23795;0.23818;0.23883;0.23987;0.24125;0.24289;0.24484;0.24701;0.24993;0.2536;0.25782;0.26299;0.2683;0.27448;0.28184;0.28999;0.29913;0.30915;0.32033;0.33298;
+1500;0.22786;0.22797;0.22859;0.22957;0.23087;0.23242;0.23428;0.23637;0.23893;0.24239;0.24659;0.25145;0.25654;0.26241;0.26938;0.27707;0.2858;0.29538;0.3061;0.31823;
+2000;0.21783;0.21803;0.21863;0.21958;0.22084;0.22235;0.22414;0.22616;0.2286;0.23184;0.2358;0.2404;0.24527;0.25081;0.2574;0.2647;0.27308;0.2822;0.29242;0.30405;
+2500;0.20822;0.20847;0.20904;0.20995;0.21116;0.21259;0.21431;0.21624;0.21859;0.22167;0.22545;0.2298;0.23443;0.2397;0.24594;0.25283;0.26085;0.26957;0.27935;0.29045;
+3000;0.19908;0.19927;0.19981;0.20068;0.20183;0.2032;0.20484;0.2067;0.20894;0.21184;0.21539;0.21958;0.22406;0.22902;0.23495;0.24147;0.24911;0.25744;0.2668;0.27742;
+3500;0.19054;0.1906;0.1911;0.19191;0.19297;0.19424;0.19576;0.19752;0.19965;0.20238;0.2057;0.20969;0.21398;0.21874;0.22425;0.2306;0.23785;0.24574;0.25474;0.26491;
+4000;0.18212;0.18227;0.18276;0.18353;0.18454;0.18575;0.18721;0.18885;0.19082;0.19333;0.19658;0.20019;0.20432;0.20881;0.21411;0.22019;0.22707;0.23459;0.24316;0.25288;
+4500;0.17405;0.17425;0.17472;0.17545;0.17641;0.17757;0.17896;0.18054;0.18242;0.18479;0.18783;0.19118;0.19504;0.1993;0.20434;0.21009;0.2167;0.2239;0.2321;0.24134;
+5000;0.16637;0.16652;0.16696;0.16766;0.16858;0.16969;0.17102;0.17254;0.17434;0.17658;0.17944;0.18262;0.18631;0.19035;0.19502;0.20038;0.20665;0.21363;0.22147;0.23029;
+5500;0.15902;0.15908;0.1595;0.16017;0.16105;0.1621;0.16338;0.16485;0.16657;0.16868;0.17139;0.17439;0.17791;0.18179;0.18624;0.19143;0.1971;0.2037;0.21125;0.21968;
+6000;0.15178;0.15192;0.15232;0.15296;0.1538;0.15481;0.15604;0.15744;0.15909;0.16108;0.16364;0.16649;0.16985;0.17356;0.1778;0.18272;0.1881;0.19435;0.20126;0.20949;
+6500;0.14488;0.14503;0.14541;0.14602;0.14683;0.1478;0.14898;0.15032;0.1519;0.15377;0.15619;0.15889;0.1621;0.16566;0.1697;0.17436;0.17946;0.18541;0.192;0.19973;
+7000;0.13828;0.13841;0.13877;0.13936;0.14013;0.14105;0.14218;0.14348;0.14499;0.14675;0.14904;0.1516;0.15466;0.15805;0.16191;0.1662;0.17116;0.17681;0.18311;0.19049;
+7500;0.13196;0.13199;0.1324;0.13295;0.13368;0.13457;0.13566;0.1369;0.13835;0.14;0.14218;0.1446;0.14752;0.15076;0.15443;0.15854;0.16323;0.16858;0.17473;0.18163;
+8000;0.12581;0.12592;0.12625;0.12679;0.12749;0.12834;0.12939;0.13059;0.13197;0.13354;0.13549;0.13788;0.14065;0.14375;0.14724;0.15117;0.15562;0.16068;0.16656;0.17313;
+8500;0.11994;0.12005;0.12037;0.12088;0.12155;0.12236;0.12336;0.12452;0.12584;0.12733;0.12917;0.13143;0.13406;0.13701;0.14034;0.14409;0.14832;0.15312;0.15859;0.16498;
+9000;0.11433;0.11441;0.11471;0.1152;0.11584;0.11662;0.11757;0.11868;0.11995;0.12137;0.12311;0.12523;0.12773;0.13055;0.13371;0.13729;0.1413;0.14587;0.1512;0.15715;
+9500;0.1089;0.109;0.10929;0.10975;0.11036;0.11111;0.11202;0.11308;0.11429;0.11564;0.11728;0.11928;0.12165;0.12434;0.12736;0.13076;0.13457;0.13893;0.14399;0.14965;
+10000;0.10371;0.1038;0.10408;0.10452;0.1051;0.10582;0.10669;0.10771;0.10887;0.11017;0.11171;0.11366;0.11582;0.11838;0.12126;0.1245;0.12812;0.13226;0.13706;0.14245;
+10500;0.098724;0.098814;0.099078;0.099502;0.10006;0.10074;0.10158;0.10256;0.10367;0.10491;0.10636;0.1082;0.11024;0.11267;0.11541;0.11848;0.12194;0.12587;0.13043;0.13555;
+11000;0.093963;0.094027;0.094279;0.094682;0.095212;0.095862;0.096666;0.097607;0.098672;0.099861;0.10124;0.10297;0.1049;0.1072;0.10982;0.11274;0.11602;0.11974;0.12407;0.12894;
+11500;0.091347;0.091432;0.091677;0.092069;0.092585;0.093216;0.093998;0.094911;0.095946;0.097102;0.098442;0.10012;0.102;0.10424;0.10678;0.10963;0.11282;0.11643;0.12063;0.12535;
+12000;0.088804;0.088909;0.089148;0.089529;0.09003;0.090644;0.091404;0.092292;0.093299;0.094422;0.095723;0.097357;0.099182;0.10136;0.10383;0.1066;0.10971;0.11322;0.11731;0.12189;
+12500;0.086382;0.08646;0.086692;0.087062;0.087548;0.088145;0.088884;0.089748;0.090727;0.091817;0.093083;0.094673;0.096449;0.098571;0.10097;0.10367;0.10669;0.1101;0.11408;0.11853;
+13000;0.084026;0.08408;0.084305;0.084665;0.085138;0.085716;0.086437;0.087276;0.088227;0.089288;0.090516;0.092065;0.093793;0.095858;0.098195;0.10081;0.10375;0.10707;0.11094;0.11527;
+13500;0.081694;0.081768;0.081987;0.082336;0.082795;0.083358;0.084059;0.084874;0.085798;0.086828;0.088023;0.089531;0.091212;0.093222;0.095495;0.09804;0.10089;0.10412;0.10789;0.1121;
+14000;0.079426;0.079521;0.079734;0.080073;0.08052;0.081066;0.081748;0.08254;0.083438;0.084439;0.0856;0.087069;0.088706;0.090661;0.092873;0.095347;0.098121;0.10134;0.10492;0.10902;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.21282;0.21315;0.21374;0.21466;0.21591;0.21738;0.21906;0.22107;0.22421;0.22786;0.23176;0.2359;0.24065;0.24645;0.2528;0.25936;0.2662;0.27327;0.28054;0.28815;
+500;0.20401;0.20421;0.20477;0.20564;0.20681;0.2082;0.20978;0.21166;0.21461;0.21805;0.2218;0.22577;0.23033;0.23582;0.24189;0.24814;0.25471;0.26156;0.26868;0.27619;
+1000;0.19554;0.19557;0.19614;0.19695;0.19805;0.19936;0.20086;0.20265;0.2054;0.20861;0.21221;0.21598;0.2203;0.22552;0.23141;0.23741;0.2437;0.2503;0.25723;0.26462;
+1500;0.18714;0.18731;0.18781;0.18859;0.18964;0.19087;0.19229;0.19397;0.19655;0.19957;0.20301;0.20656;0.21065;0.21573;0.22122;0.22705;0.23312;0.2395;0.24623;0.25343;
+2000;0.17907;0.17933;0.1798;0.18054;0.18152;0.1827;0.18405;0.18565;0.18806;0.19089;0.19416;0.19753;0.20139;0.20617;0.21139;0.21697;0.22289;0.22909;0.23563;0.24267;
+2500;0.17133;0.17163;0.17208;0.17278;0.17371;0.17482;0.17611;0.17762;0.1799;0.18256;0.18568;0.18887;0.19251;0.197;0.20197;0.20727;0.21294;0.21898;0.22539;0.23227;
+3000;0.16408;0.16435;0.16477;0.16541;0.16628;0.1673;0.16847;0.1699;0.17203;0.17454;0.17752;0.18054;0.18398;0.18822;0.19293;0.19797;0.20338;0.20918;0.21543;0.22222;
+3500;0.15721;0.15735;0.15775;0.15836;0.15918;0.16014;0.16127;0.16259;0.16455;0.16685;0.16965;0.17252;0.17577;0.17978;0.18426;0.18905;0.19421;0.19976;0.2058;0.21242;
+4000;0.15061;0.15059;0.15097;0.15155;0.15233;0.15324;0.15431;0.15557;0.15741;0.15957;0.16225;0.16491;0.16789;0.17167;0.1759;0.18047;0.1854;0.19072;0.19652;0.20293;
+4500;0.14395;0.14407;0.14443;0.14498;0.14573;0.14659;0.14761;0.14881;0.15053;0.15257;0.15511;0.15766;0.16058;0.16403;0.16794;0.17224;0.17693;0.18203;0.18761;0.19379;
+5000;0.13767;0.13779;0.13813;0.13866;0.13936;0.14018;0.14116;0.14229;0.14391;0.14582;0.14822;0.15068;0.15346;0.1567;0.16039;0.1645;0.16887;0.17367;0.17902;0.18499;
+5500;0.13167;0.13173;0.13205;0.13255;0.13322;0.13401;0.13493;0.13602;0.13754;0.13933;0.1416;0.14395;0.14659;0.14966;0.15314;0.15707;0.16125;0.1658;0.17081;0.17651;
+6000;0.12591;0.12593;0.12621;0.12668;0.12731;0.12806;0.12894;0.12998;0.1314;0.13309;0.13523;0.13747;0.13998;0.14276;0.14617;0.14993;0.15392;0.15828;0.16308;0.16846;
+6500;0.12039;0.12027;0.12056;0.12101;0.12162;0.12233;0.12317;0.12416;0.1255;0.12718;0.1291;0.13125;0.13351;0.13626;0.13947;0.14307;0.14688;0.15105;0.15566;0.16082;
+7000;0.11476;0.11485;0.11513;0.11556;0.11614;0.11682;0.11762;0.11855;0.11981;0.1214;0.1232;0.12527;0.12743;0.13003;0.13305;0.13648;0.14011;0.1441;0.14852;0.15348;
+7500;0.10955;0.10964;0.1099;0.11031;0.11086;0.11149;0.11227;0.11315;0.11434;0.11583;0.11754;0.11951;0.12158;0.12403;0.12688;0.13015;0.13361;0.13742;0.14165;0.14641;
+8000;0.10457;0.10462;0.10487;0.10525;0.10577;0.10638;0.10712;0.10796;0.10908;0.11048;0.1121;0.11398;0.11596;0.11827;0.12094;0.12407;0.12736;0.13101;0.13505;0.13962;
+8500;0.099716;0.099797;0.10003;0.1004;0.10089;0.10147;0.10217;0.10297;0.10402;0.10534;0.10687;0.10866;0.11054;0.11274;0.11535;0.11821;0.12137;0.12484;0.12872;0.13309;
+9000;0.095074;0.095161;0.095386;0.095739;0.096206;0.096758;0.097426;0.098186;0.099173;0.10041;0.10185;0.10358;0.10535;0.10743;0.10989;0.11259;0.11561;0.11893;0.12263;0.12681;
+9500;0.090634;0.090648;0.090919;0.091252;0.091697;0.092224;0.092865;0.093587;0.094518;0.095619;0.097034;0.098675;0.10037;0.10233;0.10465;0.10719;0.1101;0.11326;0.11679;0.12078;
+10000;0.086322;0.086392;0.086598;0.086923;0.087351;0.087858;0.088478;0.089169;0.089983;0.091087;0.092411;0.093963;0.0956;0.097456;0.099649;0.10204;0.10481;0.10779;0.11118;0.115;
+10500;0.082185;0.082236;0.082431;0.082741;0.083149;0.083633;0.084226;0.08489;0.085678;0.086719;0.087971;0.089441;0.091017;0.092776;0.094851;0.097113;0.099753;0.10259;0.10581;0.10945;
+11000;0.07818;0.078244;0.078431;0.078726;0.079115;0.079576;0.080144;0.080779;0.081532;0.082504;0.083736;0.085083;0.08661;0.088277;0.090175;0.092381;0.094885;0.09759;0.10068;0.10414;
+11500;0.076009;0.076074;0.076255;0.076542;0.07692;0.077368;0.077919;0.078536;0.079266;0.080212;0.081411;0.08272;0.084201;0.085823;0.087669;0.089815;0.09225;0.094875;0.097868;0.10123;
+12000;0.073898;0.073966;0.074143;0.074421;0.074788;0.075223;0.075758;0.076358;0.077066;0.077986;0.079152;0.080426;0.081859;0.083436;0.085234;0.087319;0.089688;0.092235;0.095138;0.0984;
+12500;0.071846;0.07192;0.072091;0.072362;0.072717;0.073139;0.07366;0.074243;0.074928;0.075822;0.076959;0.078198;0.079586;0.081118;0.082867;0.084897;0.087198;0.08967;0.092487;0.095652;
+13000;0.06985;0.069932;0.070098;0.070361;0.070707;0.071116;0.071621;0.072188;0.072854;0.073725;0.07483;0.076034;0.077377;0.078869;0.080568;0.082546;0.084781;0.08718;0.089912;0.092983;
+13500;0.06791;0.068002;0.068163;0.068419;0.068754;0.069151;0.069642;0.070192;0.070839;0.071686;0.072761;0.073927;0.075232;0.076684;0.078334;0.080261;0.082434;0.084759;0.087412;0.090391;
+14000;0.066074;0.066127;0.066284;0.066532;0.066858;0.067243;0.06772;0.068253;0.06888;0.069707;0.070752;0.071882;0.073148;0.074563;0.076231;0.078043;0.080154;0.082432;0.084984;0.087875;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.17248;0.17281;0.17336;0.17417;0.1753;0.17652;0.17801;0.18008;0.18283;0.18581;0.1888;0.1923;0.19662;0.20114;0.20558;0.20973;0.21318;0.21532;0.21529;0.21146;
+500;0.16861;0.16568;0.16618;0.16696;0.168;0.16914;0.17054;0.17247;0.17507;0.17791;0.18075;0.18407;0.18814;0.19247;0.19674;0.20077;0.20423;0.20658;0.20711;0.20456;
+1000;0.15867;0.15881;0.15929;0.16001;0.16099;0.16206;0.16338;0.16519;0.16762;0.17031;0.17299;0.17615;0.17998;0.18413;0.18822;0.19214;0.19558;0.1981;0.19912;0.19779;
+1500;0.15209;0.1522;0.15265;0.15333;0.15426;0.15526;0.1565;0.15819;0.16049;0.16303;0.16556;0.16854;0.17224;0.1761;0.18003;0.18382;0.18722;0.18988;0.1913;0.19083;
+2000;0.14568;0.14582;0.14625;0.14689;0.14776;0.14871;0.14988;0.15147;0.15363;0.15605;0.15843;0.16125;0.16471;0.16838;0.17214;0.17581;0.17917;0.18191;0.18366;0.18389;
+2500;0.13966;0.13977;0.14016;0.14075;0.14156;0.14243;0.1435;0.14499;0.14703;0.14933;0.15159;0.15425;0.15751;0.16099;0.16456;0.16809;0.17139;0.1742;0.1762;0.17701;
+3000;0.13391;0.13396;0.13433;0.13488;0.13564;0.13646;0.13747;0.13885;0.14074;0.14288;0.14499;0.14746;0.15059;0.15389;0.1573;0.1607;0.16391;0.16675;0.16895;0.17021;
+3500;0.12823;0.12835;0.1287;0.12922;0.12994;0.13071;0.13166;0.13296;0.13475;0.13678;0.13877;0.14102;0.14397;0.14709;0.15034;0.15358;0.15671;0.15953;0.16189;0.16351;
+4000;0.1228;0.12294;0.12327;0.12376;0.12444;0.12517;0.12607;0.12728;0.12897;0.13093;0.13279;0.135;0.1377;0.14064;0.14369;0.14674;0.14976;0.15257;0.15499;0.15693;
+4500;0.11762;0.11772;0.11803;0.11849;0.11913;0.11982;0.12067;0.12181;0.12341;0.12525;0.12703;0.12912;0.13166;0.13447;0.13737;0.14029;0.14313;0.14583;0.14832;0.15042;
+5000;0.11264;0.11269;0.11298;0.11342;0.11402;0.11467;0.11547;0.11654;0.11804;0.11978;0.12148;0.12346;0.12585;0.12852;0.13129;0.13409;0.13685;0.13946;0.14186;0.1441;
+5500;0.10775;0.10784;0.10811;0.10852;0.10909;0.1097;0.11046;0.11147;0.11288;0.11451;0.11613;0.11801;0.12025;0.12279;0.12543;0.12813;0.13079;0.13337;0.13579;0.13804;
+6000;0.10305;0.10316;0.10342;0.1038;0.10434;0.10492;0.10563;0.10658;0.10791;0.10944;0.111;0.11276;0.11488;0.11729;0.1198;0.12238;0.12497;0.1275;0.12993;0.13223;
+6500;0.098565;0.098648;0.098889;0.099253;0.099755;0.10034;0.10098;0.10186;0.10312;0.10456;0.10605;0.10772;0.1097;0.112;0.1144;0.11687;0.11937;0.12184;0.12425;0.1266;
+7000;0.094254;0.094293;0.09452;0.094866;0.095341;0.09589;0.096495;0.097325;0.098507;0.099866;0.1013;0.10287;0.10474;0.10692;0.1092;0.11157;0.11397;0.11638;0.11876;0.12114;
+7500;0.09;0.090075;0.090289;0.090615;0.091062;0.091582;0.092161;0.09289;0.094078;0.095375;0.096733;0.098147;0.09997;0.10201;0.1042;0.10646;0.10877;0.11111;0.11346;0.11584;
+8000;0.085925;0.086016;0.08622;0.086529;0.086953;0.087445;0.087999;0.08868;0.089791;0.091024;0.09233;0.093682;0.095311;0.097302;0.099392;0.10155;0.10377;0.10604;0.10834;0.11072;
+8500;0.082047;0.082113;0.082304;0.082596;0.082996;0.083459;0.083984;0.084626;0.085665;0.08683;0.088071;0.089366;0.090906;0.092776;0.094769;0.096823;0.098958;0.10115;0.10341;0.10576;
+9000;0.078328;0.078353;0.078533;0.078808;0.079185;0.079621;0.080118;0.080724;0.081695;0.082795;0.083972;0.085205;0.086649;0.088405;0.090332;0.09229;0.094333;0.096447;0.098652;0.10098;
+9500;0.07467;0.07473;0.0749;0.075161;0.075516;0.075927;0.076399;0.076971;0.077876;0.07891;0.08003;0.081203;0.082559;0.084198;0.086035;0.087918;0.089895;0.091936;0.094075;0.096353;
+10000;0.07117;0.071243;0.071404;0.07165;0.071984;0.072372;0.072819;0.073359;0.074202;0.075171;0.07624;0.077357;0.078629;0.080217;0.08191;0.083701;0.085594;0.087587;0.089677;0.091909;
+10500;0.067834;0.067886;0.068037;0.06827;0.068585;0.06895;0.069375;0.069885;0.070671;0.071574;0.072598;0.073663;0.074856;0.076345;0.077952;0.079655;0.081462;0.083379;0.085419;0.087623;
+11000;0.064607;0.064656;0.0648;0.065021;0.065317;0.065662;0.066066;0.066548;0.067278;0.06812;0.069099;0.070102;0.071234;0.072629;0.074154;0.075772;0.077495;0.079334;0.081309;0.083457;
+11500;0.062787;0.062842;0.062981;0.063195;0.063483;0.063818;0.06421;0.064678;0.06539;0.066209;0.067158;0.068133;0.069235;0.07059;0.072107;0.073637;0.075305;0.077082;0.078992;0.081066;
+12000;0.061018;0.061079;0.061214;0.061423;0.061702;0.062027;0.062407;0.062862;0.063556;0.064353;0.065273;0.066227;0.067292;0.068608;0.070043;0.071563;0.073178;0.074897;0.076742;0.078744;
+12500;0.0593;0.059367;0.059497;0.0597;0.059972;0.060289;0.060656;0.061098;0.061774;0.06255;0.063442;0.064368;0.065403;0.066684;0.068076;0.069549;0.071112;0.072774;0.074555;0.076488;
+13000;0.05766;0.057703;0.05783;0.058027;0.05829;0.058599;0.058956;0.059385;0.060043;0.060798;0.061664;0.062563;0.063569;0.064814;0.066165;0.067593;0.069106;0.070713;0.072431;0.074298;
+13500;0.056065;0.056072;0.056214;0.056402;0.056658;0.056956;0.057304;0.057721;0.058362;0.059097;0.059936;0.060809;0.061787;0.062998;0.064308;0.065692;0.067158;0.068711;0.07037;0.072171;
+14000;0.054477;0.054518;0.054638;0.054824;0.055072;0.055362;0.055698;0.056104;0.056728;0.057444;0.058258;0.059105;0.060057;0.061234;0.062505;0.063846;0.065265;0.066767;0.068368;0.070103;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.15835;0.15853;0.15906;0.15986;0.16096;0.16215;0.16357;0.1657;0.16834;0.171;0.17378;0.1773;0.18119;0.1851;0.18877;0.19173;0.19322;0.19194;0.185;0.16735;
+500;0.15636;0.15203;0.15253;0.15328;0.15431;0.15541;0.15675;0.15873;0.16122;0.16376;0.16643;0.16972;0.17343;0.17718;0.18072;0.18367;0.18536;0.1847;0.17932;0.16541;
+1000;0.14565;0.14577;0.14625;0.14695;0.14792;0.14895;0.1502;0.15206;0.15433;0.1568;0.15934;0.16242;0.16596;0.16954;0.17297;0.17588;0.17773;0.17759;0.17353;0.16262;
+1500;0.1396;0.13975;0.1402;0.14086;0.14177;0.14274;0.14392;0.14566;0.14779;0.15014;0.15253;0.1554;0.1588;0.16219;0.1655;0.16838;0.17035;0.17063;0.16766;0.15935;
+2000;0.1338;0.13394;0.13435;0.13497;0.13584;0.13675;0.13787;0.1395;0.14151;0.14374;0.14598;0.14868;0.15187;0.15512;0.15831;0.16114;0.1632;0.16383;0.16177;0.15532;
+2500;0.12837;0.12845;0.12883;0.1294;0.1302;0.13104;0.13207;0.13358;0.13546;0.13759;0.1397;0.14217;0.14527;0.14835;0.1514;0.15416;0.15628;0.1572;0.156;0.15101;
+3000;0.12301;0.12314;0.1235;0.12404;0.12479;0.12558;0.12655;0.12797;0.12974;0.13173;0.13369;0.13599;0.13891;0.14186;0.14476;0.14745;0.14959;0.15074;0.15014;0.14648;
+3500;0.11788;0.11802;0.11836;0.11887;0.11958;0.12032;0.12124;0.12256;0.12423;0.12613;0.12799;0.13016;0.13287;0.13564;0.13839;0.14097;0.14313;0.14442;0.14435;0.14179;
+4000;0.11297;0.11308;0.1134;0.11388;0.11455;0.11525;0.11611;0.11736;0.11898;0.12073;0.12249;0.12455;0.12709;0.12975;0.13235;0.13479;0.13686;0.13829;0.13857;0.13696;
+4500;0.10826;0.10832;0.10862;0.10907;0.10969;0.11035;0.11116;0.11233;0.11387;0.11553;0.11719;0.11915;0.12154;0.12407;0.12657;0.12892;0.13094;0.13235;0.13291;0.13201;
+5000;0.10362;0.10372;0.104;0.10442;0.10501;0.10564;0.1064;0.10749;0.10894;0.11052;0.1121;0.11395;0.11618;0.1186;0.12099;0.12326;0.12526;0.12675;0.12744;0.12701;
+5500;0.099175;0.099283;0.099549;0.099946;0.1005;0.10109;0.1018;0.10283;0.10419;0.10569;0.10718;0.10893;0.11103;0.11333;0.11561;0.11781;0.11978;0.12133;0.12222;0.12214;
+6000;0.094895;0.094981;0.095233;0.095607;0.096134;0.096689;0.097368;0.098328;0.099611;0.10103;0.10244;0.10409;0.10613;0.10827;0.11044;0.11256;0.11449;0.11608;0.11713;0.1174;
+6500;0.090777;0.090813;0.091048;0.091401;0.091894;0.092417;0.093057;0.093966;0.095188;0.096551;0.097877;0.099435;0.10136;0.10339;0.10547;0.1075;0.1094;0.11101;0.11219;0.11275;
+7000;0.086733;0.08681;0.08703;0.087359;0.08782;0.088309;0.08891;0.089755;0.090905;0.092199;0.093468;0.094933;0.096767;0.0987;0.10069;0.10264;0.10449;0.10611;0.10738;0.10818;
+7500;0.08286;0.082953;0.083159;0.083468;0.083901;0.08436;0.084928;0.085716;0.086794;0.088015;0.089211;0.090555;0.092333;0.094191;0.096082;0.097966;0.099759;0.10138;0.10273;0.1037;
+8000;0.079171;0.079238;0.079431;0.079721;0.080128;0.08056;0.081093;0.08183;0.082843;0.084008;0.085129;0.086446;0.088059;0.089823;0.091642;0.093464;0.095207;0.096816;0.098214;0.099349;
+8500;0.075635;0.07566;0.075841;0.076114;0.076495;0.076902;0.077403;0.078091;0.079042;0.080135;0.081204;0.082448;0.083957;0.085631;0.087361;0.089112;0.090819;0.092416;0.093851;0.09511;
+9000;0.072156;0.072215;0.072385;0.072641;0.072998;0.073381;0.073853;0.074496;0.075388;0.076414;0.077432;0.078606;0.080017;0.081604;0.083249;0.084924;0.086579;0.088162;0.089644;0.09099;
+9500;0.068826;0.068898;0.069057;0.069298;0.069633;0.069994;0.070439;0.071039;0.071875;0.072838;0.073807;0.074913;0.076233;0.077738;0.0793;0.0809;0.082501;0.084069;0.085565;0.086976;
+10000;0.065653;0.065704;0.065854;0.066081;0.066395;0.066757;0.067153;0.067714;0.068499;0.0694;0.070329;0.071366;0.072602;0.074036;0.075509;0.077043;0.078596;0.080131;0.081622;0.083076;
+10500;0.062615;0.06263;0.062771;0.062984;0.063279;0.063619;0.063994;0.064517;0.065252;0.0661;0.066986;0.067959;0.069121;0.070461;0.071883;0.073348;0.074841;0.076338;0.077817;0.079297;
+11000;0.059624;0.059671;0.059803;0.060003;0.060281;0.0606;0.060956;0.061444;0.062133;0.062933;0.063781;0.064654;0.065788;0.06705;0.068404;0.0698;0.071232;0.072689;0.07415;0.07564;
+11500;0.057943;0.057993;0.058121;0.058316;0.058585;0.058894;0.059239;0.059714;0.060384;0.06116;0.061977;0.062824;0.063926;0.065148;0.066462;0.067813;0.069197;0.070602;0.072008;0.073435;
+12000;0.056308;0.056363;0.056488;0.056677;0.056938;0.057238;0.057572;0.058034;0.058685;0.059439;0.06023;0.061052;0.062117;0.063304;0.064576;0.065883;0.06722;0.068575;0.069927;0.071293;
+12500;0.05474;0.054781;0.054902;0.055086;0.055339;0.05563;0.055953;0.056403;0.057036;0.057767;0.058535;0.059374;0.060368;0.061521;0.062744;0.064009;0.065301;0.066606;0.067907;0.069214;
+13000;0.053217;0.053245;0.053362;0.05354;0.053785;0.054068;0.054381;0.054819;0.055434;0.056143;0.056888;0.057703;0.05867;0.059792;0.060973;0.062192;0.063437;0.064694;0.065946;0.067197;
+13500;0.051736;0.051739;0.05187;0.052039;0.052276;0.052551;0.052855;0.05328;0.053878;0.054567;0.055289;0.056081;0.05702;0.058112;0.059254;0.060432;0.061631;0.062838;0.064039;0.065239;
+14000;0.050266;0.050304;0.050414;0.050582;0.050812;0.051077;0.051371;0.051786;0.052367;0.053035;0.053736;0.054506;0.055418;0.05648;0.057584;0.058725;0.059882;0.061038;0.062189;0.063335;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.14509;0.14529;0.14583;0.1466;0.14769;0.14887;0.15025;0.15244;0.15496;0.1573;0.16006;0.16337;0.1668;0.17012;0.17285;0.17423;0.17277;0.16461;0.13999;-9999;
+500;0.1392;0.13935;0.13987;0.1406;0.14162;0.14271;0.144;0.14604;0.14843;0.15066;0.15327;0.15642;0.1597;0.16289;0.16559;0.16711;0.16618;0.15964;0.14007;-9999;
+1000;0.13348;0.13366;0.13413;0.13482;0.13578;0.1368;0.13801;0.13993;0.14217;0.14427;0.14673;0.14971;0.15286;0.15594;0.15859;0.16021;0.15973;0.15454;0.13889;-9999;
+1500;0.12799;0.12818;0.1286;0.12925;0.13016;0.13112;0.13226;0.13406;0.13617;0.13817;0.14047;0.14326;0.14627;0.14923;0.15183;0.15354;0.15343;0.14937;0.13677;-9999;
+2000;0.12277;0.1229;0.12331;0.12391;0.12475;0.12565;0.12672;0.12841;0.13041;0.13232;0.13448;0.13711;0.13995;0.14277;0.1453;0.14708;0.14726;0.14417;0.13424;-9999;
+2500;0.11783;0.11788;0.11827;0.11884;0.11963;0.12046;0.12145;0.12302;0.12488;0.12668;0.12872;0.13119;0.1339;0.13658;0.13903;0.14082;0.14127;0.13898;0.13112;-9999;
+3000;0.11292;0.11305;0.11341;0.11394;0.11469;0.11547;0.1164;0.11787;0.11963;0.12134;0.12323;0.12553;0.12807;0.13063;0.13297;0.13478;0.13544;0.13391;0.12772;-9999;
+3500;0.10823;0.10839;0.10872;0.10922;0.10992;0.11065;0.11153;0.11291;0.11457;0.11619;0.11798;0.12015;0.12256;0.12496;0.12717;0.12894;0.12976;0.12872;0.12396;0.11289;
+4000;0.10377;0.10387;0.10419;0.10466;0.10532;0.106;0.10683;0.10812;0.10968;0.11124;0.11286;0.11495;0.11725;0.11955;0.12168;0.12339;0.12424;0.12361;0.11985;0.11054;
+4500;0.099486;0.099506;0.099811;0.10025;0.10088;0.10152;0.10229;0.1035;0.10498;0.10646;0.10801;0.10996;0.11214;0.11433;0.11639;0.11809;0.11904;0.11864;0.11568;0.10825;
+5000;0.095166;0.095265;0.095549;0.095965;0.096557;0.097165;0.097905;0.09905;0.10042;0.10186;0.10333;0.10515;0.10722;0.10931;0.1113;0.11297;0.114;0.11388;0.11158;0.1056;
+5500;0.091032;0.091176;0.091438;0.091829;0.092385;0.092956;0.093652;0.094724;0.096024;0.097409;0.098822;0.10052;0.10249;0.10448;0.10639;0.10803;0.10912;0.10924;0.10754;0.10289;
+6000;0.087144;0.087227;0.087475;0.087842;0.088363;0.088898;0.089552;0.090556;0.091782;0.093095;0.094445;0.096053;0.097951;0.099834;0.10166;0.10326;0.10441;0.10471;0.1036;0.099887;
+6500;0.083354;0.083434;0.083666;0.084008;0.084496;0.084994;0.085605;0.086542;0.087693;0.088944;0.090207;0.09173;0.093525;0.095351;0.097112;0.098679;0.099851;0.10032;0.099599;0.096777;
+7000;0.079723;0.079779;0.079996;0.080317;0.080774;0.081241;0.081815;0.08269;0.083765;0.084957;0.086143;0.087572;0.08926;0.091006;0.09271;0.094254;0.09545;0.096046;0.095656;0.093563;
+7500;0.076243;0.076257;0.07646;0.076761;0.07719;0.077629;0.078169;0.078984;0.079988;0.081126;0.082242;0.083549;0.085172;0.086831;0.088459;0.089959;0.091176;0.091886;0.091771;0.090265;
+8000;0.0728;0.072865;0.073055;0.073337;0.073738;0.07415;0.074657;0.075417;0.076354;0.07744;0.078491;0.07973;0.081245;0.082825;0.084381;0.08583;0.087043;0.087838;0.087954;0.086946;
+8500;0.069503;0.069598;0.069775;0.070039;0.070415;0.070801;0.071277;0.071985;0.072902;0.073894;0.074884;0.076053;0.077472;0.078976;0.080461;0.081865;0.083073;0.08393;0.084227;0.083675;
+9000;0.066348;0.066451;0.066617;0.066864;0.067215;0.067579;0.068024;0.068684;0.069545;0.070484;0.071417;0.072515;0.07385;0.075278;0.076694;0.07805;0.079247;0.080158;0.080613;0.080388;
+9500;0.063328;0.063421;0.063576;0.063807;0.064136;0.064477;0.064896;0.06551;0.066317;0.067206;0.068084;0.069117;0.070364;0.071724;0.073075;0.074383;0.075565;0.076513;0.077087;0.077128;
+10000;0.060436;0.060503;0.060648;0.060865;0.061173;0.061493;0.061886;0.062457;0.063215;0.064055;0.064882;0.065852;0.067053;0.068312;0.069599;0.070857;0.07202;0.07299;0.073659;0.073916;
+10500;0.057649;0.057695;0.057831;0.058034;0.058321;0.058622;0.058991;0.059523;0.060232;0.061027;0.061806;0.062713;0.063843;0.065039;0.066263;0.067472;0.068608;0.069587;0.070335;0.070764;
+11000;0.054981;0.054994;0.055121;0.055311;0.055579;0.055861;0.056208;0.056702;0.057367;0.058118;0.058853;0.059681;0.060764;0.061897;0.063061;0.064218;0.065321;0.066307;0.067115;0.067681;
+11500;0.053394;0.05344;0.053563;0.053747;0.054008;0.054281;0.054617;0.055098;0.055744;0.056472;0.057185;0.057993;0.05904;0.060138;0.061265;0.062383;0.063447;0.064392;0.065154;0.065668;
+12000;0.051853;0.051931;0.052051;0.052229;0.052482;0.052747;0.053073;0.053541;0.054169;0.054875;0.055566;0.056356;0.057367;0.05843;0.059521;0.060601;0.061628;0.062532;0.063251;0.063716;
+12500;0.050427;0.050467;0.050583;0.050756;0.051001;0.051257;0.051572;0.052029;0.052639;0.053324;0.053994;0.054765;0.055742;0.056772;0.057828;0.058871;0.059859;0.060728;0.061403;0.06182;
+13000;0.049041;0.049045;0.049156;0.049325;0.049564;0.04981;0.050116;0.05056;0.051153;0.051818;0.052468;0.053222;0.054166;0.055164;0.056184;0.057191;0.058141;0.058975;0.05961;0.059979;
+13500;0.047626;0.047663;0.047772;0.047934;0.048166;0.048406;0.048703;0.049135;0.04971;0.050355;0.050986;0.051722;0.052635;0.053601;0.05459;0.055562;0.056474;0.057269;0.057869;0.058192;
+14000;0.046252;0.046322;0.046428;0.046585;0.046809;0.047042;0.04733;0.04775;0.048309;0.048934;0.049547;0.050265;0.051148;0.052085;0.053041;0.05398;0.054856;0.055614;0.056178;0.056457;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.13285;0.13308;0.13358;0.13441;0.1355;0.13667;0.13817;0.14022;0.14256;0.14476;0.14737;0.15038;0.15337;0.15596;0.15744;0.15642;0.14882;0.12072;-9999;-9999;
+500;0.12744;0.12763;0.12811;0.12884;0.1299;0.13102;0.13243;0.13435;0.13658;0.13868;0.14115;0.14403;0.14689;0.14943;0.15098;0.15036;0.14417;0.12138;-9999;-9999;
+1000;0.12228;0.12247;0.12297;0.12363;0.12459;0.12562;0.12694;0.12875;0.13085;0.13281;0.13512;0.13789;0.14065;0.14312;0.14472;0.14444;0.13946;0.12146;-9999;-9999;
+1500;0.11729;0.11746;0.11793;0.11855;0.11946;0.12043;0.12166;0.12337;0.12536;0.12721;0.12938;0.13199;0.13462;0.13702;0.13868;0.13869;0.1347;0.12024;-9999;-9999;
+2000;0.11258;0.1127;0.11312;0.1137;0.11455;0.11543;0.11658;0.11819;0.12007;0.12182;0.12383;0.12634;0.12883;0.13114;0.13283;0.13304;0.12995;0.1183;-9999;-9999;
+2500;0.10796;0.10811;0.1085;0.10906;0.10985;0.11068;0.11176;0.11326;0.11502;0.11665;0.11858;0.12091;0.12328;0.12549;0.12717;0.12759;0.12522;0.11596;-9999;-9999;
+3000;0.10354;0.10368;0.10405;0.10457;0.10532;0.1061;0.10711;0.10852;0.11019;0.11173;0.11356;0.11574;0.11797;0.12007;0.12172;0.12228;0.12058;0.11309;-9999;-9999;
+3500;0.09927;0.099377;0.099718;0.10022;0.10093;0.10167;0.10262;0.10396;0.10553;0.10699;0.10872;0.1108;0.11292;0.11493;0.11652;0.11715;0.11586;0.10992;0.09353;-9999;
+4000;0.09516;0.095185;0.095505;0.096004;0.096676;0.097367;0.098259;0.099535;0.10105;0.10243;0.10406;0.10603;0.10805;0.10999;0.11155;0.11228;0.11127;0.10639;0.091917;-9999;
+4500;0.091086;0.091197;0.091499;0.091938;0.092573;0.093218;0.094053;0.095254;0.096683;0.098008;0.099568;0.10144;0.10336;0.10522;0.10676;0.10756;0.10688;0.10287;0.091102;-9999;
+5000;0.08718;0.087324;0.087608;0.08802;0.088615;0.08922;0.09;0.09113;0.092481;0.093735;0.095204;0.096987;0.098848;0.10063;0.10214;0.10301;0.10259;0.099366;0.089935;-9999;
+5500;0.083436;0.083589;0.083856;0.084242;0.084801;0.085365;0.086095;0.087159;0.088434;0.089619;0.091005;0.092685;0.094459;0.096189;0.097677;0.098596;0.098407;0.09583;0.088092;-9999;
+6000;0.079913;0.08;0.080249;0.080609;0.081132;0.081658;0.082338;0.083333;0.084536;0.085663;0.086966;0.088547;0.090236;0.091892;0.093341;0.094305;0.094307;0.092282;0.086118;-9999;
+6500;0.076533;0.076547;0.076787;0.07711;0.0776;0.078092;0.07868;0.079658;0.08079;0.081861;0.083081;0.084566;0.086173;0.087755;0.089162;0.090151;0.090298;0.088755;0.083818;-9999;
+7000;0.073132;0.073207;0.073425;0.07374;0.074199;0.074658;0.07521;0.076123;0.077187;0.078207;0.079353;0.080745;0.082269;0.083777;0.085138;0.086141;0.086422;0.08533;0.081396;-9999;
+7500;0.069876;0.069995;0.070199;0.070494;0.070923;0.071352;0.071868;0.072721;0.073721;0.074692;0.075767;0.077074;0.07852;0.07996;0.081273;0.082276;0.082665;0.081892;0.078776;-9999;
+8000;0.066834;0.0669;0.06709;0.067366;0.067769;0.068169;0.068654;0.069448;0.070387;0.07131;0.072276;0.073543;0.074916;0.076287;0.077556;0.078559;0.079038;0.078531;0.076103;0.070164;
+8500;0.063921;0.063929;0.064104;0.064353;0.06473;0.065104;0.06556;0.066299;0.067173;0.06806;0.068976;0.070151;0.071452;0.072757;0.07398;0.07498;0.075526;0.075244;0.073388;0.06879;
+9000;0.060988;0.061045;0.06121;0.061452;0.061804;0.062154;0.062583;0.06327;0.064088;0.064932;0.065804;0.066892;0.068125;0.069366;0.070544;0.07153;0.072127;0.072036;0.070652;0.067087;
+9500;0.058184;0.058278;0.058432;0.058658;0.058988;0.059315;0.059717;0.060356;0.061125;0.061925;0.062753;0.063764;0.064948;0.066109;0.067236;0.068203;0.068844;0.068909;0.067915;0.065224;
+10000;0.055502;0.055613;0.055758;0.055969;0.056276;0.056583;0.05696;0.057556;0.058276;0.059037;0.059825;0.060758;0.061867;0.062975;0.064052;0.065002;0.065676;0.065866;0.06524;0.063158;
+10500;0.052937;0.05305;0.053184;0.053382;0.053669;0.053957;0.054311;0.054864;0.055535;0.05626;0.056989;0.057868;0.058906;0.059964;0.060994;0.061922;0.062619;0.062914;0.062538;0.061009;
+11000;0.050485;0.050584;0.05071;0.050895;0.051163;0.051431;0.05176;0.052272;0.052895;0.053587;0.054271;0.055069;0.056069;0.057074;0.058057;0.058958;0.059666;0.060051;0.059882;0.058803;
+11500;0.049101;0.049147;0.049269;0.049448;0.049709;0.049969;0.050289;0.050788;0.051395;0.052064;0.052727;0.053501;0.054473;0.055446;0.056396;0.057264;0.057939;0.05829;0.058085;0.056957;
+12000;0.047755;0.047752;0.04787;0.048043;0.048296;0.048549;0.048859;0.049347;0.049937;0.050585;0.051229;0.051979;0.052924;0.053865;0.054784;0.055619;0.056273;0.056581;0.056341;0.055166;
+12500;0.04636;0.046399;0.046513;0.046681;0.046926;0.04717;0.047469;0.047945;0.048521;0.049147;0.049774;0.050503;0.05142;0.052331;0.053219;0.054022;0.054639;0.054922;0.054648;0.053428;
+13000;0.045006;0.045085;0.045196;0.045358;0.045597;0.045832;0.046122;0.046585;0.047144;0.04775;0.048359;0.049092;0.049959;0.050841;0.0517;0.052472;0.053058;0.053312;0.053005;0.05174;
+13500;0.043772;0.043809;0.043916;0.044074;0.044306;0.044533;0.044813;0.045265;0.045809;0.046394;0.046985;0.047697;0.04854;0.049395;0.050226;0.050967;0.051524;0.051751;0.051411;0.050102;
+14000;0.042573;0.04257;0.042674;0.042826;0.043051;0.043271;0.043545;0.043983;0.044512;0.045078;0.045651;0.046343;0.047161;0.047989;0.048794;0.049507;0.050035;0.050233;0.049863;0.048513;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.12222;0.12246;0.12299;0.12384;0.12494;0.12615;0.12769;0.1297;0.13186;0.13394;0.13638;0.139;0.14137;0.14287;0.14233;0.136;0.10946;-9999;-9999;-9999;
+500;0.11724;0.11729;0.11792;0.11873;0.11976;0.12088;0.12232;0.12419;0.12624;0.12821;0.13053;0.13305;0.13535;0.13689;0.13666;0.13148;0.11017;-9999;-9999;-9999;
+1000;0.1124;0.1126;0.11306;0.1138;0.11477;0.11582;0.11717;0.11893;0.12086;0.1227;0.12489;0.12731;0.12954;0.13112;0.13115;0.12695;0.10982;-9999;-9999;-9999;
+1500;0.10776;0.10793;0.10836;0.10906;0.10998;0.11096;0.11222;0.11388;0.11572;0.11745;0.11951;0.12179;0.12395;0.12555;0.1258;0.12258;0.1086;-9999;-9999;-9999;
+2000;0.10334;0.10351;0.10391;0.10456;0.10542;0.10632;0.10749;0.10904;0.11077;0.11241;0.11436;0.11653;0.11859;0.12017;0.12054;0.11813;0.10684;-9999;-9999;-9999;
+2500;0.099082;0.099117;0.099584;0.1002;0.10101;0.10187;0.10297;0.10446;0.10608;0.10761;0.10943;0.11148;0.11346;0.11501;0.1155;0.1137;0.10464;-9999;-9999;-9999;
+3000;0.094932;0.095084;0.095494;0.095993;0.096763;0.097562;0.098601;0.1;0.10157;0.10303;0.10475;0.1067;0.10858;0.11006;0.11066;0.10927;0.10196;-9999;-9999;-9999;
+3500;0.090948;0.091097;0.09147;0.091945;0.092669;0.093417;0.09439;0.09571;0.097193;0.098575;0.10022;0.10211;0.10391;0.10538;0.10608;0.10498;0.099014;-9999;-9999;-9999;
+4000;0.087121;0.087254;0.087594;0.088044;0.088725;0.089425;0.090336;0.091581;0.092986;0.094291;0.095848;0.097646;0.099415;0.10092;0.10168;0.10086;0.095846;0.077499;-9999;-9999;
+4500;0.083447;0.083473;0.083818;0.084289;0.084926;0.085581;0.086434;0.087606;0.088941;0.090185;0.091672;0.093397;0.095095;0.09656;0.097381;0.096818;0.092685;0.077967;-9999;-9999;
+5000;0.079857;0.079993;0.080271;0.080687;0.081286;0.081903;0.082707;0.083817;0.085084;0.086262;0.087662;0.089302;0.090926;0.09235;0.093217;0.092871;0.089488;0.077518;-9999;-9999;
+5500;0.076487;0.076587;0.076853;0.077237;0.077803;0.078377;0.079127;0.08017;0.081368;0.082481;0.083789;0.08536;0.086912;0.088293;0.089188;0.089025;0.086278;0.076633;-9999;-9999;
+6000;0.073214;0.07331;0.073559;0.073918;0.074449;0.074985;0.075686;0.076667;0.077797;0.078845;0.080077;0.081565;0.083047;0.084383;0.085298;0.08529;0.083074;0.075293;-9999;-9999;
+6500;0.070072;0.070149;0.070383;0.070719;0.071217;0.071717;0.072373;0.073295;0.074362;0.07535;0.076505;0.077921;0.07933;0.080618;0.081541;0.081663;0.079966;0.073657;-9999;-9999;
+7000;0.067058;0.067075;0.067303;0.067638;0.068103;0.06857;0.069181;0.070048;0.071056;0.071988;0.073093;0.074417;0.075759;0.077001;0.077924;0.078129;0.076827;0.071718;-9999;-9999;
+7500;0.064094;0.064169;0.064374;0.064668;0.065105;0.065539;0.066109;0.066924;0.067875;0.068753;0.069794;0.071047;0.072322;0.073519;0.074437;0.074732;0.073744;0.069716;-9999;-9999;
+8000;0.061255;0.061341;0.061533;0.061808;0.062217;0.062621;0.063153;0.063917;0.064813;0.065641;0.066621;0.067807;0.069018;0.070168;0.071072;0.071444;0.070718;0.067471;0.058943;-9999;
+8500;0.058534;0.058618;0.058797;0.059055;0.059436;0.059813;0.060308;0.061025;0.061869;0.06265;0.063571;0.064689;0.065836;0.066938;0.067831;0.068264;0.067762;0.065166;0.057624;-9999;
+9000;0.055928;0.055996;0.056163;0.056403;0.05676;0.057111;0.057571;0.058243;0.059037;0.059771;0.060636;0.061687;0.062777;0.063832;0.064709;0.065189;0.064876;0.062823;0.056854;-9999;
+9500;0.053432;0.05347;0.053626;0.05385;0.054183;0.054508;0.054936;0.055564;0.056311;0.057003;0.057814;0.058801;0.059837;0.060845;0.061703;0.06222;0.062064;0.060461;0.055768;-9999;
+10000;0.051042;0.051051;0.051188;0.05139;0.051701;0.052004;0.052401;0.052989;0.053692;0.054344;0.055104;0.056028;0.057011;0.057973;0.05881;0.059354;0.059328;0.058098;0.054443;-9999;
+10500;0.048647;0.048694;0.048829;0.049024;0.049313;0.049595;0.049964;0.050513;0.051172;0.051792;0.052502;0.053365;0.054297;0.055213;0.056026;0.05659;0.056662;0.055751;0.052956;-9999;
+11000;0.046359;0.04644;0.046565;0.046747;0.047017;0.047279;0.047622;0.048133;0.04875;0.049339;0.050002;0.050809;0.051692;0.052563;0.053349;0.053925;0.054085;0.053463;0.051238;-9999;
+11500;0.045071;0.045115;0.045238;0.045414;0.045676;0.04593;0.046235;0.04676;0.04736;0.04793;0.048573;0.049358;0.050213;0.051057;0.051814;0.052363;0.052497;0.051851;0.049592;-9999;
+12000;0.043789;0.043831;0.043949;0.044119;0.044375;0.044621;0.044917;0.045427;0.04601;0.046562;0.047187;0.047949;0.048778;0.049595;0.050325;0.050846;0.050957;0.050287;0.047995;-9999;
+12500;0.042545;0.042583;0.042697;0.042862;0.043111;0.043349;0.043637;0.044133;0.0447;0.045233;0.045841;0.046582;0.047386;0.048176;0.048879;0.049375;0.049461;0.048731;0.046447;-9999;
+13000;0.041333;0.041371;0.041482;0.041642;0.041884;0.042115;0.042395;0.042877;0.043428;0.043944;0.044534;0.045254;0.046034;0.046798;0.047475;0.047946;0.048009;0.047256;0.044943;-9999;
+13500;0.040157;0.040195;0.040303;0.040459;0.040693;0.040917;0.041189;0.041657;0.042193;0.042692;0.043266;0.043966;0.044721;0.045461;0.046113;0.046559;0.046601;0.045825;0.043433;-9999;
+14000;0.039016;0.039053;0.039157;0.039308;0.039538;0.039753;0.040019;0.040473;0.040994;0.041477;0.042034;0.042715;0.043447;0.044163;0.04479;0.045213;0.045234;0.044436;0.042009;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.11265;0.11291;0.11349;0.11427;0.11555;0.11678;0.11838;0.12037;0.12232;0.12433;0.12658;0.12872;0.13026;0.13021;0.12549;0.10346;-9999;-9999;-9999;-9999;
+500;0.10808;0.10813;0.10879;0.10952;0.11071;0.11186;0.11335;0.11521;0.11707;0.11897;0.12112;0.1232;0.12475;0.12481;0.12107;0.10326;-9999;-9999;-9999;-9999;
+1000;0.10367;0.10374;0.10424;0.10494;0.10606;0.10715;0.10854;0.1103;0.11205;0.11382;0.11585;0.11787;0.11944;0.1197;0.11668;0.10225;-9999;-9999;-9999;-9999;
+1500;0.099218;0.099411;0.099876;0.10052;0.10156;0.10257;0.10389;0.10558;0.10725;0.10892;0.11084;0.11276;0.11431;0.11474;0.11243;0.10056;-9999;-9999;-9999;-9999;
+2000;0.095025;0.095302;0.095732;0.096344;0.097307;0.098251;0.099469;0.10104;0.10262;0.10421;0.10604;0.10789;0.1094;0.10993;0.10814;0.098457;-9999;-9999;-9999;-9999;
+2500;0.09117;0.091339;0.091739;0.092315;0.093215;0.094102;0.095237;0.096724;0.098227;0.09972;0.10145;0.10321;0.10469;0.10531;0.10389;0.096034;-9999;-9999;-9999;-9999;
+3000;0.087463;0.087519;0.087891;0.088485;0.089276;0.09011;0.091164;0.092572;0.094005;0.095411;0.097054;0.098748;0.10019;0.10086;0.099731;0.093286;-9999;-9999;-9999;-9999;
+3500;0.083691;0.08384;0.084183;0.084738;0.085482;0.08626;0.087245;0.088575;0.08994;0.091268;0.092825;0.094449;0.095859;0.096587;0.095743;0.090318;-9999;-9999;-9999;-9999;
+4000;0.080154;0.080293;0.080611;0.081129;0.081829;0.082555;0.083477;0.084731;0.086028;0.087281;0.088758;0.090314;0.091685;0.092461;0.091867;0.087355;-9999;-9999;-9999;-9999;
+4500;0.076758;0.076875;0.07717;0.077653;0.078311;0.078988;0.079846;0.081032;0.082263;0.083446;0.084845;0.086336;0.087668;0.088479;0.088093;0.084358;0.068931;-9999;-9999;-9999;
+5000;0.073478;0.073599;0.073869;0.074319;0.074927;0.075561;0.076356;0.077474;0.078641;0.079758;0.08108;0.08251;0.0838;0.084636;0.084417;0.081347;0.068971;-9999;-9999;-9999;
+5500;0.070328;0.070443;0.070692;0.071111;0.071688;0.072273;0.073012;0.074066;0.075168;0.076217;0.077464;0.07883;0.080078;0.080928;0.080808;0.078353;0.068396;-9999;-9999;-9999;
+6000;0.067304;0.067401;0.067676;0.06802;0.068563;0.069108;0.069795;0.070791;0.071836;0.072824;0.074002;0.075301;0.076502;0.07735;0.077358;0.075396;0.067373;-9999;-9999;-9999;
+6500;0.064401;0.064472;0.064721;0.065047;0.065556;0.066064;0.066702;0.067641;0.068631;0.069562;0.070674;0.071912;0.073068;0.073915;0.074029;0.072539;0.065983;-9999;-9999;-9999;
+7000;0.061558;0.061649;0.061876;0.062184;0.062661;0.063134;0.063761;0.064613;0.065549;0.066424;0.067471;0.06865;0.069762;0.070608;0.070813;0.069662;0.064377;-9999;-9999;-9999;
+7500;0.058832;0.058926;0.059136;0.059427;0.059873;0.060313;0.060898;0.061697;0.062582;0.063406;0.064392;0.065513;0.066582;0.067423;0.067699;0.06684;0.062552;-9999;-9999;-9999;
+8000;0.056228;0.056306;0.056499;0.056773;0.05719;0.057599;0.058144;0.058894;0.05973;0.060505;0.061434;0.062499;0.063524;0.064354;0.064713;0.064078;0.060606;-9999;-9999;-9999;
+8500;0.053732;0.053785;0.053964;0.054219;0.05461;0.05499;0.055497;0.0562;0.056989;0.057718;0.058591;0.059603;0.060583;0.061413;0.061847;0.061383;0.058611;0.048553;-9999;-9999;
+9000;0.051294;0.051357;0.051525;0.051763;0.052128;0.052481;0.052952;0.053612;0.054356;0.055041;0.055861;0.05683;0.057778;0.058598;0.059059;0.058755;0.05652;0.048825;-9999;-9999;
+9500;0.048958;0.049021;0.049179;0.049401;0.049741;0.050069;0.050507;0.051128;0.051832;0.052483;0.053254;0.054182;0.055088;0.055882;0.056369;0.056197;0.05441;0.048224;-9999;-9999;
+10000;0.046721;0.046776;0.046923;0.04713;0.047453;0.047764;0.048177;0.04876;0.049426;0.050039;0.050761;0.051637;0.052499;0.053268;0.053773;0.053691;0.052298;0.047404;-9999;-9999;
+10500;0.04458;0.044636;0.044774;0.044969;0.045267;0.045555;0.045939;0.046484;0.047111;0.047687;0.048365;0.049191;0.050011;0.050753;0.051269;0.051283;0.050196;0.04636;-9999;-9999;
+11000;0.042531;0.042576;0.042704;0.042886;0.043164;0.043431;0.043788;0.044297;0.044886;0.045427;0.04605;0.046842;0.04762;0.048335;0.048856;0.04895;0.048117;0.045073;-9999;-9999;
+11500;0.041313;0.041357;0.041482;0.041658;0.041928;0.042188;0.042534;0.04303;0.043602;0.044126;0.044735;0.0455;0.046254;0.046944;0.047441;0.047514;0.046664;0.043593;-9999;-9999;
+12000;0.04013;0.040174;0.040295;0.040466;0.04073;0.04098;0.041294;0.041797;0.042355;0.042864;0.043459;0.044197;0.044928;0.045594;0.046068;0.046121;0.045253;0.042156;-9999;-9999;
+12500;0.038982;0.039027;0.039143;0.03931;0.039566;0.039809;0.040115;0.040603;0.041144;0.041638;0.04222;0.042933;0.043641;0.044284;0.044736;0.044768;0.043885;0.04076;-9999;-9999;
+13000;0.037867;0.03792;0.038031;0.038189;0.038437;0.03867;0.038962;0.039444;0.03997;0.040449;0.041015;0.041707;0.042393;0.043013;0.043443;0.043455;0.042557;0.039404;-9999;-9999;
+13500;0.036784;0.03685;0.036957;0.03711;0.037352;0.037574;0.037859;0.03832;0.038829;0.039295;0.039844;0.040516;0.041181;0.041779;0.042188;0.042182;0.041268;0.038087;-9999;-9999;
+14000;0.035733;0.035812;0.035915;0.036064;0.036299;0.036514;0.036792;0.037236;0.037727;0.038173;0.038699;0.03936;0.040005;0.040582;0.04097;0.040946;0.040018;0.036769;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10833;0.10857;0.10919;0.10998;0.11132;0.11258;0.11424;0.1162;0.11804;0.11997;0.1221;0.12394;0.12488;0.12354;0.11484;-9999;-9999;-9999;-9999;-9999;
+500;0.10386;0.10391;0.1046;0.10536;0.10661;0.10781;0.10935;0.11119;0.11294;0.11477;0.11681;0.11862;0.11965;0.11868;0.11148;-9999;-9999;-9999;-9999;-9999;
+1000;0.09956;0.099664;0.1002;0.10091;0.10208;0.1032;0.10465;0.10641;0.10807;0.1098;0.11172;0.1135;0.11459;0.11395;0.10804;0.10919;-9999;-9999;-9999;-9999;
+1500;0.095307;0.095505;0.095997;0.096657;0.097733;0.098768;0.10012;0.10179;0.10339;0.10505;0.10688;0.10857;0.1097;0.10934;0.10447;-9999;-9999;-9999;-9999;-9999;
+2000;0.091283;0.091543;0.091999;0.092621;0.093624;0.094596;0.095851;0.097409;0.098903;0.10046;0.10221;0.10387;0.10501;0.10485;0.10085;0.08258;-9999;-9999;-9999;-9999;
+2500;0.08755;0.087725;0.088148;0.088806;0.08967;0.09058;0.091754;0.093228;0.094651;0.096132;0.097771;0.099342;0.10047;0.10048;0.097158;0.082298;-9999;-9999;-9999;-9999;
+3000;0.083883;0.084047;0.084438;0.085052;0.085863;0.086715;0.087814;0.089207;0.090561;0.09195;0.093522;0.095042;0.096175;0.096213;0.093512;0.081372;-9999;-9999;-9999;-9999;
+3500;0.080366;0.080503;0.080865;0.081439;0.082199;0.082997;0.084024;0.085339;0.086628;0.087941;0.089437;0.090902;0.092033;0.092202;0.090057;0.07988;-9999;-9999;-9999;-9999;
+4000;0.076991;0.07702;0.07742;0.07796;0.078672;0.079419;0.080378;0.08162;0.082845;0.084085;0.085508;0.08692;0.088041;0.088321;0.086584;0.078129;-9999;-9999;-9999;-9999;
+4500;0.073675;0.073809;0.074116;0.074612;0.075283;0.075979;0.076869;0.078043;0.07921;0.080377;0.081729;0.083087;0.084192;0.084563;0.083179;0.076205;-9999;-9999;-9999;-9999;
+5000;0.070492;0.070659;0.070943;0.071405;0.072035;0.07268;0.073502;0.074608;0.075714;0.076813;0.078095;0.079401;0.08049;0.080924;0.079845;0.074089;-9999;-9999;-9999;-9999;
+5500;0.067507;0.067624;0.067887;0.068317;0.068905;0.069509;0.070275;0.07132;0.072371;0.073401;0.07461;0.075854;0.076916;0.077411;0.076591;0.071843;-9999;-9999;-9999;-9999;
+6000;0.06459;0.0647;0.064942;0.065343;0.065898;0.066458;0.067175;0.068157;0.069154;0.070124;0.071266;0.072459;0.073491;0.074026;0.073421;0.069563;-9999;-9999;-9999;-9999;
+6500;0.06179;0.061883;0.062106;0.06248;0.063;0.06352;0.064188;0.065111;0.066057;0.066971;0.068052;0.069195;0.070198;0.07077;0.070352;0.067172;-9999;-9999;-9999;-9999;
+7000;0.059102;0.059122;0.05937;0.059721;0.060208;0.060692;0.061316;0.062184;0.06308;0.063941;0.064962;0.066056;0.06703;0.067627;0.067368;0.064762;0.054306;-9999;-9999;-9999;
+7500;0.056465;0.056554;0.056781;0.057066;0.057523;0.057973;0.058555;0.05937;0.060219;0.061029;0.061993;0.063038;0.063982;0.064596;0.064426;0.062349;0.054067;-9999;-9999;-9999;
+8000;0.053937;0.054038;0.054243;0.054512;0.05494;0.055358;0.0559;0.056665;0.057469;0.058231;0.05914;0.060137;0.06105;0.061674;0.061619;0.060016;0.053343;-9999;-9999;-9999;
+8500;0.051513;0.051614;0.051801;0.052056;0.052456;0.052844;0.053346;0.054066;0.054827;0.055542;0.056398;0.057348;0.058229;0.058859;0.0589;0.057581;0.05225;-9999;-9999;-9999;
+9000;0.049189;0.049282;0.049453;0.049694;0.050068;0.050428;0.050892;0.051569;0.052288;0.05296;0.053765;0.054669;0.055516;0.056149;0.056267;0.055287;0.050998;-9999;-9999;-9999;
+9500;0.046975;0.047038;0.047198;0.047422;0.047771;0.048105;0.048534;0.049171;0.049849;0.05048;0.051237;0.052095;0.052909;0.05354;0.053721;0.052987;0.049539;-9999;-9999;-9999;
+10000;0.044852;0.04488;0.045029;0.045238;0.045563;0.045873;0.04627;0.046867;0.047508;0.0481;0.04881;0.049624;0.050404;0.051028;0.051262;0.050735;0.047969;-9999;-9999;-9999;
+10500;0.042753;0.042805;0.042944;0.043138;0.043441;0.043728;0.044095;0.044655;0.045259;0.045814;0.046481;0.047252;0.047997;0.04861;0.048904;0.048536;0.046348;0.038351;-9999;-9999;
+11000;0.040744;0.040811;0.04094;0.041121;0.041402;0.041669;0.042007;0.042531;0.0431;0.043621;0.044245;0.044976;0.045686;0.046298;0.046643;0.046393;0.044644;0.038525;-9999;-9999;
+11500;0.039606;0.039654;0.039779;0.039954;0.040229;0.040486;0.040817;0.041326;0.041878;0.042383;0.04299;0.043699;0.044387;0.044963;0.045278;0.045019;0.043258;0.03707;-9999;-9999;
+12000;0.0385;0.038532;0.038652;0.038823;0.039089;0.039339;0.039663;0.040156;0.040692;0.041182;0.041772;0.04246;0.043125;0.04368;0.043962;0.043686;0.041912;-9999;-9999;-9999;
+12500;0.037399;0.03744;0.037559;0.037724;0.037985;0.038227;0.038542;0.039021;0.039541;0.040017;0.04059;0.041258;0.041902;0.042435;0.042683;0.042393;0.040606;0.034575;-9999;-9999;
+13000;0.036329;0.036382;0.036499;0.036658;0.036913;0.037147;0.037455;0.03792;0.038425;0.038887;0.039443;0.040091;0.040715;0.041226;0.041455;0.041138;0.039339;-9999;-9999;-9999;
+13500;0.03529;0.035356;0.03547;0.035624;0.035873;0.036099;0.0364;0.036852;0.037341;0.03779;0.038331;0.038959;0.039563;0.040054;0.040264;0.039921;0.038109;0.031034;-9999;-9999;
+14000;0.034322;0.034362;0.034471;0.034621;0.034863;0.035083;0.035376;0.035814;0.03629;0.036725;0.037251;0.037861;0.038445;0.038917;0.039108;0.038739;0.036917;0.03015;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10423;0.10429;0.10516;0.10599;0.10741;0.10874;0.11045;0.1124;0.11415;0.11605;0.11791;0.11937;0.11964;0.11628;0.10012;-9999;-9999;-9999;-9999;-9999;
+500;0.099921;0.099981;0.10071;0.10149;0.1028;0.10404;0.10566;0.1075;0.10917;0.11098;0.11278;0.11425;0.11457;0.11196;0.098575;-9999;-9999;-9999;-9999;-9999;
+1000;0.095787;0.095843;0.096444;0.097174;0.098399;0.09956;0.10106;0.10281;0.10439;0.10612;0.10785;0.10931;0.10978;0.10771;0.096658;-9999;-9999;-9999;-9999;-9999;
+1500;0.091666;0.091872;0.092395;0.093068;0.094197;0.095269;0.096662;0.098312;0.099818;0.10146;0.10312;0.10456;0.10514;0.10352;0.094356;-9999;-9999;-9999;-9999;-9999;
+2000;0.087752;0.088042;0.088526;0.08916;0.090212;0.091219;0.092521;0.094061;0.09547;0.097001;0.098587;0.099997;0.10065;0.099383;0.091881;-9999;-9999;-9999;-9999;-9999;
+2500;0.084169;0.084352;0.084801;0.085398;0.086379;0.087321;0.088537;0.089997;0.091336;0.092788;0.094306;0.095652;0.096331;0.095365;0.089111;-9999;-9999;-9999;-9999;-9999;
+3000;0.080738;0.080799;0.081215;0.081777;0.082691;0.083573;0.084709;0.086091;0.087363;0.088693;0.090197;0.091514;0.092244;0.0915;0.086236;-9999;-9999;-9999;-9999;-9999;
+3500;0.07722;0.077378;0.077763;0.078356;0.079144;0.079968;0.081031;0.082336;0.083549;0.084812;0.086247;0.087528;0.088299;0.087776;0.083409;-9999;-9999;-9999;-9999;-9999;
+4000;0.073935;0.074084;0.07444;0.074994;0.075731;0.076501;0.077493;0.078728;0.079883;0.081086;0.082448;0.083692;0.084491;0.084158;0.080517;-9999;-9999;-9999;-9999;-9999;
+4500;0.07079;0.070928;0.071255;0.071771;0.072454;0.073171;0.074093;0.075259;0.076358;0.077503;0.078797;0.079999;0.080812;0.080641;0.077619;0.064165;-9999;-9999;-9999;-9999;
+5000;0.067772;0.067894;0.068196;0.068675;0.069316;0.069985;0.070845;0.071938;0.072977;0.074058;0.07528;0.07644;0.077268;0.07717;0.074739;0.06375;-9999;-9999;-9999;-9999;
+5500;0.064876;0.064967;0.065246;0.065692;0.066293;0.066917;0.067719;0.06875;0.069738;0.070764;0.071915;0.073027;0.073854;0.073876;0.07189;0.063017;-9999;-9999;-9999;-9999;
+6000;0.062036;0.062149;0.062406;0.062822;0.063395;0.063968;0.064713;0.065686;0.066626;0.067598;0.068686;0.069758;0.070584;0.070703;0.069143;0.061749;-9999;-9999;-9999;-9999;
+6500;0.059311;0.059435;0.059673;0.060058;0.060595;0.06113;0.061821;0.06274;0.063635;0.064537;0.06558;0.066614;0.067434;0.067637;0.066387;0.060364;-9999;-9999;-9999;-9999;
+7000;0.056724;0.056823;0.057041;0.0574;0.057901;0.058401;0.059042;0.059909;0.06076;0.061608;0.062597;0.06359;0.0644;0.064671;0.063689;0.058773;-9999;-9999;-9999;-9999;
+7500;0.054216;0.054308;0.054509;0.054843;0.055312;0.055775;0.056373;0.057188;0.057997;0.058794;0.05973;0.060683;0.061479;0.061806;0.061051;0.057031;-9999;-9999;-9999;-9999;
+8000;0.051811;0.051888;0.052073;0.052383;0.052822;0.053252;0.053808;0.054574;0.055341;0.056091;0.056975;0.057889;0.058668;0.059039;0.058477;0.055193;-9999;-9999;-9999;-9999;
+8500;0.049503;0.04952;0.049727;0.050017;0.050427;0.050826;0.051344;0.052063;0.052789;0.053494;0.054329;0.055204;0.055963;0.056369;0.05597;0.053321;-9999;-9999;-9999;-9999;
+9000;0.047294;0.047319;0.047505;0.04774;0.048125;0.048495;0.048976;0.049651;0.050339;0.051001;0.051788;0.052624;0.053362;0.053793;0.053532;0.051375;0.0426;-9999;-9999;-9999;
+9500;0.045094;0.045163;0.04533;0.045553;0.045912;0.046255;0.046702;0.047335;0.047985;0.048606;0.049347;0.050147;0.050862;0.051311;0.051165;0.04942;0.042535;-9999;-9999;-9999;
+10000;0.043024;0.043087;0.04324;0.04345;0.043785;0.044103;0.044518;0.04511;0.045725;0.046308;0.047005;0.047766;0.048459;0.048919;0.048838;0.047469;0.042054;-9999;-9999;-9999;
+10500;0.041042;0.041092;0.041233;0.04143;0.041741;0.042036;0.042421;0.042975;0.043555;0.044101;0.044757;0.045481;0.046149;0.046616;0.046617;0.045531;0.041249;-9999;-9999;-9999;
+11000;0.039143;0.039155;0.03929;0.03949;0.039778;0.040051;0.040409;0.040925;0.041473;0.041985;0.042599;0.043288;0.04393;0.044401;0.044468;0.043656;0.040257;-9999;-9999;-9999;
+11500;0.03801;0.038061;0.038193;0.03837;0.038653;0.038917;0.039265;0.039768;0.0403;0.040796;0.041394;0.042061;0.042682;0.043132;0.043181;0.042349;0.038923;-9999;-9999;-9999;
+12000;0.03694;0.036989;0.037114;0.037286;0.037562;0.037817;0.038155;0.038646;0.039161;0.039644;0.040224;0.040872;0.041472;0.041901;0.041932;0.041086;0.037604;-9999;-9999;-9999;
+12500;0.035901;0.035952;0.036066;0.036233;0.036503;0.03675;0.037078;0.037557;0.038057;0.038525;0.03909;0.039718;0.040297;0.040707;0.040721;0.039827;0.036345;-9999;-9999;-9999;
+13000;0.034893;0.034932;0.03505;0.035212;0.035475;0.035715;0.036034;0.036499;0.036985;0.03744;0.037988;0.038597;0.039158;0.039548;0.039545;0.038636;0.03512;-9999;-9999;-9999;
+13500;0.033912;0.033946;0.034064;0.034221;0.034478;0.03471;0.03502;0.035474;0.035944;0.036386;0.03692;0.03751;0.038052;0.038424;0.038405;0.037481;0.03393;-9999;-9999;-9999;
+14000;0.032953;0.032996;0.033107;0.033259;0.03351;0.033735;0.034036;0.034478;0.034935;0.035364;0.035883;0.036456;0.036979;0.037332;0.037297;0.03636;0.032777;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10047;0.1008;0.10162;0.10235;0.10385;0.10524;0.10694;0.10895;0.11065;0.11241;0.11401;0.11496;0.11415;0.1077;0.10029;-9999;-9999;-9999;-9999;-9999;
+500;0.096317;0.09638;0.097169;0.097966;0.099356;0.10065;0.10224;0.10412;0.10575;0.10745;0.10903;0.11004;0.10952;0.1041;0.098521;-9999;-9999;-9999;-9999;-9999;
+1000;0.092329;0.092388;0.093015;0.093763;0.095056;0.096264;0.097755;0.099537;0.10106;0.10268;0.10421;0.10529;0.10502;0.10047;0.09682;-9999;-9999;-9999;-9999;-9999;
+1500;0.088313;0.08853;0.08909;0.089781;0.090973;0.092089;0.093539;0.095148;0.096589;0.098135;0.099614;0.10069;0.10061;0.096973;0.079753;-9999;-9999;-9999;-9999;-9999;
+2000;0.084484;0.084814;0.08533;0.085981;0.087091;0.088138;0.089496;0.091016;0.092359;0.09381;0.095212;0.096296;0.096367;0.093346;0.079223;-9999;-9999;-9999;-9999;-9999;
+2500;0.081043;0.081235;0.081714;0.082327;0.083361;0.084341;0.085609;0.087051;0.088329;0.089715;0.09107;0.092128;0.0922;0.089777;0.07817;-9999;-9999;-9999;-9999;-9999;
+3000;0.07775;0.077792;0.078236;0.078812;0.079775;0.080692;0.081877;0.083242;0.084456;0.085778;0.087088;0.088144;0.088329;0.086325;0.076548;-9999;-9999;-9999;-9999;-9999;
+3500;0.074314;0.07448;0.07489;0.075431;0.076328;0.077185;0.078293;0.079583;0.080738;0.081997;0.083258;0.084302;0.084584;0.082966;0.074838;-9999;-9999;-9999;-9999;-9999;
+4000;0.071139;0.071294;0.071671;0.072179;0.073014;0.073814;0.074847;0.076068;0.077162;0.078359;0.079571;0.080603;0.080968;0.07968;0.072878;-9999;-9999;-9999;-9999;-9999;
+4500;0.068092;0.068244;0.068593;0.069127;0.06984;0.070582;0.071537;0.072687;0.073726;0.074861;0.076029;0.077043;0.077476;0.076466;0.07079;-9999;-9999;-9999;-9999;-9999;
+5000;0.065172;0.065307;0.06563;0.066128;0.066795;0.067487;0.068379;0.069464;0.070441;0.071509;0.072625;0.073617;0.074105;0.073337;0.068629;-9999;-9999;-9999;-9999;-9999;
+5500;0.062369;0.062481;0.062779;0.063242;0.063866;0.064512;0.065344;0.066368;0.067294;0.068306;0.069378;0.070339;0.070863;0.070296;0.06639;0.066197;-9999;-9999;-9999;-9999;
+6000;0.059642;0.05976;0.060035;0.060466;0.061049;0.061652;0.062427;0.063394;0.064275;0.065228;0.066256;0.067191;0.067748;0.067355;0.064139;0.065416;-9999;-9999;-9999;-9999;
+6500;0.057032;0.057142;0.057395;0.057796;0.058341;0.058903;0.059625;0.060537;0.061375;0.062246;0.063254;0.064163;0.064743;0.064499;0.061835;-9999;-9999;-9999;-9999;-9999;
+7000;0.054529;0.054551;0.054852;0.055229;0.055737;0.056261;0.056933;0.057792;0.058589;0.059415;0.060371;0.06125;0.061847;0.061727;0.059533;0.049745;-9999;-9999;-9999;-9999;
+7500;0.05213;0.05215;0.052409;0.052759;0.053247;0.053723;0.054347;0.055155;0.055914;0.056698;0.057601;0.058449;0.059055;0.058992;0.057245;0.049465;-9999;-9999;-9999;-9999;
+8000;0.049835;0.049865;0.050063;0.050385;0.050841;0.051283;0.051862;0.052623;0.053344;0.054088;0.054938;0.055756;0.056367;0.056394;0.055027;0.04874;-9999;-9999;-9999;-9999;
+8500;0.047539;0.047622;0.047803;0.048101;0.048526;0.048938;0.049474;0.050192;0.050877;0.051582;0.052381;0.053168;0.053779;0.053882;0.052789;0.047656;-9999;-9999;-9999;-9999;
+9000;0.045387;0.045464;0.04563;0.045906;0.046303;0.046685;0.047181;0.047857;0.048508;0.049163;0.049925;0.050682;0.051287;0.051453;0.050593;0.046452;-9999;-9999;-9999;-9999;
+9500;0.043324;0.043389;0.043541;0.043797;0.044167;0.044521;0.044981;0.045615;0.046233;0.046847;0.047568;0.048294;0.048891;0.049107;0.048444;0.045089;-9999;-9999;-9999;-9999;
+10000;0.041347;0.041361;0.04153;0.041769;0.042114;0.042442;0.042869;0.043464;0.044049;0.044625;0.045304;0.046001;0.046586;0.046843;0.046347;0.043628;-9999;-9999;-9999;-9999;
+10500;0.039413;0.039475;0.039626;0.03982;0.040143;0.040446;0.040842;0.041399;0.041953;0.042493;0.043133;0.043799;0.04437;0.044658;0.044302;0.042101;-9999;-9999;-9999;-9999;
+11000;0.037558;0.037626;0.037764;0.037949;0.03825;0.03853;0.038898;0.039418;0.039941;0.040447;0.041049;0.041686;0.042241;0.042553;0.042313;0.040552;0.033432;-9999;-9999;-9999;
+11500;0.036511;0.036564;0.036698;0.036878;0.037171;0.037443;0.037801;0.038307;0.038815;0.039306;0.039891;0.040508;0.041044;0.041337;0.041082;0.039308;0.032169;-9999;-9999;-9999;
+12000;0.035494;0.035506;0.035646;0.03584;0.036125;0.036388;0.036736;0.03723;0.037722;0.038199;0.038768;0.039366;0.039882;0.040157;0.039887;0.038101;-9999;-9999;-9999;-9999;
+12500;0.034506;0.034517;0.034643;0.034831;0.035109;0.035365;0.035703;0.036184;0.036661;0.037125;0.037678;0.038257;0.038755;0.039011;0.038728;0.036929;-9999;-9999;-9999;-9999;
+13000;0.033515;0.033566;0.033686;0.03385;0.034124;0.034371;0.0347;0.035169;0.035632;0.036082;0.036621;0.037182;0.037661;0.0379;0.037603;0.035792;-9999;-9999;-9999;-9999;
+13500;0.032552;0.032626;0.032741;0.032901;0.033169;0.033408;0.033727;0.034184;0.034633;0.035071;0.035595;0.03614;0.036602;0.036823;0.036511;0.034672;-9999;-9999;-9999;-9999;
+14000;0.031665;0.03171;0.031824;0.031979;0.03224;0.032473;0.032783;0.033229;0.033665;0.034092;0.034601;0.035129;0.035573;0.035779;0.035452;0.0336;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.09708;0.0975;0.098369;0.099131;0.10073;0.10219;0.10391;0.10593;0.10757;0.10913;0.11032;0.11049;0.10801;0.096121;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.093079;0.093143;0.094126;0.094828;0.096304;0.097664;0.099268;0.10117;0.10275;0.10428;0.10551;0.10584;0.10383;0.093874;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.089236;0.089291;0.090047;0.09071;0.092082;0.093351;0.094862;0.096643;0.098131;0.09961;0.10086;0.10131;0.099742;0.091411;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.085283;0.085337;0.086105;0.086826;0.088094;0.089266;0.090671;0.092323;0.093728;0.095152;0.096383;0.096946;0.095736;0.088802;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.081499;0.081888;0.082443;0.083114;0.084293;0.08539;0.086716;0.088278;0.089585;0.090927;0.092109;0.09272;0.091838;0.086047;0.07882;-9999;-9999;-9999;-9999;-9999;
+2500;0.078198;0.078401;0.078916;0.079547;0.080645;0.081671;0.082919;0.084394;0.08563;0.086919;0.088077;0.08872;0.088042;0.08316;0.077907;-9999;-9999;-9999;-9999;-9999;
+3000;0.074857;0.075046;0.075523;0.076117;0.077139;0.078099;0.079273;0.080666;0.081834;0.083065;0.084199;0.084884;0.084419;0.080278;0.076323;-9999;-9999;-9999;-9999;-9999;
+3500;0.071651;0.071692;0.072254;0.072817;0.073769;0.074665;0.075825;0.077086;0.07819;0.079365;0.080468;0.081191;0.080906;0.077429;0.074849;-9999;-9999;-9999;-9999;-9999;
+4000;0.068575;0.068727;0.069132;0.069652;0.07053;0.071367;0.072448;0.073646;0.07469;0.075817;0.076887;0.077636;0.077499;0.07467;0.061528;-9999;-9999;-9999;-9999;-9999;
+4500;0.065615;0.065768;0.066143;0.06663;0.067446;0.068221;0.069222;0.070351;0.071335;0.07241;0.073448;0.07421;0.074202;0.071848;0.061023;-9999;-9999;-9999;-9999;-9999;
+5000;0.062774;0.062921;0.063267;0.063787;0.064485;0.065207;0.066141;0.067211;0.068141;0.069158;0.070152;0.070915;0.070937;0.069077;0.060168;-9999;-9999;-9999;-9999;-9999;
+5500;0.060048;0.060182;0.060502;0.060986;0.061638;0.062311;0.06318;0.064193;0.065076;0.066046;0.067005;0.067769;0.067882;0.066366;0.058994;-9999;-9999;-9999;-9999;-9999;
+6000;0.057423;0.057547;0.057842;0.058293;0.058902;0.05953;0.060339;0.061296;0.062134;0.063056;0.06398;0.064741;0.064933;0.063714;0.057645;-9999;-9999;-9999;-9999;-9999;
+6500;0.054906;0.054931;0.055281;0.055704;0.056272;0.056857;0.057611;0.058514;0.059309;0.060185;0.061074;0.061826;0.062084;0.061119;0.05609;-9999;-9999;-9999;-9999;-9999;
+7000;0.052491;0.052514;0.052823;0.053215;0.053746;0.05429;0.054991;0.055844;0.056596;0.057426;0.058282;0.059022;0.059333;0.058586;0.054436;-9999;-9999;-9999;-9999;-9999;
+7500;0.050132;0.050232;0.050462;0.050823;0.051318;0.051825;0.052477;0.05328;0.053993;0.054778;0.0556;0.056324;0.056678;0.056116;0.052692;-9999;-9999;-9999;-9999;-9999;
+8000;0.047871;0.047978;0.048189;0.048524;0.048985;0.049457;0.050063;0.05082;0.051495;0.052235;0.053024;0.05373;0.054118;0.053713;0.050891;0.051105;-9999;-9999;-9999;-9999;
+8500;0.045705;0.04581;0.046004;0.046315;0.046759;0.047185;0.047746;0.048458;0.049099;0.049796;0.050551;0.051237;0.051649;0.051378;0.049069;0.050219;-9999;-9999;-9999;-9999;
+9000;0.04363;0.043727;0.043905;0.044193;0.044608;0.045001;0.045522;0.046192;0.046801;0.047432;0.048174;0.04884;0.049271;0.049112;0.047216;0.038722;-9999;-9999;-9999;-9999;
+9500;0.041643;0.041724;0.041887;0.042154;0.042541;0.042905;0.043388;0.044018;0.044596;0.045192;0.045895;0.046538;0.04698;0.046915;0.045371;0.038791;-9999;-9999;-9999;-9999;
+10000;0.039741;0.039755;0.039946;0.040196;0.040555;0.040893;0.04134;0.041932;0.042481;0.043045;0.043707;0.044326;0.044776;0.044752;0.043578;0.03825;-9999;-9999;-9999;-9999;
+10500;0.03788;0.037946;0.038083;0.038312;0.038648;0.038962;0.039374;0.039931;0.040453;0.040986;0.041607;0.042203;0.042654;0.042697;0.041759;0.037516;-9999;-9999;-9999;-9999;
+11000;0.036093;0.036159;0.036284;0.036496;0.036809;0.037101;0.037484;0.03801;0.038507;0.03901;0.039592;0.040165;0.040615;0.040712;0.039975;0.03657;-9999;-9999;-9999;-9999;
+11500;0.035097;0.035141;0.035264;0.03547;0.035777;0.03606;0.036432;0.036945;0.037425;0.037913;0.03848;0.039035;0.039465;0.039547;0.038799;0.035364;-9999;-9999;-9999;-9999;
+12000;0.034128;0.03414;0.034275;0.034475;0.034775;0.035049;0.035412;0.03591;0.036375;0.036849;0.037402;0.03794;0.038353;0.038416;0.037658;0.034198;-9999;-9999;-9999;-9999;
+12500;0.033146;0.033202;0.03334;0.033508;0.033802;0.034069;0.034422;0.034906;0.035358;0.035816;0.036358;0.036878;0.037274;0.037319;0.036551;0.033065;-9999;-9999;-9999;-9999;
+13000;0.03222;0.032274;0.032408;0.032571;0.032859;0.033117;0.033461;0.033933;0.034372;0.034815;0.035344;0.035847;0.036227;0.036257;0.035477;0.031964;-9999;-9999;-9999;-9999;
+13500;0.031319;0.031374;0.031502;0.031661;0.031944;0.032193;0.032528;0.03299;0.033415;0.033844;0.03436;0.034847;0.035211;0.035227;0.034436;0.030895;-9999;-9999;-9999;-9999;
+14000;0.030444;0.0305;0.030625;0.030779;0.031057;0.031299;0.031639;0.032075;0.032487;0.032901;0.033405;0.033877;0.034225;0.034227;0.033425;0.029857;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.094116;0.094184;0.095393;0.096163;0.097885;0.099432;0.10114;0.10312;0.10467;0.10596;0.1067;0.10598;0.10086;0.088804;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.090133;0.090197;0.091121;0.091976;0.093564;0.095003;0.096605;0.09847;0.099945;0.1012;0.10201;0.10155;0.097231;0.079202;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.086227;0.086285;0.087176;0.087977;0.089442;0.090789;0.092298;0.094058;0.095452;0.096669;0.097494;0.097247;0.093654;0.078591;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.082551;0.082845;0.083593;0.084224;0.085569;0.086817;0.088225;0.089866;0.091168;0.092357;0.093197;0.093106;0.090116;0.077563;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.079061;0.079113;0.07989;0.080597;0.08186;0.083035;0.084362;0.085918;0.087155;0.088285;0.089109;0.089017;0.086648;0.076105;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.075701;0.075874;0.076431;0.077088;0.078263;0.079359;0.080628;0.082114;0.0833;0.084401;0.085239;0.085276;0.08328;0.0743;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.072381;0.072427;0.073092;0.073716;0.074809;0.075827;0.077023;0.07843;0.079571;0.08067;0.081516;0.081667;0.080038;0.072445;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.069198;0.069426;0.069902;0.070481;0.071496;0.072443;0.073568;0.074893;0.075974;0.077042;0.077927;0.07818;0.07687;0.070459;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.066239;0.066278;0.066845;0.067389;0.068324;0.069201;0.070255;0.071506;0.072529;0.073559;0.074437;0.074789;0.073777;0.068352;0.061689;-9999;-9999;-9999;-9999;-9999;
+4500;0.063397;0.063527;0.063932;0.064438;0.065306;0.066122;0.067104;0.068271;0.069229;0.070218;0.071086;0.071498;0.070734;0.066207;0.060794;-9999;-9999;-9999;-9999;-9999;
+5000;0.060602;0.060754;0.061128;0.061602;0.062409;0.06317;0.064091;0.065192;0.066098;0.067042;0.067886;0.068337;0.067771;0.063978;0.060014;-9999;-9999;-9999;-9999;-9999;
+5500;0.057922;0.058088;0.058433;0.058878;0.059628;0.060337;0.061255;0.062241;0.063095;0.064;0.064828;0.065316;0.064916;0.061738;0.05879;-9999;-9999;-9999;-9999;-9999;
+6000;0.055394;0.055526;0.055844;0.056318;0.056958;0.057617;0.058471;0.059407;0.060214;0.06108;0.061889;0.062405;0.062148;0.0595;0.057664;-9999;-9999;-9999;-9999;-9999;
+6500;0.052969;0.053063;0.053357;0.053796;0.054394;0.055007;0.0558;0.056688;0.057452;0.05828;0.059065;0.059602;0.059466;0.057326;0.047395;-9999;-9999;-9999;-9999;-9999;
+7000;0.050583;0.050697;0.050966;0.051375;0.051932;0.052503;0.053239;0.05408;0.054803;0.055592;0.056353;0.056904;0.056803;0.055108;0.047006;-9999;-9999;-9999;-9999;-9999;
+7500;0.048295;0.048422;0.04867;0.049049;0.049568;0.050099;0.050783;0.051578;0.052262;0.053013;0.053749;0.054307;0.054298;0.052916;0.046355;-9999;-9999;-9999;-9999;-9999;
+8000;0.046137;0.046235;0.046463;0.046815;0.047299;0.047792;0.048427;0.049178;0.049824;0.050539;0.051249;0.051809;0.051878;0.050763;0.04536;-9999;-9999;-9999;-9999;-9999;
+8500;0.044068;0.044135;0.044344;0.04467;0.04512;0.045579;0.046168;0.046876;0.047487;0.048166;0.048848;0.049406;0.04954;0.048653;0.044222;-9999;-9999;-9999;-9999;-9999;
+9000;0.042032;0.042117;0.042309;0.04261;0.043029;0.043455;0.044002;0.044668;0.045246;0.045889;0.046544;0.047097;0.047283;0.046588;0.04297;-9999;-9999;-9999;-9999;-9999;
+9500;0.040083;0.040179;0.040354;0.040633;0.041023;0.041417;0.041924;0.042551;0.043098;0.043705;0.044333;0.044877;0.045105;0.044574;0.041615;-9999;-9999;-9999;-9999;-9999;
+10000;0.038237;0.038311;0.038472;0.038733;0.039113;0.039464;0.039932;0.040521;0.041038;0.041611;0.042213;0.042743;0.043006;0.042612;0.040193;-9999;-9999;-9999;-9999;-9999;
+10500;0.036466;0.036513;0.036661;0.036901;0.037255;0.037582;0.038018;0.038575;0.039064;0.039602;0.04018;0.040696;0.040982;0.040705;0.038738;0.039519;-9999;-9999;-9999;-9999;
+11000;0.034724;0.034786;0.034922;0.035144;0.035473;0.035774;0.036178;0.0367;0.037166;0.037674;0.038229;0.038728;0.039032;0.038815;0.037254;0.038351;-9999;-9999;-9999;-9999;
+11500;0.033761;0.033814;0.033945;0.034161;0.034483;0.034776;0.035169;0.035679;0.036131;0.036626;0.037164;0.037648;0.037934;0.037741;0.03613;0.03718;-9999;-9999;-9999;-9999;
+12000;0.032826;0.032838;0.032996;0.033207;0.033523;0.033806;0.034191;0.03469;0.035127;0.03561;0.03613;0.036598;0.03687;0.03666;0.03504;0.03604;-9999;-9999;-9999;-9999;
+12500;0.031916;0.031956;0.032078;0.032282;0.032593;0.032867;0.033242;0.03373;0.034153;0.034622;0.035126;0.035579;0.035837;0.035612;0.033982;0.034903;-9999;-9999;-9999;-9999;
+13000;0.03101;0.031068;0.031186;0.031385;0.03169;0.031957;0.032322;0.032798;0.033209;0.033663;0.034152;0.03459;0.034833;0.034595;0.032955;-9999;-9999;-9999;-9999;-9999;
+13500;0.030129;0.030206;0.03032;0.030514;0.030814;0.031074;0.031429;0.031893;0.032292;0.032733;0.033207;0.03363;0.033859;0.033609;0.031959;0.032571;-9999;-9999;-9999;-9999;
+14000;0.029315;0.029371;0.029483;0.029671;0.029965;0.030217;0.030563;0.031015;0.031401;0.03183;0.032289;0.032698;0.032914;0.032654;0.030993;0.031651;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.091235;0.091835;0.092878;0.093701;0.095553;0.097207;0.098894;0.10083;0.10226;0.10319;0.10327;0.10109;0.091673;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.087504;0.087568;0.088782;0.089536;0.091249;0.092786;0.094374;0.096203;0.097573;0.098492;0.098713;0.09696;0.088969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.083662;0.08372;0.08487;0.08557;0.087151;0.088581;0.09008;0.09181;0.093097;0.094021;0.094324;0.092935;0.086207;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.080027;0.080346;0.081177;0.08185;0.083322;0.084648;0.086045;0.087661;0.088863;0.089767;0.090148;0.089059;0.083383;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.076621;0.076672;0.077664;0.078281;0.079649;0.080886;0.082209;0.083743;0.084895;0.085787;0.086196;0.085322;0.080607;0.069439;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.073348;0.073551;0.074262;0.074856;0.076129;0.077284;0.078534;0.079986;0.081088;0.081977;0.082444;0.08179;0.077764;0.068546;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.070138;0.070183;0.070912;0.07157;0.072754;0.073832;0.075013;0.076386;0.07744;0.07832;0.078834;0.078375;0.074952;0.060943;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.067057;0.067294;0.067906;0.068418;0.069518;0.070523;0.071639;0.072937;0.073945;0.074811;0.075362;0.075067;0.072176;0.060442;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.064194;0.064234;0.064847;0.065419;0.066433;0.067357;0.068405;0.069632;0.070594;0.071444;0.072023;0.071867;0.069435;0.059516;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.061434;0.061556;0.061996;0.062527;0.063474;0.064355;0.065338;0.066485;0.067391;0.068213;0.068812;0.068776;0.066753;0.058363;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.058674;0.058709;0.059237;0.059739;0.060619;0.061436;0.062372;0.063472;0.064348;0.065149;0.065752;0.06581;0.06414;0.057115;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.056028;0.056227;0.056601;0.057064;0.05788;0.058641;0.059522;0.06056;0.061394;0.062197;0.062821;0.06296;0.06159;0.055663;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.053578;0.053609;0.05406;0.054499;0.055254;0.055962;0.056791;0.057769;0.058558;0.059335;0.059976;0.060146;0.059101;0.054129;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.051228;0.051313;0.051631;0.052038;0.052736;0.053394;0.054174;0.055094;0.05584;0.05659;0.057228;0.057464;0.056664;0.052518;0.047502;-9999;-9999;-9999;-9999;-9999;
+7000;0.048881;0.049002;0.049296;0.049729;0.050321;0.050933;0.051665;0.052531;0.053236;0.053958;0.054589;0.054874;0.054259;0.050794;0.046952;-9999;-9999;-9999;-9999;-9999;
+7500;0.046632;0.046784;0.047053;0.047455;0.048006;0.048574;0.049261;0.050075;0.05074;0.051433;0.052055;0.052379;0.051922;0.049034;0.046073;-9999;-9999;-9999;-9999;-9999;
+8000;0.044549;0.044654;0.044902;0.045273;0.045785;0.046313;0.046992;0.047724;0.048349;0.049013;0.049623;0.049977;0.049654;0.047257;0.045192;-9999;-9999;-9999;-9999;-9999;
+8500;0.042552;0.042609;0.042837;0.04318;0.043656;0.044145;0.044775;0.045469;0.046057;0.046692;0.047288;0.047665;0.047458;0.045475;0.04429;-9999;-9999;-9999;-9999;-9999;
+9000;0.040557;0.040647;0.040855;0.041172;0.041615;0.042069;0.042651;0.043309;0.043863;0.044469;0.045047;0.045442;0.045329;0.043738;0.036544;-9999;-9999;-9999;-9999;-9999;
+9500;0.038641;0.038758;0.038949;0.039245;0.039658;0.040078;0.040617;0.04124;0.041763;0.042339;0.042898;0.043302;0.043269;0.041969;0.036146;-9999;-9999;-9999;-9999;-9999;
+10000;0.03686;0.036938;0.037114;0.037388;0.037771;0.038163;0.038665;0.039257;0.03975;0.040297;0.040835;0.041243;0.04124;0.040229;0.035495;-9999;-9999;-9999;-9999;-9999;
+10500;0.035156;0.035193;0.035354;0.035606;0.035962;0.036324;0.036788;0.037347;0.037815;0.038337;0.038856;0.039266;0.039322;0.038516;0.034699;-9999;-9999;-9999;-9999;-9999;
+11000;0.03345;0.033517;0.033663;0.033897;0.034245;0.034562;0.034989;0.035513;0.035956;0.03645;0.03695;0.037362;0.037468;0.036833;0.033738;-9999;-9999;-9999;-9999;-9999;
+11500;0.032507;0.032587;0.032729;0.032957;0.0333;0.033608;0.034024;0.034536;0.034965;0.035445;0.03593;0.036326;0.036418;0.035769;0.03266;-9999;-9999;-9999;-9999;-9999;
+12000;0.031591;0.031686;0.031822;0.032045;0.032383;0.032682;0.033088;0.033587;0.034002;0.034469;0.034939;0.03532;0.035399;0.034738;0.031612;-9999;-9999;-9999;-9999;-9999;
+12500;0.030748;0.030811;0.030945;0.031162;0.031494;0.031784;0.032179;0.032665;0.033069;0.033522;0.033978;0.034344;0.03441;0.033738;0.030594;-9999;-9999;-9999;-9999;-9999;
+13000;0.029928;0.02994;0.030093;0.030304;0.030629;0.030911;0.031296;0.03177;0.032161;0.032602;0.033045;0.033397;0.033449;0.032767;0.029615;-9999;-9999;-9999;-9999;-9999;
+13500;0.029084;0.029141;0.029267;0.029471;0.02979;0.030063;0.030438;0.0309;0.03128;0.031708;0.032139;0.032476;0.032517;0.031825;0.028655;-9999;-9999;-9999;-9999;-9999;
+14000;0.028263;0.028342;0.028464;0.028662;0.028976;0.02924;0.029605;0.030056;0.030424;0.030841;0.031259;0.031583;0.031612;0.030912;0.027723;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.089431;0.089855;0.091004;0.09186;0.093881;0.095694;0.097345;0.099224;0.10046;0.10075;0.099311;0.093024;0.077926;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.085478;0.085539;0.086686;0.087651;0.089515;0.091201;0.09275;0.094519;0.095721;0.096183;0.095534;0.090201;0.076873;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.081637;0.081694;0.082793;0.083691;0.085403;0.086957;0.088411;0.090083;0.09123;0.091743;0.091434;0.088258;0.075652;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.077989;0.078365;0.079279;0.079973;0.081565;0.083002;0.084387;0.085942;0.087017;0.087536;0.087363;0.08471;0.074701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.074622;0.074672;0.075618;0.076408;0.077886;0.07922;0.080541;0.082019;0.083062;0.083711;0.083473;0.081281;0.072687;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.071401;0.071598;0.072269;0.072996;0.074369;0.075608;0.076857;0.078263;0.079275;0.079944;0.079831;0.078017;0.070594;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.06818;0.068225;0.069033;0.069729;0.071005;0.072161;0.073333;0.07467;0.075651;0.076264;0.076324;0.074844;0.068498;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.065094;0.065136;0.065947;0.066601;0.067789;0.068864;0.069969;0.071237;0.072171;0.072805;0.072954;0.071756;0.066344;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.062311;0.06235;0.063034;0.063636;0.064725;0.065716;0.066755;0.067957;0.06885;0.069496;0.069714;0.068762;0.064161;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.059636;0.059766;0.060253;0.060809;0.06182;0.062743;0.063718;0.064843;0.065684;0.066323;0.066598;0.06586;0.061974;0.053195;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.056942;0.056977;0.057565;0.058095;0.059034;0.059895;0.060816;0.061882;0.062686;0.063324;0.063641;0.063082;0.059797;0.052574;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.05436;0.054393;0.054994;0.055491;0.056363;0.057165;0.058035;0.059045;0.059812;0.060446;0.0608;0.060397;0.05768;0.05182;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.051996;0.052027;0.052529;0.052994;0.053802;0.054548;0.055369;0.056323;0.057056;0.057682;0.058066;0.057797;0.055509;0.046143;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.049722;0.049807;0.050163;0.050597;0.051346;0.05204;0.052814;0.053715;0.054413;0.055029;0.055438;0.055281;0.053366;0.045566;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.047399;0.047426;0.047854;0.048266;0.048965;0.049619;0.050358;0.051215;0.05188;0.052483;0.05291;0.052849;0.051258;0.044715;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.045176;0.045201;0.045646;0.046032;0.046679;0.047286;0.04798;0.048794;0.049441;0.050039;0.05048;0.0505;0.049187;0.043756;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.043148;0.043171;0.043533;0.04394;0.044491;0.045054;0.045704;0.04647;0.047082;0.04767;0.048138;0.048229;0.047159;0.042614;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.041203;0.041258;0.041511;0.041884;0.042395;0.042916;0.043526;0.044246;0.044824;0.045393;0.045862;0.045978;0.045182;0.041401;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.039234;0.039334;0.039566;0.039912;0.040389;0.040871;0.041442;0.042118;0.042662;0.04321;0.043675;0.04384;0.043226;0.040115;0.036642;-9999;-9999;-9999;-9999;-9999;
+9500;0.037345;0.037364;0.037688;0.038011;0.038456;0.038907;0.039446;0.04008;0.040592;0.041118;0.041579;0.041783;0.041318;0.038739;0.036052;-9999;-9999;-9999;-9999;-9999;
+10000;0.035616;0.035701;0.035895;0.03619;0.036603;0.037019;0.037554;0.038124;0.038607;0.039115;0.039569;0.039804;0.039464;0.037328;0.035064;-9999;-9999;-9999;-9999;-9999;
+10500;0.03396;0.033996;0.034175;0.034446;0.034828;0.035213;0.035707;0.036247;0.036701;0.037187;0.037636;0.037896;0.037662;0.035904;0.03461;-9999;-9999;-9999;-9999;-9999;
+11000;0.032292;0.032365;0.032527;0.032776;0.03313;0.033486;0.033941;0.034452;0.034878;0.035341;0.035779;0.036058;0.035912;0.034478;0.033861;-9999;-9999;-9999;-9999;-9999;
+11500;0.031393;0.031478;0.031635;0.031877;0.032224;0.03257;0.033014;0.033511;0.033925;0.034375;0.034798;0.035063;0.034907;0.033462;0.032796;-9999;-9999;-9999;-9999;-9999;
+12000;0.030548;0.030619;0.030769;0.031005;0.031343;0.031681;0.032114;0.032598;0.033;0.033437;0.033846;0.034098;0.033931;0.032477;0.031759;-9999;-9999;-9999;-9999;-9999;
+12500;0.029726;0.029781;0.029929;0.030158;0.030489;0.030818;0.03124;0.031711;0.032102;0.032526;0.032922;0.033161;0.032983;0.031522;0.030753;-9999;-9999;-9999;-9999;-9999;
+13000;0.028929;0.02897;0.029113;0.029335;0.029685;0.029982;0.030391;0.03085;0.03123;0.031642;0.032025;0.032251;0.032064;0.030594;0.029776;-9999;-9999;-9999;-9999;-9999;
+13500;0.028117;0.028183;0.028321;0.028537;0.02888;0.029169;0.029567;0.030014;0.030384;0.030783;0.031154;0.031368;0.031171;0.029695;0.02885;-9999;-9999;-9999;-9999;-9999;
+14000;0.027329;0.027341;0.02755;0.027762;0.028099;0.028379;0.028767;0.029203;0.029562;0.02995;0.030309;0.030513;0.030304;0.028821;0.027903;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.087406;0.087468;0.089061;0.089935;0.091879;0.093685;0.095032;0.096384;0.096746;0.095827;0.092068;0.081661;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.083675;0.083733;0.084971;0.08603;0.087811;0.089537;0.090834;0.092159;0.092603;0.091941;0.088831;0.079859;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.080154;0.080207;0.081381;0.082475;0.084001;0.085636;0.086871;0.088139;0.088657;0.088202;0.085659;0.077896;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.076608;0.076659;0.077807;0.078724;0.080487;0.081973;0.083172;0.084407;0.084948;0.084641;0.082528;0.075847;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.073204;0.073252;0.074251;0.075113;0.076737;0.078203;0.079473;0.080817;0.081417;0.081272;0.079559;0.073713;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.069951;0.07013;0.070868;0.07166;0.073166;0.07453;0.075734;0.077109;0.077963;0.077938;0.076671;0.071568;0.059731;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.066675;0.066718;0.06761;0.068362;0.069762;0.071028;0.072173;0.073471;0.074311;0.074564;0.073809;0.069439;0.05889;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.063542;0.06391;0.064534;0.065213;0.066513;0.067692;0.068773;0.070005;0.070818;0.071128;0.070764;0.067274;0.05795;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.060819;0.060857;0.061602;0.062247;0.063428;0.064513;0.065533;0.066695;0.067491;0.067841;0.067617;0.065359;0.056925;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.058202;0.058306;0.058838;0.059426;0.060517;0.061532;0.062488;0.063569;0.064324;0.064697;0.064589;0.062712;0.055714;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.055485;0.055519;0.056162;0.056725;0.057737;0.058678;0.059588;0.060612;0.061338;0.061739;0.061723;0.060164;0.054167;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.052885;0.052917;0.053605;0.054137;0.055077;0.055946;0.056814;0.057783;0.058481;0.058902;0.058967;0.057702;0.052595;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.050587;0.050618;0.051165;0.051658;0.05253;0.053332;0.054155;0.055076;0.05575;0.056184;0.056314;0.055282;0.05095;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.048381;0.048444;0.04883;0.049283;0.050091;0.050838;0.051609;0.052484;0.053134;0.053584;0.053721;0.052933;0.049269;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.046084;0.04611;0.046576;0.047008;0.047756;0.04845;0.049175;0.050006;0.050626;0.051087;0.051269;0.050652;0.047562;0.040699;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.043886;0.043911;0.044422;0.044828;0.045521;0.046165;0.046848;0.047635;0.048226;0.048692;0.048908;0.048441;0.045842;0.0403;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.041941;0.041964;0.042361;0.042738;0.043379;0.043977;0.04462;0.045364;0.045928;0.046391;0.046638;0.046299;0.044173;0.039727;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.040073;0.04011;0.040388;0.040786;0.041328;0.041881;0.042487;0.043189;0.043726;0.044183;0.044457;0.044226;0.042452;0.035194;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.038103;0.038124;0.038461;0.038839;0.03935;0.039876;0.040445;0.041107;0.041617;0.042067;0.042361;0.042223;0.040754;0.034735;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.03622;0.036239;0.03661;0.03696;0.037435;0.037919;0.038465;0.039103;0.039598;0.040039;0.040348;0.040289;0.03908;0.034106;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.034541;0.034633;0.034848;0.035163;0.035604;0.036051;0.036562;0.03716;0.037633;0.038078;0.038412;0.038417;0.037427;0.033338;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.032934;0.032959;0.033155;0.033445;0.033854;0.034267;0.034744;0.035305;0.035752;0.036182;0.036525;0.036564;0.035813;0.032423;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.031281;0.031358;0.031535;0.031803;0.032182;0.032562;0.033008;0.033534;0.033953;0.034368;0.034712;0.034798;0.03422;0.031441;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.030452;0.030467;0.030679;0.03094;0.03131;0.031682;0.032116;0.032628;0.033036;0.033438;0.03377;0.033845;0.033259;0.03047;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.029646;0.02966;0.029848;0.030102;0.030464;0.030827;0.03125;0.031748;0.032146;0.032536;0.032857;0.032949;0.032325;0.029527;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.028808;0.028881;0.029042;0.029288;0.029643;0.029997;0.030409;0.030894;0.031278;0.031655;0.031965;0.032049;0.031419;0.028612;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.027994;0.028103;0.028259;0.028497;0.028845;0.02919;0.029593;0.030062;0.030433;0.030798;0.031096;0.031177;0.030539;0.027723;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.027276;0.027346;0.027499;0.02773;0.02807;0.028407;0.028797;0.029252;0.029613;0.029966;0.030253;0.030297;0.029677;0.026861;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.026578;0.02659;0.026759;0.026984;0.027352;0.027647;0.028023;0.028466;0.028817;0.02916;0.029435;0.029469;0.028848;0.026023;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.084654;0.085235;0.086693;0.087657;0.08974;0.091442;0.09248;0.093433;0.093064;0.090397;0.083402;0.068276;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.081077;0.08151;0.082851;0.083562;0.085688;0.087305;0.088328;0.089289;0.089105;0.086888;0.080908;0.067399;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.077648;0.0777;0.079141;0.079968;0.081944;0.083457;0.084455;0.085384;0.085312;0.083485;0.078393;0.066396;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.074354;0.074774;0.075888;0.076555;0.078389;0.079827;0.080822;0.081756;0.081792;0.080252;0.07585;0.065233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.071189;0.071605;0.072636;0.073283;0.074981;0.076341;0.077329;0.078264;0.078413;0.077169;0.073416;0.063947;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.068226;0.068269;0.06932;0.070146;0.071655;0.072998;0.073972;0.074903;0.075041;0.074162;0.07099;0.062576;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.065323;0.065363;0.066334;0.067157;0.068477;0.069789;0.070739;0.071669;0.071897;0.071231;0.068563;0.061219;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.062534;0.062572;0.063459;0.064264;0.065463;0.066706;0.067631;0.068553;0.068858;0.068379;0.066164;0.059769;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.059792;0.059828;0.060682;0.061391;0.062581;0.063749;0.064645;0.065552;0.065925;0.065605;0.063799;0.058303;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.057043;0.057077;0.057869;0.058524;0.059735;0.060841;0.061775;0.062688;0.063104;0.062917;0.061465;0.056701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.054414;0.054446;0.055316;0.055792;0.056909;0.057936;0.058822;0.059831;0.060421;0.060358;0.059198;0.055109;0.045573;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.051893;0.051924;0.052605;0.053178;0.054213;0.055167;0.056007;0.05696;0.057555;0.057698;0.056972;0.053476;0.045002;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.049479;0.049695;0.050159;0.050683;0.051639;0.052525;0.053321;0.054221;0.054803;0.054991;0.054624;0.05181;0.044345;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.047166;0.047382;0.047805;0.048295;0.04918;0.050002;0.050756;0.051608;0.052173;0.052395;0.052147;0.05033;0.043583;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.044952;0.045169;0.045558;0.046009;0.04683;0.047591;0.048305;0.04911;0.04966;0.049911;0.049764;0.048248;0.042566;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.042899;0.042923;0.043399;0.043831;0.044585;0.045291;0.045965;0.046727;0.047258;0.047532;0.04747;0.04622;0.041421;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.040931;0.041022;0.041353;0.041747;0.04244;0.043095;0.043732;0.044451;0.044963;0.045255;0.045264;0.044244;0.040202;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.038945;0.038966;0.039372;0.03975;0.040393;0.040998;0.041601;0.042279;0.042769;0.043076;0.043104;0.042319;0.038926;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.037046;0.037209;0.037489;0.037887;0.038429;0.038988;0.039561;0.040204;0.040673;0.040991;0.041072;0.040449;0.037599;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.035314;0.035333;0.035674;0.036048;0.036551;0.037065;0.037604;0.038211;0.038666;0.038991;0.039114;0.03863;0.036245;0.031053;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.033656;0.033714;0.03395;0.034287;0.034755;0.035231;0.035732;0.036305;0.036739;0.037072;0.037226;0.036862;0.034878;0.030765;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.031985;0.032001;0.032288;0.032605;0.033037;0.033478;0.033947;0.034487;0.034896;0.035233;0.035415;0.035154;0.033554;0.030289;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.03039;0.030405;0.0307;0.030999;0.031397;0.031804;0.032244;0.032752;0.03314;0.033474;0.033677;0.033507;0.032184;0.026724;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.029628;0.029643;0.02988;0.030169;0.030559;0.030954;0.031382;0.031875;0.032253;0.032575;0.032767;0.032594;0.031241;0.025818;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.028887;0.028901;0.029083;0.029363;0.029744;0.030128;0.030545;0.031025;0.031392;0.031704;0.031885;0.031707;0.03035;0.024916;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.02805;0.02813;0.02831;0.028579;0.028951;0.029326;0.029732;0.0302;0.03056;0.030858;0.03103;0.030842;0.029487;0.024042;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.027238;0.027383;0.027557;0.027817;0.02818;0.028547;0.028945;0.029402;0.029751;0.030037;0.030199;0.030003;0.028649;0.023194;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.02658;0.026592;0.02682;0.027059;0.027432;0.027792;0.028183;0.028628;0.028966;0.029241;0.029394;0.029189;0.027836;0.025318;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.025874;0.025948;0.02611;0.026342;0.026705;0.027058;0.027442;0.027876;0.028204;0.028469;0.028612;0.028398;0.027046;0.02451;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.082812;0.083435;0.084934;0.086456;0.088427;0.089943;0.090681;0.091065;0.089388;0.084103;0.072401;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.079153;0.079206;0.081137;0.082404;0.084289;0.085762;0.08668;0.086942;0.085603;0.08116;0.070881;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.075691;0.07627;0.077504;0.078705;0.080515;0.081937;0.08261;0.083092;0.081975;0.078193;0.069295;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.072502;0.072548;0.074072;0.075173;0.076908;0.078274;0.07897;0.079508;0.078635;0.075365;0.067562;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.069437;0.069788;0.071015;0.071628;0.073461;0.074775;0.07548;0.076066;0.075406;0.072639;0.065848;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.066366;0.066408;0.067705;0.06843;0.070166;0.071421;0.072132;0.072757;0.072283;0.069956;0.064072;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.06342;0.06385;0.064889;0.065424;0.067014;0.068212;0.068933;0.069578;0.069264;0.067324;0.062243;0.0513;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.060724;0.060761;0.061875;0.062505;0.063999;0.065141;0.06586;0.066523;0.066346;0.064746;0.060378;0.050583;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.058138;0.058173;0.05915;0.05983;0.061115;0.062198;0.062914;0.063588;0.063529;0.062224;0.058497;0.049791;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.055652;0.055684;0.056554;0.05724;0.058401;0.059443;0.060134;0.060796;0.060824;0.059787;0.05665;0.048895;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.053262;0.053293;0.054088;0.054714;0.05581;0.056811;0.057494;0.058157;0.058265;0.057446;0.054788;0.047953;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.050958;0.050986;0.051715;0.052349;0.053316;0.05428;0.054954;0.055616;0.055713;0.055164;0.052944;0.046963;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.048744;0.048955;0.04944;0.050047;0.050932;0.051848;0.052511;0.053164;0.053328;0.052929;0.051083;0.045897;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.046544;0.046569;0.047219;0.047828;0.048642;0.049509;0.050161;0.050803;0.051022;0.050752;0.049234;0.044754;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.044305;0.044328;0.044925;0.045442;0.046347;0.047185;0.0479;0.04853;0.048794;0.048632;0.0474;0.043562;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.042164;0.042187;0.042738;0.043219;0.04406;0.044829;0.045497;0.046227;0.046641;0.046569;0.04559;0.042319;0.034616;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.040113;0.040134;0.040655;0.041101;0.041876;0.042595;0.043218;0.04391;0.044327;0.044456;0.043807;0.041032;0.034249;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.038146;0.038309;0.038664;0.039068;0.039788;0.040464;0.041046;0.041702;0.042115;0.042237;0.041907;0.039708;0.033786;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.036303;0.036322;0.036747;0.037193;0.037791;0.038416;0.038972;0.039601;0.040008;0.04016;0.039923;0.038472;0.033166;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.034539;0.034645;0.034933;0.035328;0.03589;0.036466;0.036998;0.037589;0.037988;0.038167;0.038008;0.03681;0.032326;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.032853;0.032936;0.033195;0.03356;0.034079;0.034608;0.03511;0.035671;0.036058;0.036256;0.036168;0.03519;0.031452;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.031204;0.03122;0.031536;0.031879;0.032353;0.03284;0.033311;0.033841;0.034215;0.034424;0.034403;0.033623;0.030504;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.029655;0.02967;0.02996;0.030274;0.030707;0.031157;0.0316;0.032098;0.032456;0.032676;0.032708;0.032087;0.02951;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.028895;0.028909;0.02917;0.029474;0.029903;0.030344;0.030776;0.031262;0.03161;0.031824;0.03184;0.031212;0.028626;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.028113;0.028127;0.028401;0.028699;0.029122;0.029554;0.029977;0.030446;0.030783;0.030989;0.030969;0.030364;0.027779;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.027354;0.027464;0.027662;0.027945;0.028365;0.028789;0.029197;0.029652;0.029977;0.030175;0.030155;0.02954;0.026957;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.026615;0.026748;0.026941;0.027203;0.027632;0.028043;0.02844;0.02888;0.029196;0.029384;0.029357;0.02874;0.02616;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.025965;0.025977;0.026237;0.0265;0.026917;0.027316;0.027702;0.028131;0.028438;0.028618;0.028582;0.027964;0.025386;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.025333;0.025344;0.025562;0.025817;0.026217;0.026609;0.026986;0.027405;0.027702;0.027874;0.027831;0.027212;0.024633;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.082871;0.082918;0.084789;0.086561;0.088454;0.090114;0.090308;0.089728;0.085719;0.076256;0.059342;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.078908;0.078952;0.080865;0.082396;0.084193;0.085773;0.085735;0.085536;0.082127;0.073975;0.058639;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.075154;0.075361;0.077075;0.078676;0.080284;0.08174;0.082022;0.081676;0.078719;0.071676;0.058029;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.071652;0.071694;0.073417;0.074862;0.07652;0.077943;0.078262;0.07805;0.075563;0.069431;0.057149;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.068306;0.068346;0.070033;0.071308;0.07289;0.07422;0.074694;0.074501;0.072473;0.067218;0.056151;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.065106;0.065624;0.066774;0.06795;0.069454;0.070569;0.07122;0.071158;0.06952;0.065002;0.055124;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.062049;0.062594;0.063709;0.06476;0.066192;0.067329;0.067923;0.067946;0.066672;0.06277;0.054119;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.05943;0.059464;0.060772;0.061721;0.063088;0.064183;0.064776;0.064912;0.063883;0.060559;0.053034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.056913;0.057172;0.058046;0.058854;0.060144;0.061178;0.061675;0.061995;0.061189;0.05837;0.05187;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.054355;0.054385;0.055463;0.056198;0.057413;0.058367;0.05886;0.05922;0.058609;0.056258;0.050625;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.051898;0.052268;0.053114;0.05365;0.05482;0.055737;0.056232;0.056633;0.05617;0.054213;0.049314;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.049692;0.049719;0.050636;0.051112;0.052334;0.053211;0.053709;0.054139;0.053806;0.052167;0.047947;0.038892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.047573;0.047734;0.048432;0.048822;0.049946;0.050781;0.051284;0.051731;0.051517;0.050156;0.046537;0.038427;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.045376;0.0454;0.046144;0.046617;0.047683;0.048448;0.048954;0.049416;0.049301;0.048182;0.045095;0.037876;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.043271;0.043294;0.044014;0.044504;0.045441;0.046209;0.046717;0.047188;0.047157;0.04625;0.043666;0.037259;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.04139;0.041411;0.042004;0.042506;0.0433;0.044064;0.044569;0.045045;0.045085;0.044362;0.042191;0.036562;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.039575;0.039674;0.040079;0.040555;0.041283;0.042008;0.042506;0.042983;0.043082;0.042519;0.040709;0.035851;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.037692;0.03771;0.038192;0.038667;0.039345;0.040033;0.040524;0.040999;0.041095;0.040725;0.03922;0.035044;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.035889;0.036052;0.036403;0.036817;0.037483;0.038131;0.038611;0.039085;0.039229;0.038968;0.03774;0.034168;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.034072;0.034088;0.034525;0.03492;0.035592;0.036229;0.036737;0.037242;0.037424;0.037257;0.036273;0.033236;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.032339;0.032467;0.032767;0.033121;0.03373;0.03432;0.034804;0.03535;0.035649;0.035596;0.034826;0.032257;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.030684;0.030699;0.03107;0.03141;0.031967;0.032506;0.032973;0.033481;0.033775;0.033848;0.033397;0.031235;0.025969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.029106;0.029224;0.029474;0.029826;0.030296;0.030787;0.031227;0.031706;0.031999;0.03207;0.031817;0.030483;0.025622;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.02839;0.028403;0.028715;0.029062;0.02952;0.030003;0.030436;0.030901;0.031183;0.031277;0.030983;0.029627;0.024817;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.027649;0.027662;0.027977;0.028316;0.028767;0.029245;0.029666;0.030119;0.030393;0.030477;0.030175;0.02882;0.024046;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.026929;0.027048;0.027272;0.027561;0.028036;0.028511;0.028915;0.02936;0.029624;0.029702;0.029391;0.028036;0.023274;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.026229;0.02636;0.026578;0.026863;0.027333;0.027797;0.02819;0.028624;0.028879;0.028945;0.028631;0.027276;0.022543;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.025592;0.025603;0.025896;0.026185;0.026649;0.027101;0.027487;0.02791;0.028157;0.028181;0.027895;0.026538;0.021834;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.024973;0.02504;0.02525;0.025528;0.025982;0.026425;0.026805;0.027218;0.027458;0.027473;0.027181;0.025821;0.021144;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/core_mass_flow.csv b/engine/test/stubs/V2527-A5/core_mass_flow.csv
new file mode 100644
index 00000000..b87cb423
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/core_mass_flow.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;72.991;73.084;73.324;73.727;74.292;75.029;75.944;77.038;78.311;79.759;81.41;83.188;85.126;87.227;89.498;91.951;94.601;97.47;100.58;103.93;
+500;69.646;69.742;69.974;70.363;70.913;71.631;72.522;73.583;74.808;76.214;77.819;79.559;81.448;83.489;85.689;88.054;90.598;93.34;96.304;99.506;
+1000;66.409;66.509;66.731;67.106;67.637;68.331;69.186;70.207;71.397;72.759;74.284;76.005;77.852;79.842;81.978;84.266;86.717;89.347;92.175;95.229;
+1500;63.309;63.38;63.596;63.957;64.469;65.136;65.958;66.938;68.082;69.39;70.89;72.532;74.333;76.278;78.359;80.579;82.948;85.478;88.186;91.095;
+2000;60.277;60.348;60.557;60.908;61.404;62.046;62.834;63.776;64.875;66.127;67.566;69.144;70.883;72.785;74.823;76.985;79.282;81.724;84.325;87.106;
+2500;57.332;57.401;57.605;57.947;58.429;59.049;59.812;60.718;61.772;62.972;64.321;65.862;67.532;69.362;71.349;73.476;75.71;78.075;80.582;83.249;
+3000;54.469;54.536;54.735;55.067;55.534;56.137;56.876;57.753;58.769;59.921;61.214;62.687;64.288;66.042;67.955;70.019;72.217;74.522;76.948;79.514;
+3500;51.696;51.76;51.953;52.273;52.724;53.305;54.02;54.872;55.854;56.966;58.209;59.619;61.151;62.831;64.663;66.651;68.785;71.043;73.413;75.891;
+4000;49.011;49.073;49.259;49.567;50.001;50.561;51.25;52.071;53.02;54.096;55.297;56.656;58.121;59.728;61.482;63.385;65.44;67.635;69.946;72.365;
+4500;46.4;46.453;46.633;46.933;47.354;47.897;48.566;49.359;50.27;51.307;52.497;53.785;55.195;56.731;58.408;60.228;62.196;64.311;66.56;68.914;
+5000;43.884;43.918;44.092;44.38;44.785;45.307;45.951;46.716;47.599;48.603;49.751;50.996;52.359;53.839;55.441;57.18;59.06;61.087;63.255;65.548;
+5500;41.413;41.47;41.636;41.913;42.301;42.804;43.423;44.157;45.005;45.969;47.077;48.283;49.605;51.035;52.578;54.239;56.034;57.969;60.049;62.263;
+6000;39.038;39.077;39.266;39.531;39.904;40.386;40.98;41.684;42.498;43.424;44.488;45.645;46.917;48.305;49.805;51.404;53.117;54.963;56.947;59.072;
+6500;36.805;36.852;36.995;37.238;37.594;38.055;38.623;39.297;40.078;40.987;41.987;43.097;44.318;45.65;47.094;48.65;50.306;52.066;53.957;55.985;
+7000;34.704;34.75;34.886;35.112;35.43;35.844;36.361;37.002;37.746;38.614;39.573;40.638;41.808;43.085;44.47;45.965;47.568;49.272;51.077;53.008;
+7500;32.7;32.743;32.87;33.083;33.384;33.775;34.257;34.833;35.509;36.335;37.25;38.266;39.386;40.61;41.937;43.37;44.909;46.552;48.294;50.144;
+8000;30.788;30.818;30.947;31.148;31.431;31.799;32.253;32.795;33.427;34.152;35.015;35.987;37.057;38.225;39.494;40.866;42.34;43.918;45.595;47.368;
+8500;28.962;28.992;29.113;29.302;29.569;29.915;30.342;30.851;31.445;32.127;32.917;33.793;34.815;35.932;37.145;38.454;39.863;41.373;42.984;44.689;
+9000;27.223;27.258;27.364;27.542;27.793;28.119;28.52;28.999;29.557;30.197;30.939;31.759;32.672;33.726;34.884;36.136;37.481;38.921;40.461;42.099;
+9500;25.57;25.596;25.698;25.865;26.101;26.407;26.784;27.233;27.757;28.359;29.055;29.825;30.682;31.631;32.71;33.905;35.191;36.567;38.035;39.597;
+10000;23.989;24.021;24.114;24.271;24.492;24.777;25.13;25.559;26.053;26.62;27.263;27.984;28.787;29.677;30.658;31.76;32.987;34.301;35.704;37.195;
+10500;22.487;22.523;22.611;22.758;22.964;23.231;23.561;23.954;24.422;24.954;25.557;26.233;26.986;27.819;28.738;29.746;30.87;32.123;33.461;34.885;
+11000;21.072;21.1;21.182;21.32;21.513;21.763;22.071;22.438;22.867;23.37;23.934;24.567;25.273;26.053;26.913;27.856;28.887;30.031;31.306;32.664;
+11500;19.45;19.479;19.555;19.682;19.861;20.091;20.376;20.715;21.111;21.565;22.095;22.68;23.331;24.052;24.845;25.716;26.667;27.723;28.899;30.152;
+12000;17.952;17.983;18.054;18.171;18.335;18.548;18.811;19.124;19.489;19.909;20.398;20.938;21.539;22.204;22.936;23.74;24.618;25.593;26.679;27.835;
+12500;16.581;16.602;16.667;16.775;16.927;17.124;17.366;17.655;17.992;18.379;18.831;19.329;19.884;20.498;21.174;21.916;22.727;23.627;24.629;25.697;
+13000;15.315;15.33;15.387;15.487;15.628;15.809;16.033;16.299;16.61;16.968;17.384;17.844;18.357;18.923;19.547;20.232;20.981;21.811;22.736;23.722;
+13500;14.132;14.151;14.206;14.298;14.428;14.595;14.801;15.047;15.335;15.665;16.049;16.474;16.946;17.469;18.045;18.678;19.369;20.136;20.99;21.9;
+14000;13.048;13.065;13.116;13.201;13.32;13.475;13.665;13.892;14.157;14.461;14.817;15.208;15.645;16.127;16.659;17.243;17.881;18.589;19.377;20.217;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;67.787;67.844;68.041;68.37;68.829;69.424;70.161;71.045;72.086;73.293;74.699;76.253;77.982;79.877;81.944;84.187;86.614;89.237;92.068;95.119;
+500;64.85;64.92;65.111;65.428;65.875;66.454;67.17;68.028;69.028;70.208;71.527;73.012;74.662;76.482;78.467;80.621;82.949;85.461;88.168;91.084;
+1000;62.011;62.073;62.258;62.566;62.998;63.559;64.252;65.081;66.054;67.173;68.463;69.878;71.452;73.189;75.094;77.163;79.397;81.804;84.394;87.18;
+1500;59.254;59.297;59.477;59.776;60.197;60.742;61.414;62.218;63.16;64.26;65.482;66.846;68.352;70.008;71.825;73.809;75.954;78.262;80.742;83.405;
+2000;56.527;56.586;56.762;57.054;57.464;57.995;58.65;59.433;60.347;61.411;62.588;63.898;65.342;66.93;68.667;70.559;72.616;74.831;77.207;79.754;
+2500;53.873;53.937;54.109;54.395;54.797;55.315;55.956;56.72;57.609;58.64;59.779;61.04;62.426;63.945;65.605;67.419;69.382;71.505;73.783;76.223;
+3000;51.294;51.355;51.522;51.799;52.19;52.698;53.325;54.074;54.939;55.92;57.046;58.264;59.6;61.057;62.643;64.37;66.251;68.284;70.468;72.804;
+3500;48.797;48.851;49.012;49.279;49.657;50.149;50.758;51.489;52.334;53.29;54.385;55.566;56.856;58.259;59.781;61.429;63.218;65.159;67.258;69.496;
+4000;46.368;46.42;46.575;46.836;47.203;47.678;48.267;48.972;49.789;50.724;51.789;52.937;54.188;55.544;57.008;58.588;60.294;62.138;64.136;66.289;
+4500;44.01;44.06;44.208;44.457;44.81;45.271;45.844;46.527;47.322;48.222;49.254;50.374;51.59;52.904;54.319;55.839;57.471;59.229;61.125;63.174;
+5000;41.739;41.787;41.928;42.166;42.504;42.946;43.495;44.149;44.911;45.784;46.764;47.871;49.056;50.334;51.705;53.172;54.742;56.422;58.226;60.17;
+5500;39.55;39.596;39.732;39.961;40.284;40.707;41.23;41.855;42.585;43.419;44.357;45.422;46.575;47.828;49.161;50.583;52.096;53.71;55.433;57.279;
+6000;37.435;37.479;37.611;37.832;38.145;38.551;39.05;39.646;40.343;41.139;42.034;43.051;44.157;45.365;46.672;48.063;49.528;51.083;52.735;54.496;
+6500;35.392;35.435;35.563;35.777;36.08;36.471;36.95;37.52;38.184;38.942;39.796;40.746;41.82;42.977;44.235;45.589;47.024;48.536;50.126;51.811;
+7000;33.42;33.461;33.585;33.792;34.083;34.459;34.921;35.472;36.109;36.83;37.641;38.563;39.569;40.672;41.876;43.177;44.571;46.043;47.594;49.217;
+7500;31.519;31.559;31.678;31.877;32.156;32.516;32.959;33.489;34.101;34.796;35.573;36.449;37.402;38.452;39.599;40.843;42.183;43.612;45.115;46.692;
+8000;29.688;29.726;29.84;30.031;30.298;30.643;31.068;31.575;32.161;32.827;33.574;34.418;35.327;36.322;37.409;38.593;39.873;41.246;42.705;44.232;
+8500;27.923;27.96;28.069;28.252;28.507;28.838;29.246;29.731;30.291;30.927;31.642;32.454;33.328;34.278;35.31;36.432;37.647;38.958;40.36;41.842;
+9000;26.224;26.26;26.365;26.539;26.784;27.101;27.49;27.954;28.489;29.098;29.796;30.557;31.395;32.308;33.294;34.359;35.513;36.757;38.092;39.518;
+9500;24.596;24.62;24.724;24.891;25.125;25.428;25.801;26.243;26.755;27.336;28.004;28.731;29.531;30.405;31.353;32.371;33.464;34.644;35.913;37.27;
+10000;23.05;23.08;23.17;23.32;23.531;23.82;24.176;24.598;25.086;25.654;26.28;26.974;27.738;28.571;29.477;30.454;31.5;32.618;33.82;35.109;
+10500;21.603;21.635;21.719;21.86;22.057;22.314;22.633;23.019;23.482;24.024;24.622;25.284;26.013;26.809;27.672;28.605;29.607;30.675;31.814;33.036;
+11000;20.234;20.26;20.339;20.471;20.657;20.898;21.196;21.551;21.966;22.45;23.028;23.66;24.356;25.114;25.938;26.826;27.782;28.806;29.893;31.048;
+11500;18.676;18.703;18.776;18.898;19.069;19.292;19.567;19.895;20.278;20.725;21.259;21.842;22.484;23.184;23.944;24.765;25.647;26.592;27.594;28.661;
+12000;17.237;17.266;17.334;17.446;17.604;17.81;18.064;18.366;18.72;19.132;19.625;20.164;20.756;21.402;22.104;22.861;23.676;24.548;25.473;26.458;
+12500;15.919;15.94;16.002;16.105;16.251;16.441;16.676;16.955;17.281;17.662;18.117;18.614;19.161;19.758;20.405;21.104;21.856;22.661;23.516;24.424;
+13000;14.701;14.715;14.772;14.868;15.003;15.178;15.394;15.652;15.953;16.304;16.725;17.184;17.688;18.239;18.837;19.482;20.176;20.919;21.708;22.547;
+13500;13.567;13.585;13.637;13.726;13.85;14.012;14.212;14.45;14.727;15.052;15.44;15.863;16.329;16.838;17.39;17.985;18.626;19.312;20.04;20.814;
+14000;12.525;12.541;12.59;12.672;12.786;12.935;13.12;13.339;13.595;13.901;14.253;14.644;15.075;15.544;16.053;16.603;17.194;17.828;18.5;19.215;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;61.944;62.014;62.192;62.488;62.903;63.439;64.101;64.891;65.812;66.882;68.125;69.519;71.076;72.797;74.682;76.735;78.963;81.372;83.968;86.757;
+500;59.28;59.353;59.524;59.809;60.209;60.727;61.367;62.131;63.015;64.056;65.232;66.567;68.059;69.707;71.512;73.477;75.609;77.916;80.401;83.073;
+1000;56.702;56.774;56.938;57.211;57.596;58.093;58.707;59.442;60.299;61.288;62.435;63.713;65.139;66.716;68.443;70.323;72.363;74.569;76.949;79.504;
+1500;54.222;54.274;54.431;54.694;55.063;55.541;56.131;56.837;57.661;58.611;59.716;60.949;62.316;63.821;65.472;67.271;69.221;71.33;73.605;76.051;
+2000;51.804;51.855;52.005;52.256;52.609;53.068;53.635;54.313;55.107;56.02;57.083;58.263;59.575;61.021;62.599;64.317;66.183;68.198;70.371;72.709;
+2500;49.471;49.496;49.663;49.902;50.238;50.676;51.217;51.868;52.632;53.512;54.533;55.665;56.921;58.303;59.814;61.462;63.243;65.169;67.245;69.477;
+3000;47.223;47.269;47.405;47.632;47.952;48.368;48.884;49.505;50.236;51.083;52.065;53.15;54.353;55.674;57.118;58.689;60.397;62.241;64.223;66.354;
+3500;45.058;45.096;45.226;45.443;45.748;46.144;46.636;47.227;47.924;48.734;49.676;50.716;51.869;53.133;54.512;56.013;57.64;59.402;61.303;63.337;
+4000;42.934;42.977;43.102;43.312;43.606;43.989;44.463;45.032;45.696;46.471;47.367;48.361;49.465;50.674;51.993;53.426;54.979;56.656;58.469;60.419;
+4500;40.882;40.905;41.043;41.244;41.528;41.895;42.35;42.895;43.537;44.28;45.141;46.088;47.139;48.297;49.558;50.928;52.409;54.009;55.733;57.591;
+5000;38.89;38.929;39.045;39.24;39.513;39.868;40.306;40.83;41.446;42.157;42.979;43.886;44.895;45.998;47.204;48.513;49.928;51.453;53.095;54.862;
+5500;36.966;36.992;37.105;37.293;37.558;37.901;38.325;38.832;39.426;40.107;40.894;41.758;42.714;43.77;44.928;46.18;47.531;48.987;50.552;52.233;
+6000;35.072;35.109;35.218;35.401;35.658;35.991;36.403;36.894;37.469;38.125;38.881;39.706;40.616;41.617;42.716;43.915;45.217;46.606;48.098;49.698;
+6500;33.242;33.277;33.384;33.562;33.812;34.137;34.537;35.015;35.572;36.204;36.932;37.724;38.594;39.547;40.588;41.725;42.962;44.3;45.731;47.256;
+7000;31.467;31.501;31.604;31.775;32.018;32.333;32.723;33.189;33.73;34.343;35.045;35.807;36.641;37.552;38.542;39.619;40.791;42.061;43.431;44.897;
+7500;29.754;29.786;29.885;30.049;30.282;30.586;30.963;31.415;31.939;32.534;33.215;33.95;34.754;35.626;36.572;37.596;38.705;39.908;41.208;42.605;
+8000;28.104;28.135;28.229;28.387;28.61;28.901;29.264;29.698;30.201;30.777;31.435;32.147;32.924;33.765;34.672;35.649;36.702;37.84;39.07;40.396;
+8500;26.506;26.549;26.638;26.789;27.002;27.281;27.628;28.042;28.525;29.077;29.695;30.395;31.147;31.96;32.835;33.772;34.777;35.856;37.017;38.271;
+9000;24.999;25.027;25.113;25.257;25.46;25.727;26.056;26.45;26.91;27.437;28.028;28.696;29.421;30.209;31.054;31.957;32.921;33.95;35.051;36.233;
+9500;23.538;23.566;23.648;23.785;23.981;24.236;24.549;24.923;25.36;25.86;26.422;27.048;27.751;28.508;29.325;30.198;31.126;32.112;33.162;34.282;
+10000;22.13;22.156;22.236;22.369;22.557;22.801;23.101;23.458;23.873;24.346;24.879;25.474;26.143;26.864;27.648;28.492;29.389;30.338;31.342;32.408;
+10500;20.774;20.8;20.876;21.005;21.185;21.419;21.706;22.048;22.445;22.895;23.401;23.964;24.598;25.284;26.031;26.838;27.704;28.62;29.586;30.606;
+11000;19.473;19.497;19.571;19.693;19.866;20.089;20.363;20.69;21.069;21.5;21.991;22.527;23.118;23.767;24.476;25.244;26.072;26.955;27.887;28.867;
+11500;17.973;17.999;18.066;18.18;18.339;18.545;18.798;19.1;19.45;19.847;20.301;20.795;21.341;21.94;22.594;23.303;24.067;24.882;25.743;26.646;
+12000;16.589;16.615;16.678;16.782;16.929;17.119;17.353;17.632;17.955;18.321;18.74;19.197;19.7;20.253;20.857;21.512;22.217;22.969;23.763;24.597;
+12500;15.319;15.338;15.396;15.492;15.628;15.804;16.019;16.276;16.575;16.913;17.3;17.721;18.186;18.697;19.254;19.858;20.508;21.203;21.935;22.705;
+13000;14.147;14.159;14.213;14.302;14.427;14.589;14.788;15.025;15.301;15.613;15.97;16.359;16.788;17.259;17.774;18.331;18.932;19.572;20.248;20.958;
+13500;13.055;13.071;13.12;13.203;13.318;13.468;13.651;13.87;14.125;14.413;14.742;15.102;15.498;15.933;16.408;16.922;17.476;18.067;18.691;19.346;
+14000;12.052;12.067;12.113;12.189;12.295;12.433;12.603;12.805;13.039;13.305;13.609;13.941;14.307;14.708;15.146;15.621;16.133;16.678;17.253;17.858;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;56.343;56.401;56.563;56.832;57.208;57.695;58.294;59.011;59.85;60.816;61.915;63.165;64.552;66.097;67.799;69.657;71.672;73.85;76.201;78.729;
+500;53.928;53.99;54.144;54.401;54.763;55.23;55.805;56.494;57.296;58.22;59.274;60.474;61.805;63.29;64.923;66.704;68.634;70.719;72.967;75.388;
+1000;51.59;51.655;51.802;52.048;52.393;52.84;53.389;54.048;54.819;55.708;56.718;57.87;59.147;60.571;62.137;63.844;65.692;67.688;69.839;72.152;
+1500;49.347;49.393;49.534;49.769;50.1;50.527;51.052;51.681;52.419;53.269;54.239;55.349;56.575;57.939;59.438;61.074;62.844;64.754;66.811;69.023;
+2000;47.175;47.204;47.339;47.564;47.88;48.289;48.79;49.392;50.098;50.911;51.851;52.902;54.081;55.391;56.827;58.391;60.086;61.914;63.882;65.996;
+2500;45.044;45.088;45.216;45.431;45.733;46.123;46.602;47.178;47.853;48.63;49.53;50.537;51.668;52.92;54.296;55.795;57.416;59.166;61.048;63.069;
+3000;43.001;43.042;43.165;43.369;43.657;44.03;44.487;45.037;45.682;46.426;47.288;48.252;49.334;50.532;51.845;53.276;54.83;56.506;58.307;60.238;
+3500;41.014;41.054;41.172;41.369;41.647;42.006;42.445;42.968;43.585;44.296;45.12;46.043;47.079;48.224;49.478;50.844;52.325;53.928;55.656;57.502;
+4000;39.088;39.127;39.24;39.428;39.693;40.036;40.457;40.961;41.554;42.239;43.027;43.91;44.9;45.993;47.191;48.494;49.907;51.434;53.083;54.854;
+4500;37.23;37.266;37.374;37.554;37.806;38.134;38.537;39.018;39.584;40.237;40.996;41.847;42.796;43.839;44.982;46.225;47.572;49.028;50.598;52.287;
+5000;35.434;35.452;35.571;35.743;35.985;36.298;36.684;37.143;37.683;38.308;39.032;39.844;40.751;41.755;42.849;44.034;45.319;46.706;48.201;49.809;
+5500;33.7;33.734;33.832;33.996;34.227;34.526;34.895;35.334;35.85;36.447;37.129;37.914;38.778;39.732;40.778;41.916;43.144;44.467;45.89;47.42;
+6000;32.03;32.061;32.155;32.311;32.532;32.817;33.169;33.591;34.084;34.654;35.305;36.054;36.876;37.783;38.777;39.86;41.035;42.305;43.661;45.117;
+6500;30.424;30.453;30.542;30.69;30.899;31.17;31.506;31.909;32.38;32.926;33.55;34.263;35.045;35.907;36.851;37.879;38.996;40.204;41.505;42.898;
+7000;28.882;28.898;28.994;29.134;29.331;29.588;29.906;30.289;30.739;31.26;31.867;32.538;33.283;34.102;34.997;35.973;37.033;38.18;39.417;40.746;
+7500;27.4;27.427;27.507;27.64;27.827;28.07;28.371;28.734;29.161;29.657;30.235;30.875;31.585;32.364;33.215;34.141;35.145;36.232;37.407;38.669;
+8000;25.974;25.999;26.075;26.202;26.38;26.611;26.898;27.242;27.647;28.118;28.666;29.274;29.949;30.691;31.5;32.379;33.331;34.361;35.473;36.67;
+8500;24.597;24.621;24.694;24.815;24.986;25.207;25.48;25.809;26.195;26.642;27.161;27.736;28.375;29.079;29.848;30.684;31.588;32.564;33.617;34.75;
+9000;23.27;23.289;23.359;23.476;23.64;23.852;24.115;24.429;24.799;25.225;25.718;26.261;26.863;27.529;28.259;29.053;29.912;30.837;31.834;32.906;
+9500;21.989;21.998;22.066;22.179;22.337;22.543;22.796;23.1;23.457;23.862;24.332;24.847;25.416;26.043;26.731;27.484;28.299;29.178;30.122;31.137;
+10000;20.723;20.746;20.811;20.921;21.075;21.274;21.52;21.813;22.157;22.547;22.997;23.488;24.027;24.62;25.268;25.977;26.749;27.583;28.479;29.439;
+10500;19.511;19.532;19.595;19.7;19.849;20.043;20.282;20.568;20.9;21.277;21.71;22.179;22.693;23.256;23.868;24.535;25.261;26.05;26.899;27.809;
+11000;18.341;18.362;18.422;18.523;18.666;18.852;19.083;19.36;19.682;20.047;20.464;20.916;21.409;21.945;22.526;23.156;23.839;24.58;25.382;26.244;
+11500;16.929;16.95;17.006;17.099;17.231;17.403;17.616;17.872;18.169;18.505;18.89;19.307;19.762;20.256;20.793;21.375;22.005;22.689;23.43;24.226;
+12000;15.626;15.647;15.698;15.785;15.906;16.065;16.262;16.497;16.771;17.082;17.438;17.822;18.242;18.698;19.193;19.73;20.312;20.944;21.628;22.362;
+12500;14.428;14.444;14.492;14.571;14.683;14.83;15.011;15.229;15.482;15.768;16.096;16.451;16.838;17.26;17.717;18.213;18.75;19.333;19.964;20.642;
+13000;13.322;13.332;13.377;13.451;13.555;13.69;13.857;14.058;14.291;14.556;14.858;15.186;15.543;15.932;16.354;16.811;17.307;17.846;18.429;19.055;
+13500;12.295;12.309;12.35;12.417;12.513;12.637;12.792;12.977;13.192;13.442;13.716;14.017;14.347;14.706;15.096;15.518;15.976;16.473;17.011;17.589;
+14000;11.351;11.363;11.401;11.463;11.551;11.666;11.809;11.979;12.178;12.408;12.661;12.939;13.244;13.575;13.935;14.324;14.747;15.206;15.703;16.236;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;51.026;51.077;51.225;51.473;51.819;52.272;52.812;53.458;54.206;55.067;56.03;57.136;58.365;59.727;61.242;62.917;64.747;66.729;68.865;71.166;
+500;48.843;48.89;49.033;49.269;49.601;50.034;50.555;51.176;51.894;52.719;53.64;54.699;55.876;57.182;58.635;60.24;61.992;63.889;65.934;68.134;
+1000;46.744;46.774;46.91;47.136;47.453;47.867;48.366;48.961;49.652;50.435;51.328;52.342;53.468;54.721;56.113;57.65;59.326;61.141;63.097;65.201;
+1500;44.714;44.725;44.855;45.071;45.374;45.769;46.247;46.817;47.48;48.231;49.087;50.061;51.14;52.342;53.675;55.144;56.746;58.481;60.352;62.363;
+2000;42.701;42.743;42.866;43.073;43.362;43.739;44.196;44.742;45.378;46.099;46.928;47.852;48.885;50.04;51.318;52.721;54.252;55.909;57.696;59.618;
+2500;40.758;40.826;40.944;41.14;41.417;41.775;42.213;42.735;43.344;44.037;44.83;45.715;46.705;47.809;49.036;50.381;51.841;53.422;55.128;56.964;
+3000;38.93;38.968;39.081;39.27;39.535;39.877;40.295;40.794;41.377;42.041;42.802;43.649;44.597;45.654;46.827;48.112;49.51;51.02;52.647;54.399;
+3500;37.127;37.163;37.271;37.451;37.704;38.031;38.433;38.913;39.474;40.112;40.84;41.651;42.559;43.572;44.693;45.92;47.253;48.695;50.251;51.922;
+4000;35.387;35.422;35.525;35.696;35.936;36.246;36.63;37.087;37.622;38.237;38.938;39.721;40.591;41.561;42.632;43.803;45.075;46.449;47.931;49.528;
+4500;33.709;33.742;33.84;34.002;34.231;34.525;34.89;35.326;35.835;36.422;37.092;37.841;38.681;39.618;40.641;41.759;42.971;44.282;45.693;47.213;
+5000;32.093;32.124;32.216;32.371;32.587;32.867;33.213;33.628;34.112;34.671;35.312;36.027;36.83;37.726;38.712;39.786;40.941;42.189;43.535;44.981;
+5500;30.534;30.564;30.652;30.799;31.005;31.269;31.598;31.992;32.453;32.985;33.588;34.278;35.045;35.9;36.841;37.867;38.977;40.171;41.452;42.829;
+6000;29.03;29.06;29.144;29.283;29.479;29.731;30.043;30.417;30.855;31.36;31.936;32.595;33.326;34.14;35.036;36.014;37.072;38.214;39.443;40.754;
+6500;27.584;27.61;27.69;27.822;28.009;28.248;28.545;28.9;29.316;29.797;30.345;30.973;31.67;32.446;33.298;34.227;35.235;36.323;37.492;38.748;
+7000;26.19;26.214;26.29;26.415;26.592;26.82;27.101;27.44;27.835;28.292;28.821;29.413;30.077;30.814;31.624;32.507;33.465;34.499;35.612;36.807;
+7500;24.836;24.87;24.941;25.061;25.229;25.446;25.713;26.034;26.41;26.844;27.347;27.911;28.544;29.244;30.013;30.852;31.761;32.744;33.802;34.938;
+8000;23.554;23.576;23.644;23.758;23.917;24.123;24.376;24.681;25.038;25.451;25.931;26.468;27.069;27.734;28.464;29.259;30.121;31.054;32.059;33.139;
+8500;22.321;22.332;22.397;22.505;22.656;22.852;23.092;23.382;23.721;24.112;24.567;25.079;25.651;26.283;26.974;27.727;28.545;29.429;30.382;31.407;
+9000;21.116;21.136;21.198;21.3;21.444;21.631;21.859;22.133;22.455;22.827;23.259;23.744;24.286;24.886;25.543;26.257;27.03;27.868;28.771;29.741;
+9500;19.967;19.987;20.045;20.142;20.279;20.456;20.674;20.935;21.24;21.594;21.998;22.464;22.977;23.544;24.166;24.843;25.576;26.368;27.223;28.142;
+10000;18.866;18.877;18.937;19.029;19.159;19.327;19.535;19.783;20.074;20.41;20.794;21.237;21.722;22.258;22.844;23.484;24.178;24.928;25.736;26.606;
+10500;17.807;17.825;17.877;17.963;18.085;18.244;18.441;18.677;18.954;19.274;19.64;20.06;20.519;21.025;21.578;22.182;22.838;23.547;24.31;25.131;
+11000;16.797;16.816;16.864;16.946;17.06;17.21;17.395;17.617;17.879;18.183;18.538;18.93;19.365;19.843;20.366;20.935;21.553;22.222;22.943;23.718;
+11500;15.505;15.522;15.567;15.642;15.748;15.886;16.056;16.262;16.503;16.785;17.112;17.474;17.876;18.317;18.799;19.325;19.895;20.513;21.179;21.894;
+12000;14.311;14.328;14.369;14.439;14.536;14.663;14.821;15.011;15.234;15.493;15.796;16.13;16.501;16.908;17.353;17.838;18.365;18.935;19.55;20.21;
+12500;13.213;13.226;13.264;13.328;13.418;13.535;13.681;13.856;14.062;14.302;14.581;14.889;15.231;15.607;16.018;16.466;16.952;17.478;18.046;18.655;
+13000;12.196;12.208;12.243;12.302;12.386;12.494;12.628;12.79;12.98;13.201;13.459;13.744;14.06;14.407;14.786;15.199;15.648;16.134;16.658;17.221;
+13500;11.258;11.269;11.301;11.356;11.432;11.532;11.656;11.805;11.981;12.185;12.423;12.686;12.978;13.298;13.649;14.03;14.444;14.893;15.376;15.896;
+14000;10.39;10.401;10.431;10.482;10.552;10.645;10.759;10.897;11.059;11.247;11.467;11.709;11.979;12.274;12.598;12.95;13.333;13.747;14.194;14.673;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;46.051;46.093;46.23;46.458;46.782;47.19;47.675;48.251;48.929;49.7;50.58;51.554;52.63;53.821;55.139;56.593;58.205;59.97;61.878;63.934;
+500;44.066;44.107;44.238;44.455;44.765;45.156;45.62;46.173;46.821;47.559;48.402;49.338;50.371;51.515;52.784;54.182;55.731;57.424;59.253;61.219;
+1000;42.151;42.187;42.312;42.519;42.815;43.187;43.632;44.161;44.782;45.489;46.297;47.196;48.185;49.284;50.504;51.848;53.335;54.958;56.71;58.591;
+1500;40.304;40.332;40.451;40.648;40.93;41.284;41.71;42.216;42.809;43.486;44.258;45.126;46.073;47.126;48.298;49.59;51.017;52.57;54.248;56.048;
+2000;38.502;38.54;38.653;38.841;39.11;39.447;39.854;40.337;40.904;41.55;42.288;43.117;44.028;45.04;46.165;47.406;48.773;50.26;51.864;53.587;
+2500;36.764;36.808;36.916;37.095;37.351;37.672;38.061;38.523;39.056;39.68;40.385;41.177;42.051;43.02;44.101;45.294;46.603;48.025;49.558;51.206;
+3000;35.088;35.123;35.226;35.398;35.644;35.952;36.327;36.771;37.281;37.875;38.548;39.304;40.142;41.069;42.105;43.247;44.503;45.864;47.329;48.902;
+3500;33.471;33.496;33.594;33.758;33.993;34.286;34.644;35.069;35.559;36.128;36.774;37.496;38.299;39.191;40.177;41.271;42.471;43.772;45.174;46.677;
+4000;31.895;31.926;32.02;32.176;32.399;32.679;33.021;33.427;33.894;34.436;35.051;35.745;36.518;37.373;38.317;39.362;40.506;41.749;43.087;44.525;
+4500;30.377;30.413;30.503;30.651;30.862;31.129;31.455;31.843;32.29;32.805;33.391;34.058;34.789;35.611;36.519;37.52;38.611;39.795;41.071;42.442;
+5000;28.926;28.954;29.039;29.18;29.381;29.635;29.946;30.316;30.742;31.233;31.791;32.426;33.122;33.908;34.776;35.736;36.783;37.91;39.126;40.432;
+5500;27.528;27.547;27.628;27.762;27.952;28.194;28.491;28.844;29.252;29.724;30.249;30.854;31.524;32.268;33.095;34.01;35.008;36.088;37.249;38.494;
+6000;26.165;26.191;26.268;26.395;26.576;26.806;27.089;27.425;27.815;28.264;28.765;29.34;29.979;30.689;31.478;32.348;33.298;34.325;35.432;36.622;
+6500;24.86;24.884;24.957;25.078;25.249;25.469;25.738;26.058;26.43;26.858;27.335;27.883;28.491;29.168;29.921;30.748;31.65;32.627;33.679;34.81;
+7000;23.593;23.623;23.692;23.807;23.969;24.178;24.435;24.741;25.097;25.504;25.958;26.48;27.059;27.704;28.421;29.208;30.064;30.991;31.992;33.066;
+7500;22.388;22.41;22.475;22.584;22.737;22.935;23.178;23.469;23.808;24.197;24.63;25.13;25.681;26.296;26.978;27.725;28.539;29.418;30.367;31.388;
+8000;21.231;21.244;21.306;21.409;21.553;21.74;21.97;22.246;22.568;22.934;23.356;23.826;24.353;24.94;25.59;26.299;27.07;27.905;28.804;29.772;
+8500;20.104;20.125;20.183;20.28;20.416;20.593;20.811;21.071;21.376;21.724;22.125;22.572;23.074;23.633;24.251;24.928;25.659;26.45;27.302;28.219;
+9000;19.023;19.05;19.105;19.197;19.325;19.492;19.698;19.944;20.232;20.563;20.942;21.367;21.844;22.377;22.963;23.604;24.3;25.051;25.859;26.727;
+9500;18.001;18.018;18.07;18.157;18.278;18.435;18.63;18.862;19.135;19.448;19.808;20.211;20.664;21.169;21.726;22.334;22.992;23.704;24.469;25.294;
+10000;17.021;17.028;17.077;17.159;17.274;17.422;17.606;17.825;18.083;18.38;18.716;19.103;19.532;20.011;20.538;21.114;21.737;22.41;23.135;23.914;
+10500;16.063;16.079;16.125;16.202;16.31;16.45;16.624;16.831;17.074;17.355;17.674;18.041;18.447;18.9;19.398;19.943;20.532;21.169;21.855;22.591;
+11000;15.144;15.169;15.213;15.286;15.388;15.519;15.683;15.879;16.108;16.374;16.681;17.024;17.409;17.837;18.307;18.82;19.377;19.979;20.627;21.323;
+11500;13.988;14.002;14.042;14.11;14.204;14.326;14.477;14.658;14.869;15.114;15.398;15.714;16.07;16.465;16.899;17.372;17.887;18.442;19.041;19.683;
+12000;12.919;12.925;12.962;13.024;13.111;13.224;13.363;13.53;13.726;13.951;14.213;14.505;14.833;15.198;15.599;16.036;16.511;17.024;17.576;18.169;
+12500;11.918;11.93;11.964;12.022;12.102;12.206;12.335;12.489;12.67;12.878;13.116;13.389;13.692;14.029;14.399;14.803;15.241;15.714;16.224;16.772;
+13000;11;11.01;11.042;11.095;11.169;11.265;11.384;11.526;11.693;11.885;12.109;12.359;12.639;12.95;13.291;13.664;14.068;14.506;14.976;15.482;
+13500;10.151;10.162;10.191;10.24;10.308;10.396;10.506;10.637;10.791;10.969;11.176;11.406;11.664;11.952;12.267;12.612;12.986;13.39;13.825;14.291;
+14000;9.3661;9.3783;9.4052;9.4502;9.5133;9.5948;9.6962;9.8172;9.9592;10.123;10.314;10.526;10.765;11.03;11.321;11.639;11.984;12.358;12.76;13.192;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;41.524;41.567;41.693;41.901;42.199;42.555;42.992;43.498;44.102;44.782;45.534;46.365;47.277;48.276;49.396;50.634;52.011;53.544;55.241;57.082;
+500;39.715;39.759;39.88;40.079;40.355;40.705;41.124;41.61;42.189;42.842;43.568;44.364;45.243;46.206;47.264;48.469;49.791;51.264;52.89;54.652;
+1000;37.973;38.012;38.127;38.317;38.581;38.915;39.316;39.783;40.339;40.966;41.659;42.43;43.274;44.205;45.224;46.375;47.644;49.057;50.614;52.3;
+1500;36.293;36.323;36.432;36.615;36.866;37.186;37.569;38.016;38.549;39.151;39.817;40.559;41.371;42.268;43.248;44.351;45.569;46.925;48.413;50.025;
+2000;34.656;34.691;34.795;34.97;35.209;35.514;35.881;36.309;36.819;37.396;38.036;38.748;39.529;40.392;41.339;42.395;43.564;44.863;46.285;47.825;
+2500;33.075;33.109;33.209;33.377;33.606;33.899;34.251;34.66;35.148;35.701;36.316;36.998;37.748;38.576;39.49;40.503;41.626;42.871;44.23;45.698;
+3000;31.548;31.58;31.675;31.835;32.06;32.333;32.669;33.063;33.532;34.064;34.654;35.308;36.028;36.821;37.699;38.67;39.752;40.946;42.244;43.644;
+3500;30.077;30.105;30.196;30.348;30.562;30.822;31.143;31.519;31.966;32.476;33.044;33.674;34.366;35.126;35.971;36.902;37.937;39.082;40.325;41.66;
+4000;28.662;28.684;28.771;28.915;29.119;29.367;29.672;30.031;30.457;30.944;31.489;32.091;32.757;33.487;34.3;35.194;36.185;37.28;38.467;39.744;
+4500;27.3;27.314;27.396;27.534;27.728;27.965;28.256;28.598;29.003;29.467;29.991;30.565;31.202;31.902;32.682;33.544;34.494;35.54;36.673;37.89;
+5000;25.969;25.995;26.073;26.204;26.387;26.613;26.891;27.218;27.603;28.045;28.544;29.093;29.703;30.374;31.119;31.947;32.858;33.859;34.941;36.101;
+5500;24.69;24.725;24.798;24.923;25.097;25.311;25.576;25.888;26.254;26.676;27.152;27.676;28.258;28.902;29.619;30.407;31.28;32.233;33.264;34.375;
+6000;23.475;23.499;23.569;23.687;23.852;24.058;24.311;24.608;24.956;25.357;25.811;26.313;26.867;27.482;28.168;28.922;29.756;30.666;31.648;32.703;
+6500;22.295;22.317;22.384;22.496;22.652;22.847;23.088;23.371;23.703;24.088;24.52;25;25.528;26.115;26.77;27.491;28.288;29.155;30.09;31.093;
+7000;21.163;21.182;21.245;21.351;21.499;21.684;21.912;22.182;22.496;22.861;23.273;23.734;24.24;24.8;25.425;26.113;26.872;27.698;28.588;29.543;
+7500;20.077;20.091;20.151;20.251;20.391;20.567;20.783;21.039;21.34;21.682;22.073;22.511;22.993;23.53;24.13;24.787;25.509;26.294;27.141;28.049;
+8000;19.035;19.042;19.1;19.195;19.327;19.494;19.699;19.941;20.226;20.55;20.92;21.336;21.794;22.305;22.878;23.507;24.197;24.943;25.747;26.61;
+8500;18.02;18.038;18.091;18.181;18.305;18.463;18.658;18.888;19.158;19.463;19.813;20.207;20.644;21.134;21.674;22.273;22.929;23.639;24.406;25.225;
+9000;17.048;17.073;17.123;17.207;17.325;17.475;17.659;17.878;18.133;18.422;18.752;19.125;19.54;20.006;20.519;21.087;21.71;22.384;23.109;23.889;
+9500;16.13;16.146;16.194;16.273;16.385;16.527;16.701;16.909;17.15;17.423;17.735;18.088;18.481;18.923;19.41;19.95;20.539;21.177;21.865;22.603;
+10000;15.251;15.257;15.302;15.378;15.483;15.617;15.782;15.979;16.205;16.466;16.761;17.099;17.467;17.886;18.347;18.858;19.415;20.019;20.67;21.368;
+10500;14.392;14.406;14.448;14.519;14.618;14.745;14.902;15.088;15.302;15.548;15.827;16.147;16.499;16.892;17.329;17.812;18.338;18.908;19.523;20.184;
+11000;13.571;13.59;13.63;13.697;13.79;13.91;14.058;14.234;14.437;14.669;14.933;15.235;15.569;15.941;16.355;16.81;17.307;17.844;18.424;19.048;
+11500;12.532;12.545;12.582;12.643;12.729;12.84;12.977;13.139;13.326;13.541;13.785;14.063;14.372;14.715;15.097;15.517;15.976;16.472;17.007;17.583;
+12000;11.567;11.578;11.612;11.669;11.749;11.851;11.978;12.128;12.301;12.499;12.724;12.982;13.266;13.583;13.936;14.324;14.747;15.205;15.7;16.231;
+12500;10.673;10.684;10.715;10.768;10.841;10.936;11.053;11.191;11.351;11.535;11.747;11.982;12.246;12.538;12.864;13.222;13.613;14.036;14.492;14.983;
+13000;9.8483;9.8586;9.8875;9.936;10.004;10.091;10.199;10.327;10.474;10.644;10.839;11.056;11.299;11.57;11.872;12.204;12.566;12.957;13.378;13.831;
+13500;9.0861;9.0974;9.1241;9.1688;9.2313;9.3119;9.4111;9.5292;9.6652;9.8214;10.001;10.201;10.426;10.675;10.954;11.26;11.594;11.957;12.348;12.767;
+14000;8.3865;8.3947;8.4193;8.4605;8.5182;8.5925;8.6839;8.7928;8.9182;9.0622;9.228;9.4126;9.6194;9.8497;10.106;10.389;10.697;11.031;11.391;11.78;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;37.356;37.398;37.512;37.7;37.96;38.279;38.662;39.111;39.628;40.208;40.847;41.549;42.31;43.179;44.131;45.189;46.366;47.676;49.136;50.764;
+500;35.716;35.76;35.868;36.048;36.296;36.601;36.968;37.399;37.895;38.452;39.065;39.74;40.475;41.306;42.22;43.236;44.366;45.625;47.029;48.591;
+1000;34.143;34.177;34.281;34.452;34.689;34.981;35.331;35.743;36.221;36.755;37.344;37.993;38.701;39.495;40.374;41.349;42.433;43.642;44.991;46.488;
+1500;32.615;32.648;32.747;32.911;33.136;33.415;33.75;34.145;34.603;35.116;35.679;36.304;36.986;37.746;38.59;39.525;40.566;41.725;43.021;44.454;
+2000;31.141;31.17;31.265;31.422;31.637;31.903;32.224;32.601;33.039;33.525;34.072;34.671;35.326;36.056;36.866;37.763;38.761;39.873;41.116;42.487;
+2500;29.712;29.738;29.828;29.979;30.185;30.44;30.748;31.11;31.531;31.996;32.522;33.094;33.723;34.423;35.2;36.062;37.019;38.085;39.275;40.587;
+3000;28.329;28.358;28.444;28.587;28.783;29.027;29.321;29.667;30.071;30.519;31.025;31.574;32.175;32.846;33.591;34.417;35.335;36.358;37.498;38.75;
+3500;26.998;27.028;27.11;27.247;27.433;27.666;27.946;28.276;28.663;29.093;29.577;30.106;30.683;31.316;32.039;32.813;33.708;34.689;35.783;36.977;
+4000;25.719;25.745;25.823;25.954;26.131;26.353;26.621;26.937;27.307;27.718;28.18;28.688;29.242;29.85;30.542;31.3;32.14;33.077;34.123;35.265;
+4500;24.488;24.507;24.581;24.706;24.876;25.088;25.344;25.645;25.999;26.398;26.834;27.319;27.853;28.435;29.094;29.822;30.628;31.524;32.521;33.61;
+5000;23.289;23.313;23.385;23.504;23.665;23.868;24.113;24.4;24.739;25.12;25.538;26.002;26.513;27.073;27.699;28.395;29.168;30.026;30.979;32.014;
+5500;22.135;22.157;22.225;22.34;22.494;22.688;22.924;23.2;23.525;23.89;24.29;24.734;25.222;25.76;26.356;27.021;27.759;28.581;29.489;30.476;
+6000;21.026;21.045;21.109;21.218;21.364;21.55;21.774;22.037;22.349;22.7;23.086;23.512;23.979;24.494;25.064;25.697;26.403;27.188;28.054;28.992;
+6500;19.963;19.969;20.036;20.14;20.279;20.455;20.669;20.919;21.216;21.552;21.92;22.33;22.779;23.276;23.816;24.424;25.097;25.846;26.671;27.564;
+7000;18.929;18.948;19.006;19.104;19.236;19.403;19.606;19.844;20.128;20.447;20.799;21.19;21.619;22.095;22.618;23.2;23.841;24.555;25.339;26.187;
+7500;17.938;17.961;18.016;18.109;18.233;18.392;18.585;18.816;19.082;19.386;19.723;20.094;20.504;20.958;21.458;22.014;22.63;23.313;24.057;24.862;
+8000;16.997;17.014;17.066;17.154;17.271;17.422;17.605;17.824;18.077;18.366;18.688;19.042;19.433;19.866;20.343;20.873;21.461;22.112;22.822;23.587;
+8500;16.095;16.101;16.154;16.238;16.349;16.491;16.665;16.872;17.112;17.388;17.695;18.031;18.404;18.816;19.272;19.774;20.338;20.957;21.63;22.356;
+9000;15.22;15.235;15.281;15.361;15.465;15.6;15.764;15.96;16.187;16.449;16.74;17.061;17.416;17.808;18.243;18.723;19.258;19.847;20.485;21.172;
+9500;14.383;14.402;14.445;14.519;14.618;14.745;14.9;15.086;15.301;15.548;15.826;16.131;16.469;16.845;17.255;17.712;18.222;18.781;19.386;20.036;
+10000;13.59;13.603;13.644;13.714;13.807;13.927;14.074;14.246;14.452;14.686;14.951;15.239;15.561;15.918;16.308;16.746;17.228;17.757;18.33;18.945;
+10500;12.832;12.836;12.878;12.944;13.031;13.145;13.283;13.446;13.64;13.861;14.111;14.385;14.69;15.03;15.404;15.817;16.275;16.775;17.317;17.899;
+11000;12.097;12.109;12.146;12.207;12.29;12.396;12.527;12.68;12.863;13.071;13.307;13.567;13.856;14.176;14.534;14.927;15.361;15.835;16.346;16.896;
+11500;11.164;11.175;11.209;11.266;11.342;11.441;11.562;11.705;11.873;12.066;12.284;12.524;12.791;13.089;13.416;13.779;14.18;14.617;15.089;15.597;
+12000;10.301;10.311;10.342;10.394;10.465;10.556;10.668;10.799;10.955;11.134;11.336;11.558;11.806;12.082;12.384;12.719;13.09;13.493;13.928;14.398;
+12500;9.5033;9.5131;9.5419;9.5901;9.6552;9.7395;9.8422;9.9632;10.107;10.271;10.458;10.663;10.891;11.147;11.428;11.739;12.083;12.455;12.857;13.291;
+13000;8.767;8.7767;8.8032;8.8476;8.9076;8.9852;9.0799;9.1913;9.324;9.4756;9.6472;9.8363;10.047;10.283;10.542;10.829;11.146;11.493;11.866;12.268;
+13500;8.0888;8.0968;8.1213;8.1623;8.2175;8.289;8.3763;8.4791;8.6014;8.7412;8.8995;9.0738;9.2682;9.4851;9.7239;9.9885;10.282;10.601;10.946;11.317;
+14000;7.4624;7.4694;7.492;7.5298;7.5806;7.6466;7.7271;7.8218;7.9346;8.0636;8.2095;8.3703;8.5495;8.7493;8.9694;9.2135;9.4836;9.7782;10.096;10.439;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;33.559;33.595;33.698;33.867;34.096;34.378;34.708;35.1;35.54;36.027;36.56;37.136;37.791;38.519;39.324;40.213;41.194;42.313;43.536;44.907;
+500;32.076;32.109;32.207;32.368;32.587;32.857;33.173;33.549;33.972;34.441;34.953;35.507;36.134;36.833;37.606;38.461;39.404;40.48;41.655;42.974;
+1000;30.647;30.673;30.767;30.921;31.13;31.388;31.691;32.052;32.458;32.908;33.401;33.935;34.533;35.203;35.946;36.766;37.674;38.708;39.836;41.103;
+1500;29.27;29.288;29.378;29.525;29.724;29.971;30.26;30.606;30.995;31.427;31.9;32.416;33.004;33.63;34.343;35.132;36.003;36.995;38.079;39.295;
+2000;27.936;27.947;28.033;28.174;28.365;28.602;28.88;29.211;29.585;29.999;30.453;30.947;31.509;32.111;32.795;33.552;34.389;35.341;36.381;37.549;
+2500;26.626;26.653;26.735;26.869;27.051;27.277;27.543;27.862;28.221;28.62;29.057;29.532;30.067;30.643;31.299;32.027;32.831;33.744;34.742;35.862;
+3000;25.367;25.406;25.484;25.612;25.785;26.001;26.255;26.559;26.903;27.286;27.706;28.165;28.678;29.229;29.856;30.569;31.326;32.202;33.159;34.233;
+3500;24.179;24.204;24.278;24.4;24.565;24.771;25.014;25.304;25.633;25.999;26.402;26.843;27.333;27.864;28.48;29.148;29.889;30.711;31.631;32.661;
+4000;23.036;23.045;23.116;23.232;23.389;23.586;23.817;24.095;24.409;24.759;25.146;25.567;26.036;26.544;27.121;27.776;28.488;29.275;30.155;31.142;
+4500;21.904;21.926;21.993;22.105;22.255;22.444;22.665;22.93;23.231;23.565;23.935;24.339;24.787;25.273;25.838;26.452;27.133;27.889;28.733;29.676;
+5000;20.822;20.843;20.907;21.014;21.156;21.336;21.549;21.805;22.095;22.415;22.769;23.156;23.584;24.049;24.588;25.175;25.827;26.551;27.359;28.263;
+5500;19.785;19.802;19.863;19.964;20.099;20.271;20.473;20.717;20.994;21.302;21.643;22.017;22.426;22.871;23.385;23.946;24.569;25.262;26.034;26.897;
+6000;18.79;18.795;18.859;18.955;19.083;19.246;19.439;19.671;19.935;20.229;20.554;20.912;21.298;21.735;22.218;22.763;23.358;24.02;24.758;25.581;
+6500;17.821;17.839;17.894;17.985;18.107;18.262;18.445;18.666;18.917;19.198;19.508;19.849;20.219;20.643;21.107;21.623;22.193;22.825;23.53;24.314;
+7000;16.894;16.915;16.967;17.054;17.169;17.317;17.491;17.7;17.939;18.207;18.504;18.828;19.183;19.585;20.028;20.519;21.065;21.674;22.348;23.095;
+7500;16.006;16.028;16.077;16.159;16.269;16.409;16.574;16.773;17.001;17.256;17.539;17.849;18.188;18.569;18.991;19.459;19.979;20.559;21.206;21.921;
+8000;15.156;15.176;15.223;15.301;15.404;15.537;15.695;15.884;16.1;16.343;16.612;16.909;17.232;17.594;17.995;18.441;18.936;19.488;20.104;20.783;
+8500;14.342;14.359;14.404;14.477;14.575;14.701;14.852;15.031;15.237;15.468;15.723;16.006;16.314;16.658;17.04;17.464;17.935;18.46;19.046;19.69;
+9000;13.566;13.577;13.618;13.688;13.781;13.9;14.043;14.214;14.409;14.629;14.871;15.14;15.435;15.76;16.124;16.527;16.975;17.474;18.031;18.641;
+9500;12.813;12.827;12.866;12.932;13.02;13.133;13.268;13.43;13.616;13.825;14.055;14.31;14.591;14.9;15.245;15.628;16.054;16.529;17.057;17.634;
+10000;12.095;12.109;12.146;12.208;12.291;12.398;12.526;12.68;12.856;13.053;13.274;13.516;13.783;14.075;14.404;14.768;15.172;15.622;16.123;16.668;
+10500;11.41;11.422;11.457;11.516;11.594;11.695;11.816;11.962;12.13;12.317;12.526;12.756;13.01;13.289;13.6;13.939;14.327;14.755;15.228;15.743;
+11000;10.749;10.761;10.794;10.849;10.924;11.02;11.135;11.274;11.434;11.612;11.811;12.029;12.27;12.535;12.83;13.157;13.519;13.924;14.372;14.857;
+11500;9.9161;9.9266;9.9577;10.008;10.077;10.165;10.272;10.399;10.547;10.713;10.897;11.101;11.326;11.572;11.843;12.145;12.48;12.853;13.267;13.715;
+12000;9.1468;9.1569;9.1856;9.2324;9.2956;9.3769;9.4746;9.5921;9.728;9.8809;10.051;10.239;10.446;10.674;10.927;11.208;11.52;11.865;12.247;12.661;
+12500;8.4361;8.446;8.4725;8.5156;8.5738;8.6487;8.7387;8.8472;8.9727;9.1134;9.2705;9.4436;9.6346;9.8451;10.078;10.337;10.625;10.947;11.302;11.688;
+13000;7.782;7.79;7.8144;7.8542;7.9078;7.9769;8.06;8.1602;8.2759;8.4057;8.5507;8.7104;8.8865;9.0805;9.2955;9.5345;9.8003;10.097;10.425;10.78;
+13500;7.1783;7.1803;7.2074;7.2441;7.2937;7.3574;7.434;7.5265;7.6332;7.7528;7.8867;8.0336;8.1962;8.375;8.5734;8.794;9.0392;9.3125;9.615;9.9432;
+14000;6.6199;6.6267;6.6476;6.6814;6.727;6.7858;6.8565;6.9418;7.0403;7.1505;7.2741;7.4097;7.5595;7.7239;7.9074;8.111;8.3372;8.5892;8.8681;9.1707;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;30.059;30.093;30.185;30.335;30.535;30.779;31.063;31.39;31.756;32.164;32.604;33.11;33.667;34.262;34.919;35.64;36.455;37.365;38.398;39.529;
+500;28.726;28.757;28.846;28.989;29.179;29.411;29.683;29.997;30.348;30.726;31.162;31.645;32.18;32.755;33.387;34.081;34.861;35.733;36.73;37.815;
+1000;27.441;27.467;27.551;27.686;27.868;28.09;28.35;28.652;28.989;29.353;29.769;30.231;30.743;31.297;31.905;32.573;33.32;34.156;35.118;36.161;
+1500;26.19;26.217;26.297;26.427;26.601;26.814;27.063;27.353;27.676;28.026;28.425;28.865;29.356;29.889;30.472;31.118;31.857;32.662;33.559;34.562;
+2000;24.982;25.008;25.085;25.209;25.375;25.579;25.819;26.097;26.409;26.746;27.127;27.547;28.018;28.531;29.09;29.712;30.419;31.191;32.052;33.016;
+2500;23.821;23.842;23.915;24.034;24.192;24.388;24.617;24.883;25.182;25.508;25.874;26.288;26.726;27.219;27.758;28.356;29.031;29.77;30.596;31.522;
+3000;22.703;22.718;22.787;22.9;23.052;23.239;23.458;23.714;24;24.312;24.663;25.058;25.479;25.952;26.471;27.043;27.672;28.401;29.192;30.08;
+3500;21.629;21.635;21.701;21.808;21.953;22.131;22.34;22.586;22.86;23.16;23.495;23.871;24.274;24.729;25.228;25.778;26.383;27.078;27.839;28.689;
+4000;20.562;20.583;20.647;20.75;20.89;21.062;21.264;21.499;21.761;22.05;22.37;22.729;23.112;23.548;24.027;24.555;25.137;25.803;26.53;27.348;
+4500;19.548;19.569;19.629;19.728;19.86;20.024;20.217;20.445;20.699;20.979;21.286;21.629;21.995;22.411;22.87;23.375;23.933;24.57;25.268;26.051;
+5000;18.576;18.593;18.65;18.744;18.87;19.027;19.211;19.428;19.671;19.939;20.236;20.567;20.921;21.318;21.757;22.24;22.775;23.383;24.05;24.799;
+5500;17.643;17.649;17.71;17.799;17.919;18.068;18.243;18.451;18.683;18.94;19.223;19.538;19.877;20.261;20.685;21.148;21.659;22.24;22.877;23.593;
+6000;16.737;16.754;16.806;16.891;17.005;17.146;17.313;17.511;17.733;17.979;18.249;18.549;18.872;19.239;19.644;20.092;20.585;21.14;21.748;22.432;
+6500;15.869;15.889;15.938;16.019;16.127;16.261;16.42;16.609;16.821;17.055;17.313;17.598;17.907;18.256;18.643;19.071;19.542;20.076;20.662;21.315;
+7000;15.038;15.058;15.105;15.181;15.284;15.412;15.563;15.742;15.945;16.168;16.414;16.685;16.979;17.313;17.681;18.09;18.539;19.049;19.608;20.237;
+7500;14.244;14.262;14.306;14.378;14.475;14.597;14.74;14.911;15.103;15.317;15.551;15.809;16.096;16.407;16.758;17.147;17.576;18.063;18.596;19.194;
+8000;13.486;13.49;13.539;13.608;13.7;13.815;13.95;14.113;14.297;14.5;14.723;14.963;15.235;15.537;15.872;16.243;16.652;17.116;17.624;18.194;
+8500;12.752;12.765;12.805;12.869;12.956;13.066;13.194;13.349;13.523;13.716;13.929;14.158;14.422;14.703;15.022;15.375;15.765;16.207;16.691;17.233;
+9000;12.051;12.063;12.101;12.162;12.244;12.348;12.47;12.617;12.782;12.966;13.168;13.387;13.636;13.904;14.207;14.543;14.915;15.335;15.796;16.312;
+9500;11.38;11.392;11.427;11.485;11.562;11.661;11.776;11.916;12.073;12.247;12.439;12.648;12.884;13.138;13.426;13.745;14.099;14.499;14.937;15.428;
+10000;10.734;10.745;10.778;10.833;10.908;11.002;11.112;11.244;11.394;11.559;11.741;11.941;12.163;12.405;12.685;12.982;13.318;13.698;14.115;14.581;
+10500;10.118;10.125;10.156;10.208;10.278;10.366;10.471;10.597;10.741;10.899;11.074;11.264;11.475;11.704;11.969;12.257;12.577;12.932;13.327;13.77;
+11000;9.5227;9.5325;9.5622;9.6107;9.6766;9.76;9.8582;9.9778;10.114;10.264;10.43;10.612;10.813;11.038;11.279;11.557;11.861;12.198;12.573;12.992;
+11500;8.783;8.7921;8.8195;8.8642;8.9248;9.0017;9.0924;9.2028;9.3281;9.4665;9.6195;9.7874;9.9735;10.18;10.41;10.665;10.948;11.26;11.607;11.994;
+12000;8.1001;8.1088;8.1341;8.1753;8.2313;8.3023;8.386;8.4879;8.6033;8.7307;8.8721;9.0269;9.1986;9.3894;9.6011;9.836;10.097;10.386;10.709;11.07;
+12500;7.4702;7.4784;7.5018;7.5398;7.5915;7.6571;7.7344;7.8283;7.9347;8.052;8.1825;8.3253;8.4837;8.6597;8.8548;9.0715;9.312;9.5789;9.8766;10.209;
+13000;6.8898;6.897;6.9185;6.9536;7.0014;7.0618;7.1331;7.2198;7.3177;7.426;7.5464;7.6781;7.8242;7.9865;8.1664;8.3661;8.5879;8.8339;9.1084;9.4151;
+13500;6.3544;6.3562;6.3805;6.4128;6.4569;6.5127;6.5785;6.6583;6.7486;6.8486;6.9596;7.0809;7.2157;7.3654;7.5313;7.7155;7.92;8.1468;8.3998;8.6826;
+14000;5.8605;5.8621;5.8841;5.914;5.9546;6.0061;6.0668;6.1402;6.2236;6.316;6.4184;6.5302;6.6545;6.7925;6.9455;7.1153;7.3038;7.513;7.7462;8.0069;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;26.794;26.822;26.905;27.036;27.208;27.414;27.655;27.917;28.231;28.589;28.972;29.404;29.834;30.324;30.898;31.511;32.174;32.902;33.703;34.596;
+500;25.591;25.627;25.706;25.831;25.995;26.192;26.422;26.675;26.975;27.316;27.681;28.097;28.511;28.981;29.527;30.107;30.755;31.455;32.228;33.09;
+1000;24.446;24.472;24.547;24.666;24.823;25.012;25.233;25.475;25.762;26.087;26.436;26.836;27.237;27.685;28.205;28.758;29.384;30.058;30.802;31.632;
+1500;23.338;23.354;23.426;23.54;23.69;23.871;24.084;24.317;24.579;24.889;25.236;25.617;26.006;26.435;26.93;27.458;28.061;28.709;29.425;30.225;
+2000;22.253;22.275;22.344;22.452;22.596;22.77;22.973;23.198;23.45;23.745;24.077;24.441;24.815;25.227;25.701;26.205;26.786;27.407;28.095;28.865;
+2500;21.208;21.234;21.3;21.403;21.541;21.706;21.901;22.117;22.359;22.64;22.956;23.305;23.665;24.059;24.513;24.996;25.555;26.152;26.813;27.553;
+3000;20.209;20.231;20.293;20.391;20.522;20.681;20.867;21.075;21.307;21.574;21.874;22.207;22.553;22.93;23.367;23.827;24.366;24.94;25.576;26.287;
+3500;19.24;19.254;19.313;19.409;19.535;19.689;19.869;20.069;20.292;20.546;20.83;21.148;21.481;21.84;22.244;22.7;23.211;23.76;24.383;25.066;
+4000;18.293;18.312;18.368;18.459;18.58;18.726;18.898;19.09;19.306;19.552;19.835;20.128;20.449;20.791;21.179;21.613;22.101;22.629;23.228;23.886;
+4500;17.385;17.405;17.459;17.544;17.659;17.797;17.961;18.146;18.353;18.587;18.857;19.14;19.453;19.782;20.153;20.566;21.031;21.538;22.113;22.745;
+5000;16.514;16.531;16.582;16.663;16.772;16.904;17.061;17.237;17.436;17.658;17.915;18.185;18.485;18.805;19.163;19.558;20.001;20.487;21.039;21.644;
+5500;15.678;15.691;15.739;15.817;15.92;16.046;16.195;16.364;16.554;16.766;17.009;17.266;17.553;17.861;18.203;18.594;19.009;19.478;20.004;20.584;
+6000;14.868;14.883;14.929;15.003;15.101;15.221;15.364;15.525;15.706;15.907;16.139;16.384;16.658;16.953;17.281;17.652;18.047;18.499;18.994;19.563;
+6500;14.094;14.108;14.152;14.221;14.315;14.429;14.565;14.718;14.892;15.083;15.304;15.537;15.799;16.081;16.394;16.747;17.122;17.554;18.027;18.575;
+7000;13.35;13.364;13.405;13.471;13.56;13.669;13.798;13.945;14.11;14.291;14.502;14.723;14.973;15.243;15.542;15.868;16.235;16.646;17.098;17.622;
+7500;12.639;12.642;12.69;12.752;12.836;12.939;13.062;13.202;13.36;13.532;13.733;13.944;14.182;14.44;14.725;15.037;15.385;15.775;16.219;16.706;
+8000;11.954;11.966;12.003;12.063;12.142;12.24;12.358;12.491;12.642;12.806;12.99;13.196;13.423;13.669;13.941;14.239;14.57;14.94;15.365;15.828;
+8500;11.3;11.312;11.347;11.403;11.479;11.572;11.683;11.81;11.954;12.109;12.284;12.48;12.696;12.93;13.189;13.474;13.789;14.139;14.532;14.986;
+9000;10.676;10.682;10.716;10.77;10.842;10.931;11.036;11.157;11.294;11.442;11.608;11.793;11.998;12.222;12.468;12.739;13.039;13.372;13.758;14.178;
+9500;10.065;10.075;10.107;10.158;10.227;10.311;10.413;10.529;10.66;10.803;10.961;11.136;11.33;11.544;11.777;12.036;12.32;12.638;13.004;13.403;
+10000;9.4829;9.4953;9.525;9.5731;9.6379;9.7181;9.8141;9.9246;10.049;10.185;10.337;10.509;10.691;10.894;11.117;11.362;11.633;11.935;12.281;12.661;
+10500;8.9318;8.9412;8.9692;9.0145;9.0756;9.1513;9.2422;9.3469;9.4651;9.5945;9.7381;9.8999;10.073;10.268;10.482;10.718;10.975;11.261;11.59;11.951;
+11000;8.407;8.4122;8.4385;8.4812;8.5388;8.6103;8.6961;8.7953;8.9072;9.0302;9.1664;9.319;9.4825;9.6672;9.8708;10.095;10.342;10.616;10.928;11.271;
+11500;7.7491;7.7574;7.7817;7.8211;7.8743;7.9401;8.0193;8.1107;8.214;8.3274;8.4528;8.5935;8.744;8.9144;9.102;9.3083;9.5359;9.7891;10.08;10.399;
+12000;7.1423;7.1534;7.1758;7.2121;7.2612;7.322;7.3949;7.4793;7.5745;7.6791;7.7946;7.9243;8.0631;8.2201;8.3931;8.5834;8.7931;9.0262;9.2945;9.5888;
+12500;6.5893;6.5962;6.6169;6.6504;6.6956;6.7517;6.819;6.8968;6.9846;7.081;7.1875;7.3071;7.4351;7.5799;7.7394;7.9147;8.1081;8.3228;8.5702;8.8413;
+13000;6.0789;6.0822;6.1013;6.1322;6.1739;6.2256;6.2878;6.3595;6.4404;6.5293;6.6274;6.7378;6.8558;6.9893;7.1365;7.2981;7.4763;7.6742;7.9021;8.152;
+13500;5.6021;5.6081;5.6257;5.6542;5.6927;5.7404;5.7977;5.8639;5.9385;6.0204;6.1107;6.2126;6.3215;6.4447;6.5803;6.7294;6.8936;7.0761;7.286;7.5162;
+14000;5.1625;5.1708;5.187;5.2133;5.2488;5.2928;5.3457;5.4067;5.4755;5.5509;5.6342;5.7282;5.8286;5.9423;6.0674;6.2048;6.3562;6.529;6.7179;6.93;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;23.604;23.637;23.711;23.826;23.976;24.154;24.354;24.576;24.864;25.178;25.506;25.834;26.205;26.641;27.12;27.612;28.131;28.678;29.251;29.856;
+500;22.57;22.593;22.663;22.773;22.916;23.086;23.276;23.488;23.762;24.061;24.377;24.695;25.046;25.46;25.921;26.392;26.892;27.421;27.981;28.575;
+1000;21.57;21.573;21.651;21.755;21.891;22.052;22.235;22.438;22.697;22.981;23.286;23.592;23.926;24.319;24.762;25.215;25.696;26.206;26.75;27.333;
+1500;20.584;20.605;20.669;20.769;20.899;21.053;21.228;21.422;21.668;21.938;22.232;22.525;22.844;23.232;23.643;24.078;24.541;25.034;25.562;26.13;
+2000;19.633;19.66;19.721;19.816;19.939;20.087;20.254;20.44;20.674;20.929;21.213;21.493;21.798;22.167;22.562;22.979;23.426;23.901;24.413;24.967;
+2500;18.718;18.747;18.805;18.895;19.013;19.153;19.313;19.491;19.713;19.956;20.228;20.496;20.788;21.139;21.517;21.919;22.348;22.807;23.302;23.841;
+3000;17.829;17.856;17.912;17.998;18.113;18.248;18.403;18.575;18.786;19.017;19.278;19.534;19.812;20.145;20.508;20.893;21.306;21.75;22.229;22.752;
+3500;16.977;16.995;17.048;17.131;17.239;17.369;17.517;17.683;17.886;18.107;18.361;18.606;18.87;19.188;19.531;19.903;20.3;20.728;21.192;21.699;
+4000;16.158;16.166;16.216;16.295;16.398;16.521;16.663;16.821;17.013;17.223;17.466;17.706;17.958;18.266;18.59;18.947;19.327;19.738;20.187;20.681;
+4500;15.35;15.367;15.414;15.489;15.587;15.705;15.84;15.991;16.173;16.372;16.603;16.834;17.085;17.369;17.682;18.027;18.389;18.784;19.216;19.693;
+5000;14.582;14.597;14.643;14.714;14.807;14.919;15.048;15.192;15.365;15.553;15.773;15.995;16.234;16.503;16.8;17.132;17.484;17.865;18.279;18.739;
+5500;13.846;13.857;13.9;13.967;14.056;14.162;14.286;14.424;14.587;14.766;14.974;15.187;15.415;15.67;15.951;16.27;16.606;16.972;17.375;17.819;
+6000;13.141;13.144;13.186;13.25;13.334;13.435;13.553;13.684;13.839;14.008;14.206;14.41;14.627;14.859;15.135;15.441;15.762;16.112;16.498;16.926;
+6500;12.465;12.461;12.5;12.56;12.64;12.736;12.848;12.974;13.121;13.288;13.468;13.663;13.86;14.091;14.352;14.645;14.951;15.286;15.655;16.066;
+7000;11.791;11.804;11.84;11.897;11.973;12.065;12.171;12.29;12.43;12.588;12.758;12.946;13.135;13.354;13.601;13.88;14.172;14.493;14.846;15.239;
+7500;11.161;11.173;11.207;11.261;11.333;11.419;11.521;11.634;11.766;11.917;12.078;12.257;12.438;12.646;12.879;13.145;13.425;13.73;14.068;14.444;
+8000;10.559;10.566;10.599;10.65;10.718;10.801;10.897;11.005;11.13;11.273;11.426;11.596;11.77;11.967;12.186;12.438;12.707;12.999;13.321;13.681;
+8500;9.9676;9.9782;10.009;10.058;10.124;10.203;10.296;10.4;10.52;10.655;10.8;10.963;11.128;11.315;11.531;11.761;12.016;12.297;12.605;12.949;
+9000;9.4036;9.415;9.4444;9.4907;9.5526;9.6273;9.7156;9.8143;9.9284;10.058;10.197;10.355;10.513;10.691;10.895;11.113;11.356;11.624;11.918;12.246;
+9500;8.8661;8.8685;8.904;8.9475;9.006;9.0767;9.1606;9.2542;9.3621;9.48;9.616;9.7654;9.9183;10.089;10.285;10.492;10.725;10.98;11.26;11.572;
+10000;8.3518;8.3607;8.3868;8.4281;8.4834;8.5503;8.6298;8.7185;8.8169;8.9324;9.0602;9.2016;9.3482;9.5096;9.6951;9.8921;10.12;10.36;10.629;10.927;
+10500;7.8623;7.8684;7.893;7.932;7.984;8.0473;8.1226;8.2067;8.3004;8.4089;8.5291;8.6629;8.8032;8.9558;9.1313;9.3173;9.5339;9.7615;10.022;10.309;
+11000;7.3906;7.3984;7.4215;7.4583;7.5074;7.5671;7.6384;7.718;7.807;7.9092;8.026;8.1485;8.2823;8.4267;8.587;8.7684;8.9712;9.1898;9.4383;9.7114;
+11500;6.815;6.8224;6.8437;6.8777;6.923;6.9781;7.0439;7.1173;7.1994;7.2936;7.4013;7.5144;7.6376;7.7708;7.9185;8.0856;8.2728;8.474;8.7028;8.9544;
+12000;6.284;6.2912;6.3109;6.3422;6.384;6.4348;6.4954;6.5632;6.6389;6.7258;6.8252;6.9295;7.0431;7.1659;7.3021;7.456;7.6287;7.814;8.0247;8.2563;
+12500;5.7943;5.8012;5.8193;5.8482;5.8868;5.9337;5.9896;6.0522;6.1218;6.202;6.2938;6.39;6.4948;6.608;6.7337;6.8756;7.0347;7.2054;7.3994;7.6127;
+13000;5.3426;5.3493;5.366;5.3926;5.4282;5.4715;5.5231;5.5808;5.6449;5.7189;5.8037;5.8925;5.989;6.0936;6.2094;6.3404;6.4868;6.6441;6.8228;7.0192;
+13500;4.926;4.9324;4.9478;4.9724;5.0053;5.0451;5.0927;5.1459;5.2051;5.2734;5.3516;5.4335;5.5226;5.6191;5.7258;5.8468;5.9818;6.1264;6.2911;6.472;
+14000;4.5431;4.5479;4.5622;4.5849;4.6152;4.6519;4.6958;4.7449;4.7994;4.8625;4.9347;5.0103;5.0923;5.1815;5.2836;5.3917;5.5173;5.6517;5.8008;5.9674;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;20.489;20.532;20.602;20.708;20.847;21.002;21.182;21.399;21.661;21.935;22.201;22.494;22.85;23.226;23.596;23.955;24.277;24.524;24.626;24.467;
+500;19.805;19.626;19.689;19.79;19.922;20.068;20.239;20.445;20.694;20.956;21.21;21.489;21.826;22.188;22.544;22.893;23.212;23.469;23.607;23.537;
+1000;18.726;18.746;18.809;18.904;19.029;19.168;19.33;19.525;19.761;20.011;20.252;20.519;20.839;21.185;21.528;21.866;22.182;22.446;22.614;22.628;
+1500;17.879;17.897;17.957;18.047;18.166;18.298;18.452;18.637;18.861;19.1;19.329;19.584;19.897;20.218;20.547;20.875;21.184;21.454;21.65;21.718;
+2000;17.058;17.078;17.134;17.22;17.332;17.458;17.604;17.78;17.992;18.22;18.438;18.681;18.977;19.284;19.601;19.917;20.221;20.494;20.708;20.821;
+2500;16.263;16.279;16.333;16.415;16.523;16.644;16.786;16.952;17.154;17.371;17.579;17.81;18.09;18.383;18.687;18.993;19.291;19.565;19.793;19.941;
+3000;15.497;15.506;15.557;15.635;15.737;15.852;15.987;16.146;16.34;16.551;16.751;16.967;17.235;17.514;17.804;18.1;18.392;18.666;18.904;19.08;
+3500;14.745;14.761;14.81;14.883;14.98;15.089;15.217;15.368;15.552;15.752;15.944;16.148;16.41;16.678;16.955;17.239;17.522;17.793;18.041;18.24;
+4000;14.025;14.044;14.089;14.159;14.251;14.354;14.475;14.619;14.793;14.985;15.166;15.369;15.608;15.866;16.134;16.409;16.681;16.948;17.197;17.42;
+4500;13.339;13.353;13.396;13.462;13.549;13.647;13.762;13.898;14.063;14.244;14.418;14.611;14.836;15.082;15.337;15.602;15.869;16.132;16.382;16.614;
+5000;12.68;12.689;12.729;12.791;12.874;12.967;13.076;13.204;13.36;13.531;13.698;13.881;14.093;14.327;14.571;14.824;15.082;15.339;15.593;15.834;
+5500;12.036;12.049;12.087;12.146;12.224;12.312;12.416;12.537;12.684;12.846;13.005;13.179;13.379;13.602;13.834;14.075;14.324;14.576;14.827;15.075;
+6000;11.419;11.434;11.47;11.525;11.599;11.682;11.781;11.895;12.035;12.187;12.34;12.504;12.693;12.905;13.126;13.356;13.597;13.842;14.089;14.336;
+6500;10.831;10.842;10.876;10.929;10.998;11.08;11.17;11.278;11.41;11.554;11.701;11.856;12.035;12.234;12.447;12.668;12.899;13.136;13.377;13.623;
+7000;10.267;10.273;10.306;10.356;10.421;10.498;10.584;10.686;10.811;10.947;11.088;11.236;11.405;11.594;11.797;12.007;12.228;12.457;12.692;12.934;
+7500;9.7087;9.7194;9.7503;9.7977;9.8606;9.9352;10.019;10.113;10.238;10.367;10.501;10.634;10.8;10.978;11.172;11.372;11.583;11.803;12.032;12.271;
+8000;9.176;9.1892;9.2186;9.2636;9.3234;9.3944;9.4737;9.5627;9.68;9.8047;9.9346;10.064;10.213;10.387;10.572;10.763;10.964;11.175;11.398;11.631;
+8500;8.6724;8.6818;8.7094;8.7518;8.8082;8.8752;8.9505;9.0348;9.145;9.2629;9.3863;9.5095;9.6508;9.8165;9.9959;10.178;10.37;10.573;10.788;11.016;
+9000;8.1913;8.1954;8.2214;8.2614;8.3146;8.3778;8.4491;8.529;8.6324;8.7438;8.8606;8.978;9.1109;9.266;9.437;9.6123;9.7982;9.9944;10.202;10.424;
+9500;7.7209;7.7293;7.7538;7.7915;7.8416;7.9013;7.9689;8.0447;8.1414;8.2464;8.3572;8.4689;8.5941;8.7392;8.9019;9.0685;9.2455;9.4342;9.6363;9.8547;
+10000;7.2727;7.2832;7.3062;7.3416;7.3888;7.445;7.5091;7.5808;7.6715;7.7701;7.8755;7.9818;8.0995;8.2408;8.39;8.5481;8.7167;8.8967;9.0906;9.3016;
+10500;6.8489;6.8562;6.8778;6.9112;6.9555;7.0085;7.0692;7.137;7.2221;7.3144;7.4151;7.5162;7.6268;7.7593;7.9006;8.0507;8.211;8.3826;8.5682;8.771;
+11000;6.4412;6.4481;6.4683;6.4998;6.5416;6.5915;6.649;6.7132;6.7928;6.8792;6.975;7.0711;7.175;7.2993;7.4331;7.5753;7.7276;7.8913;8.0686;8.2633;
+11500;5.9382;5.9451;5.9638;5.9928;6.0314;6.0775;6.1305;6.1898;6.2634;6.3432;6.4315;6.5202;6.6161;6.7307;6.8557;6.985;7.1252;7.2757;7.4384;7.6172;
+12000;5.4744;5.4812;5.4985;5.5253;5.5609;5.6034;5.6523;5.707;5.7751;5.8488;5.9302;6.0118;6.1007;6.2062;6.3198;6.4406;6.5697;6.7081;6.8575;7.0216;
+12500;5.0467;5.0533;5.0692;5.0939;5.1268;5.1664;5.2112;5.2617;5.3246;5.3928;5.4678;5.5431;5.6251;5.7225;5.8272;5.9384;6.0573;6.1847;6.322;6.4725;
+13000;4.6536;4.6586;4.6733;4.6961;4.7264;4.763;4.8044;4.851;4.9092;4.9722;5.0413;5.1107;5.1865;5.2764;5.3729;5.4754;5.5848;5.702;5.8282;5.9662;
+13500;4.2909;4.2917;4.3083;4.3292;4.3572;4.3909;4.4292;4.4723;4.526;4.5842;4.6479;4.712;4.782;4.8649;4.9539;5.0483;5.1491;5.2569;5.373;5.4995;
+14000;3.9545;3.9588;3.9713;3.9908;4.0166;4.0477;4.083;4.1229;4.1725;4.2264;4.2851;4.3442;4.4089;4.4855;4.5674;4.6544;4.7472;4.8465;4.9532;5.0693;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;19.315;19.338;19.407;19.511;19.649;19.8;19.972;20.194;20.451;20.703;20.952;21.261;21.596;21.933;22.258;22.542;22.733;22.732;22.302;20.918;
+500;18.813;18.482;18.547;18.646;18.776;18.918;19.082;19.291;19.535;19.777;20.017;20.307;20.627;20.951;21.265;21.545;21.747;21.787;21.476;20.434;
+1000;17.634;17.654;17.716;17.81;17.933;18.068;18.224;18.421;18.645;18.883;19.113;19.386;19.692;20.002;20.306;20.581;20.791;20.865;20.653;19.872;
+1500;16.835;16.854;16.913;17.002;17.119;17.247;17.394;17.582;17.794;18.022;18.241;18.498;18.789;19.087;19.38;19.65;19.866;19.966;19.835;19.272;
+2000;16.062;16.081;16.137;16.221;16.332;16.454;16.594;16.771;16.972;17.19;17.399;17.641;17.916;18.204;18.487;18.751;18.969;19.095;19.026;18.611;
+2500;15.312;15.326;15.379;15.46;15.566;15.683;15.818;15.988;16.18;16.388;16.587;16.806;17.078;17.352;17.624;17.883;18.102;18.245;18.238;17.939;
+3000;14.581;14.599;14.649;14.725;14.825;14.936;15.065;15.226;15.409;15.609;15.801;16.013;16.269;16.531;16.791;17.042;17.263;17.421;17.454;17.258;
+3500;13.881;13.898;13.945;14.017;14.112;14.217;14.339;14.491;14.664;14.855;15.037;15.239;15.484;15.739;15.989;16.23;16.449;16.616;16.688;16.575;
+4000;13.208;13.223;13.268;13.335;13.425;13.525;13.64;13.783;13.952;14.129;14.302;14.493;14.724;14.968;15.21;15.447;15.662;15.835;15.929;15.888;
+4500;12.562;12.573;12.615;12.679;12.764;12.858;12.967;13.102;13.262;13.43;13.594;13.776;13.993;14.226;14.457;14.686;14.899;15.079;15.192;15.202;
+5000;11.933;11.947;11.987;12.047;12.127;12.216;12.32;12.447;12.598;12.758;12.913;13.086;13.29;13.512;13.733;13.953;14.162;14.343;14.474;14.522;
+5500;11.331;11.345;11.382;11.439;11.515;11.599;11.697;11.817;11.96;12.112;12.259;12.423;12.615;12.826;13.037;13.248;13.451;13.633;13.775;13.849;
+6000;10.754;10.766;10.801;10.854;10.926;11.005;11.098;11.211;11.346;11.491;11.63;11.784;11.972;12.167;12.368;12.571;12.768;12.948;13.098;13.195;
+6500;10.2;10.209;10.242;10.293;10.36;10.435;10.523;10.629;10.757;10.894;11.026;11.172;11.349;11.534;11.725;11.919;12.11;12.289;12.444;12.559;
+7000;9.656;9.6669;9.6987;9.7471;9.8117;9.8838;9.9682;10.07;10.191;10.321;10.446;10.582;10.75;10.926;11.108;11.294;11.478;11.654;11.813;11.941;
+7500;9.1359;9.1467;9.1766;9.2221;9.2829;9.351;9.4309;9.5265;9.6416;9.7669;9.8875;10.016;10.176;10.343;10.516;10.693;10.872;11.044;11.204;11.342;
+8000;8.6383;8.6478;8.6759;8.7187;8.7759;8.8402;8.9156;9.0055;9.1139;9.2325;9.3467;9.473;9.6214;9.782;9.948;10.117;10.289;10.458;10.618;10.766;
+8500;8.1632;8.1697;8.1961;8.2363;8.2901;8.3508;8.422;8.5064;8.6084;8.7198;8.8288;8.9481;9.0872;9.2394;9.3976;9.5612;9.7291;9.8945;10.054;10.208;
+9000;7.7031;7.7117;7.7365;7.7743;7.8248;7.8821;7.9493;8.0286;8.1245;8.2292;8.3329;8.4457;8.5759;8.7201;8.8701;9.0258;9.1864;9.3488;9.5108;9.6692;
+9500;7.2647;7.2731;7.2964;7.3319;7.3794;7.4334;7.4969;7.5714;7.6615;7.76;7.8584;7.9648;8.0868;8.2232;8.3655;8.5136;8.6667;8.8253;8.9852;9.1443;
+10000;6.846;6.8533;6.8752;6.9086;6.9533;7.0061;7.064;7.134;7.2187;7.3111;7.4049;7.505;7.6194;7.7478;7.883;8.0244;8.1714;8.3243;8.4802;8.6387;
+10500;6.4472;6.4519;6.4725;6.5038;6.5457;6.5953;6.6502;6.7159;6.7953;6.8822;6.9715;7.0655;7.1732;7.2931;7.4234;7.558;7.6982;7.8444;7.996;8.1528;
+11000;6.0616;6.0682;6.0874;6.1168;6.1562;6.2028;6.2547;6.3163;6.3909;6.4728;6.5582;6.6428;6.7482;6.8611;6.9845;7.1121;7.2457;7.3855;7.5324;7.6865;
+11500;5.5886;5.595;5.6127;5.6398;5.6762;5.7192;5.7671;5.8241;5.8929;5.9686;6.0466;6.1245;6.2218;6.3257;6.4396;6.5572;6.6801;6.8082;6.9428;7.0836;
+12000;5.1524;5.1585;5.1749;5.2;5.2335;5.2732;5.3174;5.3701;5.4337;5.5034;5.5754;5.6473;5.7363;5.8321;5.9371;6.0453;6.1584;6.2763;6.3992;6.5279;
+12500;4.7508;4.756;4.7711;4.7943;4.8252;4.8619;4.9026;4.9513;5.0101;5.0744;5.1407;5.2103;5.2893;5.3778;5.4737;5.5733;5.6774;5.7857;5.8982;6.0156;
+13000;4.3805;4.3847;4.3986;4.42;4.4486;4.4825;4.5201;4.5651;4.6193;4.6787;4.7399;4.8041;4.8771;4.959;5.047;5.1383;5.2338;5.3333;5.4363;5.5435;
+13500;4.039;4.0394;4.0554;4.0749;4.1012;4.1325;4.1673;4.2088;4.259;4.3138;4.3702;4.4295;4.4969;4.5726;4.6535;4.7376;4.8251;4.9162;5.0103;5.1085;
+14000;3.7225;3.7265;3.7384;3.7566;3.7809;3.8098;3.8418;3.8803;3.9266;3.9771;4.0292;4.084;4.1463;4.2162;4.2907;4.3681;4.4486;4.5319;4.6179;4.7072;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;18.149;18.175;18.245;18.347;18.483;18.633;18.799;19.028;19.28;19.509;19.764;20.065;20.374;20.677;20.943;21.118;21.085;20.514;18.346;-9999;
+500;17.345;17.369;17.435;17.532;17.661;17.802;17.959;18.174;18.414;18.633;18.875;19.161;19.457;19.749;20.01;20.193;20.198;19.758;18.095;-9999;
+1000;16.568;16.591;16.652;16.744;16.867;17;17.15;17.353;17.579;17.787;18.017;18.289;18.573;18.854;19.109;19.296;19.332;19.001;17.721;-9999;
+1500;15.819;15.84;15.896;15.984;16.1;16.226;16.368;16.56;16.776;16.975;17.192;17.448;17.72;17.99;18.238;18.429;18.491;18.249;17.251;-9999;
+2000;15.09;15.109;15.164;15.248;15.359;15.48;15.614;15.796;16;16.19;16.396;16.638;16.897;17.156;17.398;17.59;17.673;17.504;16.746;-9999;
+2500;14.385;14.398;14.452;14.531;14.636;14.751;14.88;15.054;15.25;15.434;15.629;15.857;16.104;16.351;16.585;16.779;16.879;16.77;16.192;-9999;
+3000;13.697;13.715;13.765;13.839;13.939;14.047;14.17;14.334;14.519;14.696;14.883;15.102;15.34;15.576;15.8;15.992;16.107;16.057;15.623;-9999;
+3500;13.04;13.057;13.103;13.173;13.267;13.37;13.486;13.64;13.816;13.985;14.161;14.368;14.596;14.825;15.045;15.232;15.355;15.342;15.029;14.109;
+4000;12.406;12.421;12.465;12.531;12.62;12.717;12.827;12.973;13.138;13.3;13.46;13.662;13.878;14.097;14.309;14.496;14.628;14.643;14.41;13.669;
+4500;11.799;11.809;11.851;11.914;11.998;12.089;12.193;12.33;12.487;12.64;12.794;12.982;13.188;13.396;13.6;13.783;13.92;13.959;13.797;13.23;
+5000;11.207;11.221;11.26;11.319;11.399;11.484;11.583;11.712;11.857;12.007;12.153;12.329;12.524;12.722;12.918;13.096;13.236;13.294;13.186;12.761;
+5500;10.641;10.655;10.692;10.748;10.822;10.903;10.997;11.118;11.254;11.397;11.536;11.701;11.886;12.075;12.262;12.435;12.576;12.649;12.587;12.278;
+6000;10.099;10.111;10.146;10.198;10.268;10.345;10.433;10.547;10.675;10.811;10.943;11.098;11.273;11.453;11.631;11.799;11.94;12.027;12.006;11.777;
+6500;9.5696;9.581;9.6142;9.6643;9.7318;9.8049;9.8897;9.9984;10.119;10.248;10.374;10.519;10.683;10.855;11.026;11.188;11.329;11.424;11.431;11.275;
+7000;9.0635;9.072;9.1032;9.1502;9.2137;9.2826;9.3626;9.4646;9.58;9.7047;9.8253;9.9628;10.118;10.282;10.444;10.601;10.74;10.842;10.872;10.774;
+7500;8.5801;8.5836;8.6129;8.6571;8.7167;8.7816;8.8573;8.9528;9.0608;9.1797;9.2934;9.4192;9.572;9.7305;9.8866;10.038;10.174;10.281;10.33;10.277;
+8000;8.1059;8.1153;8.1428;8.1843;8.2402;8.3014;8.3727;8.4622;8.5634;8.6767;8.7839;8.9031;9.0456;9.1963;9.346;9.4937;9.6304;9.7404;9.8041;9.7879;
+8500;7.6539;7.6666;7.6923;7.7312;7.7837;7.8413;7.9085;7.9924;8.0911;8.1948;8.2958;8.4085;8.5418;8.6848;8.8272;8.9686;9.1021;9.216;9.2935;9.312;
+9000;7.2232;7.2368;7.2609;7.2974;7.3467;7.4009;7.4641;7.5427;7.6354;7.7334;7.8287;7.9346;8.06;8.1952;8.3306;8.4656;8.5955;8.7105;8.7982;8.8376;
+9500;6.8129;6.8253;6.8479;6.8821;6.9283;6.9794;7.039;7.1125;7.1994;7.292;7.3819;7.4815;7.5987;7.727;7.8555;7.9845;8.1104;8.2254;8.3188;8.3758;
+10000;6.4222;6.4317;6.4529;6.4849;6.5282;6.5762;6.6323;6.7011;6.7826;6.8701;6.9547;7.0483;7.1616;7.2794;7.4013;7.5247;7.6462;7.76;7.8575;7.9279;
+10500;6.0487;6.0555;6.0753;6.1053;6.1457;6.1908;6.2436;6.3079;6.3843;6.4668;6.5466;6.6342;6.7407;6.8522;6.9677;7.0855;7.2021;7.3139;7.4141;7.4945;
+11000;5.6935;5.6959;5.7144;5.7425;5.7804;5.8227;5.8724;5.9324;6.004;6.0819;6.1572;6.2377;6.3391;6.4445;6.5537;6.6657;6.7776;6.8868;6.9885;7.0758;
+11500;5.2457;5.2515;5.2686;5.2945;5.3295;5.3686;5.4145;5.4699;5.5361;5.6078;5.6772;5.7519;5.8452;5.9423;6.043;6.146;6.2487;6.3484;6.4409;6.5192;
+12000;4.8331;4.8417;4.8575;4.8813;4.9137;4.9498;4.9921;5.0434;5.1045;5.1707;5.2347;5.304;5.3897;5.4791;5.5719;5.6667;5.7611;5.8519;5.936;6.0064;
+12500;4.4588;4.4637;4.4783;4.5003;4.5302;4.5634;4.6025;4.65;4.7065;4.7675;4.8266;4.8909;4.9697;5.052;5.1375;5.2247;5.3113;5.3943;5.4705;5.5336;
+13000;4.1134;4.1151;4.1285;4.1489;4.1765;4.2072;4.2432;4.2872;4.3393;4.3956;4.4502;4.5099;4.5823;4.6582;4.7369;4.8171;4.8965;4.9723;5.0415;5.0978;
+13500;3.7893;3.7936;3.806;3.8247;3.8502;3.8786;3.912;3.9525;4.0007;4.0527;4.103;4.1584;4.225;4.295;4.3675;4.4412;4.5141;4.5833;4.646;4.6963;
+14000;3.4907;3.4971;3.5085;3.5258;3.5494;3.5756;3.6064;3.6439;3.6884;3.7363;3.7828;3.8341;3.8955;3.9601;4.0269;4.0947;4.1615;4.2247;4.2814;4.3262;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;17.017;17.047;17.113;17.222;17.358;17.508;17.686;17.905;18.149;18.37;18.621;18.907;19.191;19.448;19.629;19.614;19.046;16.363;-9999;-9999;
+500;16.255;16.282;16.35;16.448;16.581;16.725;16.893;17.1;17.331;17.543;17.78;18.054;18.326;18.576;18.76;18.775;18.328;16.228;-9999;-9999;
+1000;15.535;15.559;15.624;15.713;15.837;15.97;16.129;16.325;16.543;16.743;16.963;17.23;17.491;17.734;17.918;17.959;17.612;16.013;-9999;-9999;
+1500;14.83;14.853;14.913;14.998;15.115;15.241;15.391;15.577;15.784;15.974;16.182;16.435;16.685;16.92;17.106;17.167;16.903;15.657;-9999;-9999;
+2000;14.147;14.164;14.221;14.303;14.415;14.535;14.679;14.855;15.052;15.232;15.426;15.669;15.907;16.135;16.32;16.397;16.204;15.229;-9999;-9999;
+2500;13.478;13.498;13.551;13.629;13.734;13.848;13.983;14.152;14.341;14.514;14.708;14.932;15.159;15.376;15.559;15.651;15.516;14.764;-9999;-9999;
+3000;12.837;12.856;12.905;12.979;13.079;13.186;13.313;13.472;13.652;13.816;14;14.216;14.435;14.647;14.824;14.925;14.845;14.256;-9999;-9999;
+3500;12.222;12.237;12.283;12.353;12.447;12.548;12.668;12.819;12.989;13.144;13.318;13.523;13.732;13.936;14.114;14.222;14.175;13.727;12.2;-9999;
+4000;11.632;11.633;11.682;11.75;11.839;11.934;12.047;12.189;12.35;12.498;12.662;12.856;13.054;13.25;13.423;13.538;13.521;13.17;11.86;-9999;
+4500;11.052;11.067;11.108;11.17;11.254;11.343;11.45;11.584;11.736;11.876;12.031;12.215;12.403;12.59;12.758;12.876;12.882;12.613;11.594;-9999;
+5000;10.496;10.515;10.554;10.612;10.691;10.775;10.875;11.002;11.146;11.278;11.424;11.597;11.777;11.955;12.118;12.239;12.263;12.06;11.282;-9999;
+5500;9.9646;9.9835;10.02;10.075;10.149;10.228;10.323;10.442;10.578;10.703;10.841;11.004;11.175;11.345;11.502;11.624;11.664;11.515;10.902;-9999;
+6000;9.454;9.4662;9.5014;9.5535;9.6247;9.7004;9.7906;9.9043;10.033;10.152;10.282;10.435;10.597;10.759;10.911;11.032;11.084;10.98;10.513;-9999;
+6500;8.9653;8.9664;9.0032;9.051;9.118;9.1891;9.2699;9.381;9.5041;9.6193;9.7439;9.8885;10.043;10.197;10.342;10.463;10.525;10.457;10.099;-9999;
+7000;8.4812;8.4919;8.5228;8.5688;8.6317;8.6987;8.7748;8.8789;8.9947;9.1044;9.2214;9.3587;9.5071;9.6562;9.7967;9.9153;9.985;9.9522;9.6834;-9999;
+7500;8.0192;8.0341;8.0631;8.1063;8.1654;8.2284;8.3;8.3975;8.5064;8.6106;8.7206;8.8494;8.9901;9.1315;9.268;9.3867;9.4649;9.4554;9.2559;-9999;
+8000;7.5861;7.5954;7.6225;7.663;7.7185;7.7775;7.8452;7.9362;8.0385;8.1375;8.2362;8.3616;8.4948;8.6291;8.7595;8.8755;8.9583;8.969;8.8268;8.3561;
+8500;7.173;7.1736;7.2011;7.2383;7.2903;7.3457;7.4095;7.4945;7.5889;7.6846;7.7783;7.8947;8.0207;8.148;8.2724;8.3857;8.4713;8.4973;8.4012;8.0593;
+9000;6.7642;6.7723;6.7961;6.8316;6.8803;6.9324;6.9925;7.0719;7.1602;7.2509;7.3401;7.448;7.5671;7.6879;7.8065;7.9164;8.0035;8.0417;7.9826;7.7343;
+9500;6.3753;6.3871;6.4093;6.4426;6.4881;6.5369;6.5934;6.6674;6.7504;6.836;6.9207;7.0212;7.1339;7.2481;7.361;7.4668;7.5544;7.6039;7.5728;7.4012;
+10000;6.0054;6.0185;6.0392;6.0704;6.1129;6.1585;6.2117;6.2809;6.3586;6.4398;6.5202;6.6133;6.7187;6.8275;6.935;7.0367;7.1242;7.1805;7.1768;7.0566;
+10500;5.6537;5.6661;5.6855;5.7146;5.7544;5.7973;5.8473;5.9117;5.9843;6.0613;6.1369;6.2237;6.3223;6.4257;6.5279;6.6256;6.7121;6.7739;6.7877;6.7122;
+11000;5.3195;5.3297;5.3478;5.375;5.4122;5.4524;5.4993;5.5592;5.6267;5.6999;5.7708;5.849;5.9444;6.0422;6.1392;6.233;6.3174;6.3835;6.4109;6.3705;
+11500;4.9082;4.9136;4.9303;4.9554;4.9898;5.0269;5.0702;5.1257;5.1882;5.2555;5.321;5.3931;5.4813;5.5714;5.6607;5.7468;5.8237;5.8832;5.906;5.8634;
+12000;4.5286;4.53;4.5453;4.5685;4.6002;4.6345;4.6745;4.7259;4.7836;4.8457;4.9061;4.9728;5.0542;5.1371;5.2193;5.2984;5.3692;5.422;5.4406;5.3964;
+12500;4.1714;4.1762;4.1904;4.2117;4.241;4.2726;4.3094;4.3571;4.4106;4.4676;4.5235;4.5851;4.6604;4.7367;4.8123;4.8849;4.949;4.9969;5.0118;4.9662;
+13000;3.8423;3.85;3.8631;3.8828;3.9098;3.9389;3.9729;4.0169;4.0664;4.119;4.1706;4.2298;4.2969;4.3673;4.437;4.5036;4.5621;4.605;4.6167;4.5699;
+13500;3.545;3.5491;3.5612;3.5794;3.6044;3.6313;3.6626;3.7034;3.7491;3.7974;3.8451;3.8998;3.9619;4.0267;4.0909;4.152;4.2053;4.2439;4.2526;4.205;
+14000;3.2706;3.2716;3.2828;3.2995;3.3226;3.3475;3.3766;3.4141;3.4565;3.501;3.545;3.5955;3.6528;3.7126;3.7716;3.8277;3.8764;3.9108;3.917;3.869;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;16.034;16.064;16.134;16.246;16.385;16.54;16.723;16.941;17.169;17.384;17.629;17.89;18.13;18.302;18.308;17.792;15.139;-9999;-9999;-9999;
+500;15.308;15.311;15.4;15.506;15.638;15.783;15.954;16.16;16.377;16.581;16.815;17.065;17.298;17.472;17.503;17.092;15.043;-9999;-9999;-9999;
+1000;14.607;14.632;14.693;14.792;14.917;15.054;15.216;15.411;15.617;15.809;16.029;16.27;16.495;16.671;16.723;16.398;14.804;-9999;-9999;-9999;
+1500;13.932;13.954;14.012;14.105;14.223;14.352;14.505;14.689;14.885;15.067;15.275;15.504;15.722;15.897;15.968;15.739;14.465;-9999;-9999;-9999;
+2000;13.272;13.294;13.348;13.437;13.549;13.672;13.817;13.994;14.181;14.353;14.55;14.768;14.977;15.15;15.23;15.071;14.07;-9999;-9999;-9999;
+2500;12.639;12.641;12.709;12.793;12.899;13.014;13.151;13.318;13.496;13.662;13.85;14.061;14.261;14.43;14.519;14.416;13.635;-9999;-9999;-9999;
+3000;12.028;12.047;12.102;12.172;12.273;12.381;12.51;12.667;12.837;12.993;13.172;13.373;13.568;13.736;13.835;13.767;13.156;-9999;-9999;-9999;
+3500;11.441;11.459;11.509;11.576;11.671;11.773;11.894;12.043;12.203;12.351;12.52;12.711;12.898;13.063;13.174;13.138;12.659;-9999;-9999;-9999;
+4000;10.876;10.894;10.94;11.003;11.093;11.188;11.302;11.442;11.594;11.734;11.893;12.075;12.256;12.422;12.535;12.521;12.141;10.324;-9999;-9999;
+4500;10.335;10.337;10.388;10.453;10.537;10.627;10.734;10.865;11.01;11.143;11.296;11.471;11.644;11.802;11.917;11.923;11.623;10.234;-9999;-9999;
+5000;9.8107;9.8322;9.8683;9.9288;10.006;10.091;10.192;10.316;10.454;10.58;10.724;10.889;11.054;11.207;11.322;11.344;11.11;10.02;-9999;-9999;
+5500;9.3118;9.3254;9.3625;9.4174;9.4935;9.5741;9.6707;9.7896;9.9194;10.039;10.171;10.331;10.488;10.634;10.749;10.784;10.605;9.7598;-9999;-9999;
+6000;8.8277;8.8407;8.8756;8.9271;8.9986;9.0743;9.1648;9.2768;9.4015;9.5161;9.6431;9.7944;9.9437;10.085;10.197;10.243;10.109;9.4512;-9999;-9999;
+6500;8.3648;8.3755;8.4082;8.4565;8.5236;8.5946;8.6794;8.7847;8.9024;9.0105;9.1294;9.2747;9.4186;9.5561;9.6675;9.7215;9.63;9.1167;-9999;-9999;
+7000;7.9222;7.9234;7.9579;8.0052;8.068;8.1344;8.2138;8.3129;8.4239;8.5258;8.6404;8.775;8.9112;9.0426;9.1537;9.2156;9.1561;8.7546;-9999;-9999;
+7500;7.4907;7.5009;7.5297;7.5722;7.6313;7.6932;7.7677;7.8607;7.9654;8.0614;8.1693;8.2961;8.425;8.5505;8.6589;8.7255;8.6907;8.3909;-9999;-9999;
+8000;7.0789;7.0906;7.1176;7.1574;7.2127;7.2705;7.3403;7.4277;7.5262;7.6167;7.7181;7.8377;7.9597;8.0793;8.1846;8.2541;8.2395;8.0098;7.235;-9999;
+8500;6.6862;6.6975;6.7228;6.76;6.8116;6.8658;6.9311;7.0131;7.1059;7.1912;7.2865;7.3991;7.5144;7.628;7.7299;7.8016;7.8033;7.6308;6.9681;-9999;
+9000;6.3119;6.3212;6.3447;6.3794;6.4278;6.4786;6.5397;6.6167;6.7039;6.7843;6.8737;6.9793;7.0883;7.1963;7.2945;7.3673;7.3821;7.256;6.7571;-9999;
+9500;5.9552;5.9611;5.9831;6.0156;6.0608;6.1083;6.1654;6.2376;6.3195;6.3951;6.4789;6.5778;6.681;6.7835;6.8778;6.9511;6.9762;6.8874;6.5149;-9999;
+10000;5.6155;5.6162;5.6378;5.6675;5.7098;5.7542;5.8076;5.8751;5.9521;6.0234;6.1019;6.1943;6.2918;6.389;6.4794;6.5524;6.5857;6.5267;6.2524;-9999;
+10500;5.2809;5.2875;5.3066;5.335;5.3744;5.416;5.4658;5.529;5.601;5.6686;5.742;5.8281;5.9202;6.0121;6.0987;6.1708;6.2107;6.1753;5.9799;-9999;
+11000;4.9632;4.973;4.9908;5.0174;5.0542;5.093;5.1396;5.1984;5.2658;5.3299;5.3984;5.4787;5.5656;5.6525;5.7353;5.806;5.8502;5.8365;5.6912;-9999;
+11500;4.5796;4.5848;4.6013;4.6257;4.6598;4.6956;4.7365;4.793;4.8553;4.9143;4.9777;5.0519;5.132;5.212;5.288;5.3525;5.3919;5.3767;5.2355;-9999;
+12000;4.2216;4.2268;4.2419;4.2645;4.296;4.3291;4.3669;4.4191;4.4767;4.5311;4.5896;4.6582;4.732;4.8058;4.8756;4.9343;4.9696;4.953;4.8158;-9999;
+12500;3.8915;3.8966;3.9106;3.9314;3.9605;3.9911;4.0261;4.0743;4.1275;4.1776;4.2317;4.2951;4.3632;4.4311;4.4953;4.5489;4.5801;4.5599;4.4296;-9999;
+13000;3.5877;3.5921;3.605;3.6242;3.6511;3.6794;3.7118;3.7563;3.8055;3.8516;3.9016;3.9603;4.023;4.0856;4.1445;4.1934;4.2211;4.2001;4.0739;-9999;
+13500;3.3075;3.3113;3.3233;3.341;3.3658;3.3919;3.4219;3.463;3.5085;3.551;3.5972;3.6515;3.7093;3.767;3.8211;3.8657;3.8902;3.8686;3.7422;-9999;
+14000;3.0486;3.0524;3.0634;3.0797;3.1028;3.1268;3.1545;3.1926;3.2346;3.2738;3.3165;3.3667;3.42;3.4731;3.5228;3.5635;3.5851;3.5631;3.4405;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;15.139;15.171;15.248;15.351;15.51;15.665;15.854;16.077;16.292;16.506;16.742;16.967;17.139;17.174;16.77;14.487;-9999;-9999;-9999;-9999;
+500;14.45;14.453;14.545;14.643;14.791;14.938;15.114;15.324;15.528;15.732;15.958;16.176;16.349;16.392;16.081;14.286;-9999;-9999;-9999;-9999;
+1000;13.786;13.801;13.868;13.961;14.1;14.238;14.404;14.603;14.797;14.988;15.202;15.414;15.587;15.646;15.406;13.985;-9999;-9999;-9999;-9999;
+1500;13.127;13.152;13.215;13.304;13.434;13.565;13.721;13.909;14.094;14.275;14.478;14.68;14.851;14.925;14.749;13.61;-9999;-9999;-9999;-9999;
+2000;12.492;12.523;12.582;12.665;12.788;12.911;13.059;13.239;13.417;13.589;13.782;13.977;14.143;14.226;14.1;13.197;-9999;-9999;-9999;-9999;
+2500;11.896;11.918;11.972;12.051;12.166;12.283;12.421;12.591;12.76;12.923;13.109;13.298;13.462;13.552;13.462;12.746;-9999;-9999;-9999;-9999;
+3000;11.323;11.336;11.387;11.466;11.569;11.679;11.808;11.968;12.129;12.283;12.46;12.641;12.801;12.9;12.842;12.269;-9999;-9999;-9999;-9999;
+3500;10.757;10.776;10.824;10.898;10.995;11.098;11.219;11.37;11.523;11.669;11.835;12.009;12.165;12.266;12.236;11.772;-9999;-9999;-9999;-9999;
+4000;10.221;10.239;10.283;10.352;10.444;10.54;10.654;10.796;10.941;11.079;11.236;11.402;11.553;11.657;11.648;11.273;-9999;-9999;-9999;-9999;
+4500;9.707;9.7224;9.7638;9.8285;9.9144;10.004;10.111;10.245;10.383;10.513;10.661;10.82;10.965;11.07;11.079;10.778;9.2284;-9999;-9999;-9999;
+5000;9.2055;9.2215;9.26;9.3218;9.4026;9.4886;9.5892;9.717;9.8471;9.9694;10.11;10.261;10.401;10.506;10.528;10.29;9.0959;-9999;-9999;-9999;
+5500;8.7259;8.7406;8.7761;8.8338;8.9102;8.99;9.0839;9.2053;9.33;9.4469;9.5811;9.7247;9.8592;9.9636;9.9919;9.8159;8.8863;-9999;-9999;-9999;
+6000;8.2674;8.2794;8.3165;8.3656;8.4376;8.5122;8.5997;8.7142;8.8322;8.9422;9.0686;9.2071;9.3381;9.4425;9.4808;9.3502;8.6238;-9999;-9999;-9999;
+6500;7.8291;7.837;7.8708;7.9173;7.9847;8.0545;8.1361;8.2439;8.3554;8.4588;8.5777;8.7091;8.8346;8.9376;8.9845;8.8978;8.3218;-9999;-9999;-9999;
+7000;7.401;7.4129;7.444;7.4878;7.5511;7.6163;7.6959;7.7938;7.8989;7.9961;8.1079;8.2325;8.3524;8.4531;8.5059;8.4497;8.0026;-9999;-9999;-9999;
+7500;6.9927;7.0065;7.0353;7.0767;7.1358;7.1968;7.2713;7.3631;7.4623;7.5536;7.6586;7.7765;7.8908;7.9891;8.0458;8.0154;7.6665;-9999;-9999;-9999;
+8000;6.6076;6.6179;6.6445;6.6834;6.7387;6.7957;6.8652;6.9512;7.0447;7.1305;7.2289;7.3405;7.4491;7.5446;7.6076;7.5947;7.3244;-9999;-9999;-9999;
+8500;6.2404;6.2462;6.271;6.3074;6.3591;6.4121;6.4771;6.5576;6.6456;6.7262;6.8184;6.9237;7.0269;7.1214;7.1904;7.1887;6.9851;6.0123;-9999;-9999;
+9000;5.8822;5.8907;5.9139;5.9479;5.9962;6.0457;6.1062;6.1816;6.2643;6.3399;6.4263;6.5272;6.6266;6.7187;6.786;6.797;6.6419;5.9341;-9999;-9999;
+9500;5.5412;5.5509;5.5727;5.6044;5.6495;5.6956;5.7521;5.8233;5.9014;5.9733;6.0538;6.1505;6.2449;6.3326;6.3999;6.4194;6.3041;5.7581;-9999;-9999;
+10000;5.2193;5.2266;5.247;5.2765;5.3197;5.3636;5.417;5.4835;5.5572;5.6249;5.7;5.7907;5.8799;5.9636;6.0302;6.0554;5.9733;5.561;-9999;-9999;
+10500;4.9132;4.92;4.939;4.9669;5.0065;5.0474;5.0972;5.1594;5.2285;5.292;5.3622;5.4473;5.5314;5.6112;5.6766;5.7072;5.6507;5.3437;-9999;-9999;
+11000;4.6207;4.6269;4.6447;4.6707;4.7076;4.7457;4.7921;4.8501;4.9149;4.9743;5.0387;5.1197;5.1991;5.275;5.3387;5.3735;5.3372;5.1058;-9999;-9999;
+11500;4.2598;4.2658;4.2822;4.3062;4.3403;4.3755;4.4184;4.472;4.5318;4.5867;4.6465;4.721;4.7941;4.8639;4.9221;4.9531;4.9169;4.6941;-9999;-9999;
+12000;3.9271;3.9328;3.9479;3.97;4.0017;4.0341;4.0719;4.1232;4.1786;4.2292;4.2849;4.3533;4.4207;4.4848;4.538;4.5654;4.5296;4.3151;-9999;-9999;
+12500;3.6203;3.6257;3.6397;3.6603;3.6893;3.7193;3.7543;3.8016;3.8528;3.8996;3.9513;4.0142;4.0763;4.1353;4.1839;4.2081;4.1726;3.9662;-9999;-9999;
+13000;3.3375;3.3432;3.3559;3.3745;3.4013;3.4289;3.4605;3.5052;3.5524;3.5956;3.6434;3.7014;3.7587;3.813;3.8573;3.8786;3.8436;3.6449;-9999;-9999;
+13500;3.0768;3.0834;3.095;3.1122;3.137;3.1619;3.1913;3.2318;3.2753;3.3153;3.3595;3.4131;3.4659;3.5158;3.5562;3.5749;3.5405;3.3493;-9999;-9999;
+14000;2.8364;2.8437;2.8545;2.8703;2.8932;2.9162;2.9434;2.9804;3.0203;3.0567;3.0966;3.1471;3.1958;3.2417;3.2786;3.2949;3.2611;3.0741;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;14.728;14.763;14.842;14.947;15.112;15.273;15.468;15.692;15.898;16.103;16.336;16.536;16.654;16.562;15.722;-9999;-9999;-9999;-9999;-9999;
+500;14.054;14.059;14.152;14.252;14.406;14.557;14.739;14.95;15.147;15.343;15.566;15.762;15.886;15.829;15.145;-9999;-9999;-9999;-9999;-9999;
+1000;13.405;13.42;13.488;13.582;13.727;13.869;14.04;14.24;14.427;14.613;14.824;15.015;15.145;15.118;14.57;14.749;-9999;-9999;-9999;-9999;
+1500;12.758;12.783;12.847;12.937;13.073;13.208;13.368;13.558;13.736;13.913;14.113;14.297;14.43;14.429;13.987;-9999;-9999;-9999;-9999;-9999;
+2000;12.136;12.167;12.227;12.312;12.439;12.566;12.718;12.898;13.069;13.24;13.431;13.608;13.741;13.759;13.408;11.48;-9999;-9999;-9999;-9999;
+2500;11.553;11.575;11.631;11.718;11.83;11.949;12.092;12.262;12.425;12.587;12.77;12.943;13.078;13.111;12.829;11.305;-9999;-9999;-9999;-9999;
+3000;10.986;11.006;11.058;11.14;11.245;11.357;11.49;11.651;11.806;11.96;12.133;12.3;12.434;12.475;12.262;11.047;-9999;-9999;-9999;-9999;
+3500;10.442;10.46;10.508;10.584;10.683;10.788;10.913;11.065;11.212;11.358;11.522;11.682;11.815;11.866;11.706;10.72;-9999;-9999;-9999;-9999;
+4000;9.9219;9.9243;9.9791;10.051;10.143;10.242;10.359;10.503;10.642;10.78;10.935;11.089;11.219;11.279;11.159;10.36;-9999;-9999;-9999;-9999;
+4500;9.4112;9.4284;9.4705;9.538;9.6263;9.7183;9.8276;9.9629;10.096;10.225;10.372;10.52;10.647;10.713;10.627;9.9845;-9999;-9999;-9999;-9999;
+5000;8.9226;8.9393;8.9784;9.0415;9.1246;9.2117;9.3151;9.4441;9.5711;9.6933;9.8325;9.9741;10.098;10.168;10.11;9.5913;-9999;-9999;-9999;-9999;
+5500;8.4551;8.4702;8.5066;8.5655;8.6432;8.7248;8.8214;8.9429;9.0638;9.1801;9.3131;9.4501;9.5703;9.6445;9.6088;9.1922;-9999;-9999;-9999;-9999;
+6000;8.0065;8.0206;8.0543;8.1093;8.1824;8.2585;8.3489;8.463;8.5773;8.6867;8.8121;8.9429;9.0608;9.139;9.1227;8.7955;-9999;-9999;-9999;-9999;
+6500;7.578;7.5899;7.6211;7.6724;7.741;7.8118;7.8963;8.0034;8.1116;8.2145;8.3326;8.4572;8.5709;8.6506;8.6495;8.3897;-9999;-9999;-9999;-9999;
+7000;7.1687;7.1702;7.2059;7.2541;7.3184;7.3845;7.4634;7.5639;7.6661;7.7627;7.8738;7.9924;8.1018;8.1819;8.1931;7.9897;6.9606;-9999;-9999;-9999;
+7500;6.7711;6.7827;6.8132;6.8538;6.9141;6.9757;7.0494;7.1435;7.24;7.3307;7.4351;7.5478;7.6527;7.7325;7.7499;7.597;6.8149;-9999;-9999;-9999;
+8000;6.3921;6.405;6.4328;6.4711;6.5274;6.5848;6.6536;6.7417;6.8328;6.9178;7.0158;7.1226;7.2231;7.3021;7.3277;7.221;6.6136;-9999;-9999;-9999;
+8500;6.0309;6.0437;6.0692;6.1052;6.1579;6.2114;6.2752;6.3579;6.4436;6.5234;6.6152;6.7163;6.8123;6.89;6.9223;6.8418;6.3739;-9999;-9999;-9999;
+9000;5.6869;5.6983;5.7218;5.7558;5.8049;5.8546;5.9138;5.9914;6.0721;6.1468;6.2327;6.3283;6.4198;6.4959;6.5332;6.4831;6.1218;-9999;-9999;-9999;
+9500;5.3601;5.3684;5.3903;5.4219;5.4677;5.514;5.5689;5.6416;5.7175;5.7874;5.8678;5.958;6.045;6.1192;6.1601;6.1313;5.8533;-9999;-9999;-9999;
+10000;5.049;5.0534;5.0738;5.1033;5.1459;5.189;5.24;5.3079;5.3792;5.4446;5.5197;5.6048;5.6873;5.7592;5.8029;5.7913;5.5791;-9999;-9999;-9999;
+10500;4.746;4.7529;4.7719;4.7994;4.839;4.8791;4.9264;4.9898;5.0567;5.1179;5.1881;5.2681;5.3463;5.4156;5.4636;5.4633;5.3064;4.5425;-9999;-9999;
+11000;4.4583;4.4663;4.484;4.5096;4.5465;4.5837;4.6276;4.6867;4.7495;4.8067;4.8721;4.9474;5.0213;5.0898;5.1408;5.148;5.0306;4.475;-9999;-9999;
+11500;4.1135;4.1197;4.136;4.1595;4.1937;4.2281;4.2687;4.3233;4.3813;4.4341;4.4945;4.564;4.632;4.6931;4.7384;4.7445;4.6317;4.0952;-9999;-9999;
+12000;3.7953;3.8001;3.815;3.8368;3.8684;3.9001;3.9378;3.9882;4.0417;4.0904;4.1462;4.2103;4.273;4.3289;4.3685;4.3725;4.2641;-9999;-9999;-9999;
+12500;3.5001;3.505;3.519;3.539;3.5684;3.5976;3.6325;3.679;3.7284;3.7734;3.825;3.8841;3.9418;3.9931;4.0272;4.0297;3.9256;3.4523;-9999;-9999;
+13000;3.2279;3.2329;3.246;3.2645;3.2916;3.3186;3.351;3.3939;3.4395;3.481;3.5287;3.5832;3.6364;3.6833;3.714;3.7137;3.6137;-9999;-9999;-9999;
+13500;2.9768;2.9821;2.9942;3.0112;3.0364;3.0612;3.0913;3.1309;3.173;3.2113;3.2554;3.3057;3.3546;3.3976;3.4251;3.4224;3.3264;2.8085;-9999;-9999;
+14000;2.747;2.7509;2.7619;2.7777;2.801;2.8239;2.8517;2.8883;2.9271;2.9626;3.0033;3.0497;3.0947;3.1341;3.1588;3.1538;3.0618;2.5914;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;14.344;14.349;14.466;14.575;14.75;14.917;15.119;15.344;15.544;15.753;15.959;16.124;16.176;15.873;14.16;-9999;-9999;-9999;-9999;-9999;
+500;13.684;13.689;13.788;13.89;14.053;14.21;14.399;14.611;14.801;15;15.2;15.365;15.42;15.193;13.807;-9999;-9999;-9999;-9999;-9999;
+1000;13.049;13.053;13.135;13.232;13.384;13.531;13.709;13.91;14.09;14.279;14.47;14.634;14.703;14.529;13.409;-9999;-9999;-9999;-9999;-9999;
+1500;12.411;12.437;12.505;12.596;12.739;12.879;13.047;13.237;13.408;13.588;13.771;13.931;14.01;13.882;12.967;-9999;-9999;-9999;-9999;-9999;
+2000;11.798;11.834;11.897;11.983;12.116;12.247;12.405;12.586;12.75;12.922;13.1;13.256;13.342;13.25;12.514;-9999;-9999;-9999;-9999;-9999;
+2500;11.23;11.254;11.312;11.393;11.518;11.641;11.789;11.96;12.116;12.279;12.451;12.604;12.698;12.636;12.033;-9999;-9999;-9999;-9999;-9999;
+3000;10.685;10.696;10.751;10.827;10.944;11.059;11.197;11.359;11.507;11.655;11.826;11.976;12.073;12.037;11.547;-9999;-9999;-9999;-9999;-9999;
+3500;10.141;10.161;10.212;10.291;10.393;10.501;10.63;10.783;10.924;11.064;11.227;11.372;11.472;11.456;11.062;-9999;-9999;-9999;-9999;-9999;
+4000;9.6286;9.6475;9.6947;9.7684;9.8638;9.9651;10.086;10.23;10.365;10.498;10.652;10.792;10.893;10.895;10.576;-9999;-9999;-9999;-9999;-9999;
+4500;9.1327;9.1506;9.1949;9.2647;9.3546;9.4507;9.5647;9.7005;9.8279;9.9547;10.101;10.235;10.337;10.352;10.097;8.6805;-9999;-9999;-9999;-9999;
+5000;8.6586;8.6731;8.7142;8.7791;8.8636;8.9534;9.0605;9.1898;9.3121;9.4341;9.5718;9.7014;9.8027;9.8234;9.627;8.5043;-9999;-9999;-9999;-9999;
+5500;8.2055;8.2153;8.2533;8.3139;8.3929;8.4769;8.577;8.6987;8.8146;8.9302;9.0615;9.1876;9.2895;9.3207;9.168;8.2843;-9999;-9999;-9999;-9999;
+6000;7.7621;7.7767;7.8119;7.8684;7.9436;8.0211;8.1142;8.2287;8.3386;8.448;8.5715;8.6925;8.7927;8.8326;8.7215;8.0036;-9999;-9999;-9999;-9999;
+6500;7.339;7.3567;7.3893;7.4419;7.5123;7.5846;7.6713;7.779;7.8832;7.9859;8.1025;8.2183;8.3164;8.3626;8.2817;7.7147;-9999;-9999;-9999;-9999;
+7000;6.9421;6.9548;6.9849;7.0338;7.0997;7.1671;7.2477;7.349;7.4476;7.5439;7.6539;7.7645;7.8602;7.9112;7.8542;7.4041;-9999;-9999;-9999;-9999;
+7500;6.5584;6.5702;6.5981;6.6436;6.7052;6.7679;6.843;6.938;7.0312;7.1215;7.225;7.3306;7.4234;7.4779;7.4408;7.0846;-9999;-9999;-9999;-9999;
+8000;6.1926;6.2025;6.2282;6.2706;6.328;6.3864;6.4564;6.5453;6.6333;6.718;6.8152;6.9157;7.0055;7.0625;7.0417;6.7611;-9999;-9999;-9999;-9999;
+8500;5.844;5.8452;5.8745;5.9141;5.9678;6.022;6.0871;6.1703;6.2533;6.3326;6.4239;6.5194;6.6059;6.6644;6.657;6.4414;-9999;-9999;-9999;-9999;
+9000;5.5117;5.5153;5.5402;5.5735;5.6237;5.6742;5.7347;5.8124;5.8907;5.9648;6.0504;6.1411;6.2241;6.2834;6.2868;6.1196;5.2549;-9999;-9999;-9999;
+9500;5.1858;5.1947;5.2172;5.2486;5.2954;5.3422;5.3985;5.4711;5.5447;5.614;5.6941;5.7801;5.8596;5.919;5.9312;5.8035;5.1548;-9999;-9999;-9999;
+10000;4.8804;4.8885;4.9092;4.9387;4.9822;5.0256;5.0779;5.1456;5.2148;5.2797;5.3545;5.4357;5.5118;5.5707;5.5871;5.4944;5.0059;-9999;-9999;-9999;
+10500;4.5902;4.5965;4.6157;4.6432;4.6836;4.7239;4.7725;4.8355;4.9005;4.9611;5.031;5.1077;5.1801;5.238;5.2601;5.1933;4.8233;-9999;-9999;-9999;
+11000;4.3145;4.3153;4.3343;4.3616;4.3991;4.4364;4.4816;4.5402;4.6012;4.6577;4.7229;4.7952;4.8641;4.9208;4.9473;4.9046;4.6243;-9999;-9999;-9999;
+11500;3.9779;3.9833;4.0001;4.0237;4.0586;4.093;4.1348;4.189;4.2453;4.2974;4.3577;4.4243;4.4877;4.5394;4.5626;4.5194;4.2504;-9999;-9999;-9999;
+12000;3.6695;3.6752;3.6904;3.7122;3.7445;3.7763;3.8148;3.865;3.9169;3.9651;4.0208;4.0822;4.1405;4.1877;4.2078;4.1651;3.904;-9999;-9999;-9999;
+12500;3.3849;3.3912;3.4047;3.4248;3.4548;3.4841;3.5197;3.5662;3.6141;3.6585;3.7099;3.7666;3.8202;3.8632;3.8807;3.8357;3.5871;-9999;-9999;-9999;
+13000;3.1238;3.1282;3.1412;3.1598;3.1875;3.2145;3.2474;3.2905;3.3346;3.3757;3.4232;3.4755;3.5247;3.564;3.579;3.5347;3.2951;-9999;-9999;-9999;
+13500;2.8828;2.8858;2.8981;2.9152;2.9409;2.9659;2.9962;3.0361;3.0769;3.1148;3.1587;3.2069;3.2522;3.2879;3.3008;3.2573;3.0264;-9999;-9999;-9999;
+14000;2.6587;2.6628;2.6739;2.6897;2.7135;2.7365;2.7645;2.8015;2.8391;2.8741;2.9147;2.9591;3.0007;3.0333;3.0441;3.0016;2.7792;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.994;14.04;14.143;14.241;14.428;14.602;14.804;15.036;15.232;15.43;15.612;15.725;15.665;15.011;14.215;-9999;-9999;-9999;-9999;-9999;
+500;13.347;13.352;13.459;13.565;13.738;13.901;14.092;14.309;14.495;14.684;14.864;14.984;14.952;14.414;13.841;-9999;-9999;-9999;-9999;-9999;
+1000;12.725;12.73;12.815;12.914;13.076;13.229;13.409;13.615;13.791;13.971;14.144;14.268;14.262;13.823;13.482;-9999;-9999;-9999;-9999;-9999;
+1500;12.093;12.121;12.194;12.287;12.438;12.583;12.759;12.949;13.116;13.288;13.455;13.58;13.593;13.251;11.32;-9999;-9999;-9999;-9999;-9999;
+2000;11.487;11.527;11.595;11.683;11.824;11.96;12.124;12.306;12.465;12.631;12.794;12.92;12.948;12.67;11.13;-9999;-9999;-9999;-9999;-9999;
+2500;10.933;10.957;11.02;11.103;11.235;11.362;11.516;11.688;11.839;11.997;12.155;12.282;12.314;12.102;10.867;-9999;-9999;-9999;-9999;-9999;
+3000;10.402;10.41;10.468;10.546;10.669;10.789;10.933;11.095;11.239;11.39;11.541;11.667;11.71;11.544;10.533;-9999;-9999;-9999;-9999;-9999;
+3500;9.8638;9.8849;9.9389;10.012;10.127;10.239;10.374;10.527;10.663;10.807;10.952;11.076;11.128;11;10.177;-9999;-9999;-9999;-9999;-9999;
+4000;9.3603;9.3804;9.4309;9.5003;9.607;9.7118;9.8376;9.9824;10.112;10.248;10.387;10.509;10.568;10.472;9.7961;-9999;-9999;-9999;-9999;-9999;
+4500;8.8786;8.8928;8.9397;9.0118;9.1055;9.2045;9.3229;9.4605;9.583;9.7121;9.846;9.9643;10.03;9.9605;9.4081;-9999;-9999;-9999;-9999;-9999;
+5000;8.408;8.4255;8.4689;8.5361;8.6238;8.7162;8.827;8.957;9.0741;9.1974;9.327;9.4422;9.5117;9.4656;9.018;-9999;-9999;-9999;-9999;-9999;
+5500;7.9584;7.9779;8.018;8.0806;8.1626;8.249;8.3523;8.4747;8.5854;8.7019;8.8259;8.9387;9.0122;8.986;8.6231;8.6565;-9999;-9999;-9999;-9999;
+6000;7.5339;7.5492;7.5863;7.6446;7.7212;7.8018;7.8982;8.0133;8.1183;8.2279;8.3462;8.4551;8.5304;8.5204;8.2325;8.4047;-9999;-9999;-9999;-9999;
+6500;7.1247;7.1389;7.1732;7.2275;7.2989;7.3742;7.464;7.5721;7.6716;7.7707;7.887;7.992;8.0683;8.0715;7.8417;-9999;-9999;-9999;-9999;-9999;
+7000;6.7345;6.7362;6.7777;6.8286;6.8951;6.9653;7.0489;7.1505;7.2447;7.3383;7.448;7.5489;7.6254;7.6394;7.4581;6.4371;-9999;-9999;-9999;-9999;
+7500;6.3624;6.3639;6.3999;6.4472;6.5107;6.5747;6.6524;6.7476;6.8368;6.9253;7.0285;7.1251;7.2012;7.2191;7.0831;6.3002;-9999;-9999;-9999;-9999;
+8000;6.0076;6.0122;6.0392;6.0827;6.142;6.2015;6.2737;6.363;6.4473;6.5309;6.6276;6.7201;6.7953;6.8204;6.7212;6.1108;-9999;-9999;-9999;-9999;
+8500;5.6589;5.6695;5.6943;5.7347;5.7899;5.8453;5.9122;5.9959;6.0755;6.1544;6.2448;6.3333;6.407;6.4379;6.3641;5.882;-9999;-9999;-9999;-9999;
+9000;5.3325;5.3424;5.3652;5.4026;5.454;5.5054;5.5673;5.6457;5.721;5.795;5.8796;5.964;6.0359;6.0713;6.0185;5.6418;-9999;-9999;-9999;-9999;
+9500;5.0221;5.0301;5.051;5.0857;5.1336;5.1813;5.2387;5.312;5.3829;5.452;5.5314;5.6116;5.6815;5.7203;5.6847;5.3905;-9999;-9999;-9999;-9999;
+10000;4.7268;4.7277;4.7512;4.7836;4.828;4.8722;4.9255;4.9939;5.0607;5.1252;5.1995;5.2758;5.3433;5.3845;5.363;5.1342;-9999;-9999;-9999;-9999;
+10500;4.4404;4.4483;4.4684;4.4956;4.537;4.5779;4.6273;4.691;4.7538;4.814;4.8835;4.9558;5.0208;5.0634;5.0534;4.8767;-9999;-9999;-9999;-9999;
+11000;4.1687;4.1776;4.1959;4.2214;4.2599;4.2977;4.3434;4.4027;4.4617;4.5179;4.5827;4.6512;4.7135;4.757;4.7563;4.6232;3.9317;-9999;-9999;-9999;
+11500;3.8484;3.8548;3.8717;3.8953;3.931;3.9659;4.0082;4.063;4.1174;4.1693;4.2292;4.2923;4.3494;4.3888;4.3864;4.2585;3.5962;-9999;-9999;-9999;
+12000;3.5527;3.5534;3.571;3.5946;3.6276;3.6598;3.6989;3.7496;3.7998;3.8476;3.903;3.9612;4.0136;4.0492;4.0452;3.9225;-9999;-9999;-9999;-9999;
+12500;3.2797;3.2804;3.2953;3.3171;3.3477;3.3774;3.4135;3.4605;3.5067;3.5509;3.6021;3.6556;3.7037;3.7358;3.7306;3.6128;-9999;-9999;-9999;-9999;
+13000;3.0238;3.0291;3.0423;3.0609;3.0894;3.1168;3.1502;3.1937;3.2363;3.2771;3.3245;3.3738;3.4179;3.4467;3.4405;3.3273;-9999;-9999;-9999;-9999;
+13500;2.7879;2.7954;2.8075;2.8247;2.8512;2.8764;2.9072;2.9475;2.9868;3.0246;3.0684;3.1139;3.1543;3.1801;3.1729;3.0627;-9999;-9999;-9999;-9999;
+14000;2.5753;2.5796;2.5909;2.6067;2.6313;2.6545;2.6831;2.7204;2.7568;2.7917;2.8322;2.8741;2.9112;2.9344;2.9262;2.8203;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.684;13.741;13.851;13.954;14.154;14.338;14.546;14.783;14.974;15.152;15.292;15.319;15.072;13.773;-9999;-9999;-9999;-9999;-9999;-9999;
+500;13.05;13.056;13.186;13.282;13.467;13.639;13.833;14.058;14.242;14.415;14.559;14.602;14.409;13.334;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;12.441;12.45;12.546;12.636;12.809;12.971;13.154;13.364;13.538;13.707;13.852;13.909;13.763;12.875;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.81;11.814;11.917;12.014;12.176;12.328;12.501;12.699;12.865;13.028;13.171;13.242;13.134;12.405;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;11.205;11.253;11.326;11.417;11.567;11.71;11.873;12.06;12.217;12.375;12.516;12.595;12.523;11.924;11.098;-9999;-9999;-9999;-9999;-9999;
+2500;10.665;10.691;10.758;10.844;10.984;11.118;11.272;11.448;11.596;11.747;11.886;11.97;11.925;11.434;10.864;-9999;-9999;-9999;-9999;-9999;
+3000;10.127;10.152;10.214;10.295;10.425;10.55;10.695;10.861;11.001;11.145;11.28;11.369;11.345;10.94;10.54;-9999;-9999;-9999;-9999;-9999;
+3500;9.6125;9.6161;9.6914;9.7678;9.8894;10.006;10.147;10.299;10.432;10.568;10.7;10.791;10.786;10.453;10.221;-9999;-9999;-9999;-9999;-9999;
+4000;9.1201;9.1365;9.1906;9.2623;9.376;9.4852;9.617;9.761;9.8859;10.017;10.143;10.237;10.246;9.9833;8.5058;-9999;-9999;-9999;-9999;-9999;
+4500;8.6377;8.6576;8.7078;8.775;8.8808;8.9836;9.1077;9.2451;9.3643;9.4886;9.6107;9.7049;9.726;9.5131;8.3327;-9999;-9999;-9999;-9999;-9999;
+5000;8.177;8.199;8.2453;8.3153;8.407;8.5029;8.6187;8.7485;8.8614;8.9808;9.0995;9.1945;9.2173;9.056;8.1081;-9999;-9999;-9999;-9999;-9999;
+5500;7.7427;7.76;7.8027;7.8679;7.9535;8.043;8.1507;8.2732;8.3802;8.4936;8.6075;8.7016;8.7339;8.6079;7.8432;-9999;-9999;-9999;-9999;-9999;
+6000;7.3238;7.3398;7.3793;7.4399;7.5197;7.6032;7.7035;7.8189;7.9202;8.0276;8.1367;8.2294;8.2687;8.1728;7.5569;-9999;-9999;-9999;-9999;-9999;
+6500;6.9241;6.9262;6.9739;7.0307;7.105;7.1828;7.2761;7.3847;7.4805;7.5822;7.6866;7.7772;7.822;7.7515;7.2528;-9999;-9999;-9999;-9999;-9999;
+7000;6.5429;6.5448;6.5869;6.6395;6.7088;6.7812;6.868;6.97;7.0604;7.1564;7.2562;7.3445;7.3935;7.3442;6.944;-9999;-9999;-9999;-9999;-9999;
+7500;6.1735;6.1864;6.2173;6.2658;6.3303;6.3977;6.4783;6.5741;6.6593;6.7498;6.8451;6.9306;6.9828;6.9512;6.631;-9999;-9999;-9999;-9999;-9999;
+8000;5.8219;5.8355;5.864;5.909;5.969;6.0317;6.1065;6.1963;6.2766;6.3617;6.4526;6.5352;6.5894;6.5724;6.3176;6.3777;-9999;-9999;-9999;-9999;
+8500;5.4872;5.5006;5.5268;5.5685;5.6258;5.6826;5.7519;5.836;5.9118;5.9915;6.0779;6.1574;6.2129;6.2079;6.0084;6.1548;-9999;-9999;-9999;-9999;
+9000;5.1689;5.1811;5.2051;5.2437;5.2971;5.3497;5.4139;5.4925;5.5642;5.6353;5.7204;5.7968;5.8529;5.8577;5.7012;4.8121;-9999;-9999;-9999;-9999;
+9500;4.8663;4.8763;4.8983;4.934;4.9837;5.0323;5.0918;5.1654;5.2329;5.2999;5.3797;5.4529;5.509;5.5216;5.3998;4.7415;-9999;-9999;-9999;-9999;
+10000;4.5787;4.5798;4.6056;4.6389;4.6849;4.73;4.7851;4.8537;4.9175;4.9805;5.0552;5.125;5.1806;5.1959;5.1101;4.5961;-9999;-9999;-9999;-9999;
+10500;4.3006;4.3088;4.3273;4.3578;4.4004;4.4422;4.493;4.5572;4.6173;4.6766;4.7461;4.8127;4.8674;4.8878;4.8237;4.4306;-9999;-9999;-9999;-9999;
+11000;4.0368;4.0452;4.0621;4.0903;4.1298;4.1684;4.2152;4.2751;4.3318;4.3874;4.452;4.5154;4.5688;4.5932;4.5472;4.2431;-9999;-9999;-9999;-9999;
+11500;3.7284;3.7334;3.7493;3.7752;3.812;3.8476;3.8908;3.9462;3.9984;4.0497;4.1096;4.1678;4.2166;4.238;4.1928;3.9007;-9999;-9999;-9999;-9999;
+12000;3.4437;3.4444;3.4605;3.4846;3.5187;3.5515;3.5914;3.6427;3.6908;3.7381;3.7936;3.8474;3.8919;3.9102;3.8661;3.5859;-9999;-9999;-9999;-9999;
+12500;3.175;3.181;3.1964;3.2162;3.248;3.2783;3.3152;3.3627;3.4072;3.4507;3.5023;3.5518;3.5924;3.608;3.5648;3.296;-9999;-9999;-9999;-9999;
+13000;2.9306;2.9362;2.9503;2.9687;2.9982;3.0261;3.0604;3.1045;3.1455;3.1856;3.2335;3.279;3.3161;3.3294;3.287;3.0291;-9999;-9999;-9999;-9999;
+13500;2.705;2.7103;2.7233;2.7403;2.7678;2.7934;2.8253;2.8663;2.9041;2.9409;2.9854;3.0272;3.0611;3.0725;3.0308;2.7833;-9999;-9999;-9999;-9999;
+14000;2.4968;2.5019;2.5138;2.5296;2.5552;2.5789;2.6095;2.6465;2.6812;2.7151;2.7563;2.7948;2.8258;2.8354;2.7946;2.557;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.429;13.435;13.594;13.698;13.918;14.115;14.325;14.562;14.745;14.895;14.983;14.912;14.356;12.92;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.787;12.793;12.919;13.033;13.235;13.42;13.617;13.841;14.016;14.162;14.259;14.216;13.753;11.572;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;12.163;12.169;12.289;12.396;12.582;12.756;12.942;13.154;13.32;13.462;13.562;13.543;13.161;11.391;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.561;11.598;11.695;11.783;11.955;12.118;12.295;12.495;12.654;12.793;12.895;12.894;12.582;11.143;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.988;10.993;11.096;11.193;11.354;11.507;11.673;11.863;12.014;12.15;12.255;12.258;12.016;10.828;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.438;10.461;10.534;10.623;10.774;10.917;11.075;11.256;11.4;11.533;11.638;11.655;11.461;10.468;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.8996;9.9037;9.9928;10.077;10.217;10.35;10.5;10.671;10.81;10.941;11.046;11.076;10.922;10.097;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.3848;9.4138;9.4764;9.555;9.6851;9.8081;9.9488;10.11;10.241;10.369;10.478;10.518;10.399;9.7132;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.8982;8.9017;8.9788;9.0536;9.1751;9.2904;9.422;9.5738;9.6982;9.8208;9.9284;9.9797;9.8915;9.322;8.5387;-9999;-9999;-9999;-9999;-9999;
+4500;8.4329;8.4488;8.5028;8.5724;8.6852;8.793;8.9168;9.0603;9.1785;9.2964;9.4022;9.4594;9.3979;8.9324;8.3207;-9999;-9999;-9999;-9999;-9999;
+5000;7.9772;7.997;8.0468;8.112;8.2168;8.3173;8.433;8.5681;8.6796;8.793;8.8971;8.9594;8.9192;8.5372;8.1113;-9999;-9999;-9999;-9999;-9999;
+5500;7.5424;7.5647;7.6106;7.6718;7.7689;7.8626;7.9765;8.0979;8.2029;8.3112;8.4126;8.4781;8.4553;8.1425;7.8463;-9999;-9999;-9999;-9999;-9999;
+6000;7.1342;7.1513;7.1937;7.2572;7.341;7.4282;7.5339;7.6486;7.7477;7.8508;7.9492;8.0169;8.0086;7.7543;7.593;-9999;-9999;-9999;-9999;-9999;
+6500;6.7447;6.7562;6.7952;6.8542;6.9322;7.0133;7.1113;7.2196;7.3132;7.4112;7.5062;7.5752;7.579;7.3804;6.2709;-9999;-9999;-9999;-9999;-9999;
+7000;6.3641;6.3787;6.4146;6.4693;6.5419;6.6173;6.7081;6.8103;6.8985;6.9916;7.0829;7.1525;7.158;7.0078;6.1358;-9999;-9999;-9999;-9999;-9999;
+7500;6.0015;6.0182;6.0512;6.1019;6.1694;6.2395;6.3237;6.4198;6.5029;6.5911;6.6787;6.7482;6.7626;6.645;5.9625;-9999;-9999;-9999;-9999;-9999;
+8000;5.6615;5.6741;5.7045;5.7514;5.8141;5.8792;5.9572;6.0474;6.1256;6.2091;6.293;6.3618;6.3835;6.2931;5.7446;-9999;-9999;-9999;-9999;-9999;
+8500;5.3379;5.3458;5.3737;5.4171;5.4753;5.5357;5.608;5.6925;5.7662;5.8449;5.925;5.9927;6.0202;5.9526;5.5142;-9999;-9999;-9999;-9999;-9999;
+9000;5.0221;5.0328;5.0584;5.0985;5.1525;5.2085;5.2755;5.3545;5.4238;5.498;5.5743;5.6404;5.6723;5.6238;5.2766;-9999;-9999;-9999;-9999;-9999;
+9500;4.7222;4.7345;4.7578;4.7949;4.845;4.8968;4.9588;5.0327;5.0978;5.1675;5.2402;5.3044;5.3397;5.3068;5.0322;-9999;-9999;-9999;-9999;-9999;
+10000;4.441;4.4502;4.4716;4.5059;4.5539;4.6003;4.6574;4.7265;4.7877;4.8529;4.9221;4.984;5.0218;5.0018;4.7856;-9999;-9999;-9999;-9999;-9999;
+10500;4.1741;4.1796;4.1992;4.2308;4.2752;4.3181;4.3709;4.4353;4.4926;4.5537;4.6194;4.679;4.7183;4.7088;4.5409;4.6436;-9999;-9999;-9999;-9999;
+11000;3.9143;3.9221;3.94;3.9691;4.0103;4.0498;4.0985;4.1585;4.2125;4.2693;4.3314;4.3886;4.4288;4.4234;4.2968;4.4256;-9999;-9999;-9999;-9999;
+11500;3.6146;3.621;3.6375;3.6644;3.7027;3.7391;3.7843;3.84;3.8898;3.9424;3.9997;4.0523;4.0888;4.0858;3.9599;4.0778;-9999;-9999;-9999;-9999;
+12000;3.3379;3.3387;3.3582;3.3832;3.4188;3.4523;3.4943;3.5462;3.592;3.6407;3.6935;3.7419;3.7749;3.7703;3.6492;3.7564;-9999;-9999;-9999;-9999;
+12500;3.0823;3.0868;3.1008;3.1237;3.157;3.1879;3.2268;3.275;3.3172;3.3622;3.4109;3.4553;3.4853;3.4792;3.3628;3.4581;-9999;-9999;-9999;-9999;
+13000;2.8442;2.8501;2.8629;2.8843;2.9153;2.944;2.9799;3.0247;3.0635;3.1051;3.15;3.1908;3.2179;3.2106;3.0988;-9999;-9999;-9999;-9999;-9999;
+13500;2.6245;2.6317;2.6435;2.6633;2.6924;2.7189;2.7521;2.7935;2.8294;2.8677;2.9091;2.9466;2.9711;2.9629;2.8555;2.9183;-9999;-9999;-9999;-9999;
+14000;2.4251;2.4302;2.4413;2.4595;2.4866;2.511;2.5418;2.5801;2.6131;2.6486;2.6867;2.7212;2.7433;2.7345;2.6312;2.6931;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.178;13.263;13.4;13.513;13.752;13.964;14.174;14.41;14.58;14.69;14.704;14.46;13.367;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.568;12.574;12.738;12.842;13.064;13.262;13.46;13.683;13.847;13.957;13.987;13.793;12.873;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.943;11.949;12.103;12.201;12.407;12.592;12.78;12.991;13.146;13.257;13.297;13.145;12.376;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.341;11.382;11.491;11.586;11.777;11.951;12.128;12.329;12.477;12.589;12.638;12.522;11.878;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.773;10.778;10.91;10.996;11.175;11.337;11.504;11.694;11.836;11.947;12.005;11.918;11.392;9.9968;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.228;10.256;10.349;10.432;10.598;10.749;10.907;11.087;11.223;11.333;11.397;11.336;10.896;9.7857;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.6999;9.704;9.8022;9.8922;10.046;10.187;10.337;10.506;10.636;10.745;10.814;10.775;10.406;8.6926;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.1944;9.2246;9.3043;9.3757;9.5185;9.6502;9.791;9.9511;10.075;10.182;10.254;10.234;9.9273;8.5398;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.7148;8.7184;8.802;8.8809;9.0141;9.1369;9.2695;9.4205;9.5388;9.6431;9.7183;9.7129;9.4597;8.3162;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;8.2562;8.2722;8.3307;8.4041;8.5285;8.6453;8.77;8.9128;9.0258;9.1275;9.2045;9.2121;9.0058;8.0555;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.803;7.8061;7.8777;7.9466;8.0619;8.1702;8.2894;8.4259;8.534;8.6329;8.7113;8.7299;8.5629;7.781;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.3707;7.3965;7.4463;7.5098;7.6164;7.7172;7.829;7.9574;8.0608;8.1592;8.2386;8.2659;8.1327;7.485;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.9693;6.972;7.033;7.0929;7.1913;7.285;7.3899;7.5104;7.608;7.7027;7.7836;7.8137;7.7165;7.1843;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.5864;6.5974;6.6397;6.6951;6.7857;6.8727;6.9711;7.0841;7.1761;7.267;7.3468;7.3839;7.3134;6.8801;6.2969;-9999;-9999;-9999;-9999;-9999;
+7000;6.2092;6.2249;6.2637;6.3216;6.399;6.4797;6.5719;6.6777;6.7643;6.8513;6.9296;6.9714;6.9208;6.568;6.1437;-9999;-9999;-9999;-9999;-9999;
+7500;5.8501;5.8695;5.9051;5.9586;6.0303;6.1052;6.1913;6.2905;6.3719;6.4549;6.5314;6.5766;6.5428;6.2558;5.945;-9999;-9999;-9999;-9999;-9999;
+8000;5.5171;5.5305;5.5632;5.6126;5.679;5.7484;5.8322;5.9218;5.9981;6.0772;6.1514;6.1992;6.1793;5.9472;5.7509;-9999;-9999;-9999;-9999;-9999;
+8500;5.2001;5.2074;5.2375;5.283;5.3444;5.4087;5.4862;5.5707;5.6423;5.7173;5.7892;5.8386;5.8305;5.644;5.5482;-9999;-9999;-9999;-9999;-9999;
+9000;4.8883;4.8997;4.9272;4.9691;5.026;5.0855;5.1569;5.2365;5.3037;5.3748;5.444;5.4944;5.4959;5.3518;4.576;-9999;-9999;-9999;-9999;-9999;
+9500;4.5923;4.6066;4.6317;4.6704;4.723;4.7779;4.8439;4.9186;4.9817;5.0489;5.1153;5.166;5.1753;5.0616;4.457;-9999;-9999;-9999;-9999;-9999;
+10000;4.3177;4.3275;4.3505;4.3862;4.4348;4.4854;4.5462;4.6164;4.6756;4.739;4.8024;4.8529;4.8644;4.7804;4.3048;-9999;-9999;-9999;-9999;-9999;
+10500;4.0572;4.0621;4.0831;4.116;4.1608;4.2075;4.2636;4.3292;4.3847;4.4444;4.5048;4.5547;4.5715;4.508;4.1359;-9999;-9999;-9999;-9999;-9999;
+11000;3.8015;3.8097;3.8288;3.8591;3.9027;3.9437;3.9952;4.0563;4.1084;4.1645;4.222;4.2708;4.2918;4.2454;3.9535;-9999;-9999;-9999;-9999;-9999;
+11500;3.509;3.5184;3.536;3.5643;3.6049;3.6429;3.6906;3.7472;3.7952;3.847;3.8999;3.9447;3.9632;3.9172;3.6381;-9999;-9999;-9999;-9999;-9999;
+12000;3.239;3.2497;3.2657;3.292;3.3301;3.3653;3.4093;3.4618;3.506;3.5537;3.6026;3.6436;3.6597;3.6145;3.3474;-9999;-9999;-9999;-9999;-9999;
+12500;2.9948;3.0015;3.0167;3.041;3.0765;3.1089;3.1496;3.1982;3.2389;3.283;3.328;3.3656;3.3796;3.3353;3.0797;-9999;-9999;-9999;-9999;-9999;
+13000;2.769;2.7698;2.7867;2.8092;2.8422;2.8721;2.9098;2.9548;2.9923;3.033;3.0744;3.1088;3.121;3.0776;2.8338;-9999;-9999;-9999;-9999;-9999;
+13500;2.556;2.5615;2.5744;2.5951;2.6259;2.6534;2.6882;2.7299;2.7645;2.802;2.8403;2.8717;2.8822;2.8398;2.6065;-9999;-9999;-9999;-9999;-9999;
+14000;2.3593;2.3665;2.3783;2.3974;2.4261;2.4515;2.4837;2.5222;2.5541;2.5888;2.624;2.6528;2.6618;2.6206;2.3971;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.086;13.143;13.296;13.414;13.675;13.904;14.108;14.336;14.484;14.527;14.368;13.621;11.68;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.433;12.438;12.598;12.73;12.972;13.188;13.38;13.595;13.74;13.802;13.734;13.106;11.434;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.798;11.804;11.954;12.078;12.304;12.505;12.688;12.892;13.031;13.1;13.068;12.697;11.156;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.188;11.237;11.359;11.456;11.666;11.854;12.029;12.222;12.357;12.429;12.414;12.107;10.895;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.618;10.623;10.752;10.861;11.056;11.231;11.399;11.583;11.713;11.799;11.781;11.534;10.508;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.073;10.103;10.193;10.293;10.474;10.637;10.796;10.972;11.098;11.184;11.18;10.979;10.107;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.5401;9.5443;9.6545;9.7502;9.9176;10.07;10.219;10.387;10.51;10.589;10.604;10.443;9.7056;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.0304;9.0344;9.142;9.2318;9.3874;9.5287;9.6698;9.8286;9.9449;10.026;10.051;9.9244;9.3027;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.555;8.5586;8.6528;8.7365;8.8806;9.0126;9.1459;9.2959;9.4071;9.489;9.5224;9.4243;8.9021;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;8.1005;8.1206;8.1863;8.2636;8.397;8.5198;8.6454;8.7875;8.8937;8.9757;9.0158;8.9425;8.505;7.4037;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.6548;7.6581;7.7385;7.8117;7.9353;8.0495;8.1679;8.302;8.4033;8.4847;8.5301;8.4778;8.1124;7.2392;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.2298;7.2328;7.3118;7.3804;7.4947;7.6008;7.7122;7.8388;7.9351;8.0154;8.0649;8.0305;7.7344;7.0459;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.8339;6.8367;6.9048;6.9687;7.0744;7.173;7.2776;7.3967;7.4884;7.5672;7.6198;7.6005;7.3558;6.2441;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.456;6.4692;6.5167;6.5759;6.6735;6.765;6.8633;6.9752;7.0623;7.1392;7.1941;7.1874;6.9869;6.0921;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;6.0812;6.0837;6.1417;6.1979;6.2889;6.3748;6.4682;6.5735;6.6561;6.7308;6.7872;6.7909;6.6283;5.8953;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.7249;5.7271;5.7851;5.8376;5.9214;6.001;6.0884;6.1884;6.2683;6.3412;6.3984;6.4108;6.2803;5.685;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.3949;5.397;5.4458;5.5001;5.5718;5.6455;5.7271;5.8207;5.896;5.9676;6.0271;6.0467;5.9435;5.4556;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;5.081;5.0898;5.1233;5.1728;5.2392;5.3073;5.3835;5.4711;5.5418;5.6106;5.6696;5.6917;5.6189;5.2225;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.7727;4.7855;4.816;4.8615;4.9231;4.9859;5.057;5.1388;5.2052;5.271;5.329;5.3559;5.3031;4.9851;4.5989;-9999;-9999;-9999;-9999;-9999;
+9500;4.4802;4.4818;4.5232;4.5656;4.6225;4.6805;4.7468;4.8231;4.8853;4.948;5.0049;5.0352;4.9984;4.7413;4.4579;-9999;-9999;-9999;-9999;-9999;
+10000;4.2097;4.2204;4.2458;4.2844;4.3369;4.3904;4.455;4.5234;4.5815;4.6412;4.6965;4.7295;4.7056;4.4987;4.2698;-9999;-9999;-9999;-9999;-9999;
+10500;3.9531;3.9588;3.982;4.0174;4.0658;4.1151;4.1744;4.2388;4.2931;4.3497;4.4033;4.4381;4.4251;4.2599;4.1494;-9999;-9999;-9999;-9999;-9999;
+11000;3.7013;3.7104;3.7315;3.7639;3.8085;3.8539;3.9085;3.9688;4.0195;4.0731;4.1248;4.1608;4.1564;4.0256;3.983;-9999;-9999;-9999;-9999;-9999;
+11500;3.4193;3.4287;3.4481;3.478;3.5195;3.5615;3.6119;3.6678;3.7145;3.7639;3.8115;3.8442;3.8389;3.713;3.6674;-9999;-9999;-9999;-9999;-9999;
+12000;3.1607;3.1687;3.1864;3.214;3.2524;3.2913;3.338;3.3897;3.4328;3.4784;3.5221;3.5518;3.5456;3.4247;3.3763;-9999;-9999;-9999;-9999;-9999;
+12500;2.9216;2.9281;2.9446;2.9701;3.0058;3.0418;3.085;3.1327;3.1726;3.2146;3.2548;3.2818;3.2748;3.1587;3.1081;-9999;-9999;-9999;-9999;-9999;
+13000;2.7006;2.706;2.7212;2.7447;2.7801;2.8114;2.8512;2.8954;2.9322;2.9709;3.0079;3.0324;3.0247;2.9134;2.861;-9999;-9999;-9999;-9999;-9999;
+13500;2.4946;2.5009;2.5149;2.5366;2.5695;2.5984;2.6352;2.6761;2.71;2.7457;2.7798;2.802;2.7938;2.6872;2.635;-9999;-9999;-9999;-9999;-9999;
+14000;2.3043;2.305;2.3241;2.3443;2.375;2.4015;2.4357;2.4734;2.5048;2.5378;2.5692;2.5895;2.5806;2.4784;2.4231;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.969;12.975;13.188;13.307;13.559;13.791;13.963;14.132;14.181;14.079;13.625;12.293;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.335;12.341;12.511;12.653;12.884;13.106;13.271;13.437;13.495;13.425;13.053;11.914;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.73;11.736;11.895;12.041;12.242;12.453;12.613;12.774;12.841;12.796;12.496;11.52;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.125;11.13;11.286;11.41;11.638;11.83;11.984;12.141;12.214;12.191;11.949;11.119;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.545;10.55;10.687;10.804;11.014;11.203;11.364;11.533;11.612;11.607;11.418;10.707;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.9912;10.017;10.117;10.226;10.42;10.596;10.749;10.92;11.028;11.038;10.902;10.29;8.7405;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.443;9.4471;9.5698;9.6735;9.8554;10.018;10.163;10.325;10.431;10.472;10.396;9.8812;8.5432;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.9201;8.9684;9.0528;9.1467;9.3166;9.4683;9.6053;9.7587;9.8613;9.9083;9.8769;9.4731;8.3174;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.4493;8.453;8.5562;8.6462;8.803;8.945;9.0744;9.2189;9.3191;9.3703;9.3545;9.0962;8.0753;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.9994;8.0151;8.0874;8.1694;8.3146;8.4477;8.5699;8.7061;8.8024;8.8568;8.8536;8.6411;7.7979;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.5451;7.5483;7.6367;7.7148;7.8491;7.9731;8.0892;8.2179;8.3104;8.3673;8.3744;8.2009;7.4893;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.1125;7.1155;7.208;7.2814;7.4057;7.5207;7.6312;7.7528;7.8416;7.8996;7.9156;7.7776;7.18;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.7231;6.7259;6.8006;6.8685;6.9833;7.0894;7.1948;7.3097;7.395;7.4535;7.4765;7.3672;6.8674;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.3516;6.3612;6.4129;6.4752;6.5811;6.6795;6.7783;6.8877;6.9695;7.0287;7.0531;6.9722;6.5553;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.9761;5.9786;6.0417;6.1006;6.1983;6.2894;6.3819;6.4861;6.5634;6.6232;6.6523;6.5918;6.2456;5.3986;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.6194;5.6217;5.6889;5.7441;5.8341;5.9184;6.0052;6.1032;6.1769;6.2367;6.2693;6.2261;5.9401;5.281;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.2986;5.3007;5.3538;5.4048;5.4876;5.5656;5.6469;5.7391;5.8094;5.8683;5.9037;5.8752;5.6467;5.1341;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.9932;4.999;5.0354;5.088;5.1583;5.2303;5.3064;5.3929;5.4596;5.5169;5.5549;5.5387;5.3517;4.5107;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.6832;4.6851;4.7298;4.7792;4.8448;4.9117;4.9828;5.0639;5.1267;5.1826;5.2224;5.2163;5.0651;4.3923;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.3892;4.3908;4.4383;4.4838;4.5446;4.6065;4.6738;4.7507;4.8106;4.8648;4.9056;4.9079;4.7871;4.2454;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.1232;4.1348;4.1626;4.2037;4.2597;4.3168;4.3795;4.4512;4.5083;4.5619;4.6041;4.613;4.5176;4.0827;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.871;3.8751;3.9005;3.938;3.9897;4.0422;4.1005;4.1674;4.221;4.2723;4.3152;4.3271;4.2578;3.9056;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.6192;3.6288;3.6517;3.6862;3.7339;3.7821;3.8362;3.8984;3.9486;3.9976;4.0399;4.0562;4.0059;3.7247;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.348;3.3492;3.3758;3.4078;3.452;3.4967;3.5467;3.6043;3.6506;3.6958;3.7347;3.7489;3.7002;3.4313;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.0971;3.0982;3.1209;3.1504;3.1915;3.2329;3.2792;3.3324;3.3754;3.4171;3.4529;3.4677;3.4177;3.1608;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.8598;2.8676;2.8854;2.9126;2.9508;2.9891;3.032;3.0812;3.1203;3.1585;3.1915;3.2049;3.157;2.9115;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.6407;2.6513;2.6677;2.6928;2.7283;2.7638;2.8035;2.8483;2.8842;2.9193;2.9496;2.9624;2.9159;2.6815;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.4446;2.4514;2.4666;2.4896;2.5226;2.5555;2.5918;2.6329;2.6661;2.6984;2.7261;2.7357;2.6931;2.4697;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.2631;2.2639;2.2805;2.3019;2.3352;2.3628;2.3959;2.4338;2.4645;2.4943;2.5197;2.5279;2.4877;2.2743;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.753;12.833;13.029;13.164;13.439;13.661;13.798;13.923;13.883;13.559;12.647;10.433;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.133;12.195;12.375;12.477;12.758;12.969;13.103;13.229;13.212;12.944;12.172;10.256;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.531;11.536;11.734;11.85;12.112;12.311;12.445;12.569;12.568;12.349;11.699;10.038;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;10.954;11.009;11.158;11.253;11.496;11.685;11.817;11.941;11.954;11.777;11.228;9.7905;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.401;10.453;10.59;10.682;10.906;11.085;11.215;11.338;11.365;11.225;10.764;9.5151;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.8759;9.8802;10.023;10.136;10.334;10.511;10.638;10.76;10.785;10.69;10.307;9.217;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.3694;9.3734;9.5045;9.6161;9.7899;9.9613;10.085;10.206;10.241;10.172;9.8558;8.9193;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.8847;8.8884;9.0077;9.1158;9.2734;9.4349;9.5548;9.6739;9.718;9.6708;9.4142;8.6106;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.4084;8.4118;8.5268;8.6234;8.78;8.9318;9.0475;9.1637;9.2155;9.1873;8.9828;8.3007;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.9382;7.9415;8.0477;8.1367;8.2943;8.4384;8.559;8.6763;8.7335;8.7211;8.5601;7.9767;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.4895;7.4926;7.6085;7.6744;7.8192;7.9527;8.0669;8.1949;8.2711;8.2733;8.1491;7.6578;6.393;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.0615;7.0644;7.1568;7.2342;7.3677;7.4914;7.5992;7.7198;7.7963;7.8224;7.7495;7.3385;6.2554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.6542;6.6828;6.7454;6.816;6.9388;7.0531;7.1549;7.2684;7.343;7.3741;7.3425;7.02;6.0912;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.2666;6.2947;6.3518;6.4181;6.5314;6.637;6.7328;6.8396;6.9121;6.9471;6.9288;6.7249;5.9103;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.8979;5.9257;5.9779;6.0397;6.1443;6.2418;6.332;6.4325;6.5027;6.5405;6.5333;6.3674;5.6875;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.5549;5.5571;5.6215;5.6802;5.7768;5.8668;5.9515;6.0461;6.1135;6.1535;6.1555;6.0219;5.4565;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.2285;5.2413;5.2852;5.3387;5.4279;5.511;5.5906;5.6794;5.7439;5.7854;5.7949;5.6888;5.2202;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.908;4.9099;4.9638;5.0143;5.0967;5.1734;5.2483;5.3314;5.3929;5.4353;5.4464;5.3678;4.9813;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.604;4.6241;4.6605;4.7127;4.7826;4.8533;4.9235;5.0013;5.0599;5.1027;5.1192;5.0592;4.741;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.3245;4.3262;4.3711;4.4198;4.4842;4.5494;4.6154;4.6882;4.7441;4.7863;4.807;4.7631;4.502;3.8841;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.0595;4.0674;4.0978;4.1417;4.2012;4.2615;4.3227;4.3913;4.4442;4.4861;4.5099;4.4793;4.2664;3.7936;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.7986;3.8001;3.8373;3.8781;3.9328;3.9886;4.0456;4.1099;4.1594;4.2011;4.2274;4.2079;4.0411;3.6786;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.5522;3.5535;3.5907;3.6289;3.6788;3.7299;3.7834;3.8434;3.89;3.9308;3.9588;3.9485;3.8145;3.2042;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.2908;3.292;3.3215;3.3565;3.4028;3.4499;3.4989;3.5543;3.5973;3.6348;3.6601;3.6505;3.5199;2.9425;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.0487;3.0498;3.0725;3.1047;3.1475;3.1906;3.2359;3.2871;3.3269;3.3613;3.3842;3.375;3.2503;2.6988;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.814;2.8225;2.8422;2.8716;2.9109;2.9508;2.9928;3.0403;3.0772;3.1086;3.1293;3.1196;3.0017;2.4747;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.5974;2.611;2.6292;2.6558;2.6922;2.7293;2.7682;2.8121;2.8463;2.875;2.8937;2.8836;2.7722;2.2685;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.4079;2.4087;2.4313;2.4549;2.49;2.5245;2.5608;2.6012;2.6327;2.6591;2.6761;2.6656;2.5602;2.3505;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.2272;2.2338;2.2489;2.2705;2.303;2.3351;2.3689;2.4063;2.4353;2.4597;2.4749;2.4641;2.3644;2.1629;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.667;12.755;12.962;13.171;13.437;13.642;13.742;13.797;13.59;12.902;11.241;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.023;12.029;12.3;12.476;12.732;12.931;13.054;13.094;12.93;12.356;10.92;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.403;11.489;11.66;11.826;12.069;12.262;12.357;12.427;12.297;11.814;10.588;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;10.835;10.84;11.054;11.205;11.438;11.622;11.719;11.796;11.697;11.288;10.233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.292;10.336;10.504;10.592;10.835;11.011;11.109;11.192;11.119;10.778;9.8744;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.7448;9.749;9.9291;10.031;10.26;10.428;10.525;10.613;10.564;10.281;9.5104;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.222;9.2855;9.426;9.5031;9.7122;9.8713;9.9694;10.058;10.029;9.7969;9.1426;7.553;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.7486;8.7523;8.9051;8.9937;9.1894;9.3404;9.4374;9.5274;9.5151;9.3271;8.7744;7.3957;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.2871;8.2905;8.4255;8.5205;8.6909;8.8334;8.9291;9.0198;9.0217;8.8716;8.4081;7.2128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.8461;7.8493;7.9682;8.0628;8.2164;8.3536;8.4465;8.5359;8.549;8.432;8.0472;7.0101;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.4246;7.4275;7.5349;7.6211;7.7653;7.8959;7.987;8.0756;8.098;8.0087;7.6895;6.7966;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.0192;7.022;7.1207;7.2067;7.3337;7.4586;7.5475;7.635;7.6561;7.5995;7.3384;6.5726;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.6325;6.6609;6.7257;6.8072;6.9233;7.041;7.1275;7.213;7.2413;7.2031;6.991;6.3389;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.2557;6.2581;6.3443;6.425;6.5313;6.6422;6.7262;6.8094;6.8437;6.8206;6.6509;6.0982;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.8802;5.8825;5.9612;6.03;6.1462;6.2528;6.3428;6.4236;6.4625;6.4521;6.3184;5.8554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.5238;5.526;5.5982;5.6618;5.7691;5.8673;5.9515;6.0427;6.0973;6.0972;5.9947;5.6092;4.6039;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.1857;5.1877;5.2546;5.3131;5.4115;5.5029;5.5815;5.6678;5.7215;5.744;5.6801;5.3613;4.5108;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.8651;4.8848;4.9298;4.9825;5.0725;5.1575;5.2305;5.312;5.3647;5.3863;5.3579;5.1136;4.3937;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.5636;4.5654;4.62;4.6768;4.7518;4.8299;4.8988;4.9758;5.0271;5.0518;5.0337;4.8776;4.2476;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.2778;4.2918;4.3285;4.3786;4.4486;4.5202;4.5856;4.6575;4.7074;4.7345;4.725;4.5995;4.0763;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.0071;4.0184;4.0515;4.0977;4.1619;4.2273;4.2886;4.3565;4.4044;4.4331;4.431;4.3313;3.903;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.7473;3.7487;3.7891;3.8326;3.8909;3.9507;4.008;4.0715;4.1175;4.1467;4.1515;4.0747;3.7239;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.5032;3.5045;3.5417;3.5813;3.6346;3.6897;3.7429;3.8023;3.8459;3.8758;3.8859;3.8271;3.5429;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.2444;3.2456;3.2774;3.3138;3.3636;3.4147;3.4641;3.519;3.5594;3.587;3.595;3.5383;3.2674;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.0001;3.0012;3.0326;3.0665;3.1129;3.1605;3.2063;3.2566;3.2937;3.3191;3.3235;3.2715;3.0145;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.7742;2.7857;2.807;2.8375;2.8811;2.9254;2.9674;3.0137;3.0477;3.0708;3.0753;3.0249;2.7812;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.5653;2.5782;2.598;2.6247;2.6669;2.7077;2.7464;2.7889;2.8203;2.8414;2.8449;2.797;2.5659;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.378;2.3788;2.4042;2.4295;2.4686;2.506;2.5418;2.5811;2.61;2.6293;2.6318;2.5864;2.3673;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.2044;2.2052;2.2255;2.249;2.2845;2.3193;2.3525;2.389;2.4156;2.4331;2.4348;2.3918;2.1839;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.858;12.863;13.132;13.384;13.653;13.889;13.91;13.829;13.3;11.987;9.1547;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.158;12.162;12.437;12.651;12.905;13.127;13.125;13.101;12.654;11.534;9.0516;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.489;11.521;11.762;11.984;12.208;12.411;12.454;12.416;12.037;11.082;8.9462;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;10.865;10.869;11.114;11.315;11.541;11.737;11.786;11.767;11.453;10.635;8.7712;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.269;10.274;10.511;10.689;10.904;11.086;11.153;11.139;10.886;10.194;8.5603;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.7023;9.7742;9.9338;10.097;10.301;10.454;10.545;10.547;10.345;9.7581;8.3364;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.1623;9.2375;9.3908;9.5361;9.7305;9.884;9.9675;9.9801;9.8265;9.3264;8.1068;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.6887;8.6922;8.8726;9.0035;9.1883;9.3357;9.4186;9.4442;9.3229;8.9036;7.8601;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.2357;8.2679;8.3877;8.5005;8.6743;8.8141;8.8839;8.9317;8.8393;8.4889;7.6009;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.775;7.7781;7.9261;8.0282;8.1919;8.3215;8.3912;8.4444;8.3764;8.0868;7.332;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.3353;7.3894;7.5028;7.5779;7.7339;7.8575;7.9268;7.9845;7.9356;7.6985;7.0554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;6.9428;6.9455;7.0696;7.1369;7.2974;7.4148;7.4835;7.5443;7.5117;7.3168;6.7741;5.4505;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.5681;6.587;6.6792;6.7345;6.8809;6.9917;7.0603;7.1224;7.1045;6.9462;6.4908;5.3517;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.1829;6.1852;6.2848;6.3497;6.4874;6.5883;6.6565;6.7196;6.7137;6.5868;6.2071;5.2259;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.8167;5.8188;5.9176;5.9834;6.104;6.204;6.2716;6.335;6.339;6.2391;5.928;5.0842;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.491;5.493;5.572;5.6382;5.7402;5.8383;5.9047;5.9678;5.9799;5.9031;5.6475;4.9257;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.1808;5.191;5.2438;5.3058;5.3981;5.4904;5.5552;5.6175;5.6362;5.579;5.3711;4.7634;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.8623;4.864;4.9271;4.9883;5.0732;5.1595;5.2221;5.2834;5.3018;5.267;5.0997;4.5879;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.5607;4.5836;4.6284;4.6819;4.7641;4.8446;4.905;4.9651;4.9884;4.9665;4.8343;4.4067;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.2682;4.2697;4.3255;4.3762;4.4587;4.5368;4.5992;4.6619;4.689;4.6778;4.5756;4.2215;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.9917;4.0053;4.043;4.0883;4.1634;4.2351;4.2944;4.3605;4.3995;4.4009;4.3237;4.0327;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.7255;3.7268;3.7736;3.8167;3.885;3.9507;4.0072;4.0685;4.1064;4.1209;4.0791;3.8423;3.201;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.4744;3.4906;3.5216;3.5654;3.623;3.6829;3.7362;3.7934;3.8305;3.8442;3.8236;3.683;3.114;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.2227;3.2238;3.2611;3.3019;3.3552;3.411;3.4603;3.5132;3.5473;3.5626;3.5389;3.4031;2.8679;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.9833;2.9843;3.0198;3.0576;3.1074;3.1595;3.205;3.2537;3.2852;3.299;3.2756;3.1471;2.642;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.7618;2.7739;2.7976;2.8286;2.8781;2.9268;2.9681;3.0136;3.0423;3.0553;3.0322;2.9104;2.4315;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.5568;2.5691;2.591;2.6201;2.6663;2.7112;2.7494;2.7913;2.8177;2.8291;2.8071;2.6917;2.239;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.3702;2.371;2.3992;2.4271;2.47;2.5114;2.5469;2.5858;2.61;2.6175;2.599;2.4895;2.0616;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.1974;2.2039;2.2229;2.2484;2.2879;2.3264;2.3596;2.3956;2.4179;2.4243;2.4065;2.3024;1.8977;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/fake.csv b/engine/test/stubs/V2527-A5/fake.csv
new file mode 100644
index 00000000..fb95633d
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/fake.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.085;1.0852;1.0855;1.0861;1.0869;1.0881;1.0895;1.0913;1.0934;1.0957;1.0986;1.1016;1.1049;1.1084;1.1123;1.1164;1.1207;1.1253;1.1299;1.1347;
+500;1.082;1.0821;1.0825;1.083;1.0839;1.085;1.0864;1.0881;1.0901;1.0924;1.0952;1.0981;1.1014;1.1049;1.1087;1.1128;1.1172;1.1218;1.1264;1.1313;
+1000;1.0789;1.079;1.0794;1.08;1.0808;1.0819;1.0833;1.085;1.0869;1.0892;1.0917;1.0947;1.0979;1.1014;1.1052;1.1093;1.1136;1.1181;1.1229;1.1278;
+1500;1.0757;1.0759;1.0762;1.0768;1.0777;1.0789;1.0802;1.0819;1.0838;1.086;1.0886;1.0914;1.0945;1.0979;1.1017;1.1057;1.11;1.1145;1.1193;1.1242;
+2000;1.0725;1.0726;1.073;1.0736;1.0745;1.0757;1.0771;1.0788;1.0807;1.0829;1.0854;1.0881;1.0911;1.0944;1.0981;1.1021;1.1063;1.1108;1.1156;1.1206;
+2500;1.0691;1.0692;1.0696;1.0703;1.0712;1.0724;1.0739;1.0756;1.0776;1.0798;1.0822;1.085;1.0879;1.0911;1.0946;1.0985;1.1027;1.1071;1.1118;1.1168;
+3000;1.0655;1.0656;1.0661;1.0668;1.0678;1.069;1.0705;1.0723;1.0743;1.0766;1.079;1.0818;1.0847;1.0878;1.0912;1.095;1.0991;1.1035;1.1081;1.113;
+3500;1.0618;1.062;1.0624;1.0631;1.0641;1.0654;1.067;1.0689;1.071;1.0733;1.0758;1.0786;1.0815;1.0846;1.0879;1.0915;1.0955;1.0998;1.1044;1.1092;
+4000;1.058;1.0582;1.0586;1.0594;1.0604;1.0617;1.0634;1.0653;1.0674;1.0698;1.0724;1.0753;1.0782;1.0813;1.0846;1.0882;1.092;1.0962;1.1007;1.1055;
+4500;1.0542;1.0544;1.0549;1.0556;1.0567;1.058;1.0596;1.0615;1.0637;1.0662;1.069;1.0718;1.0748;1.078;1.0813;1.0848;1.0886;1.0926;1.0971;1.1018;
+5000;1.0504;1.0506;1.0511;1.0519;1.0529;1.0543;1.0559;1.0578;1.06;1.0624;1.0653;1.0682;1.0714;1.0746;1.078;1.0815;1.0852;1.0892;1.0934;1.098;
+5500;1.0466;1.0467;1.0472;1.048;1.049;1.0504;1.0521;1.0541;1.0563;1.0588;1.0616;1.0645;1.0677;1.0711;1.0745;1.0781;1.0818;1.0857;1.0899;1.0943;
+6000;1.0427;1.0427;1.0431;1.0439;1.045;1.0464;1.0482;1.0502;1.0525;1.055;1.0579;1.0609;1.0641;1.0674;1.0709;1.0746;1.0784;1.0823;1.0864;1.0907;
+6500;1.0386;1.0387;1.0392;1.0398;1.0409;1.0423;1.0441;1.0462;1.0485;1.0512;1.054;1.0571;1.0603;1.0638;1.0674;1.0711;1.0749;1.0788;1.0829;1.0871;
+7000;1.0348;1.035;1.0354;1.0361;1.0372;1.0385;1.0399;1.042;1.0444;1.0471;1.05;1.0531;1.0565;1.06;1.0637;1.0675;1.0714;1.0753;1.0794;1.0836;
+7500;1.0311;1.0312;1.0316;1.0323;1.0334;1.0347;1.0363;1.0381;1.0402;1.0429;1.0459;1.0491;1.0524;1.056;1.0598;1.0637;1.0677;1.0718;1.0759;1.0801;
+8000;1.0273;1.0273;1.0278;1.0285;1.0295;1.0308;1.0324;1.0343;1.0364;1.0389;1.0416;1.0449;1.0483;1.052;1.0558;1.0598;1.0639;1.0682;1.0724;1.0766;
+8500;1.0235;1.0235;1.0239;1.0246;1.0256;1.027;1.0285;1.0304;1.0325;1.035;1.0377;1.0406;1.0441;1.0478;1.0517;1.0558;1.06;1.0643;1.0687;1.0731;
+9000;1.0191;1.0192;1.0197;1.0204;1.0215;1.0228;1.0245;1.0264;1.0286;1.031;1.0338;1.0367;1.0399;1.0435;1.0475;1.0517;1.0559;1.0603;1.0648;1.0694;
+9500;1.0146;1.0148;1.0153;1.0161;1.0171;1.0185;1.0202;1.0221;1.0244;1.0269;1.0297;1.0327;1.0359;1.0393;1.0431;1.0474;1.0517;1.0562;1.0608;1.0654;
+10000;1.0104;1.0106;1.011;1.0118;1.0128;1.0141;1.0158;1.0178;1.0201;1.0226;1.0254;1.0284;1.0317;1.0353;1.0389;1.0429;1.0474;1.052;1.0567;1.0614;
+10500;1.0062;1.0063;1.0068;1.0075;1.0085;1.0098;1.0114;1.0133;1.0156;1.0182;1.021;1.024;1.0273;1.0309;1.0347;1.0387;1.0428;1.0476;1.0524;1.0572;
+11000;1.0019;1.002;1.0025;1.0032;1.0042;1.0055;1.0071;1.009;1.0111;1.0137;1.0165;1.0196;1.0229;1.0264;1.0302;1.0342;1.0385;1.0429;1.0479;1.0529;
+11500;1.0021;1.0023;1.0027;1.0034;1.0045;1.0058;1.0074;1.0092;1.0114;1.0138;1.0167;1.0198;1.0231;1.0267;1.0304;1.0345;1.0387;1.0432;1.0483;1.0535;
+12000;1.0023;1.0025;1.0029;1.0037;1.0047;1.006;1.0076;1.0095;1.0116;1.0141;1.017;1.0201;1.0234;1.0269;1.0307;1.0347;1.039;1.0435;1.0486;1.0538;
+12500;1.0026;1.0027;1.0032;1.0039;1.0049;1.0063;1.0079;1.0097;1.0119;1.0143;1.0172;1.0203;1.0236;1.0272;1.0309;1.035;1.0392;1.0437;1.0488;1.054;
+13000;1.0029;1.0029;1.0034;1.0042;1.0052;1.0065;1.0081;1.01;1.0121;1.0146;1.0175;1.0206;1.0239;1.0274;1.0312;1.0352;1.0395;1.044;1.0491;1.0543;
+13500;1.003;1.0031;1.0036;1.0044;1.0054;1.0067;1.0083;1.0102;1.0124;1.0148;1.0177;1.0208;1.0241;1.0277;1.0314;1.0355;1.0397;1.0443;1.0494;1.0546;
+14000;1.0024;1.0026;1.003;1.0038;1.0049;1.0064;1.0081;1.0101;1.0124;1.0151;1.018;1.0211;1.0244;1.0279;1.0317;1.0357;1.04;1.0445;1.0496;1.0548;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0635;1.0636;1.0639;1.0645;1.0654;1.0665;1.0679;1.0696;1.0716;1.074;1.0768;1.0797;1.083;1.0864;1.0901;1.094;1.0982;1.1027;1.1075;1.1127;
+500;1.0601;1.0602;1.0606;1.0611;1.062;1.0631;1.0645;1.0661;1.0682;1.0707;1.0734;1.0764;1.0796;1.083;1.0867;1.0906;1.0948;1.0992;1.1039;1.109;
+1000;1.0567;1.0568;1.0572;1.0577;1.0586;1.0597;1.0611;1.0628;1.0648;1.0671;1.0699;1.0729;1.0762;1.0796;1.0833;1.0872;1.0913;1.0957;1.1003;1.1053;
+1500;1.0533;1.0534;1.0538;1.0543;1.0552;1.0563;1.0576;1.0593;1.0614;1.0638;1.0665;1.0695;1.0727;1.0762;1.0799;1.0838;1.0879;1.0922;1.0968;1.1016;
+2000;1.0499;1.05;1.0504;1.0509;1.0518;1.0528;1.0542;1.0559;1.058;1.0604;1.0631;1.066;1.0692;1.0726;1.0763;1.0803;1.0844;1.0887;1.0932;1.098;
+2500;1.0465;1.0466;1.047;1.0475;1.0484;1.0494;1.0508;1.0525;1.0545;1.057;1.0596;1.0626;1.0657;1.0692;1.0728;1.0767;1.0809;1.0852;1.0897;1.0944;
+3000;1.0431;1.0433;1.0436;1.0442;1.045;1.0461;1.0474;1.0491;1.0511;1.0534;1.0562;1.0591;1.0622;1.0657;1.0693;1.0732;1.0773;1.0816;1.0861;1.0908;
+3500;1.0399;1.04;1.0404;1.0409;1.0417;1.0427;1.0441;1.0457;1.0477;1.05;1.0527;1.0556;1.0587;1.0621;1.0658;1.0696;1.0737;1.078;1.0825;1.0872;
+4000;1.0367;1.0369;1.0372;1.0377;1.0384;1.0395;1.0408;1.0424;1.0443;1.0466;1.0492;1.052;1.0552;1.0585;1.0622;1.066;1.0701;1.0744;1.0789;1.0836;
+4500;1.0336;1.0338;1.0341;1.0347;1.0354;1.0364;1.0377;1.0392;1.041;1.0432;1.0458;1.0485;1.0516;1.0549;1.0585;1.0624;1.0665;1.0708;1.0753;1.08;
+5000;1.0307;1.0308;1.0311;1.0316;1.0324;1.0334;1.0347;1.0362;1.038;1.04;1.0423;1.0451;1.0481;1.0514;1.0549;1.0587;1.0628;1.0671;1.0716;1.0763;
+5500;1.0275;1.0276;1.028;1.0285;1.0293;1.0304;1.0317;1.0332;1.035;1.037;1.0392;1.0418;1.0446;1.0478;1.0513;1.0551;1.0591;1.0634;1.0679;1.0725;
+6000;1.0242;1.0244;1.0247;1.0253;1.0261;1.0272;1.0286;1.0301;1.0319;1.0339;1.0362;1.0387;1.0414;1.0444;1.0477;1.0514;1.0553;1.0596;1.0641;1.0687;
+6500;1.021;1.021;1.0214;1.022;1.0229;1.024;1.0254;1.0269;1.0288;1.0308;1.0331;1.0355;1.0383;1.0412;1.0444;1.0479;1.0517;1.0558;1.0602;1.0649;
+7000;1.0174;1.0176;1.0179;1.0186;1.0195;1.0206;1.0221;1.0237;1.0256;1.0277;1.0299;1.0325;1.0351;1.038;1.0411;1.0445;1.0482;1.0522;1.0564;1.061;
+7500;1.0138;1.0139;1.0143;1.015;1.016;1.0172;1.0186;1.0203;1.0223;1.0244;1.0267;1.0293;1.032;1.0348;1.0379;1.0411;1.0447;1.0486;1.0528;1.0572;
+8000;1.01;1.0101;1.0105;1.0112;1.0122;1.0135;1.015;1.0168;1.0188;1.021;1.0234;1.026;1.0288;1.0317;1.0347;1.0379;1.0413;1.0451;1.0491;1.0535;
+8500;1.0062;1.0061;1.0065;1.0073;1.0083;1.0096;1.0112;1.013;1.0151;1.0174;1.0199;1.0226;1.0255;1.0284;1.0315;1.0347;1.038;1.0417;1.0456;1.0498;
+9000;1.0016;1.0017;1.0022;1.003;1.004;1.0054;1.0071;1.009;1.0112;1.0136;1.0163;1.019;1.022;1.025;1.0282;1.0315;1.0348;1.0383;1.0421;1.0462;
+9500;0.99696;0.99696;0.99768;0.99847;0.99956;1.001;1.0027;1.0047;1.0069;1.0094;1.0123;1.0153;1.0183;1.0215;1.0247;1.0281;1.0315;1.0351;1.0388;1.0427;
+10000;0.99275;0.9929;0.99334;0.99406;0.99508;0.99637;0.99812;1.0002;1.0025;1.0051;1.008;1.011;1.0143;1.0177;1.0211;1.0246;1.0281;1.0318;1.0355;1.0393;
+10500;0.98855;0.98862;0.98905;0.98978;0.99079;0.9921;0.9937;0.99549;0.99784;1.0006;1.0035;1.0066;1.0099;1.0134;1.0171;1.0208;1.0246;1.0283;1.0321;1.0359;
+11000;0.98414;0.98428;0.98472;0.98544;0.98646;0.98776;0.98936;0.99124;0.99339;0.99575;0.99878;1.002;1.0054;1.009;1.0128;1.0167;1.0206;1.0247;1.0286;1.0325;
+11500;0.98434;0.98452;0.98495;0.98568;0.98669;0.988;0.9896;0.99148;0.99363;0.99599;0.99903;1.0022;1.0057;1.0093;1.013;1.0169;1.0209;1.0249;1.029;1.033;
+12000;0.98454;0.98475;0.98518;0.98591;0.98692;0.98823;0.98983;0.99171;0.99387;0.99623;0.99928;1.0025;1.0059;1.0095;1.0133;1.0172;1.0211;1.0252;1.0292;1.0333;
+12500;0.98483;0.98498;0.98541;0.98614;0.98716;0.98847;0.99007;0.99195;0.99411;0.99647;0.99953;1.0028;1.0062;1.0098;1.0135;1.0174;1.0214;1.0254;1.0295;1.0336;
+13000;0.98513;0.98521;0.98565;0.98637;0.98739;0.9887;0.9903;0.99218;0.99435;0.99672;0.99978;1.003;1.0064;1.01;1.0138;1.0177;1.0216;1.0257;1.0297;1.0338;
+13500;0.98502;0.98518;0.98565;0.98643;0.98752;0.98891;0.99054;0.99243;0.9946;0.99697;1;1.0033;1.0067;1.0103;1.0141;1.0179;1.0219;1.0259;1.03;1.0341;
+14000;0.98452;0.98468;0.98515;0.98593;0.98703;0.98844;0.99016;0.99219;0.99451;0.99714;1.0003;1.0035;1.0069;1.0105;1.0143;1.0182;1.0221;1.0262;1.0303;1.0344;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0422;1.0423;1.0426;1.0432;1.0439;1.0449;1.0462;1.0477;1.0496;1.0518;1.0545;1.0575;1.0608;1.0645;1.0684;1.0726;1.0771;1.0819;1.0869;1.0922;
+500;1.0389;1.0391;1.0394;1.0399;1.0407;1.0417;1.0429;1.0444;1.0462;1.0485;1.0511;1.054;1.0573;1.0609;1.0648;1.069;1.0734;1.0782;1.0831;1.0884;
+1000;1.0357;1.0359;1.0362;1.0367;1.0375;1.0385;1.0397;1.0412;1.043;1.0451;1.0477;1.0505;1.0538;1.0573;1.0612;1.0653;1.0698;1.0744;1.0794;1.0846;
+1500;1.0325;1.0326;1.0329;1.0335;1.0342;1.0352;1.0364;1.0379;1.0397;1.0418;1.0443;1.0471;1.0503;1.0538;1.0576;1.0617;1.0661;1.0707;1.0756;1.0808;
+2000;1.0292;1.0293;1.0296;1.0301;1.0309;1.0319;1.0331;1.0347;1.0364;1.0385;1.0411;1.0438;1.0469;1.0503;1.054;1.058;1.0624;1.067;1.0718;1.0769;
+2500;1.0258;1.0258;1.0262;1.0268;1.0275;1.0286;1.0298;1.0313;1.0331;1.0353;1.0378;1.0405;1.0436;1.0469;1.0505;1.0544;1.0586;1.0632;1.068;1.0731;
+3000;1.0223;1.0224;1.0228;1.0233;1.0241;1.0251;1.0264;1.028;1.0298;1.0319;1.0345;1.0372;1.0402;1.0435;1.047;1.0508;1.0549;1.0594;1.0642;1.0692;
+3500;1.0188;1.019;1.0193;1.0198;1.0206;1.0217;1.023;1.0245;1.0264;1.0286;1.0311;1.0339;1.0369;1.0401;1.0436;1.0473;1.0514;1.0557;1.0604;1.0653;
+4000;1.0155;1.0156;1.0159;1.0164;1.0172;1.0182;1.0195;1.021;1.0229;1.0252;1.0277;1.0305;1.0335;1.0367;1.0402;1.0439;1.0478;1.0521;1.0566;1.0615;
+4500;1.0121;1.0121;1.0125;1.0131;1.0138;1.0148;1.0161;1.0177;1.0195;1.0217;1.0243;1.0271;1.0301;1.0333;1.0367;1.0404;1.0443;1.0485;1.0529;1.0577;
+5000;1.0087;1.0088;1.0091;1.0097;1.0104;1.0114;1.0127;1.0143;1.0161;1.0183;1.0209;1.0236;1.0266;1.0298;1.0333;1.0369;1.0408;1.0449;1.0492;1.0539;
+5500;1.0053;1.0054;1.0057;1.0062;1.007;1.008;1.0093;1.0108;1.0127;1.0149;1.0175;1.0202;1.0232;1.0264;1.0298;1.0334;1.0373;1.0413;1.0456;1.0502;
+6000;1.0019;1.002;1.0023;1.0028;1.0036;1.0046;1.0058;1.0074;1.0093;1.0115;1.014;1.0168;1.0197;1.0229;1.0264;1.0299;1.0337;1.0377;1.042;1.0465;
+6500;0.99853;0.99863;0.99894;0.99945;1.0002;1.0012;1.0024;1.004;1.0059;1.008;1.0106;1.0133;1.0163;1.0195;1.0229;1.0265;1.0303;1.0342;1.0384;1.0428;
+7000;0.99529;0.99539;0.99568;0.99618;0.9969;0.99786;0.9991;1.0006;1.0025;1.0046;1.0072;1.0098;1.0127;1.0159;1.0193;1.023;1.0268;1.0307;1.0348;1.0391;
+7500;0.99205;0.99222;0.99251;0.993;0.9937;0.99464;0.99585;0.99735;0.99914;1.0012;1.0037;1.0064;1.0093;1.0124;1.0158;1.0194;1.0232;1.0272;1.0313;1.0356;
+8000;0.98898;0.98908;0.98937;0.98986;0.99057;0.99151;0.99271;0.99416;0.99588;0.99788;1.0003;1.0029;1.0058;1.0089;1.0122;1.0158;1.0196;1.0236;1.0277;1.032;
+8500;0.98591;0.98577;0.98607;0.9866;0.98736;0.98835;0.9896;0.99104;0.99272;0.99467;0.99686;0.99946;1.0022;1.0053;1.0086;1.0122;1.0159;1.0199;1.0241;1.0284;
+9000;0.98216;0.98227;0.98259;0.98315;0.98393;0.98497;0.98625;0.98775;0.9895;0.99149;0.99365;0.99613;0.99881;1.0018;1.0051;1.0086;1.0123;1.0162;1.0204;1.0247;
+9500;0.97853;0.97865;0.97899;0.97956;0.98039;0.98147;0.98278;0.98433;0.98611;0.9881;0.9903;0.99271;0.99547;0.99832;1.0015;1.0049;1.0086;1.0125;1.0167;1.021;
+10000;0.97473;0.97485;0.97522;0.97583;0.9767;0.97782;0.97917;0.98077;0.98261;0.98464;0.98686;0.98927;0.99198;0.99484;0.99796;1.0013;1.0049;1.0088;1.0129;1.0172;
+10500;0.97076;0.97089;0.97128;0.97192;0.97282;0.97398;0.9754;0.97706;0.97895;0.98104;0.98332;0.98577;0.9885;0.99132;0.99436;0.99765;1.0013;1.0051;1.0091;1.0134;
+11000;0.96665;0.96679;0.96719;0.96786;0.96879;0.96999;0.97144;0.97316;0.97512;0.97728;0.97972;0.98226;0.98494;0.98778;0.99079;0.99401;0.99747;1.0013;1.0053;1.0096;
+11500;0.96685;0.96702;0.96742;0.96809;0.96902;0.97022;0.97168;0.97339;0.97535;0.97751;0.97996;0.98249;0.98518;0.98803;0.99104;0.99426;0.99773;1.0015;1.0056;1.0099;
+12000;0.96704;0.96725;0.96765;0.96832;0.96925;0.97045;0.97191;0.97363;0.97559;0.97775;0.9802;0.98273;0.98542;0.98827;0.99128;0.9945;0.99799;1.0018;1.0059;1.0102;
+12500;0.96734;0.96748;0.96788;0.96855;0.96948;0.97068;0.97214;0.97386;0.97582;0.97798;0.98043;0.98297;0.98566;0.98851;0.99153;0.99477;0.99826;1.0021;1.0062;1.0105;
+13000;0.96765;0.9677;0.96811;0.96878;0.96971;0.97091;0.97237;0.9741;0.97605;0.97822;0.98067;0.98321;0.98591;0.98875;0.99179;0.99503;0.99853;1.0023;1.0064;1.0108;
+13500;0.96742;0.96757;0.968;0.96872;0.96972;0.971;0.97257;0.97433;0.97629;0.97845;0.98091;0.98345;0.98615;0.98901;0.99205;0.99529;0.9988;1.0026;1.0067;1.0111;
+14000;0.96698;0.96712;0.96756;0.96828;0.96928;0.97056;0.97213;0.97397;0.97607;0.97839;0.98102;0.98369;0.9864;0.98927;0.99231;0.99556;0.99907;1.0029;1.007;1.0113;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0213;1.0214;1.0218;1.0224;1.0232;1.0243;1.0257;1.0273;1.0293;1.0316;1.0342;1.0372;1.0405;1.0442;1.0482;1.0526;1.0572;1.0621;1.0672;1.0726;
+500;1.0179;1.018;1.0184;1.0189;1.0197;1.0208;1.0221;1.0238;1.0257;1.028;1.0306;1.0336;1.0369;1.0405;1.0445;1.0488;1.0534;1.0583;1.0634;1.0687;
+1000;1.0144;1.0146;1.0149;1.0155;1.0163;1.0173;1.0186;1.0203;1.0222;1.0244;1.0269;1.0299;1.0332;1.0368;1.0408;1.0451;1.0496;1.0544;1.0595;1.0648;
+1500;1.0111;1.0112;1.0115;1.012;1.0128;1.0138;1.0151;1.0168;1.0187;1.0209;1.0234;1.0263;1.0295;1.0332;1.0371;1.0413;1.0458;1.0506;1.0556;1.0609;
+2000;1.0077;1.0077;1.0081;1.0086;1.0094;1.0104;1.0117;1.0132;1.0151;1.0173;1.0199;1.0228;1.0259;1.0295;1.0333;1.0375;1.042;1.0467;1.0517;1.057;
+2500;1.0042;1.0043;1.0046;1.0052;1.0059;1.0069;1.0082;1.0097;1.0116;1.0138;1.0164;1.0192;1.0224;1.0259;1.0297;1.0337;1.0382;1.0429;1.0478;1.053;
+3000;1.0008;1.0009;1.0012;1.0017;1.0025;1.0035;1.0047;1.0062;1.0081;1.0103;1.0128;1.0156;1.0188;1.0223;1.026;1.03;1.0344;1.039;1.0439;1.0491;
+3500;0.99746;0.99756;0.99786;0.99836;0.99908;1;1.0012;1.0027;1.0046;1.0067;1.0093;1.0121;1.0152;1.0186;1.0224;1.0263;1.0306;1.0351;1.0399;1.0451;
+4000;0.99413;0.9943;0.99459;0.99509;0.99579;0.99672;0.99789;0.99934;1.0011;1.0032;1.0057;1.0085;1.0116;1.015;1.0187;1.0226;1.0269;1.0313;1.0361;1.0411;
+4500;0.99095;0.99105;0.99134;0.99183;0.99252;0.99344;0.99459;0.99601;0.99775;0.9998;1.0022;1.0049;1.008;1.0114;1.015;1.0189;1.0231;1.0275;1.0322;1.0372;
+5000;0.98778;0.98778;0.98809;0.98857;0.98926;0.99017;0.9913;0.99269;0.99441;0.99642;0.99883;1.0015;1.0045;1.0078;1.0114;1.0152;1.0194;1.0237;1.0283;1.0332;
+5500;0.9846;0.98455;0.98484;0.98532;0.986;0.9869;0.98803;0.9894;0.99108;0.99307;0.99537;0.99809;1.001;1.0043;1.0078;1.0115;1.0156;1.0199;1.0245;1.0293;
+6000;0.98116;0.98126;0.98155;0.98203;0.98272;0.98363;0.98476;0.98613;0.98779;0.98975;0.99202;0.99469;0.99759;1.0008;1.0042;1.0079;1.0119;1.0161;1.0206;1.0254;
+6500;0.9778;0.9779;0.97819;0.97869;0.97939;0.9803;0.98145;0.98284;0.98449;0.98645;0.98871;0.99134;0.99418;0.99729;1.0007;1.0043;1.0082;1.0124;1.0168;1.0215;
+7000;0.97444;0.97444;0.97478;0.97527;0.97598;0.97691;0.97807;0.97949;0.98116;0.98313;0.98548;0.98802;0.99082;0.99386;0.99717;1.0007;1.0046;1.0087;1.0131;1.0176;
+7500;0.97091;0.97101;0.97131;0.97181;0.97252;0.97345;0.97463;0.97607;0.97777;0.97977;0.98215;0.98469;0.98747;0.99047;0.99371;0.99721;1.001;1.005;1.0093;1.0138;
+8000;0.96733;0.96743;0.96773;0.96825;0.96898;0.96995;0.97113;0.97259;0.97432;0.97635;0.97876;0.98132;0.9841;0.98708;0.99028;0.99371;0.99739;1.0013;1.0055;1.01;
+8500;0.96361;0.96371;0.96401;0.96453;0.96526;0.96623;0.96746;0.96896;0.97076;0.97286;0.9753;0.97789;0.98069;0.98367;0.98685;0.99024;0.99385;0.99772;1.0019;1.0062;
+9000;0.95989;0.95997;0.96027;0.96078;0.96152;0.96249;0.96372;0.96523;0.96704;0.96916;0.97166;0.97433;0.97721;0.98022;0.9834;0.98677;0.99034;0.99413;0.99817;1.0025;
+9500;0.95617;0.95623;0.95653;0.95704;0.95777;0.95874;0.95996;0.96148;0.96335;0.96542;0.96793;0.9706;0.97349;0.97659;0.97987;0.98328;0.98683;0.99056;0.99452;0.99873;
+10000;0.9524;0.95251;0.9528;0.95331;0.95403;0.955;0.95622;0.95773;0.95955;0.96164;0.96415;0.96681;0.9697;0.97281;0.97612;0.97961;0.98325;0.98701;0.99091;0.99503;
+10500;0.94874;0.94884;0.94913;0.94962;0.95033;0.95128;0.95249;0.954;0.9558;0.95787;0.96035;0.96298;0.96586;0.96897;0.97229;0.9758;0.97949;0.98331;0.98727;0.99136;
+11000;0.94515;0.94524;0.94553;0.94601;0.94671;0.94764;0.94883;0.9503;0.95206;0.9541;0.95654;0.95914;0.96199;0.96507;0.96838;0.9719;0.97561;0.97948;0.98348;0.98761;
+11500;0.94535;0.94548;0.94576;0.94625;0.94694;0.94788;0.94907;0.95055;0.95231;0.95435;0.95679;0.95939;0.96225;0.96533;0.96865;0.97217;0.97588;0.97975;0.98375;0.98788;
+12000;0.94556;0.94571;0.946;0.94648;0.94718;0.94811;0.94931;0.95079;0.95255;0.95459;0.95704;0.95965;0.96251;0.9656;0.96891;0.97244;0.97615;0.98002;0.98403;0.98816;
+12500;0.94585;0.94594;0.94623;0.94672;0.94742;0.94835;0.94955;0.95103;0.9528;0.95484;0.9573;0.95991;0.96277;0.96586;0.96918;0.9727;0.97642;0.98029;0.9843;0.98843;
+13000;0.94613;0.94613;0.94647;0.94695;0.94766;0.94859;0.94979;0.95127;0.95305;0.9551;0.95756;0.96017;0.96303;0.96612;0.96944;0.97297;0.97669;0.98056;0.98457;0.98871;
+13500;0.94577;0.94589;0.9462;0.94673;0.94749;0.94849;0.94977;0.95136;0.95324;0.95545;0.95782;0.96043;0.96329;0.96639;0.96971;0.97324;0.97695;0.98083;0.98484;0.98898;
+14000;0.94543;0.94554;0.94586;0.94639;0.94715;0.94817;0.94946;0.95106;0.95295;0.95523;0.95772;0.96046;0.96346;0.96665;0.96997;0.9735;0.97722;0.9811;0.98511;0.98925;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.002;1.0022;1.0025;1.0031;1.004;1.0052;1.0066;1.0082;1.0102;1.0125;1.015;1.018;1.0213;1.0248;1.0287;1.033;1.0376;1.0424;1.0474;1.0527;
+500;0.99849;0.99862;0.99898;0.99959;1.0005;1.0016;1.0029;1.0046;1.0065;1.0088;1.0113;1.0143;1.0175;1.0211;1.025;1.0293;1.0338;1.0386;1.0436;1.0489;
+1000;0.99494;0.995;0.99536;0.99598;0.99685;0.998;0.99934;1.001;1.0029;1.005;1.0076;1.0106;1.0138;1.0174;1.0213;1.0255;1.0301;1.0348;1.0398;1.0451;
+1500;0.99139;0.99137;0.99173;0.99233;0.99319;0.99433;0.99568;0.99732;0.99922;1.0014;1.0039;1.0068;1.01;1.0136;1.0175;1.0218;1.0263;1.031;1.036;1.0412;
+2000;0.98761;0.98773;0.98808;0.98868;0.98953;0.99065;0.99199;0.99362;0.99554;0.99774;1.0003;1.0032;1.0063;1.0098;1.0137;1.0179;1.0224;1.0272;1.0322;1.0374;
+2500;0.98382;0.98408;0.98443;0.98502;0.98586;0.98696;0.9883;0.98991;0.99182;0.99401;0.99662;0.99946;1.0026;1.0061;1.01;1.0141;1.0186;1.0233;1.0283;1.0334;
+3000;0.98035;0.98047;0.9808;0.98137;0.98218;0.98326;0.98459;0.9862;0.98809;0.99027;0.99286;0.99572;0.9989;1.0024;1.0062;1.0103;1.0147;1.0194;1.0243;1.0295;
+3500;0.9768;0.97692;0.97725;0.97781;0.9786;0.97965;0.98095;0.98252;0.98436;0.98653;0.98909;0.99194;0.99512;0.99863;1.0024;1.0065;1.0109;1.0155;1.0204;1.0255;
+4000;0.97325;0.97337;0.9737;0.97425;0.97503;0.97606;0.97735;0.9789;0.98073;0.98285;0.98535;0.98814;0.99131;0.99483;0.99865;1.0027;1.0071;1.0116;1.0165;1.0215;
+4500;0.96974;0.96985;0.97017;0.9707;0.97146;0.97247;0.97375;0.97529;0.9771;0.9792;0.98167;0.98443;0.98753;0.99099;0.99481;0.99889;1.0032;1.0077;1.0125;1.0176;
+5000;0.96625;0.96636;0.96667;0.96719;0.96793;0.96891;0.97017;0.97169;0.97349;0.97557;0.97801;0.98074;0.98381;0.98723;0.99097;0.995;0.9993;1.0038;1.0086;1.0136;
+5500;0.96276;0.96287;0.96318;0.96369;0.96442;0.96538;0.96662;0.96812;0.9699;0.97196;0.97432;0.97706;0.98009;0.98348;0.98717;0.99115;0.9954;0.99988;1.0046;1.0096;
+6000;0.95927;0.95941;0.9597;0.9602;0.96092;0.96186;0.96308;0.96457;0.96632;0.96837;0.97071;0.97342;0.97641;0.97974;0.98338;0.98731;0.99151;0.99597;1.0006;1.0055;
+6500;0.95586;0.95596;0.95625;0.95673;0.95743;0.95835;0.95955;0.96102;0.96276;0.96478;0.9671;0.96979;0.97275;0.97604;0.97962;0.98348;0.98761;0.99202;0.99668;1.0015;
+7000;0.95245;0.95256;0.95283;0.9533;0.95397;0.95487;0.95603;0.95748;0.9592;0.9612;0.96357;0.96618;0.96912;0.97235;0.97588;0.97967;0.98374;0.98808;0.99269;0.99754;
+7500;0.94904;0.94912;0.9494;0.94986;0.95053;0.95141;0.95254;0.95396;0.95565;0.95763;0.95998;0.96258;0.96549;0.96868;0.97215;0.97589;0.97989;0.98416;0.98869;0.99349;
+8000;0.9456;0.94569;0.94596;0.94642;0.94707;0.94793;0.94903;0.95042;0.95209;0.95405;0.95639;0.95897;0.96186;0.96502;0.96844;0.97211;0.97605;0.98025;0.98471;0.98944;
+8500;0.94216;0.94225;0.94252;0.94298;0.94362;0.94446;0.94553;0.9469;0.94853;0.95044;0.95274;0.95533;0.95822;0.96136;0.96474;0.96835;0.97222;0.97636;0.98075;0.9854;
+9000;0.9387;0.93879;0.93906;0.93952;0.94016;0.941;0.94206;0.94339;0.94499;0.94687;0.94913;0.95166;0.9545;0.95763;0.96101;0.96461;0.96842;0.97248;0.9768;0.98137;
+9500;0.93519;0.93528;0.93555;0.93601;0.93665;0.9375;0.93856;0.93988;0.94146;0.94332;0.94548;0.94804;0.95081;0.95388;0.95721;0.96079;0.96459;0.96862;0.97287;0.97736;
+10000;0.93168;0.93168;0.93196;0.93242;0.93308;0.93394;0.93502;0.93633;0.93792;0.93977;0.94192;0.94444;0.94716;0.95015;0.95341;0.95694;0.9607;0.9647;0.96892;0.97337;
+10500;0.92787;0.92797;0.92826;0.92873;0.92941;0.93029;0.93139;0.93272;0.93432;0.9362;0.93835;0.94086;0.94354;0.94647;0.94965;0.95309;0.9568;0.96075;0.96493;0.96933;
+11000;0.92407;0.92418;0.92447;0.92495;0.92563;0.92653;0.92766;0.92903;0.93066;0.93256;0.93482;0.93725;0.93992;0.9428;0.94592;0.94928;0.9529;0.9568;0.96092;0.96527;
+11500;0.92428;0.92442;0.9247;0.92519;0.92587;0.92677;0.9279;0.92927;0.9309;0.93281;0.93507;0.9375;0.94017;0.94306;0.94617;0.94953;0.95315;0.95705;0.96118;0.96552;
+12000;0.92449;0.92465;0.92494;0.92543;0.92611;0.92701;0.92814;0.92951;0.93115;0.93306;0.93532;0.93775;0.94042;0.9433;0.94642;0.94978;0.95341;0.9573;0.96143;0.96578;
+12500;0.92479;0.92489;0.92518;0.92566;0.92635;0.92725;0.92839;0.92975;0.93139;0.9333;0.93557;0.938;0.94067;0.94355;0.94667;0.95004;0.95366;0.95756;0.96168;0.96603;
+13000;0.92468;0.92479;0.9251;0.92561;0.92634;0.9273;0.92849;0.92994;0.93162;0.93354;0.93581;0.93825;0.94091;0.9438;0.94692;0.95029;0.95391;0.95781;0.96193;0.96629;
+13500;0.9244;0.92451;0.92482;0.92533;0.92607;0.92703;0.92823;0.92969;0.93141;0.93342;0.9358;0.93835;0.94113;0.94405;0.94717;0.95053;0.95416;0.95806;0.96219;0.96654;
+14000;0.92412;0.92424;0.92455;0.92507;0.92582;0.92678;0.92799;0.92945;0.93118;0.9332;0.93559;0.93814;0.94094;0.94395;0.9472;0.95069;0.95441;0.95831;0.96245;0.9668;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.98327;0.98338;0.98376;0.9844;0.98535;0.9865;0.98783;0.98945;0.9914;0.99362;0.99614;0.9989;1.0019;1.0052;1.0088;1.0128;1.0171;1.0217;1.0266;1.0317;
+500;0.97962;0.97973;0.98011;0.98075;0.98168;0.98281;0.98412;0.98572;0.98766;0.98988;0.99244;0.99523;0.99824;1.0015;1.0052;1.0092;1.0135;1.0181;1.023;1.028;
+1000;0.97597;0.97607;0.97644;0.97708;0.97801;0.97912;0.98043;0.98203;0.98394;0.98613;0.98867;0.99151;0.99455;0.99786;1.0015;1.0055;1.0098;1.0144;1.0193;1.0244;
+1500;0.97233;0.97239;0.97277;0.9734;0.97432;0.97542;0.97673;0.97832;0.98023;0.9824;0.98492;0.98776;0.9908;0.99415;0.99781;1.0018;1.0061;1.0107;1.0156;1.0206;
+2000;0.96858;0.9687;0.96907;0.96971;0.97061;0.9717;0.97301;0.97459;0.97649;0.97866;0.98117;0.984;0.98704;0.99039;0.99408;0.99808;1.0024;1.007;1.0119;1.0169;
+2500;0.96484;0.96499;0.96536;0.96599;0.96689;0.96796;0.96927;0.97085;0.97268;0.9749;0.9774;0.98022;0.98327;0.98662;0.99033;0.99432;0.99866;1.0033;1.0081;1.0131;
+3000;0.96122;0.96134;0.9617;0.96232;0.9632;0.96425;0.96553;0.96709;0.96891;0.97112;0.97361;0.97641;0.97948;0.98283;0.98654;0.99057;0.99488;0.99945;1.0043;1.0093;
+3500;0.95761;0.95768;0.95804;0.95864;0.95951;0.96055;0.96183;0.96338;0.96518;0.96735;0.9698;0.97259;0.97567;0.97904;0.98273;0.98676;0.9911;0.99565;1.0004;1.0054;
+4000;0.95391;0.95402;0.95438;0.95497;0.95583;0.95685;0.95813;0.95966;0.96145;0.9636;0.96604;0.96879;0.97184;0.97521;0.97889;0.98291;0.98724;0.99183;0.99657;1.0015;
+4500;0.95021;0.95036;0.95071;0.95129;0.95213;0.95315;0.95442;0.95594;0.95772;0.95984;0.96227;0.96505;0.96804;0.97139;0.97504;0.97905;0.98335;0.98791;0.9927;0.99765;
+5000;0.94657;0.94669;0.94703;0.94761;0.94843;0.94944;0.9507;0.95221;0.95398;0.95608;0.95849;0.96125;0.96423;0.96757;0.97122;0.97519;0.97944;0.98398;0.98875;0.99373;
+5500;0.94294;0.94301;0.94334;0.94391;0.94472;0.94572;0.94697;0.94847;0.95023;0.95236;0.95471;0.95745;0.96045;0.96376;0.96739;0.97134;0.97557;0.98004;0.98476;0.98973;
+6000;0.93921;0.93932;0.93965;0.9402;0.941;0.94199;0.94323;0.94472;0.94647;0.94858;0.95091;0.95364;0.95663;0.95993;0.96355;0.96748;0.97168;0.97612;0.9808;0.98569;
+6500;0.93554;0.93564;0.93597;0.93651;0.93729;0.93827;0.93949;0.94097;0.9427;0.94479;0.9471;0.94982;0.95279;0.95608;0.9597;0.9636;0.96778;0.97219;0.97683;0.98169;
+7000;0.93186;0.93191;0.93223;0.93276;0.93353;0.93452;0.93574;0.93722;0.93894;0.94101;0.94329;0.94598;0.94894;0.95222;0.95582;0.95971;0.96385;0.96823;0.97284;0.97768;
+7500;0.92806;0.92816;0.92848;0.929;0.92976;0.93074;0.93195;0.93341;0.93513;0.93719;0.93947;0.94215;0.94509;0.94835;0.95193;0.95579;0.9599;0.96425;0.96883;0.97364;
+8000;0.92425;0.92441;0.92472;0.92524;0.92598;0.92695;0.92816;0.92961;0.93132;0.93329;0.93566;0.93827;0.9412;0.94446;0.94802;0.95185;0.95594;0.96025;0.9648;0.96956;
+8500;0.92056;0.92067;0.92097;0.92148;0.9222;0.92316;0.92436;0.9258;0.9275;0.92946;0.93179;0.93438;0.93729;0.94052;0.94407;0.94789;0.95195;0.95623;0.96074;0.96547;
+9000;0.91687;0.91692;0.91721;0.91771;0.91842;0.91937;0.92056;0.92199;0.92368;0.92563;0.92794;0.93049;0.93337;0.93659;0.94009;0.94388;0.94791;0.95218;0.95666;0.96136;
+9500;0.91307;0.91317;0.91346;0.91395;0.91464;0.91558;0.91676;0.91818;0.91986;0.9218;0.92408;0.92661;0.92946;0.93264;0.93611;0.93985;0.94384;0.94807;0.95254;0.95721;
+10000;0.90928;0.90942;0.90971;0.91018;0.91087;0.91178;0.91296;0.91437;0.91604;0.91797;0.92017;0.92274;0.92556;0.9287;0.93212;0.93581;0.93975;0.94394;0.94837;0.95301;
+10500;0.90558;0.90568;0.90596;0.90643;0.90709;0.90799;0.90915;0.91055;0.9122;0.91413;0.91632;0.91887;0.92167;0.92477;0.92814;0.93177;0.93566;0.93979;0.94417;0.94878;
+11000;0.90188;0.90199;0.90225;0.9027;0.90335;0.90421;0.90535;0.90673;0.90837;0.91027;0.91253;0.915;0.91778;0.92084;0.92416;0.92774;0.93156;0.93564;0.93996;0.94453;
+11500;0.9021;0.90221;0.90247;0.90293;0.90357;0.90444;0.90558;0.90696;0.9086;0.91051;0.91276;0.91523;0.91801;0.92107;0.92439;0.92797;0.93179;0.93587;0.9402;0.94476;
+12000;0.90231;0.90242;0.9027;0.90315;0.9038;0.90467;0.90581;0.90719;0.90883;0.91074;0.91299;0.91546;0.91824;0.9213;0.92463;0.9282;0.93203;0.9361;0.94044;0.945;
+12500;0.90232;0.90243;0.90271;0.90319;0.90387;0.90479;0.90598;0.90742;0.90907;0.91098;0.91316;0.9157;0.91847;0.92153;0.92486;0.92843;0.93226;0.93634;0.94067;0.94524;
+13000;0.90214;0.90224;0.90253;0.90301;0.9037;0.90462;0.90582;0.90727;0.90898;0.91096;0.91329;0.91585;0.91871;0.92176;0.92509;0.92866;0.93249;0.93658;0.94091;0.94547;
+13500;0.90196;0.90207;0.90236;0.90284;0.90354;0.90447;0.90568;0.90713;0.90885;0.91084;0.91317;0.91574;0.9186;0.92175;0.92517;0.92884;0.93272;0.93681;0.94115;0.94571;
+14000;0.90177;0.90191;0.9022;0.90269;0.90339;0.90433;0.90554;0.907;0.90873;0.91073;0.91307;0.91564;0.91851;0.92166;0.92508;0.92876;0.9327;0.9369;0.94133;0.94595;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.96446;0.9646;0.96497;0.96559;0.9665;0.96752;0.9688;0.97029;0.97215;0.97425;0.97656;0.97907;0.98183;0.9848;0.98808;0.99174;0.99579;1.0002;1.005;1.0101;
+500;0.96082;0.96096;0.96133;0.96196;0.96279;0.96385;0.96512;0.96659;0.96846;0.97056;0.97289;0.9754;0.97818;0.98119;0.98445;0.98816;0.99219;0.99662;1.0014;1.0065;
+1000;0.95717;0.9573;0.95767;0.9583;0.95913;0.96019;0.96145;0.96293;0.96477;0.96686;0.96916;0.97171;0.9745;0.97755;0.98082;0.98457;0.98858;0.99299;0.99776;1.0028;
+1500;0.95352;0.95362;0.95399;0.95462;0.95545;0.9565;0.95776;0.95924;0.96108;0.96318;0.96547;0.96801;0.97079;0.97387;0.97717;0.98091;0.98496;0.98936;0.99409;0.9991;
+2000;0.94979;0.94991;0.95028;0.95091;0.95174;0.95279;0.95405;0.95553;0.95737;0.95947;0.96177;0.96431;0.96709;0.97016;0.9735;0.97721;0.98129;0.98571;0.99041;0.99538;
+2500;0.9461;0.94623;0.94659;0.94721;0.94802;0.94906;0.95031;0.95179;0.95363;0.95573;0.95805;0.96059;0.96338;0.96646;0.96981;0.97348;0.97757;0.98202;0.98671;0.99164;
+3000;0.94244;0.94256;0.94292;0.94354;0.9444;0.94537;0.94661;0.94807;0.94989;0.95197;0.95429;0.95684;0.95964;0.96272;0.9661;0.96977;0.97384;0.97827;0.98299;0.98789;
+3500;0.93877;0.93888;0.93924;0.93986;0.94071;0.94168;0.94292;0.94437;0.94618;0.94825;0.95056;0.95308;0.95587;0.95895;0.96236;0.96605;0.97011;0.97452;0.97919;0.98413;
+4000;0.93511;0.93518;0.93554;0.93616;0.937;0.93797;0.9392;0.94065;0.94245;0.94452;0.94683;0.94935;0.95213;0.95518;0.95858;0.9623;0.96634;0.97076;0.97542;0.98029;
+4500;0.93144;0.93147;0.93183;0.93244;0.93328;0.93424;0.93547;0.93692;0.9387;0.94076;0.94311;0.94561;0.94839;0.95144;0.95483;0.95853;0.96257;0.96696;0.97161;0.97647;
+5000;0.92763;0.92775;0.9281;0.92871;0.92954;0.93049;0.93171;0.93316;0.93493;0.93699;0.93933;0.94184;0.94462;0.94767;0.95106;0.95478;0.95881;0.96313;0.96776;0.97261;
+5500;0.92381;0.92401;0.92436;0.92496;0.92578;0.92673;0.92795;0.92939;0.93114;0.9332;0.93553;0.93806;0.94083;0.94389;0.94731;0.95101;0.95505;0.95936;0.9639;0.96871;
+6000;0.92011;0.92023;0.92058;0.92118;0.922;0.92295;0.92417;0.9256;0.92734;0.92939;0.93171;0.93426;0.93702;0.94008;0.9435;0.94721;0.95125;0.95556;0.96009;0.96482;
+6500;0.9163;0.91642;0.91676;0.91736;0.91816;0.91912;0.92033;0.92177;0.9235;0.92555;0.92787;0.93043;0.93319;0.93625;0.93967;0.94338;0.94742;0.95172;0.95624;0.96095;
+7000;0.91248;0.91258;0.91293;0.91352;0.91431;0.91526;0.91647;0.91791;0.91962;0.92167;0.92398;0.92657;0.92933;0.93239;0.93581;0.93952;0.94355;0.94784;0.95234;0.95705;
+7500;0.90867;0.90873;0.90907;0.90965;0.91044;0.91139;0.91259;0.91403;0.91579;0.91777;0.92007;0.92266;0.92542;0.9285;0.93192;0.93564;0.93965;0.94393;0.94841;0.95311;
+8000;0.90485;0.90485;0.90519;0.90576;0.90654;0.90749;0.90869;0.91012;0.91187;0.91384;0.91612;0.9187;0.92148;0.92456;0.92799;0.93171;0.93572;0.93998;0.94445;0.94912;
+8500;0.90084;0.90095;0.90129;0.90185;0.90262;0.90357;0.90476;0.90619;0.90792;0.90988;0.91215;0.91472;0.91751;0.92064;0.92403;0.92774;0.93175;0.93599;0.94044;0.9451;
+9000;0.89682;0.89703;0.89736;0.89792;0.89867;0.89962;0.90081;0.90223;0.90395;0.9059;0.90816;0.91071;0.91352;0.91665;0.92004;0.92375;0.92773;0.93196;0.93639;0.94103;
+9500;0.89298;0.89309;0.89341;0.89396;0.89471;0.89565;0.89683;0.89825;0.89997;0.9019;0.90415;0.90669;0.9095;0.91263;0.91602;0.91972;0.92368;0.92788;0.9323;0.93692;
+10000;0.88914;0.88914;0.88945;0.88999;0.89073;0.89167;0.89285;0.89426;0.89591;0.89788;0.90012;0.9027;0.90546;0.90859;0.91197;0.91567;0.91961;0.92378;0.92817;0.93277;
+10500;0.88507;0.88517;0.88549;0.88601;0.88674;0.88767;0.88884;0.89024;0.89189;0.89384;0.89607;0.89864;0.90144;0.90452;0.90791;0.91158;0.9155;0.91964;0.924;0.92857;
+11000;0.88099;0.88121;0.88151;0.88203;0.88275;0.88367;0.88483;0.88622;0.88785;0.88978;0.892;0.89456;0.89735;0.90043;0.90381;0.90746;0.91135;0.91547;0.9198;0.92434;
+11500;0.8813;0.88141;0.88172;0.88223;0.88295;0.88388;0.88504;0.88643;0.88806;0.89;0.89222;0.89478;0.89757;0.90065;0.90403;0.90767;0.91157;0.91569;0.92001;0.92455;
+12000;0.88134;0.88145;0.88177;0.8823;0.88305;0.88401;0.88521;0.88664;0.88827;0.89021;0.89243;0.89499;0.89778;0.90086;0.90424;0.90789;0.91178;0.9159;0.92023;0.92476;
+12500;0.88122;0.88133;0.88165;0.88219;0.88294;0.88391;0.88511;0.88655;0.88824;0.89023;0.89257;0.89514;0.898;0.90108;0.90446;0.9081;0.91199;0.91611;0.92044;0.92497;
+13000;0.88111;0.88123;0.88155;0.88209;0.88284;0.88381;0.88502;0.88647;0.88816;0.89017;0.89251;0.89508;0.89794;0.9011;0.90455;0.90827;0.91221;0.91632;0.92065;0.92518;
+13500;0.88099;0.88113;0.88146;0.882;0.88276;0.88373;0.88495;0.8864;0.8881;0.89011;0.89245;0.89503;0.8979;0.90106;0.90451;0.90824;0.91221;0.91641;0.92081;0.92539;
+14000;0.88095;0.88105;0.88138;0.88192;0.88268;0.88366;0.88488;0.88634;0.88805;0.89006;0.89241;0.89499;0.89787;0.90103;0.90449;0.90821;0.91219;0.91639;0.9208;0.92541;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.94549;0.94565;0.94599;0.94658;0.94739;0.94835;0.94951;0.95093;0.95258;0.95442;0.95643;0.95865;0.96109;0.96406;0.96735;0.971;0.97501;0.97932;0.98399;0.98905;
+500;0.94183;0.94201;0.94236;0.94294;0.94374;0.94469;0.94584;0.94724;0.94891;0.95076;0.95277;0.95501;0.95744;0.96038;0.96366;0.9673;0.9713;0.97565;0.98032;0.98537;
+1000;0.93824;0.93836;0.93871;0.93929;0.94008;0.94103;0.94218;0.94359;0.94525;0.94709;0.9491;0.95134;0.95378;0.95668;0.95995;0.96358;0.96757;0.97193;0.97663;0.98166;
+1500;0.93456;0.93468;0.93503;0.93561;0.9364;0.93735;0.9385;0.93991;0.94158;0.94344;0.94544;0.94767;0.9501;0.95297;0.95623;0.95984;0.96382;0.96817;0.97291;0.97793;
+2000;0.93088;0.93099;0.93134;0.93191;0.93269;0.93364;0.9348;0.9362;0.93788;0.93972;0.94177;0.94401;0.94643;0.94926;0.95249;0.95609;0.96005;0.96438;0.96911;0.97418;
+2500;0.92721;0.92733;0.92768;0.92825;0.92903;0.92996;0.93111;0.9325;0.93417;0.93601;0.93808;0.94032;0.94275;0.94556;0.94876;0.95231;0.95626;0.96058;0.96529;0.97034;
+3000;0.92355;0.92366;0.92401;0.92458;0.92535;0.92629;0.92743;0.92882;0.93049;0.93233;0.93439;0.93662;0.93906;0.94184;0.94503;0.94857;0.95247;0.95676;0.96146;0.96648;
+3500;0.91989;0.91998;0.92033;0.9209;0.92167;0.9226;0.92374;0.92513;0.92681;0.92865;0.93072;0.93297;0.93539;0.93805;0.94129;0.94473;0.94869;0.95295;0.9576;0.96259;
+4000;0.91617;0.91628;0.91662;0.9172;0.91796;0.9189;0.92004;0.92142;0.92311;0.92496;0.92703;0.9293;0.93174;0.93441;0.93757;0.94105;0.9449;0.94914;0.95377;0.9587;
+4500;0.91245;0.91256;0.9129;0.91348;0.91424;0.91517;0.91631;0.91769;0.91938;0.92128;0.92332;0.92559;0.92807;0.93074;0.93387;0.93733;0.94114;0.94532;0.94992;0.95481;
+5000;0.9087;0.90882;0.90916;0.90974;0.91049;0.91142;0.91256;0.91394;0.91563;0.91754;0.91959;0.92186;0.92436;0.92706;0.93016;0.9336;0.9374;0.94155;0.94607;0.95091;
+5500;0.90492;0.90503;0.90537;0.90596;0.90671;0.90764;0.90878;0.91016;0.91186;0.91377;0.91583;0.91811;0.92062;0.92336;0.92642;0.92985;0.93363;0.93778;0.94227;0.94704;
+6000;0.90113;0.90122;0.90156;0.90215;0.90289;0.90382;0.90497;0.90634;0.90805;0.90997;0.91204;0.91433;0.91686;0.91962;0.92267;0.92609;0.92985;0.93399;0.93846;0.94318;
+6500;0.89735;0.89735;0.89773;0.89832;0.89905;0.89999;0.90113;0.9025;0.90421;0.90614;0.90822;0.91052;0.91306;0.91584;0.91887;0.92231;0.92606;0.93018;0.93462;0.93931;
+7000;0.89341;0.89353;0.89388;0.89446;0.89519;0.89612;0.89727;0.89863;0.90034;0.90227;0.90436;0.90667;0.90922;0.91203;0.91508;0.91851;0.92225;0.92635;0.93076;0.93542;
+7500;0.88948;0.88965;0.89;0.89059;0.89131;0.89224;0.89338;0.8948;0.89645;0.89838;0.90049;0.9028;0.90535;0.90818;0.91125;0.91467;0.91842;0.92251;0.92688;0.9315;
+8000;0.88563;0.88575;0.88609;0.88668;0.8874;0.88833;0.88947;0.89089;0.89254;0.89446;0.8966;0.8989;0.90146;0.9043;0.90739;0.9108;0.91456;0.91864;0.92299;0.92757;
+8500;0.88179;0.88179;0.88216;0.88276;0.88346;0.88439;0.88553;0.88694;0.88859;0.89052;0.89267;0.89497;0.89753;0.90038;0.90349;0.90688;0.91066;0.91474;0.91907;0.92361;
+9000;0.87776;0.87787;0.87822;0.8788;0.8795;0.88043;0.88157;0.88298;0.88462;0.88655;0.88868;0.89101;0.89358;0.89642;0.89956;0.90297;0.90674;0.91081;0.91511;0.91963;
+9500;0.87372;0.8739;0.87424;0.87482;0.87552;0.87644;0.87758;0.87899;0.88062;0.88255;0.8847;0.88703;0.8896;0.89249;0.89559;0.89901;0.90278;0.90684;0.91113;0.91562;
+10000;0.86979;0.8699;0.87024;0.87081;0.8715;0.87242;0.87356;0.8749;0.87659;0.87852;0.8807;0.88301;0.88559;0.88848;0.89159;0.89506;0.8988;0.90283;0.90711;0.91157;
+10500;0.86585;0.86585;0.86621;0.86678;0.86747;0.86838;0.86952;0.87086;0.87254;0.87445;0.87663;0.87896;0.88155;0.88444;0.88759;0.89104;0.89479;0.8988;0.90304;0.90749;
+11000;0.86169;0.8618;0.86214;0.86269;0.86339;0.86431;0.86545;0.86679;0.86845;0.87036;0.87253;0.87487;0.87746;0.88031;0.88352;0.88698;0.89073;0.89474;0.89895;0.90337;
+11500;0.86171;0.86184;0.86218;0.86275;0.86346;0.86441;0.86558;0.86696;0.86864;0.87055;0.87272;0.87506;0.87765;0.88054;0.88371;0.88717;0.89092;0.89492;0.89913;0.90355;
+12000;0.86165;0.86176;0.86211;0.86268;0.86339;0.86435;0.86552;0.8669;0.86861;0.87056;0.87278;0.87518;0.87782;0.88073;0.88389;0.88735;0.89111;0.89511;0.89931;0.90374;
+12500;0.86158;0.8617;0.86204;0.86261;0.86333;0.86429;0.86546;0.86685;0.86856;0.87052;0.87274;0.87514;0.87779;0.88075;0.88397;0.88749;0.8913;0.89529;0.8995;0.90392;
+13000;0.86152;0.86164;0.86199;0.86255;0.86328;0.86424;0.86541;0.8668;0.86852;0.87048;0.87271;0.87511;0.87777;0.88072;0.88395;0.88747;0.8913;0.89536;0.89963;0.9041;
+13500;0.86148;0.86159;0.86194;0.86251;0.86323;0.86419;0.86537;0.86676;0.86848;0.87045;0.87268;0.87509;0.87774;0.8807;0.88393;0.88746;0.89128;0.89535;0.89962;0.90412;
+14000;0.86144;0.86155;0.8619;0.86247;0.86319;0.86415;0.86533;0.86673;0.86845;0.87042;0.87266;0.87507;0.87773;0.88069;0.88392;0.88744;0.89127;0.89534;0.89961;0.9041;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.92651;0.92663;0.92695;0.92748;0.9282;0.92907;0.9301;0.93138;0.93283;0.93444;0.93626;0.93831;0.94085;0.94374;0.94695;0.95048;0.95431;0.95857;0.9631;0.96795;
+500;0.9229;0.92301;0.92333;0.92386;0.92457;0.92543;0.92644;0.92772;0.92917;0.93079;0.93261;0.93465;0.93716;0.94003;0.94324;0.94677;0.95059;0.95483;0.95936;0.96426;
+1000;0.91929;0.91936;0.91969;0.92022;0.92092;0.92178;0.9228;0.92408;0.92553;0.92713;0.92894;0.93098;0.93345;0.93632;0.93951;0.94302;0.94684;0.95108;0.95559;0.9605;
+1500;0.91568;0.91571;0.91603;0.91656;0.91727;0.91813;0.91914;0.92042;0.92187;0.92348;0.92528;0.9273;0.92982;0.93258;0.93576;0.93927;0.94308;0.94731;0.95181;0.95671;
+2000;0.91207;0.91207;0.91239;0.91292;0.91362;0.91447;0.91547;0.91676;0.91821;0.91982;0.92162;0.92362;0.92611;0.92883;0.93199;0.93549;0.9393;0.94351;0.94801;0.95289;
+2500;0.90832;0.90843;0.90875;0.90927;0.90997;0.91082;0.91183;0.91311;0.91455;0.91615;0.91794;0.91994;0.92239;0.9251;0.92823;0.93169;0.9355;0.9397;0.94419;0.94906;
+3000;0.90457;0.90475;0.90507;0.9056;0.9063;0.90716;0.90817;0.90945;0.9109;0.9125;0.91429;0.91626;0.91867;0.92136;0.92447;0.92799;0.93168;0.93587;0.94034;0.94521;
+3500;0.90095;0.90106;0.90138;0.90191;0.90261;0.90347;0.90449;0.90577;0.90723;0.90883;0.91062;0.91259;0.91497;0.91763;0.92078;0.92421;0.92796;0.93203;0.93648;0.94133;
+4000;0.89733;0.89734;0.89766;0.89819;0.89889;0.89976;0.90078;0.90208;0.90354;0.90515;0.90694;0.90891;0.91126;0.9139;0.91696;0.92043;0.92415;0.92821;0.93263;0.93744;
+4500;0.89348;0.89359;0.89391;0.89444;0.89514;0.89601;0.89705;0.89835;0.89982;0.90144;0.90324;0.90521;0.90753;0.91015;0.91328;0.91666;0.92036;0.92439;0.92878;0.93357;
+5000;0.8897;0.8898;0.89013;0.89066;0.89135;0.89223;0.89327;0.89459;0.89609;0.89771;0.89951;0.90148;0.90378;0.90639;0.9095;0.91286;0.91655;0.92057;0.92494;0.92968;
+5500;0.88592;0.886;0.88632;0.88686;0.88755;0.88843;0.88947;0.89079;0.8923;0.89395;0.89576;0.89774;0.90002;0.90262;0.9057;0.90905;0.91273;0.91673;0.92109;0.92582;
+6000;0.88214;0.88214;0.8825;0.88303;0.88372;0.8846;0.88564;0.88697;0.88849;0.89015;0.89198;0.89397;0.89615;0.89882;0.90182;0.90522;0.90888;0.91288;0.91722;0.92193;
+6500;0.87822;0.87833;0.87865;0.87919;0.87987;0.88074;0.88179;0.88312;0.88465;0.88633;0.88817;0.89017;0.89236;0.89507;0.89806;0.90137;0.90501;0.909;0.91333;0.91802;
+7000;0.87431;0.87446;0.87478;0.87531;0.87599;0.87687;0.87791;0.87925;0.88078;0.88247;0.88433;0.88635;0.88854;0.89122;0.8942;0.8975;0.90113;0.9051;0.90942;0.91408;
+7500;0.87039;0.87056;0.87088;0.87141;0.87209;0.87297;0.87402;0.87535;0.87688;0.87858;0.88046;0.88251;0.88471;0.88735;0.89031;0.8936;0.89722;0.90117;0.90548;0.91012;
+8000;0.86647;0.86663;0.86695;0.86749;0.86816;0.86904;0.87009;0.87142;0.87296;0.87468;0.87656;0.87863;0.88085;0.88346;0.88641;0.88968;0.89328;0.89722;0.90152;0.90613;
+8500;0.86255;0.86268;0.863;0.86353;0.86421;0.86508;0.86614;0.86747;0.86902;0.87075;0.87263;0.87472;0.87696;0.87955;0.88248;0.88574;0.88933;0.89325;0.89754;0.90212;
+9000;0.85863;0.8587;0.85902;0.85956;0.86023;0.86111;0.86216;0.8635;0.86505;0.86679;0.86868;0.87078;0.87305;0.87561;0.87853;0.88178;0.88535;0.88926;0.89353;0.89808;
+9500;0.85456;0.85467;0.855;0.85553;0.85621;0.85709;0.85816;0.8595;0.86105;0.86281;0.8647;0.8668;0.8691;0.87165;0.87457;0.8778;0.88135;0.88525;0.8895;0.89402;
+10000;0.85049;0.85063;0.85096;0.85148;0.85216;0.85304;0.85411;0.85545;0.85702;0.85877;0.86069;0.8628;0.86512;0.86764;0.87058;0.8738;0.87734;0.88122;0.88544;0.88993;
+10500;0.84645;0.84656;0.84689;0.84742;0.84809;0.84897;0.85004;0.85138;0.85296;0.85471;0.85666;0.85879;0.86112;0.86367;0.86658;0.86972;0.87331;0.87717;0.88136;0.88582;
+11000;0.84221;0.84232;0.84266;0.84319;0.84388;0.84479;0.84588;0.84725;0.84886;0.85062;0.85258;0.85472;0.85709;0.85966;0.86255;0.86575;0.86926;0.8731;0.87726;0.88168;
+11500;0.84215;0.84226;0.8426;0.84313;0.84382;0.84473;0.84583;0.8472;0.84882;0.85063;0.85262;0.85482;0.85723;0.85983;0.86271;0.86591;0.86942;0.87326;0.87743;0.88185;
+12000;0.84208;0.84221;0.84255;0.84308;0.84377;0.84468;0.84578;0.84716;0.84878;0.85059;0.85259;0.85478;0.8572;0.85981;0.86275;0.86601;0.86958;0.87343;0.8776;0.88202;
+12500;0.84202;0.84216;0.8425;0.84303;0.84372;0.84464;0.84574;0.84712;0.84874;0.85055;0.85255;0.85475;0.85717;0.85978;0.86273;0.86598;0.86956;0.87347;0.8777;0.88219;
+13000;0.842;0.84212;0.84246;0.84299;0.84369;0.8446;0.8457;0.84709;0.84871;0.85052;0.85253;0.85473;0.85714;0.85976;0.8627;0.86596;0.86953;0.87344;0.87768;0.88217;
+13500;0.84199;0.84199;0.84242;0.84295;0.84365;0.84457;0.84568;0.84707;0.84869;0.8505;0.85251;0.8547;0.85712;0.85973;0.86268;0.86593;0.86951;0.87342;0.87766;0.88215;
+14000;0.84194;0.84206;0.84239;0.84293;0.84363;0.84454;0.84565;0.84704;0.84867;0.85048;0.85249;0.85469;0.8571;0.8597;0.86265;0.86591;0.86949;0.87341;0.87764;0.88213;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.90711;0.90724;0.90753;0.90801;0.90866;0.90944;0.91037;0.91148;0.91276;0.91431;0.9161;0.91833;0.92088;0.92364;0.92669;0.93002;0.93374;0.9378;0.94224;0.94697;
+500;0.90359;0.90369;0.90398;0.90446;0.90509;0.90585;0.90676;0.90786;0.90914;0.91059;0.91245;0.91466;0.91719;0.91995;0.923;0.92631;0.93;0.93403;0.93847;0.94318;
+1000;0.90006;0.9001;0.90039;0.90086;0.90149;0.90225;0.90317;0.90427;0.90553;0.90697;0.90878;0.91096;0.91348;0.91624;0.91927;0.92259;0.92624;0.93025;0.93469;0.93938;
+1500;0.8964;0.89649;0.89678;0.89725;0.89787;0.89863;0.89955;0.90065;0.90191;0.90335;0.90513;0.90726;0.90974;0.9125;0.91553;0.91884;0.92257;0.92656;0.93088;0.93557;
+2000;0.89279;0.89289;0.89318;0.89364;0.89426;0.89502;0.89592;0.89702;0.89828;0.89971;0.90147;0.90357;0.90603;0.90876;0.91176;0.91508;0.91878;0.92275;0.92705;0.93172;
+2500;0.88919;0.88926;0.88955;0.89002;0.89064;0.89139;0.8923;0.8934;0.89466;0.89607;0.8978;0.89994;0.90231;0.90503;0.90802;0.9113;0.91497;0.91892;0.9232;0.92786;
+3000;0.88559;0.88561;0.8859;0.88637;0.88699;0.88775;0.88865;0.88976;0.89102;0.89243;0.89414;0.89625;0.89858;0.90128;0.90426;0.90753;0.91107;0.91508;0.91934;0.92398;
+3500;0.88198;0.88198;0.88223;0.88269;0.88331;0.88407;0.88498;0.8861;0.88736;0.88878;0.89046;0.89254;0.89486;0.89755;0.90051;0.90374;0.90728;0.91124;0.91548;0.92009;
+4000;0.87812;0.87822;0.87851;0.87898;0.8796;0.88037;0.88129;0.88241;0.88367;0.88509;0.88676;0.88882;0.89111;0.89379;0.89674;0.89997;0.90348;0.9074;0.91161;0.91619;
+4500;0.87437;0.87447;0.87476;0.87523;0.87586;0.87663;0.87755;0.87868;0.87995;0.88139;0.88304;0.88508;0.88736;0.89002;0.89296;0.89618;0.89968;0.90358;0.90775;0.9123;
+5000;0.87062;0.87069;0.87099;0.87146;0.87209;0.87286;0.87378;0.87492;0.8762;0.87764;0.8793;0.88132;0.88359;0.88623;0.88917;0.89237;0.89586;0.89974;0.90389;0.90841;
+5500;0.86687;0.86687;0.8672;0.86767;0.8683;0.86907;0.87;0.87115;0.87244;0.87388;0.87553;0.87752;0.87978;0.88242;0.88535;0.88855;0.89202;0.89588;0.90001;0.90452;
+6000;0.86299;0.86309;0.86339;0.86386;0.86449;0.86527;0.8662;0.86735;0.86865;0.87009;0.87174;0.87371;0.87595;0.87858;0.8815;0.8847;0.88817;0.89201;0.89612;0.90061;
+6500;0.85911;0.85926;0.85955;0.86003;0.86066;0.86143;0.86236;0.86353;0.86483;0.86628;0.86792;0.86987;0.8721;0.87471;0.87763;0.88082;0.88428;0.88811;0.89221;0.89668;
+7000;0.85523;0.85539;0.85569;0.85617;0.8568;0.85758;0.85851;0.85968;0.86099;0.86245;0.86408;0.86601;0.86822;0.87082;0.87373;0.87692;0.88037;0.88419;0.88828;0.89273;
+7500;0.85135;0.85149;0.85179;0.85228;0.85291;0.8537;0.85463;0.85581;0.85713;0.85858;0.86022;0.86212;0.8644;0.86691;0.86981;0.87299;0.87644;0.88025;0.88433;0.88876;
+8000;0.84747;0.84747;0.84785;0.84833;0.84897;0.84977;0.85071;0.85191;0.85324;0.8547;0.85633;0.85815;0.8604;0.86298;0.86586;0.86903;0.87248;0.87629;0.88035;0.88477;
+8500;0.84347;0.84357;0.84387;0.84436;0.84499;0.84579;0.84675;0.84796;0.8493;0.85079;0.85243;0.85424;0.85653;0.85903;0.86189;0.86505;0.8685;0.8723;0.87635;0.88076;
+9000;0.83946;0.83956;0.83986;0.84035;0.84099;0.84179;0.84275;0.84398;0.84534;0.84682;0.84848;0.8503;0.85256;0.85505;0.8579;0.86105;0.86449;0.86828;0.87233;0.87673;
+9500;0.83542;0.83552;0.83582;0.83631;0.83695;0.83776;0.83872;0.83996;0.84134;0.84283;0.84449;0.84632;0.84858;0.85104;0.85388;0.85702;0.86046;0.86424;0.86828;0.87267;
+10000;0.83127;0.83137;0.83168;0.83217;0.83283;0.83366;0.83466;0.83591;0.83731;0.83881;0.84048;0.84231;0.84453;0.84701;0.84992;0.85298;0.8564;0.86018;0.86421;0.86858;
+10500;0.82711;0.82714;0.82745;0.82794;0.8286;0.82943;0.83043;0.83172;0.83316;0.83472;0.83644;0.83828;0.84047;0.84294;0.84585;0.84897;0.85238;0.85608;0.86011;0.86447;
+11000;0.82278;0.82288;0.82319;0.82368;0.82434;0.82518;0.82617;0.82747;0.82892;0.8305;0.83224;0.83413;0.83634;0.83891;0.84166;0.84486;0.84827;0.85196;0.85598;0.86033;
+11500;0.82274;0.82284;0.82314;0.82364;0.82429;0.82513;0.82613;0.82742;0.82888;0.83045;0.83219;0.83408;0.8363;0.83887;0.84175;0.84493;0.84839;0.85212;0.85613;0.86048;
+12000;0.82269;0.82279;0.8231;0.82359;0.82425;0.82509;0.82609;0.82738;0.82884;0.8304;0.83214;0.83403;0.83626;0.83883;0.84171;0.84489;0.84836;0.85211;0.85618;0.8606;
+12500;0.82264;0.82275;0.82306;0.82355;0.82421;0.82505;0.82605;0.82734;0.82879;0.83035;0.83209;0.83398;0.83622;0.83879;0.84168;0.84486;0.84832;0.85207;0.85615;0.86056;
+13000;0.8226;0.82271;0.82301;0.82351;0.82417;0.82501;0.82601;0.8273;0.82874;0.83029;0.83204;0.83393;0.83617;0.83876;0.84164;0.84482;0.84829;0.85204;0.85611;0.86052;
+13500;0.82256;0.82256;0.82297;0.82346;0.82412;0.82496;0.82596;0.82725;0.82868;0.83024;0.83199;0.83388;0.83613;0.83872;0.8416;0.84479;0.84826;0.85201;0.85608;0.86048;
+14000;0.82252;0.82252;0.82293;0.82342;0.82408;0.82491;0.82592;0.82719;0.82863;0.83019;0.83194;0.83384;0.83609;0.83868;0.84157;0.84476;0.84822;0.85197;0.85604;0.86045;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.88723;0.88733;0.88761;0.88804;0.88864;0.88936;0.89022;0.89121;0.89257;0.89428;0.89625;0.89856;0.90097;0.90374;0.90694;0.91034;0.91394;0.91775;0.9218;0.92611;
+500;0.88363;0.8838;0.88407;0.88451;0.88509;0.8858;0.88665;0.88762;0.88895;0.89064;0.89257;0.89487;0.89727;0.90001;0.90317;0.90654;0.91015;0.91397;0.91802;0.92235;
+1000;0.88015;0.88024;0.88051;0.88095;0.88153;0.88223;0.88308;0.88404;0.88535;0.887;0.88889;0.89119;0.89357;0.89627;0.89939;0.90273;0.90635;0.91016;0.91422;0.91856;
+1500;0.87667;0.87669;0.87696;0.87739;0.87796;0.87865;0.87948;0.88045;0.88165;0.88327;0.88523;0.88748;0.88985;0.89253;0.8956;0.89891;0.90253;0.90634;0.9104;0.91475;
+2000;0.87304;0.87313;0.87339;0.87382;0.87439;0.87508;0.87591;0.87687;0.87805;0.87963;0.88156;0.88378;0.88613;0.88876;0.8918;0.89508;0.8987;0.9025;0.90656;0.91091;
+2500;0.86941;0.86954;0.86981;0.87023;0.8708;0.87149;0.87232;0.87328;0.87445;0.87599;0.87788;0.88007;0.88239;0.885;0.888;0.89123;0.89484;0.89864;0.9027;0.90706;
+3000;0.86584;0.86594;0.8662;0.86662;0.86719;0.86787;0.86871;0.86966;0.87083;0.87234;0.87419;0.87635;0.87866;0.88122;0.88419;0.88738;0.89098;0.89476;0.89882;0.90318;
+3500;0.86227;0.86229;0.86255;0.86298;0.86354;0.86423;0.86506;0.86602;0.86717;0.86866;0.87047;0.87262;0.87492;0.87744;0.88031;0.88354;0.88709;0.89083;0.89491;0.89927;
+4000;0.85853;0.85861;0.85887;0.8593;0.85986;0.86055;0.86137;0.86233;0.86348;0.86495;0.86682;0.86886;0.87117;0.87366;0.87651;0.87969;0.88321;0.88694;0.89099;0.89534;
+4500;0.85478;0.8549;0.85517;0.85559;0.85615;0.85682;0.85765;0.85861;0.85976;0.8612;0.86304;0.86508;0.86739;0.86987;0.87269;0.87583;0.87932;0.88303;0.88709;0.89141;
+5000;0.85107;0.85116;0.85142;0.85184;0.85239;0.85307;0.8539;0.85486;0.85601;0.85743;0.85925;0.86126;0.86357;0.86606;0.86886;0.87196;0.87541;0.87911;0.88316;0.88747;
+5500;0.84736;0.84738;0.84764;0.84806;0.84862;0.8493;0.85013;0.85109;0.85224;0.85365;0.85543;0.85742;0.85972;0.86222;0.865;0.86815;0.87149;0.87519;0.8792;0.88351;
+6000;0.84349;0.84358;0.84384;0.84426;0.84482;0.8455;0.84633;0.8473;0.84844;0.84983;0.8516;0.85357;0.85586;0.85836;0.86113;0.86425;0.86755;0.87124;0.87517;0.87953;
+6500;0.83962;0.83972;0.83999;0.84041;0.84097;0.84166;0.84251;0.84348;0.84462;0.84599;0.84774;0.84969;0.85198;0.85447;0.85724;0.86032;0.8636;0.86726;0.87117;0.87552;
+7000;0.83575;0.83584;0.83611;0.83653;0.83709;0.83778;0.83863;0.83962;0.84078;0.84213;0.84386;0.84579;0.84807;0.85056;0.85332;0.8563;0.85962;0.86326;0.86716;0.8715;
+7500;0.83188;0.83188;0.8322;0.83263;0.83319;0.83388;0.83474;0.83573;0.83689;0.83823;0.83997;0.84189;0.84415;0.84664;0.84939;0.85237;0.85566;0.85926;0.86322;0.86746;
+8000;0.82791;0.828;0.82826;0.82869;0.82926;0.82995;0.83082;0.83182;0.83299;0.83432;0.83596;0.83795;0.84021;0.84269;0.84543;0.84841;0.85168;0.85524;0.8592;0.86341;
+8500;0.82396;0.82405;0.82432;0.82475;0.82532;0.82602;0.82688;0.82789;0.82905;0.83038;0.832;0.83397;0.83623;0.83872;0.84144;0.84442;0.84768;0.85121;0.85506;0.85935;
+9000;0.82002;0.82003;0.82031;0.82075;0.82134;0.82205;0.82291;0.82393;0.82509;0.82641;0.82802;0.82996;0.83221;0.8347;0.83744;0.84041;0.84364;0.84716;0.85109;0.85526;
+9500;0.81579;0.81589;0.81616;0.81661;0.8172;0.81792;0.81882;0.81987;0.82108;0.82243;0.82401;0.82593;0.82816;0.83065;0.83338;0.83637;0.83958;0.8431;0.847;0.85116;
+10000;0.81157;0.81171;0.81198;0.81243;0.81302;0.81375;0.81466;0.81572;0.81693;0.81829;0.81989;0.82189;0.82408;0.82657;0.8293;0.83228;0.8355;0.83901;0.84289;0.84704;
+10500;0.8074;0.8075;0.80777;0.80822;0.80881;0.80955;0.81046;0.81153;0.81275;0.81411;0.8157;0.81768;0.81986;0.82238;0.82515;0.82816;0.83138;0.83489;0.83876;0.84289;
+11000;0.80324;0.80325;0.80353;0.80398;0.80457;0.80531;0.80622;0.8073;0.80853;0.8099;0.81149;0.81344;0.81561;0.81812;0.82089;0.8239;0.82716;0.83071;0.8346;0.83871;
+11500;0.80307;0.80317;0.80345;0.80389;0.80449;0.80522;0.80614;0.80722;0.80845;0.80983;0.81141;0.81337;0.81554;0.81805;0.82082;0.82383;0.82709;0.83065;0.83459;0.83876;
+12000;0.8029;0.80308;0.80336;0.80381;0.8044;0.80514;0.80606;0.80714;0.80837;0.80975;0.81134;0.8133;0.81547;0.81799;0.82076;0.82378;0.82704;0.83059;0.83453;0.8387;
+12500;0.8029;0.80299;0.80327;0.80372;0.80431;0.80505;0.80597;0.80706;0.80829;0.80967;0.81127;0.81323;0.81541;0.81793;0.8207;0.82372;0.82699;0.83053;0.83447;0.83864;
+13000;0.8029;0.80291;0.80318;0.80363;0.80423;0.80497;0.80589;0.80697;0.80821;0.80959;0.81119;0.81316;0.81534;0.81787;0.82065;0.82367;0.82693;0.83048;0.83442;0.83858;
+13500;0.80272;0.80282;0.80309;0.80354;0.80414;0.80488;0.80581;0.80689;0.80813;0.80951;0.81111;0.81309;0.81528;0.81781;0.82059;0.82361;0.82688;0.83042;0.83436;0.83852;
+14000;0.80254;0.80273;0.803;0.80345;0.80405;0.80479;0.80572;0.80681;0.80804;0.80943;0.81103;0.81302;0.81521;0.81774;0.82053;0.82355;0.82682;0.83045;0.8343;0.83846;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.86637;0.86652;0.86681;0.86726;0.86788;0.86864;0.86954;0.87065;0.8723;0.87423;0.8763;0.87853;0.88105;0.88399;0.8871;0.89027;0.89346;0.89664;0.89976;0.90285;
+500;0.86296;0.86305;0.86333;0.86377;0.86438;0.86513;0.866;0.86709;0.86871;0.8706;0.87268;0.8749;0.8774;0.88029;0.88342;0.88658;0.88979;0.89302;0.8962;0.89938;
+1000;0.85954;0.85954;0.85984;0.86027;0.86087;0.8616;0.86246;0.86353;0.86511;0.86696;0.86904;0.87124;0.87372;0.87658;0.8797;0.88287;0.8861;0.88936;0.89261;0.89587;
+1500;0.85598;0.85608;0.85635;0.85677;0.85736;0.85807;0.85892;0.85996;0.86151;0.86333;0.86539;0.86756;0.87001;0.8729;0.87596;0.87913;0.88238;0.88568;0.88898;0.89232;
+2000;0.85242;0.85257;0.85283;0.85325;0.85383;0.85453;0.85536;0.85639;0.8579;0.85968;0.86173;0.86387;0.86629;0.86914;0.87219;0.87536;0.87862;0.88195;0.88533;0.88874;
+2500;0.84886;0.84904;0.8493;0.84971;0.85028;0.85097;0.85179;0.8528;0.85428;0.85603;0.85807;0.86018;0.86257;0.86537;0.8684;0.87156;0.87483;0.8782;0.88162;0.88511;
+3000;0.8453;0.84547;0.84573;0.84614;0.8467;0.84738;0.84819;0.84919;0.85064;0.85236;0.85438;0.85648;0.85884;0.86161;0.86461;0.86775;0.87102;0.8744;0.87788;0.88144;
+3500;0.8418;0.84188;0.84214;0.84254;0.8431;0.84376;0.84457;0.84554;0.84697;0.84866;0.85067;0.85275;0.85508;0.85782;0.86081;0.86393;0.8672;0.87057;0.87409;0.87773;
+4000;0.83829;0.83827;0.83852;0.83892;0.83947;0.84012;0.84091;0.84187;0.84327;0.84492;0.84694;0.849;0.85128;0.85402;0.85697;0.86009;0.86335;0.86674;0.87027;0.87395;
+4500;0.83454;0.83462;0.83487;0.83527;0.83582;0.83646;0.83724;0.83819;0.83955;0.84117;0.84316;0.84521;0.84753;0.85018;0.85311;0.85622;0.85947;0.86287;0.86643;0.87015;
+5000;0.83086;0.83094;0.83119;0.83159;0.83213;0.83278;0.83355;0.83448;0.83581;0.83739;0.83936;0.84141;0.8437;0.84632;0.84921;0.85232;0.85556;0.85896;0.86254;0.86631;
+5500;0.82718;0.82722;0.82747;0.82786;0.8284;0.82904;0.82982;0.83075;0.83205;0.8336;0.83553;0.83757;0.83985;0.84242;0.84528;0.84839;0.85163;0.85503;0.85861;0.86242;
+6000;0.8235;0.8235;0.82372;0.8241;0.82464;0.82528;0.82605;0.82698;0.82825;0.82978;0.83169;0.83371;0.83596;0.83843;0.84133;0.84444;0.84767;0.85108;0.85467;0.85848;
+6500;0.81982;0.81968;0.81993;0.82032;0.82085;0.82148;0.82225;0.82317;0.82442;0.826;0.8278;0.82983;0.83198;0.8345;0.83735;0.84046;0.84369;0.84709;0.8507;0.85453;
+7000;0.81579;0.81587;0.81611;0.8165;0.81703;0.81766;0.81842;0.81933;0.82056;0.82211;0.82388;0.82591;0.82806;0.83055;0.83337;0.83646;0.83967;0.84308;0.84669;0.85054;
+7500;0.81195;0.81203;0.81227;0.81265;0.81317;0.81379;0.81456;0.81546;0.81667;0.81819;0.81994;0.82196;0.8241;0.82658;0.82935;0.83243;0.83564;0.83904;0.84266;0.84652;
+8000;0.80811;0.80814;0.80838;0.80877;0.80928;0.8099;0.81066;0.81156;0.81275;0.81425;0.81598;0.81799;0.82011;0.82256;0.8253;0.82838;0.83157;0.83497;0.83859;0.84246;
+8500;0.80402;0.8041;0.80435;0.80474;0.80527;0.80591;0.80669;0.80761;0.8088;0.81028;0.81199;0.81398;0.81609;0.81851;0.82129;0.82428;0.82748;0.83087;0.83449;0.83838;
+9000;0.79992;0.80003;0.80028;0.80067;0.8012;0.80183;0.80262;0.80353;0.80471;0.8062;0.80792;0.80996;0.81206;0.81444;0.81718;0.82014;0.82335;0.82675;0.83037;0.83426;
+9500;0.79583;0.79583;0.79617;0.79656;0.79709;0.79773;0.79851;0.79942;0.80059;0.80199;0.80375;0.80578;0.8079;0.81029;0.81304;0.81598;0.81919;0.82259;0.82621;0.8301;
+10000;0.79169;0.79178;0.79202;0.79241;0.79294;0.79358;0.79437;0.79528;0.79636;0.79782;0.79955;0.80156;0.80369;0.80606;0.80879;0.81171;0.81497;0.81837;0.82202;0.82592;
+10500;0.78756;0.78759;0.78784;0.78823;0.78876;0.7894;0.79019;0.7911;0.79219;0.79361;0.79532;0.79731;0.79945;0.80181;0.80451;0.80739;0.81064;0.81404;0.81774;0.8217;
+11000;0.78328;0.78337;0.78361;0.78401;0.78454;0.78518;0.78597;0.78688;0.78797;0.78937;0.79112;0.79303;0.79518;0.79752;0.80012;0.80305;0.80627;0.80967;0.81337;0.81734;
+11500;0.7832;0.78329;0.78354;0.78393;0.78446;0.7851;0.7859;0.78681;0.78791;0.78931;0.79106;0.79298;0.79512;0.79747;0.80007;0.803;0.80623;0.80962;0.81332;0.81728;
+12000;0.78312;0.78322;0.78346;0.78386;0.78439;0.78503;0.78583;0.78675;0.78784;0.78925;0.791;0.79292;0.79507;0.79742;0.80002;0.80296;0.80619;0.80958;0.81328;0.81723;
+12500;0.78304;0.78314;0.78339;0.78379;0.78432;0.78496;0.78576;0.78668;0.78777;0.78918;0.79094;0.79287;0.79502;0.79737;0.79998;0.80292;0.80615;0.80954;0.81323;0.81719;
+13000;0.78296;0.78307;0.78332;0.78372;0.78424;0.78489;0.78569;0.78661;0.78771;0.78912;0.79089;0.79282;0.79497;0.79732;0.79994;0.80288;0.80611;0.8095;0.81319;0.81714;
+13500;0.78288;0.783;0.78325;0.78364;0.78417;0.78482;0.78562;0.78654;0.78764;0.78906;0.79083;0.79277;0.79492;0.79728;0.7999;0.80285;0.80608;0.80946;0.81315;0.8171;
+14000;0.78284;0.78293;0.78317;0.78357;0.7841;0.78475;0.78555;0.78648;0.78758;0.789;0.79077;0.79271;0.79487;0.79724;0.79994;0.80282;0.80605;0.80946;0.81311;0.81705;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.84479;0.84503;0.84536;0.84586;0.84657;0.84738;0.84838;0.84975;0.85154;0.85349;0.85548;0.85775;0.86043;0.86319;0.86588;0.86837;0.87045;0.87179;0.87184;0.86932;
+500;0.84277;0.8416;0.84192;0.84242;0.84311;0.84389;0.84487;0.84621;0.84799;0.84993;0.85191;0.85417;0.85682;0.85959;0.86229;0.86482;0.86698;0.86849;0.86888;0.86722;
+1000;0.83805;0.83816;0.83847;0.83895;0.83963;0.8404;0.84137;0.84268;0.84443;0.84636;0.84832;0.85057;0.85319;0.85596;0.85867;0.86124;0.86348;0.86515;0.86585;0.86497;
+1500;0.83461;0.8347;0.83501;0.83548;0.83615;0.83691;0.83785;0.83915;0.84086;0.84277;0.84472;0.84695;0.84959;0.85231;0.85503;0.85763;0.85994;0.86175;0.86275;0.86243;
+2000;0.83111;0.83121;0.83152;0.83198;0.83264;0.83339;0.83432;0.83559;0.83729;0.83919;0.84111;0.84333;0.84593;0.84863;0.85136;0.85398;0.85636;0.8583;0.85955;0.8597;
+2500;0.82761;0.82769;0.82799;0.82845;0.8291;0.82984;0.83076;0.83202;0.8337;0.83558;0.8375;0.8397;0.84227;0.84496;0.84767;0.85031;0.85275;0.85482;0.85629;0.85683;
+3000;0.82412;0.82414;0.82443;0.82488;0.82552;0.82625;0.82716;0.8284;0.83006;0.83195;0.83385;0.83601;0.83859;0.84127;0.84398;0.84664;0.84912;0.85129;0.85295;0.85384;
+3500;0.82046;0.82056;0.82085;0.82129;0.82192;0.82264;0.82354;0.82476;0.8264;0.82827;0.83016;0.83228;0.83488;0.83757;0.84028;0.84294;0.84547;0.84771;0.84954;0.85074;
+4000;0.81681;0.81695;0.81723;0.81767;0.81829;0.81901;0.81989;0.82109;0.82272;0.82459;0.82645;0.82861;0.83113;0.83382;0.83655;0.83922;0.84177;0.8441;0.84606;0.84756;
+4500;0.8132;0.8133;0.81358;0.81401;0.81463;0.81533;0.81621;0.8174;0.81901;0.82086;0.82272;0.82485;0.82735;0.83004;0.83277;0.83547;0.83805;0.84043;0.84253;0.84424;
+5000;0.80959;0.80963;0.8099;0.81033;0.81093;0.81163;0.8125;0.81366;0.81526;0.81709;0.81895;0.82107;0.82354;0.82622;0.82896;0.83168;0.8343;0.83674;0.83894;0.84086;
+5500;0.80584;0.80593;0.8062;0.80662;0.80721;0.8079;0.80875;0.8099;0.81147;0.81328;0.81515;0.81726;0.8197;0.82237;0.82511;0.82785;0.83051;0.83303;0.83534;0.83742;
+6000;0.80208;0.80221;0.80247;0.80288;0.80347;0.80414;0.80498;0.80611;0.80765;0.80944;0.81131;0.81341;0.81583;0.81849;0.82123;0.82399;0.82671;0.82929;0.83171;0.83391;
+6500;0.79837;0.79846;0.79872;0.79912;0.79969;0.80039;0.80118;0.80229;0.80381;0.80557;0.80744;0.80951;0.81192;0.8146;0.81734;0.82013;0.82287;0.82551;0.82801;0.83035;
+7000;0.79466;0.79467;0.79493;0.79533;0.79589;0.79657;0.79736;0.79844;0.79995;0.80168;0.80356;0.80562;0.80799;0.81066;0.81342;0.81622;0.819;0.82169;0.82427;0.82673;
+7500;0.79068;0.79077;0.79103;0.79143;0.79199;0.79268;0.79348;0.79451;0.79608;0.79781;0.79966;0.80164;0.80404;0.80668;0.80944;0.81226;0.81507;0.81782;0.82047;0.82305;
+8000;0.78671;0.78685;0.78711;0.78751;0.78807;0.78875;0.78955;0.79055;0.79209;0.79382;0.7957;0.79769;0.8;0.80266;0.80543;0.80825;0.8111;0.81391;0.81663;0.81931;
+8500;0.78283;0.78292;0.78317;0.78356;0.78412;0.78478;0.78557;0.78656;0.78807;0.78978;0.79164;0.79362;0.79591;0.79856;0.80137;0.80419;0.80706;0.80994;0.81274;0.81552;
+9000;0.77896;0.77895;0.7792;0.77959;0.78013;0.78079;0.78157;0.78254;0.78401;0.7857;0.78754;0.78952;0.79177;0.79438;0.79718;0.80004;0.80296;0.8059;0.8088;0.81167;
+9500;0.77487;0.77495;0.77519;0.77558;0.77611;0.77676;0.77753;0.77849;0.77993;0.78159;0.78341;0.78537;0.7876;0.79017;0.79297;0.79582;0.79875;0.80173;0.80474;0.80776;
+10000;0.77077;0.77092;0.77116;0.77154;0.77206;0.77269;0.77345;0.77439;0.7758;0.77743;0.77925;0.7812;0.78339;0.78598;0.78871;0.79156;0.7945;0.79751;0.80057;0.80368;
+10500;0.76677;0.76685;0.76708;0.76745;0.76797;0.76859;0.76934;0.77027;0.77164;0.77324;0.77506;0.77699;0.77915;0.7817;0.78443;0.78726;0.79021;0.79324;0.79635;0.79954;
+11000;0.76266;0.76273;0.76297;0.76334;0.76385;0.76446;0.7652;0.76611;0.76746;0.76902;0.77083;0.77274;0.77488;0.77739;0.7801;0.78293;0.78588;0.78893;0.79208;0.79534;
+11500;0.76256;0.76265;0.76289;0.76326;0.76377;0.76438;0.76513;0.76604;0.76739;0.76896;0.77077;0.77268;0.77483;0.77734;0.7801;0.78288;0.78582;0.78886;0.79199;0.79523;
+12000;0.76246;0.76257;0.7628;0.76318;0.76369;0.7643;0.76505;0.76597;0.76732;0.7689;0.77071;0.77264;0.77477;0.77729;0.77999;0.78282;0.78575;0.78878;0.79191;0.79513;
+12500;0.76237;0.76248;0.76272;0.76309;0.76361;0.76422;0.76497;0.7659;0.76726;0.76884;0.77065;0.77258;0.77472;0.77723;0.77994;0.78276;0.78569;0.78871;0.79182;0.79502;
+13000;0.76231;0.76239;0.76263;0.763;0.76352;0.76414;0.7649;0.76582;0.76719;0.76878;0.77059;0.77252;0.77466;0.77718;0.77988;0.7827;0.78562;0.78864;0.79173;0.79491;
+13500;0.76226;0.76226;0.76254;0.76291;0.76343;0.76406;0.76482;0.76575;0.76712;0.76871;0.77052;0.77246;0.77461;0.77713;0.77983;0.78264;0.78556;0.78856;0.79164;0.7948;
+14000;0.76213;0.76221;0.76245;0.76282;0.76334;0.76397;0.76473;0.76567;0.76705;0.76864;0.77046;0.7724;0.77455;0.77707;0.77977;0.78258;0.78549;0.78849;0.79155;0.79468;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.8358;0.83592;0.83627;0.83681;0.83756;0.8384;0.83942;0.84093;0.84279;0.84469;0.8467;0.84912;0.85177;0.8544;0.85684;0.85883;0.85991;0.85919;0.85383;0.83628;
+500;0.83516;0.83255;0.8329;0.83343;0.83416;0.83498;0.83597;0.83744;0.83928;0.84118;0.84319;0.84557;0.8482;0.85083;0.85331;0.85537;0.85662;0.85631;0.85218;0.83827;
+1000;0.82907;0.82918;0.82952;0.83003;0.83076;0.83155;0.83253;0.83397;0.83574;0.83765;0.83965;0.84199;0.84462;0.84725;0.84974;0.85187;0.85328;0.85332;0.85023;0.83935;
+1500;0.82568;0.82578;0.82612;0.82662;0.82733;0.82812;0.82909;0.8305;0.83223;0.83413;0.8361;0.83839;0.84103;0.84364;0.84615;0.84835;0.8499;0.85023;0.84801;0.83978;
+2000;0.82224;0.82235;0.82268;0.82318;0.82388;0.82465;0.82562;0.827;0.82871;0.83061;0.83253;0.8348;0.83739;0.84;0.84254;0.84479;0.84647;0.84709;0.84556;0.83922;
+2500;0.8188;0.81887;0.8192;0.81968;0.82038;0.82115;0.8221;0.82348;0.82517;0.82706;0.82897;0.83116;0.83378;0.83637;0.83891;0.8412;0.84299;0.84386;0.843;0.83815;
+3000;0.81526;0.81537;0.81568;0.81616;0.81685;0.81761;0.81855;0.81991;0.82159;0.82348;0.82538;0.82756;0.83014;0.83274;0.83527;0.8376;0.83947;0.84055;0.84018;0.83665;
+3500;0.81171;0.81183;0.81214;0.81261;0.81329;0.81404;0.81497;0.81631;0.81797;0.81986;0.82175;0.82391;0.82647;0.82907;0.83161;0.83395;0.83592;0.83717;0.83721;0.83478;
+4000;0.80814;0.80824;0.80855;0.80901;0.80968;0.81043;0.81136;0.81268;0.81436;0.8162;0.81808;0.82024;0.82277;0.82537;0.82792;0.8303;0.83231;0.83373;0.83408;0.83255;
+4500;0.80456;0.80463;0.80493;0.80538;0.80604;0.80678;0.80769;0.80899;0.81067;0.81251;0.81438;0.81653;0.81903;0.82164;0.82419;0.8266;0.82869;0.83022;0.83085;0.83001;
+5000;0.80088;0.80098;0.80127;0.80172;0.80237;0.8031;0.804;0.80528;0.80694;0.80877;0.81065;0.8128;0.81526;0.81787;0.82043;0.82286;0.82502;0.82668;0.82756;0.82721;
+5500;0.7972;0.79731;0.79759;0.79804;0.79867;0.79939;0.80028;0.80153;0.80317;0.805;0.80686;0.80901;0.81147;0.81408;0.81664;0.8191;0.82131;0.82309;0.8242;0.82423;
+6000;0.79351;0.7936;0.79388;0.79432;0.79494;0.79565;0.79652;0.79776;0.79938;0.80119;0.80304;0.80517;0.80767;0.81025;0.81282;0.8153;0.81757;0.81945;0.82076;0.82117;
+6500;0.78981;0.78987;0.79014;0.79057;0.79118;0.79188;0.79274;0.79395;0.79555;0.79735;0.79919;0.8013;0.80377;0.80636;0.80897;0.81146;0.81378;0.81577;0.81726;0.818;
+7000;0.78592;0.78602;0.7863;0.78672;0.78734;0.78804;0.78891;0.79011;0.7917;0.79348;0.7953;0.79738;0.79985;0.80244;0.80505;0.8076;0.80996;0.81204;0.81369;0.81472;
+7500;0.78203;0.78214;0.78241;0.78283;0.78344;0.78412;0.78498;0.78616;0.78774;0.78954;0.79137;0.79342;0.79589;0.79848;0.8011;0.80367;0.8061;0.80826;0.81006;0.81135;
+8000;0.77814;0.77823;0.77849;0.77891;0.7795;0.78018;0.78102;0.78218;0.78374;0.78553;0.78733;0.78941;0.79184;0.79445;0.79711;0.79971;0.80218;0.80444;0.80637;0.80792;
+8500;0.77424;0.77429;0.77455;0.77495;0.77554;0.7762;0.77704;0.77817;0.7797;0.78147;0.78327;0.78533;0.78773;0.79033;0.79299;0.79564;0.7982;0.80055;0.80263;0.8044;
+9000;0.77023;0.77031;0.77057;0.77097;0.77154;0.7722;0.77302;0.77413;0.77564;0.77738;0.77917;0.78121;0.78358;0.78617;0.78883;0.7915;0.7941;0.79654;0.79881;0.8008;
+9500;0.76621;0.76631;0.76656;0.76696;0.76752;0.76816;0.76897;0.77006;0.77155;0.77326;0.77504;0.77706;0.7794;0.78198;0.78463;0.78731;0.78995;0.79248;0.79486;0.79703;
+10000;0.76219;0.76227;0.76252;0.76291;0.76346;0.76412;0.76489;0.76596;0.76742;0.7691;0.77089;0.77288;0.77518;0.77777;0.7804;0.7831;0.78579;0.78839;0.79085;0.79317;
+10500;0.75817;0.7582;0.75844;0.75882;0.75937;0.76002;0.76078;0.76182;0.76326;0.76492;0.7667;0.76867;0.77094;0.77349;0.77616;0.77887;0.78158;0.78424;0.78678;0.78924;
+11000;0.754;0.75409;0.75433;0.7547;0.75524;0.75588;0.75663;0.75765;0.75906;0.76071;0.76249;0.76438;0.76669;0.76922;0.77188;0.77459;0.77733;0.78004;0.78267;0.78524;
+11500;0.75393;0.75402;0.75426;0.75464;0.75517;0.75581;0.75657;0.7576;0.75901;0.76065;0.76242;0.76431;0.76662;0.76914;0.7718;0.77451;0.77724;0.77993;0.78254;0.78508;
+12000;0.75386;0.75396;0.7542;0.75457;0.75511;0.75575;0.7565;0.75754;0.75895;0.7606;0.76237;0.76426;0.76655;0.76907;0.77172;0.77443;0.77715;0.77982;0.7824;0.78492;
+12500;0.75381;0.75389;0.75413;0.75451;0.75504;0.75568;0.75644;0.75748;0.75889;0.76054;0.76231;0.76425;0.76649;0.76902;0.77165;0.77434;0.77705;0.77971;0.78227;0.78476;
+13000;0.75376;0.75382;0.75406;0.75444;0.75497;0.75562;0.75637;0.75741;0.75883;0.76048;0.76225;0.7642;0.76644;0.76897;0.77159;0.77426;0.77696;0.77959;0.78213;0.78459;
+13500;0.75371;0.75371;0.75399;0.75437;0.7549;0.75555;0.75631;0.75735;0.75877;0.76042;0.76219;0.76414;0.76639;0.76891;0.77152;0.7742;0.77687;0.77948;0.78199;0.78443;
+14000;0.7536;0.75368;0.75392;0.7543;0.75483;0.75548;0.75624;0.75729;0.75871;0.76036;0.76213;0.76408;0.76633;0.76886;0.77146;0.77413;0.77679;0.77937;0.78186;0.78426;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.82622;0.82638;0.82678;0.82735;0.82817;0.82907;0.83015;0.83184;0.83379;0.83563;0.83776;0.84026;0.84282;0.84526;0.84728;0.84836;0.84729;0.83987;0.81231;-9999;
+500;0.8229;0.82305;0.82345;0.82401;0.82482;0.82569;0.82674;0.82839;0.83031;0.83214;0.83425;0.83673;0.83929;0.84175;0.84384;0.84507;0.84442;0.83846;0.81587;-9999;
+1000;0.81959;0.81974;0.82011;0.82067;0.82146;0.82231;0.82334;0.82495;0.82684;0.82864;0.83072;0.83318;0.83574;0.83823;0.84036;0.84173;0.84145;0.83672;0.81832;-9999;
+1500;0.81629;0.81641;0.81676;0.81731;0.81808;0.81892;0.81993;0.82151;0.82337;0.82516;0.8272;0.82961;0.83217;0.83467;0.83685;0.83834;0.83838;0.83469;0.81979;-9999;
+2000;0.81291;0.81303;0.81339;0.81392;0.81469;0.81551;0.81651;0.81806;0.8199;0.82168;0.82369;0.82606;0.82859;0.83108;0.83331;0.83491;0.83523;0.83242;0.8207;-9999;
+2500;0.80952;0.80961;0.80997;0.8105;0.81125;0.81206;0.81305;0.81458;0.81639;0.81818;0.82016;0.8225;0.82502;0.82749;0.82974;0.83144;0.832;0.82994;0.8207;-9999;
+3000;0.80606;0.80618;0.80653;0.80705;0.80778;0.80858;0.80955;0.81105;0.81285;0.81463;0.8166;0.81892;0.82143;0.8239;0.82616;0.82793;0.8287;0.82735;0.82015;-9999;
+3500;0.80259;0.8027;0.80304;0.80354;0.80427;0.80506;0.80602;0.8075;0.80927;0.81105;0.81299;0.81529;0.81779;0.82027;0.82256;0.82439;0.82532;0.82445;0.81893;0.80223;
+4000;0.79907;0.79918;0.79951;0.80001;0.80073;0.8015;0.80245;0.80391;0.80567;0.80745;0.80932;0.81163;0.81413;0.81661;0.81892;0.82082;0.8219;0.82141;0.81707;0.80298;
+4500;0.79556;0.79563;0.79596;0.79644;0.79715;0.79791;0.79885;0.80028;0.80202;0.8038;0.80569;0.80795;0.81043;0.81291;0.81524;0.8172;0.81843;0.81825;0.81492;0.80366;
+5000;0.79193;0.79204;0.79236;0.79284;0.79354;0.79429;0.79522;0.79662;0.79832;0.80012;0.802;0.80423;0.80671;0.80918;0.81153;0.81355;0.81491;0.81503;0.81251;0.80362;
+5500;0.78831;0.78843;0.78873;0.7892;0.78989;0.79063;0.79155;0.79293;0.7946;0.7964;0.79827;0.80047;0.80295;0.80543;0.80779;0.80986;0.81134;0.81172;0.80993;0.80311;
+6000;0.78467;0.78477;0.78507;0.78553;0.7862;0.78693;0.78784;0.7892;0.79086;0.79265;0.79452;0.79667;0.79916;0.80163;0.80402;0.80613;0.80772;0.80836;0.80722;0.80191;
+6500;0.78089;0.78099;0.7813;0.78176;0.78243;0.78317;0.78408;0.78544;0.78707;0.78886;0.7907;0.79285;0.79531;0.79779;0.8002;0.80237;0.80405;0.80491;0.80424;0.80029;
+7000;0.77711;0.77718;0.77748;0.77793;0.77859;0.77932;0.78022;0.78155;0.78318;0.785;0.78685;0.789;0.79143;0.79391;0.79633;0.79855;0.80035;0.80138;0.80112;0.79828;
+7500;0.77333;0.77333;0.77362;0.77407;0.77472;0.77543;0.77632;0.77763;0.77923;0.78105;0.78289;0.785;0.78748;0.78999;0.79243;0.79469;0.79658;0.7978;0.7979;0.79595;
+8000;0.76935;0.76945;0.76974;0.77018;0.77081;0.77152;0.77239;0.77367;0.77525;0.77707;0.77889;0.781;0.78344;0.78595;0.78842;0.79074;0.79275;0.79415;0.79457;0.79334;
+8500;0.76538;0.76554;0.76582;0.76625;0.76687;0.76757;0.76843;0.76968;0.77129;0.77305;0.77486;0.77695;0.77936;0.78188;0.78435;0.78671;0.78878;0.79035;0.79111;0.79056;
+9000;0.7614;0.76159;0.76187;0.76229;0.7629;0.76359;0.76444;0.76566;0.76724;0.76899;0.77079;0.77286;0.77526;0.77777;0.78025;0.78263;0.78477;0.78648;0.78751;0.78744;
+9500;0.75743;0.75761;0.75788;0.75829;0.7589;0.75957;0.76041;0.76161;0.76317;0.7649;0.76668;0.76874;0.77111;0.77363;0.77612;0.77852;0.78072;0.78255;0.78379;0.78414;
+10000;0.75346;0.7536;0.75386;0.75427;0.75486;0.75552;0.75635;0.75753;0.75906;0.76078;0.76254;0.76458;0.76696;0.76944;0.77195;0.77437;0.77662;0.77856;0.78;0.78071;
+10500;0.74946;0.74955;0.7498;0.7502;0.75078;0.75144;0.75225;0.75341;0.75492;0.75662;0.75837;0.76038;0.76274;0.76522;0.76774;0.77019;0.77249;0.77452;0.77614;0.77715;
+11000;0.74546;0.74546;0.74571;0.74611;0.74667;0.74732;0.74812;0.74925;0.75074;0.75243;0.75417;0.75612;0.75849;0.76096;0.76348;0.76596;0.7683;0.77042;0.7722;0.77349;
+11500;0.7453;0.74539;0.74565;0.74604;0.74661;0.74725;0.74806;0.74919;0.75067;0.75237;0.7541;0.75606;0.75842;0.76089;0.76341;0.76587;0.7682;0.7703;0.77204;0.77327;
+12000;0.74515;0.74533;0.74558;0.74597;0.74654;0.74718;0.74799;0.74912;0.75061;0.7523;0.75404;0.756;0.75835;0.76082;0.76332;0.76578;0.76809;0.77017;0.77188;0.77306;
+12500;0.74517;0.74526;0.74551;0.7459;0.74647;0.74711;0.74792;0.74906;0.75055;0.75224;0.75397;0.75594;0.75828;0.76075;0.76324;0.76569;0.76799;0.77004;0.77172;0.77284;
+13000;0.7452;0.74519;0.74544;0.74583;0.7464;0.74704;0.74785;0.74899;0.75048;0.75217;0.75391;0.75589;0.75822;0.76067;0.76316;0.76559;0.76788;0.76991;0.77155;0.77261;
+13500;0.74502;0.74511;0.74536;0.74576;0.74633;0.74697;0.74778;0.74892;0.75042;0.7521;0.75384;0.75583;0.75815;0.7606;0.76308;0.7655;0.76777;0.76977;0.77138;0.77238;
+14000;0.74485;0.74503;0.74528;0.74568;0.74625;0.74689;0.74771;0.74885;0.75035;0.75203;0.75377;0.75576;0.75808;0.76053;0.763;0.76541;0.76766;0.76964;0.77121;0.77215;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.81627;0.81648;0.81689;0.81759;0.8185;0.81948;0.82077;0.82252;0.82452;0.8264;0.82861;0.83108;0.83351;0.83561;0.83684;0.83577;0.82768;0.79207;-9999;-9999;
+500;0.81295;0.81315;0.8136;0.81424;0.81516;0.81614;0.81739;0.8191;0.82108;0.82296;0.82514;0.82761;0.83005;0.83219;0.83355;0.83289;0.82623;0.79692;-9999;-9999;
+1000;0.80978;0.80995;0.8104;0.81099;0.81186;0.81281;0.81402;0.81571;0.81764;0.81948;0.82163;0.82411;0.82655;0.82874;0.83021;0.82991;0.82449;0.80067;-9999;-9999;
+1500;0.80649;0.80666;0.80709;0.80767;0.80853;0.80945;0.81065;0.8123;0.81422;0.81603;0.81813;0.82058;0.82303;0.82525;0.82683;0.82685;0.82248;0.8028;-9999;-9999;
+2000;0.80321;0.80333;0.80374;0.80432;0.80517;0.80607;0.80724;0.80888;0.81077;0.81257;0.81461;0.81707;0.81949;0.82173;0.82341;0.8237;0.82025;0.80417;-9999;-9999;
+2500;0.79981;0.79997;0.80036;0.80093;0.80176;0.80265;0.8038;0.80541;0.80729;0.80908;0.81115;0.81355;0.81597;0.81821;0.81995;0.82047;0.81781;0.80496;-9999;-9999;
+3000;0.7964;0.79655;0.79694;0.7975;0.79833;0.7992;0.80033;0.80192;0.80378;0.80554;0.80759;0.80999;0.81241;0.81468;0.81646;0.81717;0.81525;0.80485;-9999;-9999;
+3500;0.793;0.79311;0.79349;0.79404;0.79485;0.7957;0.79681;0.79839;0.80024;0.80199;0.80401;0.80639;0.80881;0.8111;0.81295;0.81381;0.81238;0.80412;0.77647;-9999;
+4000;0.78959;0.78959;0.78998;0.79055;0.79134;0.79218;0.79327;0.79482;0.79665;0.7984;0.80041;0.80277;0.80518;0.80748;0.80939;0.8104;0.8094;0.80264;0.77765;-9999;
+4500;0.78601;0.78615;0.78651;0.78704;0.78781;0.78863;0.7897;0.79122;0.79303;0.79477;0.79676;0.79912;0.80152;0.80383;0.80579;0.80693;0.80632;0.80084;0.78;-9999;
+5000;0.78244;0.78262;0.78297;0.78349;0.78425;0.78505;0.7861;0.7876;0.78939;0.79111;0.79308;0.79541;0.79783;0.80015;0.80215;0.80343;0.80314;0.79877;0.78192;-9999;
+5500;0.77886;0.77906;0.77941;0.77992;0.78066;0.78145;0.78247;0.78395;0.78572;0.78742;0.78937;0.79168;0.79409;0.79644;0.79848;0.79986;0.79987;0.79644;0.78266;-9999;
+6000;0.77527;0.77539;0.77573;0.77624;0.77699;0.77777;0.7788;0.78027;0.78202;0.78371;0.78564;0.78791;0.79032;0.79267;0.79477;0.79626;0.79651;0.79389;0.783;-9999;
+6500;0.77168;0.77168;0.77203;0.77251;0.77324;0.77401;0.77495;0.77646;0.77822;0.77993;0.78186;0.78412;0.78652;0.78887;0.791;0.7926;0.79309;0.79113;0.78251;-9999;
+7000;0.76782;0.76794;0.76826;0.76875;0.76947;0.77022;0.77115;0.77262;0.77436;0.77606;0.77797;0.78022;0.78264;0.78504;0.7872;0.78888;0.78959;0.78828;0.78155;-9999;
+7500;0.76397;0.76416;0.76448;0.76496;0.76566;0.7664;0.76731;0.76876;0.77046;0.77217;0.77404;0.77626;0.77868;0.78107;0.78329;0.78508;0.78601;0.78519;0.77994;-9999;
+8000;0.76024;0.76035;0.76066;0.76113;0.76182;0.76255;0.76344;0.76486;0.76654;0.76824;0.77004;0.77228;0.77468;0.77708;0.77932;0.78117;0.78227;0.78186;0.7779;0.7643;
+8500;0.75652;0.75652;0.75681;0.75726;0.75794;0.75865;0.75954;0.76093;0.76257;0.76428;0.76607;0.76826;0.77066;0.77305;0.77531;0.77723;0.77848;0.77841;0.77547;0.76513;
+9000;0.7525;0.7526;0.7529;0.75335;0.75402;0.75472;0.7556;0.75696;0.75858;0.76028;0.76208;0.76422;0.7666;0.76899;0.77126;0.77325;0.77463;0.77486;0.77276;0.76492;
+9500;0.74849;0.74867;0.74896;0.7494;0.75006;0.75075;0.75162;0.75295;0.75455;0.75625;0.75804;0.76014;0.76255;0.7649;0.76719;0.76922;0.77071;0.77124;0.7698;0.76405;
+10000;0.74447;0.7447;0.74499;0.74542;0.74606;0.74674;0.7476;0.74891;0.75049;0.75218;0.75398;0.75603;0.75841;0.76077;0.76307;0.76514;0.76675;0.76751;0.76671;0.76242;
+10500;0.74046;0.74069;0.74097;0.74139;0.74202;0.7427;0.74355;0.74482;0.74638;0.74808;0.74984;0.75189;0.75423;0.7566;0.75891;0.76103;0.76273;0.76371;0.76336;0.76033;
+11000;0.73645;0.73665;0.73692;0.73733;0.73795;0.73862;0.73946;0.7407;0.74223;0.74393;0.74567;0.74767;0.75003;0.7524;0.75472;0.75687;0.75866;0.75983;0.75987;0.75785;
+11500;0.73647;0.73657;0.73684;0.73725;0.73787;0.73854;0.73938;0.74063;0.74216;0.74385;0.74559;0.74759;0.74995;0.75231;0.75462;0.75676;0.75852;0.75966;0.75963;0.75743;
+12000;0.7365;0.73649;0.73676;0.73717;0.73779;0.73846;0.73929;0.74055;0.74208;0.74377;0.74551;0.7475;0.74986;0.75222;0.75452;0.75665;0.75841;0.75948;0.75938;0.75699;
+12500;0.73632;0.73641;0.73668;0.73709;0.73771;0.73837;0.73921;0.74047;0.742;0.74369;0.74543;0.74742;0.74978;0.75213;0.75443;0.75654;0.75826;0.75931;0.75913;0.75654;
+13000;0.73614;0.73633;0.7366;0.73701;0.73763;0.73829;0.73912;0.74039;0.74192;0.7436;0.74534;0.74737;0.74969;0.75203;0.75433;0.75642;0.75812;0.75913;0.75887;0.75608;
+13500;0.73615;0.73624;0.73651;0.73693;0.73755;0.73821;0.73904;0.7403;0.74184;0.74351;0.74526;0.74728;0.7496;0.75194;0.75423;0.75631;0.75799;0.75895;0.75861;0.7556;
+14000;0.73617;0.73615;0.73642;0.73684;0.73746;0.73812;0.73896;0.74022;0.74176;0.74343;0.74517;0.74719;0.74951;0.75184;0.75413;0.7562;0.75784;0.75877;0.75835;0.7551;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.80697;0.8072;0.8077;0.80849;0.80951;0.81065;0.81209;0.81395;0.81594;0.81786;0.82008;0.82241;0.82446;0.82566;0.82471;0.81668;0.77931;-9999;-9999;-9999;
+500;0.80364;0.80364;0.80432;0.8051;0.8061;0.80719;0.8086;0.81041;0.81239;0.81429;0.8165;0.81885;0.82095;0.82228;0.82171;0.81496;0.78463;-9999;-9999;-9999;
+1000;0.8003;0.80049;0.80096;0.80171;0.80269;0.80375;0.80512;0.80691;0.80886;0.81072;0.8129;0.81526;0.81741;0.81886;0.81862;0.813;0.78797;-9999;-9999;-9999;
+1500;0.79696;0.79712;0.79757;0.7983;0.79927;0.8003;0.80165;0.80341;0.80534;0.80718;0.80932;0.81165;0.81383;0.81541;0.81547;0.81112;0.78987;-9999;-9999;-9999;
+2000;0.79354;0.79373;0.79416;0.79487;0.79582;0.79683;0.79815;0.7999;0.8018;0.80362;0.80575;0.80808;0.81025;0.81191;0.81218;0.8088;0.79116;-9999;-9999;-9999;
+2500;0.79012;0.79012;0.79071;0.79142;0.79235;0.79334;0.79463;0.79635;0.79825;0.80005;0.80216;0.80449;0.80669;0.8084;0.80888;0.80629;0.79186;-9999;-9999;-9999;
+3000;0.78666;0.78684;0.78732;0.78792;0.78884;0.78981;0.79108;0.79279;0.79466;0.79645;0.79854;0.80087;0.80309;0.80487;0.80557;0.80354;0.79171;-9999;-9999;-9999;
+3500;0.78319;0.78336;0.78382;0.7844;0.78531;0.78626;0.7875;0.78918;0.79105;0.79283;0.7949;0.79722;0.79946;0.80132;0.80226;0.80072;0.79103;-9999;-9999;-9999;
+4000;0.77968;0.77985;0.78029;0.78087;0.78175;0.78269;0.7839;0.78555;0.78741;0.78917;0.79123;0.79357;0.79584;0.79781;0.7989;0.79778;0.78969;0.75368;-9999;-9999;
+4500;0.77617;0.77617;0.77669;0.77732;0.77818;0.77909;0.78028;0.78191;0.78375;0.78551;0.78759;0.78994;0.79225;0.79424;0.79545;0.79473;0.78805;0.75891;-9999;-9999;
+5000;0.7726;0.77285;0.7732;0.77381;0.77463;0.77553;0.7767;0.77831;0.78014;0.78188;0.78393;0.78627;0.78859;0.79064;0.79196;0.79159;0.78611;0.76179;-9999;-9999;
+5500;0.76906;0.76921;0.7696;0.77017;0.77102;0.77191;0.77308;0.77468;0.77649;0.77822;0.78025;0.78258;0.7849;0.78698;0.78842;0.78835;0.78391;0.76376;-9999;-9999;
+6000;0.76542;0.76557;0.76595;0.76651;0.76734;0.76822;0.76936;0.77094;0.77276;0.7745;0.77653;0.77885;0.78117;0.78328;0.78481;0.78503;0.78147;0.76502;-9999;-9999;
+6500;0.76178;0.7619;0.76228;0.76282;0.76364;0.76449;0.7656;0.76716;0.76896;0.77068;0.77268;0.77502;0.77737;0.77954;0.78115;0.7816;0.77893;0.76563;-9999;-9999;
+7000;0.75815;0.75815;0.75854;0.75911;0.7599;0.76073;0.76182;0.76335;0.76513;0.76683;0.76882;0.77114;0.77348;0.77567;0.77739;0.77805;0.77607;0.76533;-9999;-9999;
+7500;0.75435;0.75448;0.75484;0.75536;0.75614;0.75694;0.75801;0.75952;0.76128;0.76296;0.76492;0.76722;0.76956;0.77177;0.77355;0.77438;0.77295;0.76458;-9999;-9999;
+8000;0.75056;0.75072;0.75107;0.75158;0.75234;0.75313;0.75417;0.75565;0.75739;0.75905;0.761;0.76328;0.76561;0.76783;0.76967;0.77065;0.76969;0.76301;0.7399;-9999;
+8500;0.74676;0.74693;0.74727;0.74777;0.74851;0.74928;0.7503;0.75176;0.75347;0.75512;0.75704;0.7593;0.76162;0.76386;0.76575;0.76687;0.76631;0.76104;0.74018;-9999;
+9000;0.74297;0.74311;0.74344;0.74392;0.74465;0.7454;0.7464;0.74783;0.74953;0.75116;0.75306;0.7553;0.7576;0.75985;0.76178;0.76303;0.76281;0.75872;0.74209;-9999;
+9500;0.73918;0.73925;0.73957;0.74005;0.74076;0.74149;0.74247;0.74388;0.74555;0.74717;0.74904;0.75125;0.75355;0.7558;0.75778;0.75914;0.75921;0.7561;0.74314;-9999;
+10000;0.73538;0.73538;0.73568;0.73613;0.73683;0.73755;0.7385;0.73989;0.74154;0.74315;0.74499;0.74717;0.74947;0.75172;0.75373;0.75519;0.75553;0.75322;0.7433;-9999;
+10500;0.73132;0.73142;0.73173;0.73218;0.73287;0.73357;0.7345;0.73586;0.73749;0.7391;0.74091;0.74306;0.74535;0.7476;0.74964;0.7512;0.75177;0.75013;0.74272;-9999;
+11000;0.72726;0.72745;0.72775;0.72819;0.72886;0.72956;0.73047;0.7318;0.73341;0.73501;0.73679;0.73891;0.74119;0.74344;0.74551;0.74715;0.74792;0.7469;0.74116;-9999;
+11500;0.72725;0.72736;0.72765;0.7281;0.72877;0.72946;0.73031;0.7317;0.73332;0.73491;0.7367;0.73882;0.74109;0.74334;0.7454;0.74701;0.74774;0.74664;0.74059;-9999;
+12000;0.72715;0.72726;0.72755;0.728;0.72867;0.72936;0.73021;0.73161;0.73322;0.73481;0.7366;0.73872;0.741;0.74324;0.74529;0.74688;0.74757;0.74636;0.73999;-9999;
+12500;0.72706;0.72716;0.72745;0.72789;0.72857;0.72926;0.73012;0.73151;0.73313;0.73472;0.73651;0.73863;0.7409;0.74314;0.74517;0.74674;0.74739;0.74601;0.73939;-9999;
+13000;0.72695;0.72705;0.72735;0.72779;0.72846;0.72915;0.73001;0.73141;0.73303;0.73462;0.73641;0.73853;0.7408;0.74303;0.74505;0.7466;0.7472;0.74572;0.73876;-9999;
+13500;0.72685;0.72695;0.72724;0.72769;0.72836;0.72905;0.72991;0.73131;0.73293;0.73451;0.73631;0.73843;0.7407;0.74292;0.74494;0.74646;0.74702;0.74542;0.73791;-9999;
+14000;0.72673;0.72684;0.72713;0.72758;0.72826;0.72894;0.72981;0.73121;0.73283;0.73441;0.73621;0.73833;0.7406;0.74282;0.74482;0.74632;0.74683;0.74512;0.73721;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.79782;0.7981;0.79873;0.79953;0.80084;0.80208;0.80372;0.80573;0.80768;0.80967;0.81182;0.8138;0.81504;0.81438;0.80738;0.77343;-9999;-9999;-9999;-9999;
+500;0.79453;0.79453;0.79533;0.79612;0.79739;0.7986;0.80018;0.80215;0.80409;0.80605;0.80823;0.81025;0.81162;0.81114;0.80535;0.77729;-9999;-9999;-9999;-9999;
+1000;0.79124;0.79137;0.79195;0.79271;0.79394;0.79512;0.79667;0.79861;0.80052;0.80245;0.8046;0.80667;0.80816;0.80797;0.80314;0.77964;-9999;-9999;-9999;-9999;
+1500;0.78775;0.78798;0.78853;0.78929;0.79048;0.79163;0.79314;0.79506;0.79697;0.79887;0.80101;0.80307;0.80465;0.80475;0.80083;0.78079;-9999;-9999;-9999;-9999;
+2000;0.78425;0.78456;0.78509;0.78584;0.78699;0.78812;0.7896;0.79149;0.79339;0.79528;0.79742;0.79952;0.80114;0.80145;0.79828;0.78136;-9999;-9999;-9999;-9999;
+2500;0.78088;0.7811;0.78162;0.78234;0.78347;0.78458;0.78603;0.78791;0.7898;0.79168;0.79381;0.79593;0.79764;0.79813;0.79553;0.78134;-9999;-9999;-9999;-9999;
+3000;0.77752;0.77762;0.77812;0.77889;0.77993;0.78102;0.78243;0.78428;0.78618;0.78804;0.79017;0.79232;0.79409;0.79478;0.7927;0.78073;-9999;-9999;-9999;-9999;
+3500;0.77392;0.77412;0.77461;0.77535;0.77637;0.77744;0.77881;0.78064;0.78252;0.78438;0.78651;0.78867;0.79051;0.79136;0.78977;0.77955;-9999;-9999;-9999;-9999;
+4000;0.77041;0.77061;0.77107;0.7718;0.77279;0.77383;0.77517;0.77697;0.77885;0.78068;0.7828;0.785;0.7869;0.7879;0.78674;0.77807;-9999;-9999;-9999;-9999;
+4500;0.76689;0.76707;0.76752;0.76822;0.7692;0.77021;0.77151;0.77329;0.77515;0.77696;0.77907;0.78128;0.78324;0.78439;0.78359;0.7763;0.74192;-9999;-9999;-9999;
+5000;0.76324;0.76343;0.76386;0.76456;0.76552;0.76653;0.76782;0.76959;0.77143;0.77323;0.77531;0.77753;0.77953;0.78082;0.78036;0.77427;0.74624;-9999;-9999;-9999;
+5500;0.75958;0.75976;0.76017;0.76085;0.7618;0.76277;0.76403;0.76579;0.76764;0.76944;0.77154;0.77376;0.77579;0.77719;0.77696;0.77209;0.74882;-9999;-9999;-9999;
+6000;0.75592;0.75607;0.75653;0.75712;0.75805;0.75899;0.76021;0.76196;0.7638;0.76557;0.76765;0.76991;0.772;0.77351;0.77356;0.76966;0.75025;-9999;-9999;-9999;
+6500;0.75226;0.75235;0.75278;0.75336;0.75427;0.7552;0.75638;0.7581;0.75992;0.76168;0.76374;0.766;0.76811;0.76971;0.77002;0.76707;0.75091;-9999;-9999;-9999;
+7000;0.74843;0.74859;0.74901;0.74958;0.75047;0.75137;0.75258;0.75422;0.75603;0.75776;0.7598;0.76205;0.76419;0.76586;0.76639;0.76414;0.75099;-9999;-9999;-9999;
+7500;0.74459;0.74481;0.74521;0.74577;0.74664;0.74752;0.74871;0.75032;0.75211;0.75382;0.75584;0.75809;0.76024;0.76198;0.76269;0.76107;0.75036;-9999;-9999;-9999;
+8000;0.74085;0.74101;0.74139;0.74194;0.74279;0.74365;0.74481;0.74639;0.74817;0.74986;0.75185;0.75409;0.75626;0.75805;0.759;0.75787;0.74918;-9999;-9999;-9999;
+8500;0.73711;0.73718;0.73755;0.73809;0.73892;0.73976;0.74088;0.74244;0.7442;0.74587;0.74783;0.75007;0.75224;0.75413;0.75531;0.75454;0.74765;0.71598;-9999;-9999;
+9000;0.73318;0.73332;0.73368;0.73421;0.73502;0.73583;0.73693;0.73847;0.7402;0.74185;0.74379;0.74605;0.74826;0.75022;0.75147;0.7511;0.74556;0.72092;-9999;-9999;
+9500;0.72925;0.72943;0.72979;0.7303;0.73109;0.73188;0.73296;0.73448;0.7362;0.73785;0.7398;0.74204;0.74426;0.74625;0.7476;0.74754;0.74315;0.72279;-9999;-9999;
+10000;0.72538;0.72551;0.72586;0.72636;0.72716;0.72796;0.72902;0.73052;0.73223;0.73387;0.73578;0.73801;0.74022;0.74223;0.74368;0.74386;0.74047;0.72421;-9999;-9999;
+10500;0.72151;0.72164;0.72198;0.72248;0.72325;0.72402;0.72506;0.72653;0.72822;0.72984;0.73173;0.73393;0.73614;0.73818;0.73971;0.74012;0.73755;0.72489;-9999;-9999;
+11000;0.7176;0.71772;0.71806;0.71854;0.71929;0.72005;0.72106;0.72251;0.72418;0.72577;0.72761;0.72982;0.73203;0.73408;0.73569;0.7363;0.73441;0.72448;-9999;-9999;
+11500;0.71749;0.71761;0.71795;0.71843;0.71919;0.71994;0.72096;0.7224;0.72407;0.72567;0.72751;0.72972;0.73192;0.73397;0.73556;0.73612;0.73413;0.72374;-9999;-9999;
+12000;0.71738;0.7175;0.71784;0.71832;0.71908;0.71983;0.7208;0.7223;0.72397;0.72557;0.72742;0.72962;0.73182;0.73385;0.73542;0.73595;0.73383;0.72298;-9999;-9999;
+12500;0.71727;0.71739;0.71773;0.71822;0.71897;0.71972;0.72069;0.72219;0.72387;0.72546;0.72733;0.72952;0.73171;0.73374;0.73529;0.73577;0.73354;0.72218;-9999;-9999;
+13000;0.71715;0.71731;0.71763;0.71811;0.71886;0.71961;0.72055;0.72209;0.72377;0.72536;0.72723;0.72942;0.73161;0.73362;0.73515;0.73559;0.73323;0.72135;-9999;-9999;
+13500;0.71704;0.71725;0.71757;0.71804;0.7188;0.71953;0.72048;0.72199;0.72366;0.72526;0.72713;0.72932;0.7315;0.73351;0.73501;0.73541;0.73292;0.7205;-9999;-9999;
+14000;0.71693;0.71719;0.71751;0.71798;0.71874;0.71947;0.72042;0.72191;0.72357;0.72515;0.72698;0.72921;0.7314;0.73339;0.73487;0.73522;0.7326;0.71943;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.79331;0.79363;0.79432;0.79518;0.79664;0.79799;0.79977;0.80185;0.80374;0.80571;0.80778;0.80946;0.80997;0.80742;0.79351;-9999;-9999;-9999;-9999;-9999;
+500;0.79003;0.79003;0.79091;0.79175;0.79316;0.79447;0.7962;0.79823;0.80012;0.80209;0.80417;0.80593;0.80662;0.80457;0.7926;-9999;-9999;-9999;-9999;-9999;
+1000;0.78676;0.78687;0.78751;0.78833;0.78969;0.79097;0.79265;0.79465;0.79652;0.79846;0.80053;0.80236;0.80323;0.80165;0.79149;0.78957;-9999;-9999;-9999;-9999;
+1500;0.78323;0.78348;0.78409;0.78489;0.78621;0.78746;0.78909;0.79108;0.79294;0.79488;0.79694;0.79877;0.79979;0.79864;0.78997;-9999;-9999;-9999;-9999;-9999;
+2000;0.77971;0.78005;0.78063;0.78142;0.7827;0.78393;0.78553;0.78749;0.78935;0.79128;0.79334;0.79522;0.79634;0.79552;0.78821;0.75325;-9999;-9999;-9999;-9999;
+2500;0.77635;0.77659;0.77715;0.77802;0.77916;0.78036;0.78193;0.78388;0.78574;0.78767;0.78972;0.79165;0.79289;0.79237;0.78612;0.75706;-9999;-9999;-9999;-9999;
+3000;0.77288;0.77311;0.77364;0.77449;0.77561;0.77678;0.77831;0.78023;0.78209;0.78399;0.78608;0.78805;0.7894;0.78904;0.78386;0.75934;-9999;-9999;-9999;-9999;
+3500;0.76941;0.7696;0.77012;0.77094;0.77202;0.77317;0.77466;0.77656;0.77842;0.78031;0.78241;0.78442;0.78587;0.78577;0.78152;0.76032;-9999;-9999;-9999;-9999;
+4000;0.76594;0.76594;0.76656;0.76736;0.76842;0.76954;0.771;0.77287;0.77472;0.7766;0.7787;0.78075;0.7823;0.78245;0.77892;0.76062;-9999;-9999;-9999;-9999;
+4500;0.76227;0.76248;0.76297;0.76375;0.76481;0.7659;0.76731;0.76916;0.77101;0.77286;0.77496;0.77704;0.77867;0.77906;0.77619;0.7606;-9999;-9999;-9999;-9999;
+5000;0.75861;0.75882;0.75929;0.76005;0.76109;0.76217;0.76356;0.76541;0.76727;0.7691;0.7712;0.7733;0.77501;0.77559;0.77333;0.76008;-9999;-9999;-9999;-9999;
+5500;0.75494;0.75514;0.75559;0.75633;0.75734;0.75839;0.75975;0.76158;0.76343;0.76527;0.76738;0.76953;0.77131;0.77207;0.77032;0.75917;-9999;-9999;-9999;-9999;
+6000;0.75124;0.75143;0.75186;0.75258;0.75358;0.7546;0.75593;0.75773;0.75956;0.76138;0.76348;0.76564;0.76751;0.76846;0.76716;0.75796;-9999;-9999;-9999;-9999;
+6500;0.74753;0.7477;0.74812;0.74881;0.74979;0.75078;0.75208;0.75385;0.75567;0.75747;0.75956;0.76173;0.76364;0.76474;0.76384;0.75615;-9999;-9999;-9999;-9999;
+7000;0.74383;0.74383;0.74434;0.74502;0.74598;0.74694;0.74821;0.74995;0.75176;0.75354;0.7556;0.75779;0.75975;0.76097;0.76042;0.75405;0.7241;-9999;-9999;-9999;
+7500;0.73999;0.74017;0.74063;0.74121;0.74215;0.74308;0.74432;0.74603;0.74783;0.74958;0.75163;0.75382;0.75581;0.75715;0.75682;0.75169;0.7274;-9999;-9999;-9999;
+8000;0.73614;0.73637;0.7368;0.73737;0.73829;0.7392;0.74041;0.74209;0.74387;0.7456;0.74763;0.74982;0.75184;0.75328;0.75324;0.74928;0.72907;-9999;-9999;-9999;
+8500;0.7323;0.73253;0.73294;0.73351;0.7344;0.73529;0.73646;0.73812;0.73989;0.74159;0.7436;0.74579;0.74784;0.74936;0.74958;0.74635;0.72981;-9999;-9999;-9999;
+9000;0.72845;0.72867;0.72906;0.72962;0.73049;0.73136;0.73249;0.73413;0.73588;0.73756;0.73955;0.74173;0.7438;0.7454;0.74585;0.74348;0.73009;-9999;-9999;-9999;
+9500;0.72463;0.72478;0.72516;0.7257;0.72656;0.7274;0.7285;0.73011;0.73185;0.73351;0.73547;0.73765;0.73973;0.7414;0.74205;0.74033;0.72954;-9999;-9999;-9999;
+10000;0.7208;0.72086;0.72123;0.72176;0.72259;0.72341;0.72448;0.72607;0.72779;0.72942;0.73136;0.73353;0.73562;0.73736;0.73817;0.73703;0.72839;-9999;-9999;-9999;
+10500;0.71677;0.71691;0.71727;0.71779;0.7186;0.7194;0.72044;0.722;0.7237;0.72531;0.72722;0.72938;0.73149;0.73327;0.7343;0.73359;0.72683;0.69516;-9999;-9999;
+11000;0.71274;0.71293;0.71328;0.71378;0.71458;0.71535;0.71636;0.71789;0.71958;0.72117;0.72305;0.72521;0.72731;0.72919;0.73041;0.73003;0.72468;0.70006;-9999;-9999;
+11500;0.71273;0.71287;0.71322;0.71373;0.71452;0.7153;0.71631;0.71785;0.71952;0.72112;0.723;0.72515;0.72725;0.72906;0.73023;0.72981;0.72424;0.69857;-9999;-9999;
+12000;0.71272;0.71282;0.71317;0.71367;0.71447;0.71524;0.71626;0.7178;0.71948;0.72107;0.72295;0.7251;0.7272;0.72899;0.73008;0.7296;0.7238;-9999;-9999;-9999;
+12500;0.71264;0.71276;0.71312;0.71362;0.71442;0.71519;0.71622;0.71775;0.71943;0.72102;0.7229;0.72505;0.72714;0.72892;0.72993;0.72938;0.72334;0.69674;-9999;-9999;
+13000;0.71255;0.71271;0.71307;0.71357;0.71437;0.71514;0.71618;0.71771;0.71939;0.72098;0.72286;0.72501;0.72709;0.72885;0.72982;0.72915;0.72287;-9999;-9999;-9999;
+13500;0.71246;0.71266;0.71302;0.71352;0.71433;0.7151;0.71614;0.71767;0.71935;0.72094;0.72282;0.72497;0.72704;0.72879;0.72972;0.72893;0.72239;0.68871;-9999;-9999;
+14000;0.71249;0.71262;0.71298;0.71347;0.71429;0.71505;0.7161;0.71763;0.71931;0.7209;0.72278;0.72492;0.72699;0.72872;0.72962;0.7287;0.7219;0.68867;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.78888;0.78888;0.79005;0.791;0.79265;0.79412;0.79607;0.7982;0.80007;0.80205;0.80386;0.80509;0.80463;0.79877;0.77189;-9999;-9999;-9999;-9999;-9999;
+500;0.78562;0.78562;0.78662;0.78754;0.78912;0.79055;0.79243;0.79453;0.79638;0.79836;0.80023;0.80157;0.80123;0.79639;0.77344;-9999;-9999;-9999;-9999;-9999;
+1000;0.78235;0.78235;0.78318;0.78408;0.78561;0.78701;0.78884;0.79091;0.79273;0.79469;0.79656;0.79801;0.79795;0.79387;0.77418;-9999;-9999;-9999;-9999;-9999;
+1500;0.77877;0.77905;0.77974;0.78062;0.78209;0.78346;0.78524;0.78728;0.7891;0.79105;0.79295;0.79444;0.7946;0.79122;0.77407;-9999;-9999;-9999;-9999;-9999;
+2000;0.77519;0.7756;0.77627;0.77712;0.77855;0.7799;0.78164;0.78366;0.78547;0.78741;0.78933;0.7909;0.79126;0.78843;0.7737;-9999;-9999;-9999;-9999;-9999;
+2500;0.77186;0.77213;0.77277;0.77361;0.77499;0.7763;0.778;0.78001;0.78183;0.78376;0.78571;0.78734;0.78788;0.78556;0.77278;-9999;-9999;-9999;-9999;-9999;
+3000;0.76853;0.76863;0.76925;0.77007;0.77141;0.77269;0.77434;0.77633;0.77814;0.78003;0.78207;0.78376;0.78446;0.7826;0.77155;-9999;-9999;-9999;-9999;-9999;
+3500;0.76488;0.76512;0.76571;0.76662;0.76781;0.76905;0.77067;0.77264;0.77445;0.77633;0.77838;0.78015;0.78101;0.77956;0.77014;-9999;-9999;-9999;-9999;-9999;
+4000;0.76135;0.76159;0.76215;0.76303;0.76419;0.7654;0.76698;0.76893;0.77073;0.77262;0.77467;0.77649;0.77751;0.77644;0.76838;-9999;-9999;-9999;-9999;-9999;
+4500;0.75773;0.75796;0.75851;0.75938;0.76052;0.76172;0.76327;0.76519;0.76699;0.76888;0.77093;0.77279;0.77394;0.77323;0.76637;0.7331;-9999;-9999;-9999;-9999;
+5000;0.75411;0.7543;0.75483;0.75566;0.75678;0.75795;0.75947;0.76139;0.76321;0.76512;0.76716;0.76907;0.77033;0.76981;0.76416;0.73634;-9999;-9999;-9999;-9999;
+5500;0.75049;0.75061;0.75111;0.75192;0.75301;0.75415;0.75564;0.75753;0.75935;0.76125;0.76331;0.76528;0.76668;0.76645;0.76173;0.73849;-9999;-9999;-9999;-9999;
+6000;0.74667;0.74689;0.74737;0.74816;0.74925;0.75034;0.75178;0.75365;0.75546;0.75736;0.75941;0.76141;0.7629;0.76295;0.75915;0.73906;-9999;-9999;-9999;-9999;
+6500;0.74286;0.74315;0.74361;0.74437;0.74544;0.7465;0.74791;0.74975;0.75155;0.75339;0.75548;0.75751;0.75909;0.75936;0.75628;0.73935;-9999;-9999;-9999;-9999;
+7000;0.73918;0.73938;0.73983;0.74057;0.7416;0.74264;0.74401;0.74582;0.74762;0.74944;0.75152;0.75357;0.75523;0.75572;0.75324;0.73903;-9999;-9999;-9999;-9999;
+7500;0.7354;0.73559;0.73602;0.73674;0.73775;0.73876;0.74009;0.74188;0.74367;0.74546;0.74753;0.74961;0.75133;0.75201;0.75007;0.73823;-9999;-9999;-9999;-9999;
+8000;0.73161;0.73178;0.73219;0.73289;0.73388;0.73486;0.73615;0.73791;0.73969;0.74146;0.74351;0.74561;0.7474;0.74824;0.74678;0.73696;-9999;-9999;-9999;-9999;
+8500;0.72783;0.72783;0.72833;0.72901;0.72998;0.73093;0.73219;0.73392;0.73569;0.73743;0.73947;0.74158;0.74342;0.74442;0.74338;0.73539;-9999;-9999;-9999;-9999;
+9000;0.72405;0.72408;0.72453;0.7251;0.72605;0.72698;0.72821;0.72991;0.73166;0.73338;0.7354;0.73752;0.7394;0.74054;0.73987;0.73332;0.70158;-9999;-9999;-9999;
+9500;0.72001;0.72019;0.72061;0.72118;0.7221;0.723;0.7242;0.72587;0.72761;0.72931;0.7313;0.73343;0.73535;0.73661;0.73628;0.73095;0.70559;-9999;-9999;-9999;
+10000;0.71609;0.71626;0.71666;0.71722;0.71812;0.719;0.72016;0.72181;0.72353;0.72521;0.72718;0.7293;0.73126;0.73262;0.73251;0.72831;0.70773;-9999;-9999;-9999;
+10500;0.71217;0.7123;0.71269;0.71324;0.71412;0.71497;0.7161;0.71772;0.71943;0.72108;0.72302;0.72515;0.72713;0.72858;0.72874;0.72543;0.70878;-9999;-9999;-9999;
+11000;0.70826;0.70826;0.70865;0.70923;0.71009;0.71091;0.71202;0.7136;0.71529;0.71692;0.71884;0.72096;0.72296;0.7245;0.72489;0.72245;0.70918;-9999;-9999;-9999;
+11500;0.70813;0.70826;0.70866;0.70919;0.71005;0.71087;0.71198;0.71357;0.71526;0.71688;0.71881;0.72093;0.72291;0.72443;0.72478;0.72218;0.70837;-9999;-9999;-9999;
+12000;0.70809;0.70824;0.70862;0.70915;0.71002;0.71084;0.71195;0.71354;0.71523;0.71685;0.71878;0.72089;0.72287;0.72437;0.72466;0.72193;0.70743;-9999;-9999;-9999;
+12500;0.70805;0.70823;0.70859;0.70912;0.70999;0.71081;0.71192;0.71351;0.7152;0.71682;0.71875;0.72086;0.72283;0.72431;0.72455;0.72157;0.70656;-9999;-9999;-9999;
+13000;0.70804;0.70817;0.70856;0.70909;0.70996;0.71078;0.71189;0.71349;0.71518;0.7168;0.71873;0.72083;0.7228;0.72425;0.72444;0.72131;0.70566;-9999;-9999;-9999;
+13500;0.70803;0.70813;0.70853;0.70906;0.70994;0.71075;0.71187;0.71347;0.71515;0.71678;0.7187;0.72081;0.72276;0.72419;0.72434;0.72104;0.70472;-9999;-9999;-9999;
+14000;0.70797;0.70812;0.7085;0.70903;0.70992;0.71073;0.71184;0.71345;0.71514;0.71676;0.71869;0.72079;0.72273;0.72413;0.72422;0.72078;0.70377;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.78466;0.78517;0.78623;0.78711;0.78897;0.7906;0.79258;0.79489;0.79674;0.7986;0.80012;0.80063;0.79846;0.78689;0.77144;-9999;-9999;-9999;-9999;-9999;
+500;0.78141;0.78141;0.78257;0.78358;0.78537;0.78695;0.78889;0.79114;0.79298;0.79485;0.79645;0.79714;0.79541;0.7853;0.7731;-9999;-9999;-9999;-9999;-9999;
+1000;0.77816;0.77816;0.77908;0.78007;0.7818;0.78333;0.78522;0.78745;0.78926;0.79112;0.79275;0.79361;0.79229;0.78352;0.77507;-9999;-9999;-9999;-9999;-9999;
+1500;0.77448;0.7748;0.7756;0.77656;0.77823;0.77973;0.78168;0.78378;0.78557;0.78744;0.78911;0.79007;0.78908;0.78172;0.74657;-9999;-9999;-9999;-9999;-9999;
+2000;0.7708;0.77132;0.77209;0.77302;0.77464;0.7761;0.77802;0.78011;0.78188;0.78376;0.78547;0.78655;0.78586;0.77947;0.75007;-9999;-9999;-9999;-9999;-9999;
+2500;0.76752;0.76782;0.76856;0.76948;0.77103;0.77246;0.77433;0.7764;0.77818;0.78008;0.78183;0.78302;0.78244;0.77708;0.75223;-9999;-9999;-9999;-9999;-9999;
+3000;0.76424;0.76431;0.76501;0.76591;0.76742;0.76881;0.77063;0.77267;0.77445;0.77636;0.77817;0.77946;0.77915;0.77455;0.75295;-9999;-9999;-9999;-9999;-9999;
+3500;0.76049;0.76077;0.76145;0.76232;0.76378;0.76514;0.76691;0.76894;0.77071;0.77262;0.77446;0.77586;0.7758;0.77191;0.75316;-9999;-9999;-9999;-9999;-9999;
+4000;0.75693;0.7572;0.75786;0.75872;0.76013;0.76145;0.76318;0.76518;0.76695;0.76886;0.77073;0.77221;0.7724;0.76915;0.75269;-9999;-9999;-9999;-9999;-9999;
+4500;0.75337;0.75355;0.75418;0.75514;0.75641;0.75771;0.75941;0.76141;0.76317;0.76507;0.76697;0.76853;0.76892;0.76625;0.75197;-9999;-9999;-9999;-9999;-9999;
+5000;0.74962;0.74987;0.75048;0.7514;0.75264;0.75391;0.75557;0.75755;0.75932;0.76124;0.76319;0.76483;0.7654;0.76325;0.751;-9999;-9999;-9999;-9999;-9999;
+5500;0.74587;0.74618;0.74675;0.74765;0.74885;0.75009;0.7517;0.75366;0.75543;0.75734;0.75932;0.76103;0.7618;0.76012;0.74962;0.74627;-9999;-9999;-9999;-9999;
+6000;0.74221;0.74245;0.74301;0.74388;0.74505;0.74625;0.74782;0.74976;0.75152;0.75342;0.75541;0.75718;0.7581;0.75683;0.748;0.74724;-9999;-9999;-9999;-9999;
+6500;0.73847;0.73871;0.73924;0.74008;0.74121;0.74239;0.74392;0.74583;0.74759;0.74944;0.75148;0.7533;0.75436;0.75346;0.74598;-9999;-9999;-9999;-9999;-9999;
+7000;0.73473;0.73473;0.73543;0.73625;0.73736;0.73851;0.73999;0.74188;0.74364;0.74548;0.74752;0.74938;0.75056;0.75;0.74372;0.71231;-9999;-9999;-9999;-9999;
+7500;0.731;0.731;0.73161;0.73241;0.73351;0.7346;0.73605;0.7379;0.73966;0.7415;0.74353;0.74543;0.74673;0.74635;0.74124;0.71568;-9999;-9999;-9999;-9999;
+8000;0.72726;0.72731;0.72777;0.72853;0.72961;0.73067;0.73208;0.7339;0.73565;0.73749;0.73951;0.74144;0.74284;0.74274;0.73865;0.71737;-9999;-9999;-9999;-9999;
+8500;0.72324;0.72345;0.7239;0.72463;0.72568;0.72671;0.72808;0.72988;0.73163;0.73345;0.73546;0.73742;0.73891;0.73907;0.73572;0.71773;-9999;-9999;-9999;-9999;
+9000;0.71937;0.71957;0.72;0.72071;0.72174;0.72274;0.72406;0.72584;0.72758;0.72934;0.73137;0.73337;0.73494;0.73532;0.73264;0.71769;-9999;-9999;-9999;-9999;
+9500;0.7155;0.71567;0.71607;0.71676;0.71776;0.71873;0.72002;0.72178;0.7235;0.72524;0.72725;0.72927;0.73093;0.73151;0.7294;0.71707;-9999;-9999;-9999;-9999;
+10000;0.71163;0.71163;0.71211;0.71279;0.71376;0.71471;0.71596;0.71768;0.7194;0.72112;0.72311;0.72514;0.72687;0.72763;0.72604;0.71592;-9999;-9999;-9999;-9999;
+10500;0.70759;0.70777;0.70821;0.70878;0.70974;0.71065;0.71187;0.71357;0.71527;0.71697;0.71894;0.72098;0.72276;0.72369;0.72255;0.71429;-9999;-9999;-9999;-9999;
+11000;0.70355;0.70378;0.70419;0.70476;0.70569;0.70657;0.70776;0.70942;0.71112;0.71278;0.71474;0.71679;0.71861;0.71969;0.71894;0.71234;0.67984;-9999;-9999;-9999;
+11500;0.70359;0.70376;0.70417;0.70474;0.70568;0.70656;0.70775;0.70941;0.7111;0.71277;0.71473;0.71678;0.71858;0.71963;0.71881;0.71196;0.67826;-9999;-9999;-9999;
+12000;0.70363;0.70363;0.7041;0.70473;0.70567;0.70655;0.70774;0.70941;0.71109;0.71276;0.71472;0.71676;0.71856;0.71957;0.71868;0.71157;-9999;-9999;-9999;-9999;
+12500;0.70367;0.70367;0.70409;0.70472;0.70566;0.70654;0.70773;0.70941;0.71109;0.71276;0.71472;0.71675;0.71853;0.71952;0.71855;0.71118;-9999;-9999;-9999;-9999;
+13000;0.70355;0.70372;0.70414;0.7047;0.70566;0.70654;0.70773;0.70941;0.71109;0.71275;0.71472;0.71675;0.71851;0.71946;0.71842;0.71078;-9999;-9999;-9999;-9999;
+13500;0.70343;0.70373;0.70413;0.7047;0.70566;0.70654;0.70773;0.70941;0.71109;0.71276;0.71473;0.71676;0.71851;0.71941;0.7183;0.71027;-9999;-9999;-9999;-9999;
+14000;0.70355;0.70372;0.70413;0.7047;0.70566;0.70654;0.70773;0.70942;0.7111;0.71277;0.71474;0.71677;0.7185;0.71937;0.71817;0.70985;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.78079;0.78147;0.78269;0.78366;0.78577;0.78759;0.78971;0.79216;0.79398;0.7956;0.79658;0.79588;0.79073;0.76933;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.77757;0.77757;0.77912;0.78004;0.78207;0.78383;0.78588;0.78827;0.79013;0.7918;0.79292;0.79251;0.78809;0.76936;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.77435;0.77439;0.77554;0.77644;0.7784;0.78011;0.78212;0.78446;0.78628;0.78799;0.78923;0.78908;0.78535;0.76888;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.77051;0.77051;0.77178;0.77285;0.77475;0.77641;0.77838;0.78066;0.78247;0.78422;0.78553;0.78561;0.78249;0.76803;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.76666;0.76733;0.76822;0.76925;0.77108;0.7727;0.77465;0.7769;0.77869;0.78045;0.78184;0.78211;0.77955;0.76686;0.74813;-9999;-9999;-9999;-9999;-9999;
+2500;0.76344;0.76378;0.76464;0.76564;0.76741;0.76899;0.7709;0.77312;0.7749;0.7767;0.77816;0.7786;0.77648;0.76535;0.75105;-9999;-9999;-9999;-9999;-9999;
+3000;0.75989;0.76022;0.76104;0.76202;0.76373;0.76527;0.76714;0.76934;0.7711;0.77291;0.77445;0.77507;0.77338;0.76359;0.7524;-9999;-9999;-9999;-9999;-9999;
+3500;0.75634;0.75634;0.75741;0.75838;0.76003;0.76153;0.76348;0.76554;0.76728;0.7691;0.7707;0.77149;0.77021;0.76166;0.75384;-9999;-9999;-9999;-9999;-9999;
+4000;0.75279;0.75302;0.75377;0.75472;0.75632;0.75778;0.75968;0.76172;0.76346;0.76529;0.76694;0.76788;0.76694;0.75972;0.72494;-9999;-9999;-9999;-9999;-9999;
+4500;0.74903;0.74933;0.75006;0.75099;0.75254;0.75397;0.75584;0.75789;0.75963;0.76147;0.76316;0.76423;0.76361;0.75737;0.72817;-9999;-9999;-9999;-9999;-9999;
+5000;0.74527;0.74563;0.74633;0.74736;0.74873;0.75013;0.75195;0.75398;0.75572;0.75759;0.75934;0.76055;0.76004;0.75488;0.73013;-9999;-9999;-9999;-9999;-9999;
+5500;0.74163;0.74191;0.74258;0.74358;0.74491;0.74627;0.74804;0.75005;0.75178;0.75366;0.75545;0.75676;0.75654;0.75216;0.73097;-9999;-9999;-9999;-9999;-9999;
+6000;0.73789;0.73817;0.7388;0.73977;0.74107;0.74239;0.74411;0.74611;0.74783;0.74971;0.75154;0.75294;0.75296;0.74929;0.73104;-9999;-9999;-9999;-9999;-9999;
+6500;0.73416;0.73416;0.735;0.73595;0.73721;0.73849;0.74016;0.74214;0.74386;0.74574;0.7476;0.74908;0.74933;0.7463;0.73049;-9999;-9999;-9999;-9999;-9999;
+7000;0.73043;0.73043;0.73119;0.7321;0.73332;0.73457;0.7362;0.73815;0.73987;0.74174;0.74363;0.74518;0.74563;0.74317;0.72967;-9999;-9999;-9999;-9999;-9999;
+7500;0.72655;0.7268;0.72735;0.72823;0.72942;0.73063;0.73221;0.73414;0.73585;0.73772;0.73963;0.74125;0.74189;0.73994;0.72848;-9999;-9999;-9999;-9999;-9999;
+8000;0.72268;0.72296;0.72349;0.72433;0.72549;0.72667;0.72821;0.73011;0.73181;0.73367;0.7356;0.73729;0.73809;0.7366;0.72693;0.72442;-9999;-9999;-9999;-9999;
+8500;0.7188;0.71909;0.7196;0.72041;0.72158;0.72269;0.72418;0.72605;0.72775;0.72959;0.73155;0.73328;0.73423;0.73315;0.7251;0.72481;-9999;-9999;-9999;-9999;
+9000;0.71492;0.7152;0.71568;0.71647;0.7176;0.71868;0.72013;0.72198;0.72367;0.72544;0.72745;0.72924;0.73033;0.72961;0.7229;0.68828;-9999;-9999;-9999;-9999;
+9500;0.71105;0.71128;0.71174;0.7125;0.7136;0.71465;0.71605;0.71787;0.71956;0.72133;0.72333;0.72516;0.72637;0.72598;0.72041;0.69321;-9999;-9999;-9999;-9999;
+10000;0.70717;0.70717;0.70776;0.7085;0.70957;0.71058;0.71195;0.71374;0.71543;0.71719;0.71918;0.72105;0.72237;0.72216;0.71782;0.69521;-9999;-9999;-9999;-9999;
+10500;0.70314;0.70334;0.70376;0.70447;0.70551;0.7065;0.70782;0.70959;0.71127;0.71303;0.715;0.71689;0.71831;0.71837;0.71484;0.69621;-9999;-9999;-9999;-9999;
+11000;0.69911;0.69933;0.69973;0.70042;0.70143;0.70239;0.70367;0.70541;0.70709;0.70883;0.71078;0.7127;0.71421;0.71451;0.71169;0.69631;-9999;-9999;-9999;-9999;
+11500;0.6992;0.69934;0.69974;0.70042;0.70145;0.7024;0.70368;0.70543;0.7071;0.70884;0.71079;0.71271;0.7142;0.71445;0.71152;0.69556;-9999;-9999;-9999;-9999;
+12000;0.6993;0.6993;0.69975;0.70044;0.70147;0.70242;0.7037;0.70545;0.70712;0.70885;0.71081;0.71273;0.7142;0.7144;0.71134;0.69481;-9999;-9999;-9999;-9999;
+12500;0.69918;0.69938;0.69986;0.70045;0.70149;0.70244;0.70373;0.70548;0.70715;0.70888;0.71085;0.71276;0.71421;0.71435;0.71117;0.69403;-9999;-9999;-9999;-9999;
+13000;0.6992;0.6994;0.69988;0.70047;0.70152;0.70246;0.70376;0.70552;0.70719;0.70891;0.71089;0.71279;0.71423;0.71432;0.71099;0.69323;-9999;-9999;-9999;-9999;
+13500;0.69922;0.69942;0.6999;0.70049;0.70155;0.70249;0.70379;0.70557;0.70723;0.70895;0.71094;0.71283;0.71425;0.71429;0.71082;0.69242;-9999;-9999;-9999;-9999;
+14000;0.69924;0.69945;0.69993;0.70052;0.70159;0.70253;0.70388;0.70563;0.70728;0.70899;0.71099;0.71287;0.71427;0.71426;0.71064;0.69159;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77761;0.77761;0.77954;0.78058;0.78305;0.78511;0.78731;0.7898;0.79156;0.79282;0.7931;0.79088;0.78065;0.75473;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.77412;0.77412;0.77567;0.7769;0.77926;0.78126;0.78342;0.78586;0.78762;0.78893;0.78939;0.7876;0.77854;0.74051;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.77052;0.77052;0.77205;0.77326;0.7755;0.77746;0.77958;0.78199;0.78373;0.78509;0.78566;0.78424;0.77631;0.7441;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76693;0.76742;0.76868;0.76964;0.77179;0.77369;0.77578;0.77816;0.77988;0.7813;0.78199;0.78087;0.77391;0.74652;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.7634;0.7634;0.76483;0.76599;0.76807;0.76993;0.77199;0.77435;0.77608;0.77754;0.77833;0.77729;0.77141;0.74766;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75986;0.76017;0.76117;0.76228;0.76429;0.76609;0.76814;0.7705;0.77225;0.77377;0.77469;0.77394;0.7688;0.7478;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.75614;0.75614;0.75746;0.75856;0.76051;0.76224;0.76426;0.76659;0.76836;0.76998;0.77101;0.77055;0.76611;0.7476;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.75242;0.75287;0.75378;0.75484;0.75672;0.75839;0.76037;0.76266;0.76443;0.76609;0.76729;0.7671;0.76333;0.74693;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.74881;0.74881;0.75003;0.75109;0.75291;0.75454;0.75647;0.75874;0.76049;0.76219;0.76348;0.76355;0.76041;0.74587;0.72438;-9999;-9999;-9999;-9999;-9999;
+4500;0.74519;0.74543;0.74628;0.74729;0.74905;0.75064;0.75255;0.75479;0.75655;0.75828;0.75966;0.75993;0.75735;0.74465;0.72657;-9999;-9999;-9999;-9999;-9999;
+5000;0.74135;0.74169;0.74249;0.74349;0.74519;0.74673;0.74859;0.75081;0.75255;0.75432;0.75579;0.75626;0.75416;0.74306;0.72914;-9999;-9999;-9999;-9999;-9999;
+5500;0.73752;0.73792;0.73869;0.73966;0.7413;0.74281;0.74477;0.74682;0.74855;0.75034;0.75187;0.75252;0.75085;0.74119;0.73043;-9999;-9999;-9999;-9999;-9999;
+6000;0.73382;0.73413;0.73487;0.73596;0.73741;0.73887;0.74077;0.74281;0.74453;0.74633;0.74792;0.74873;0.74745;0.7391;0.73163;-9999;-9999;-9999;-9999;-9999;
+6500;0.73013;0.73033;0.73104;0.73209;0.73349;0.73491;0.73676;0.73878;0.74049;0.74231;0.74395;0.7449;0.74398;0.73699;0.70279;-9999;-9999;-9999;-9999;-9999;
+7000;0.72622;0.7265;0.72718;0.72819;0.72956;0.73094;0.73273;0.73474;0.73644;0.73827;0.73996;0.74104;0.74023;0.73447;0.70613;-9999;-9999;-9999;-9999;-9999;
+7500;0.7223;0.72266;0.7233;0.72428;0.72561;0.72694;0.72868;0.73068;0.73237;0.73421;0.73594;0.73713;0.73664;0.73176;0.70823;-9999;-9999;-9999;-9999;-9999;
+8000;0.71852;0.71879;0.71941;0.72035;0.72164;0.72293;0.72462;0.72659;0.72828;0.73012;0.73189;0.73319;0.73297;0.7289;0.70876;-9999;-9999;-9999;-9999;-9999;
+8500;0.71474;0.7149;0.71549;0.71639;0.71764;0.7189;0.72054;0.72249;0.72416;0.72601;0.72781;0.7292;0.72925;0.72587;0.7086;-9999;-9999;-9999;-9999;-9999;
+9000;0.71073;0.71098;0.71154;0.71242;0.71363;0.71485;0.71645;0.71836;0.72003;0.72188;0.7237;0.72518;0.72545;0.72271;0.70806;-9999;-9999;-9999;-9999;-9999;
+9500;0.70673;0.70704;0.70757;0.70842;0.70959;0.71078;0.71233;0.71422;0.71587;0.71771;0.71957;0.72112;0.7216;0.71942;0.70709;-9999;-9999;-9999;-9999;-9999;
+10000;0.70283;0.70307;0.70357;0.70439;0.70558;0.70669;0.70818;0.71005;0.71169;0.71352;0.7154;0.71701;0.71769;0.716;0.70569;-9999;-9999;-9999;-9999;-9999;
+10500;0.69894;0.69907;0.69955;0.70033;0.70149;0.70256;0.70401;0.70585;0.70749;0.7093;0.7112;0.71288;0.71371;0.71247;0.70395;0.70344;-9999;-9999;-9999;-9999;
+11000;0.69482;0.69504;0.6955;0.69625;0.69738;0.69841;0.69982;0.70163;0.70326;0.70505;0.70697;0.70869;0.70968;0.70867;0.70177;0.70225;-9999;-9999;-9999;-9999;
+11500;0.69489;0.69508;0.69554;0.69629;0.69743;0.69846;0.69987;0.70169;0.70333;0.70511;0.70703;0.70875;0.70972;0.70878;0.70147;0.70195;-9999;-9999;-9999;-9999;
+12000;0.69496;0.69496;0.69557;0.69634;0.69748;0.69851;0.69993;0.70177;0.70339;0.70519;0.7071;0.70881;0.70975;0.70874;0.70117;0.70161;-9999;-9999;-9999;-9999;
+12500;0.69503;0.69518;0.69563;0.69639;0.69755;0.69857;0.7;0.70185;0.70347;0.70526;0.70717;0.70887;0.7098;0.7087;0.70086;0.70116;-9999;-9999;-9999;-9999;
+13000;0.69501;0.69524;0.69568;0.69645;0.69762;0.69865;0.70008;0.70193;0.70355;0.70535;0.70725;0.70894;0.70984;0.70866;0.70055;-9999;-9999;-9999;-9999;-9999;
+13500;0.69499;0.6953;0.69575;0.69651;0.6977;0.69873;0.70017;0.70202;0.70364;0.70543;0.70734;0.70902;0.70989;0.70863;0.70024;0.69955;-9999;-9999;-9999;-9999;
+14000;0.69514;0.69537;0.69583;0.69659;0.69779;0.69882;0.70026;0.70212;0.70373;0.70552;0.70742;0.7091;0.70994;0.70861;0.69992;0.69953;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77442;0.77557;0.77726;0.77845;0.78123;0.78353;0.78577;0.78827;0.78989;0.79063;0.78988;0.7849;0.76617;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.77125;0.77125;0.77345;0.77458;0.77726;0.77949;0.7817;0.78416;0.78581;0.78662;0.78612;0.78182;0.76508;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.7675;0.7675;0.76964;0.77074;0.77333;0.77551;0.77769;0.78013;0.78175;0.78266;0.78233;0.77863;0.76373;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76375;0.76433;0.76585;0.76695;0.76946;0.77158;0.77373;0.77615;0.77776;0.77874;0.7786;0.77542;0.76217;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.76014;0.76014;0.76213;0.76317;0.7656;0.76765;0.76978;0.77218;0.77382;0.77489;0.77491;0.77217;0.76059;0.73042;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75653;0.75694;0.75834;0.75939;0.76173;0.76374;0.76584;0.76822;0.76987;0.77103;0.77124;0.76894;0.75863;0.73293;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.7528;0.7528;0.75435;0.7556;0.75787;0.75982;0.76189;0.76425;0.76591;0.76715;0.76752;0.76566;0.75649;0.71802;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74908;0.74957;0.75085;0.75182;0.75401;0.75591;0.75795;0.76028;0.76196;0.76326;0.76379;0.7623;0.75421;0.72162;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.74542;0.74542;0.74684;0.74802;0.75016;0.75199;0.75401;0.75632;0.758;0.75936;0.76003;0.75888;0.75177;0.72362;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.74177;0.74203;0.74301;0.74415;0.74622;0.74804;0.75005;0.75234;0.75403;0.75546;0.75625;0.75542;0.74922;0.72464;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73781;0.73781;0.73912;0.74024;0.74224;0.744;0.746;0.74829;0.75002;0.75151;0.75243;0.75189;0.7465;0.72514;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.73386;0.73436;0.73526;0.73633;0.73825;0.73997;0.74193;0.7442;0.74592;0.74751;0.74857;0.7483;0.74366;0.72486;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.73015;0.73015;0.73135;0.73241;0.73426;0.73592;0.73785;0.74009;0.74181;0.74343;0.74463;0.74448;0.7407;0.72419;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.72643;0.72664;0.72746;0.72848;0.73025;0.73187;0.73376;0.73597;0.73768;0.73934;0.74063;0.74072;0.73761;0.7232;0.70225;-9999;-9999;-9999;-9999;-9999;
+7000;0.72242;0.72275;0.72354;0.72469;0.72623;0.7278;0.72967;0.73184;0.73354;0.73523;0.7366;0.7369;0.73434;0.72179;0.70508;-9999;-9999;-9999;-9999;-9999;
+7500;0.7184;0.71885;0.7196;0.7207;0.7222;0.72372;0.72555;0.7277;0.72938;0.7311;0.73255;0.73304;0.73097;0.7201;0.70668;-9999;-9999;-9999;-9999;-9999;
+8000;0.71461;0.71492;0.71564;0.7167;0.71815;0.71963;0.72154;0.72355;0.72521;0.72696;0.72847;0.72914;0.7275;0.71816;0.70851;-9999;-9999;-9999;-9999;-9999;
+8500;0.71083;0.71098;0.71167;0.71269;0.71409;0.71552;0.71738;0.71937;0.72103;0.72279;0.72436;0.72518;0.72396;0.71597;0.70921;-9999;-9999;-9999;-9999;-9999;
+9000;0.70674;0.70702;0.70767;0.70866;0.71001;0.7114;0.71319;0.71518;0.71683;0.7186;0.72022;0.72119;0.72034;0.71371;0.68177;-9999;-9999;-9999;-9999;-9999;
+9500;0.70264;0.70304;0.70366;0.7046;0.70592;0.70726;0.709;0.71097;0.7126;0.71439;0.71606;0.71715;0.71663;0.71103;0.68469;-9999;-9999;-9999;-9999;-9999;
+10000;0.69876;0.69903;0.69962;0.70053;0.7018;0.7031;0.70478;0.70674;0.70836;0.71015;0.71186;0.71307;0.71271;0.70817;0.68613;-9999;-9999;-9999;-9999;-9999;
+10500;0.69488;0.69499;0.69555;0.69643;0.69767;0.69892;0.70055;0.70248;0.7041;0.70589;0.70763;0.70894;0.70886;0.70511;0.68662;-9999;-9999;-9999;-9999;-9999;
+11000;0.69069;0.69093;0.69146;0.69231;0.69358;0.69472;0.69629;0.6982;0.69981;0.7016;0.70337;0.70478;0.70494;0.7019;0.68628;-9999;-9999;-9999;-9999;-9999;
+11500;0.6907;0.69101;0.69154;0.6924;0.69368;0.69483;0.69641;0.69832;0.69992;0.70171;0.70348;0.70487;0.70501;0.70183;0.68572;-9999;-9999;-9999;-9999;-9999;
+12000;0.69072;0.69111;0.69163;0.69249;0.6938;0.69495;0.69652;0.69844;0.70004;0.70183;0.70359;0.70498;0.70507;0.70177;0.68515;-9999;-9999;-9999;-9999;-9999;
+12500;0.69095;0.69121;0.69174;0.6926;0.69393;0.69507;0.69665;0.69857;0.70016;0.70195;0.70371;0.70509;0.70515;0.70171;0.68456;-9999;-9999;-9999;-9999;-9999;
+13000;0.69119;0.69119;0.69186;0.69272;0.69406;0.6952;0.69678;0.6987;0.70029;0.70208;0.70384;0.7052;0.70522;0.70165;0.68401;-9999;-9999;-9999;-9999;-9999;
+13500;0.69121;0.69146;0.69199;0.69285;0.69419;0.69533;0.69691;0.69884;0.70042;0.70221;0.70397;0.70531;0.7053;0.7016;0.68339;-9999;-9999;-9999;-9999;-9999;
+14000;0.69124;0.69159;0.69212;0.69297;0.69433;0.69546;0.69704;0.69897;0.70056;0.70234;0.7041;0.70543;0.70539;0.70155;0.68275;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77355;0.77429;0.77621;0.77749;0.78061;0.78318;0.78538;0.78779;0.78916;0.78896;0.78569;0.77225;0.7384;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.76965;0.76965;0.77179;0.77335;0.77636;0.77889;0.78106;0.78344;0.78485;0.78496;0.78298;0.77116;0.74086;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.76565;0.76565;0.76776;0.76928;0.77219;0.77465;0.77681;0.77919;0.78061;0.78084;0.77942;0.7718;0.7427;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76166;0.76237;0.76412;0.7653;0.76812;0.7705;0.77267;0.77502;0.77646;0.7768;0.77563;0.76889;0.74507;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.7579;0.7579;0.75987;0.76132;0.76405;0.76635;0.76854;0.7709;0.77237;0.77302;0.77178;0.76592;0.74466;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75414;0.75459;0.75597;0.75736;0.76;0.76224;0.76439;0.76675;0.76827;0.76903;0.76806;0.76294;0.74381;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.75019;0.75019;0.75201;0.7534;0.75596;0.75814;0.76026;0.76261;0.76417;0.7649;0.7643;0.75986;0.7427;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74623;0.74623;0.74809;0.74946;0.75194;0.75405;0.75615;0.75848;0.76005;0.7609;0.76052;0.7567;0.74129;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.7425;0.7425;0.74419;0.74551;0.74792;0.74998;0.75205;0.75437;0.75595;0.7569;0.75673;0.75346;0.73969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73876;0.73913;0.7403;0.74158;0.7439;0.7459;0.74795;0.75026;0.75186;0.7529;0.75292;0.75016;0.73791;0.70712;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73479;0.73479;0.73636;0.73763;0.73987;0.74182;0.74385;0.74614;0.74775;0.74887;0.74908;0.74678;0.73593;0.7098;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.73082;0.73082;0.73244;0.73368;0.73584;0.73774;0.73974;0.74202;0.74363;0.74484;0.74521;0.74333;0.73397;0.71197;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72707;0.72707;0.72851;0.72972;0.73181;0.73365;0.73563;0.73788;0.7395;0.74078;0.7413;0.73982;0.7316;0.69748;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.72331;0.72358;0.72458;0.72575;0.72777;0.72955;0.7315;0.73373;0.73536;0.7367;0.73737;0.73624;0.72907;0.70021;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71919;0.71919;0.72052;0.72168;0.72364;0.7254;0.72735;0.72958;0.73121;0.73261;0.73341;0.7326;0.72639;0.70149;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71507;0.71507;0.71648;0.7176;0.71949;0.7212;0.72312;0.72533;0.72701;0.72849;0.72941;0.7289;0.72356;0.70214;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.7112;0.7112;0.71242;0.71368;0.71534;0.71699;0.71888;0.72106;0.72274;0.72428;0.72537;0.72515;0.72059;0.7019;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70734;0.70754;0.70837;0.70956;0.71118;0.71278;0.71463;0.71679;0.71845;0.72004;0.72123;0.72114;0.71752;0.70124;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.70316;0.7035;0.70429;0.70543;0.707;0.70855;0.71037;0.7125;0.71415;0.71577;0.71705;0.7172;0.71423;0.70019;0.68137;-9999;-9999;-9999;-9999;-9999;
+9500;0.69898;0.69898;0.70017;0.70129;0.70281;0.70431;0.7061;0.70819;0.70983;0.71149;0.71285;0.7132;0.7108;0.6987;0.68352;-9999;-9999;-9999;-9999;-9999;
+10000;0.69504;0.69536;0.69607;0.69713;0.6986;0.70005;0.70193;0.70388;0.7055;0.70718;0.70861;0.70916;0.70727;0.6969;0.68371;-9999;-9999;-9999;-9999;-9999;
+10500;0.69111;0.69126;0.69193;0.69295;0.69437;0.69578;0.69759;0.69953;0.70115;0.70285;0.70435;0.70507;0.70364;0.69482;0.68695;-9999;-9999;-9999;-9999;-9999;
+11000;0.68685;0.68714;0.68778;0.68876;0.69013;0.69149;0.69325;0.69518;0.69677;0.69849;0.70005;0.70093;0.6999;0.69246;0.68678;-9999;-9999;-9999;-9999;-9999;
+11500;0.68697;0.68731;0.68794;0.68892;0.6903;0.69166;0.69342;0.69535;0.69694;0.69866;0.70022;0.70107;0.7;0.69232;0.68638;-9999;-9999;-9999;-9999;-9999;
+12000;0.68718;0.68749;0.68811;0.68908;0.69047;0.69183;0.69359;0.69552;0.69712;0.69883;0.70039;0.70122;0.70009;0.69217;0.68596;-9999;-9999;-9999;-9999;-9999;
+12500;0.6874;0.68765;0.68828;0.68925;0.69064;0.69201;0.69377;0.6957;0.6973;0.69901;0.70056;0.70138;0.70019;0.69202;0.68553;-9999;-9999;-9999;-9999;-9999;
+13000;0.68761;0.68783;0.68846;0.68942;0.69094;0.6922;0.69395;0.69589;0.69748;0.69919;0.70073;0.70154;0.7003;0.69188;0.68509;-9999;-9999;-9999;-9999;-9999;
+13500;0.68771;0.68802;0.68864;0.6896;0.69113;0.69238;0.69414;0.69607;0.69767;0.69937;0.70092;0.7017;0.70041;0.69173;0.68474;-9999;-9999;-9999;-9999;-9999;
+14000;0.68781;0.68781;0.68881;0.68978;0.69132;0.69257;0.69433;0.69627;0.69786;0.69957;0.70111;0.70189;0.70052;0.69158;0.68416;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77231;0.77231;0.77516;0.77647;0.77949;0.7821;0.78387;0.78555;0.78558;0.78325;0.77485;0.75154;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.7686;0.7686;0.77093;0.77269;0.77557;0.77818;0.77998;0.78172;0.78193;0.78003;0.7728;0.75186;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.76501;0.76501;0.76729;0.76919;0.77175;0.77434;0.77616;0.77793;0.77833;0.77681;0.77064;0.75173;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.76103;0.76103;0.76336;0.76501;0.76813;0.77058;0.77243;0.77425;0.77479;0.77362;0.76833;0.75126;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75704;0.75704;0.75915;0.76079;0.76381;0.76635;0.76844;0.77056;0.77127;0.77044;0.76601;0.7505;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75306;0.75345;0.755;0.75657;0.75951;0.762;0.76407;0.76637;0.76762;0.76705;0.76359;0.7496;0.71482;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.74874;0.74874;0.75081;0.75236;0.75525;0.75766;0.75973;0.76202;0.76332;0.76334;0.76097;0.74863;0.71737;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74441;0.74529;0.74672;0.74818;0.75099;0.75335;0.75541;0.75768;0.75903;0.7592;0.75769;0.74744;0.71924;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.74067;0.74067;0.74257;0.74405;0.74674;0.74906;0.7511;0.75336;0.75475;0.75506;0.75387;0.74679;0.72062;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73692;0.73719;0.73853;0.73993;0.74252;0.7448;0.74684;0.74907;0.75049;0.75093;0.75003;0.74381;0.72128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73263;0.73263;0.73442;0.73582;0.73833;0.74054;0.74257;0.7448;0.74624;0.7468;0.74616;0.74073;0.72063;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72834;0.72834;0.73032;0.73171;0.73414;0.73626;0.73831;0.74052;0.74199;0.74267;0.74227;0.73761;0.71967;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72461;0.72461;0.72626;0.72759;0.72994;0.732;0.73404;0.73625;0.73774;0.73853;0.73835;0.73433;0.71833;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.72088;0.72106;0.7222;0.72348;0.72575;0.72775;0.72975;0.73197;0.73349;0.7344;0.73429;0.73098;0.71677;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71657;0.71657;0.71809;0.71936;0.72156;0.7235;0.72547;0.72769;0.72922;0.73024;0.73031;0.72754;0.715;0.68388;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71225;0.71225;0.71399;0.71524;0.71736;0.71924;0.7212;0.72339;0.72494;0.72606;0.72629;0.72401;0.71302;0.68698;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.7085;0.7085;0.7099;0.71111;0.71316;0.71498;0.71691;0.71909;0.72066;0.72186;0.72225;0.72041;0.71105;0.68937;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70474;0.70486;0.70582;0.70716;0.70895;0.71072;0.71262;0.71478;0.71636;0.71762;0.71816;0.71673;0.70859;0.67424;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.70033;0.70033;0.70162;0.70294;0.7047;0.70644;0.70832;0.71046;0.71204;0.71336;0.71405;0.71298;0.70597;0.67704;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69592;0.69592;0.69739;0.69867;0.70037;0.70206;0.70393;0.70609;0.7077;0.70908;0.7099;0.70917;0.70317;0.67858;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.69199;0.69235;0.69318;0.69438;0.69604;0.69767;0.69951;0.70164;0.70326;0.70474;0.70572;0.70529;0.7002;0.67922;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68805;0.68814;0.68894;0.69009;0.69169;0.69327;0.69508;0.69719;0.6988;0.70032;0.70142;0.70117;0.69709;0.67893;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.6836;0.68393;0.68468;0.68579;0.68734;0.68886;0.69064;0.69271;0.69432;0.69587;0.69707;0.69707;0.69376;0.67816;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.68392;0.68392;0.6849;0.68601;0.68757;0.6891;0.69087;0.69295;0.69456;0.69611;0.6973;0.69728;0.69387;0.6778;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.68424;0.68424;0.68513;0.68624;0.6878;0.68933;0.69111;0.69318;0.6948;0.69636;0.69754;0.69762;0.69398;0.67743;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.6843;0.68464;0.68537;0.68647;0.68804;0.68957;0.69135;0.69342;0.69502;0.69656;0.69775;0.69782;0.6941;0.67706;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68437;0.68489;0.68561;0.68671;0.68828;0.68982;0.6916;0.69364;0.69522;0.69675;0.69794;0.69804;0.6942;0.67667;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68479;0.68513;0.68586;0.68694;0.68853;0.69007;0.69182;0.69384;0.69542;0.69695;0.69813;0.6981;0.6943;0.67628;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68521;0.68521;0.6861;0.68719;0.68895;0.69031;0.69204;0.69405;0.69563;0.69716;0.69833;0.69826;0.69442;0.67586;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.76967;0.77076;0.77337;0.77491;0.77826;0.78076;0.78208;0.78316;0.78192;0.77595;0.75941;0.71885;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.76601;0.76687;0.76938;0.77053;0.77414;0.77664;0.77803;0.77921;0.77829;0.77308;0.7583;0.72187;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.76234;0.76234;0.76526;0.76671;0.77021;0.77266;0.7741;0.77534;0.77468;0.77016;0.75704;0.72425;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.75868;0.75951;0.76175;0.76294;0.76632;0.76875;0.77028;0.77161;0.77119;0.76727;0.75559;0.72607;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75501;0.75584;0.75798;0.75919;0.76243;0.76484;0.76644;0.76786;0.7677;0.76437;0.75411;0.72731;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.75142;0.75142;0.75379;0.75545;0.75844;0.76093;0.76259;0.76409;0.76395;0.76139;0.75246;0.728;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.74777;0.74777;0.75004;0.75177;0.75448;0.75702;0.75872;0.76032;0.7604;0.75831;0.75059;0.7285;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74412;0.74412;0.74627;0.74803;0.75059;0.7531;0.75484;0.75651;0.7568;0.75515;0.74856;0.72858;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.7402;0.7402;0.74238;0.74401;0.7467;0.74917;0.75095;0.75268;0.75318;0.75192;0.74637;0.72839;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73595;0.73595;0.73806;0.73964;0.74251;0.74499;0.74698;0.74885;0.74952;0.74862;0.74398;0.7277;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73169;0.73169;0.73414;0.73529;0.73807;0.74049;0.74248;0.74468;0.74584;0.74528;0.74145;0.72703;0.6901;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72743;0.72743;0.72944;0.73095;0.73365;0.736;0.73798;0.74018;0.74142;0.7414;0.73878;0.72617;0.69312;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72318;0.72383;0.72518;0.72663;0.72923;0.73152;0.7335;0.73568;0.73697;0.7371;0.73549;0.72504;0.69543;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.71892;0.7196;0.72089;0.7223;0.72483;0.72706;0.72903;0.73119;0.73252;0.7328;0.73153;0.72443;0.69711;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71466;0.71538;0.71662;0.71799;0.72044;0.7226;0.72455;0.72671;0.72808;0.72849;0.72753;0.72136;0.69758;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71064;0.71064;0.71231;0.71369;0.71604;0.71815;0.72009;0.72223;0.72363;0.72417;0.7235;0.71817;0.69723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.70661;0.70693;0.70808;0.70938;0.71166;0.7137;0.71562;0.71776;0.71918;0.71984;0.71943;0.71486;0.69639;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70223;0.70223;0.70377;0.70508;0.70728;0.70925;0.71117;0.71328;0.71473;0.71549;0.71518;0.71144;0.69515;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.69785;0.69848;0.69953;0.70098;0.70291;0.7048;0.70671;0.7088;0.71026;0.71114;0.71105;0.70791;0.69362;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69381;0.69381;0.69523;0.69665;0.69853;0.70036;0.70224;0.70431;0.7058;0.70677;0.70688;0.70429;0.69182;0.66133;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.68976;0.69;0.69096;0.69231;0.69413;0.69592;0.69775;0.69981;0.70131;0.70238;0.70268;0.70058;0.68977;0.6646;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68533;0.68533;0.68663;0.68795;0.68972;0.69147;0.69327;0.69531;0.69681;0.69797;0.69843;0.69678;0.68774;0.66705;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.6809;0.6809;0.68228;0.68359;0.6853;0.68699;0.68878;0.6908;0.69231;0.69354;0.69416;0.69291;0.68517;0.65138;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.68145;0.68145;0.6826;0.68389;0.68561;0.68728;0.68906;0.69107;0.69257;0.6938;0.6944;0.69317;0.6851;0.65045;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.682;0.682;0.68292;0.68419;0.68591;0.68756;0.68933;0.69135;0.69285;0.69408;0.69466;0.69343;0.68515;0.6493;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.68199;0.68238;0.68324;0.68449;0.68618;0.68784;0.68961;0.69163;0.69314;0.69436;0.69493;0.69365;0.68523;0.64813;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68199;0.68271;0.68356;0.68477;0.68646;0.68812;0.6899;0.69193;0.69344;0.69464;0.6952;0.69388;0.68531;0.64691;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68263;0.68263;0.68382;0.68497;0.68675;0.68842;0.69021;0.69224;0.69375;0.69493;0.69549;0.69411;0.68539;0.66653;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68294;0.68331;0.68413;0.68526;0.68704;0.68871;0.69053;0.69256;0.69407;0.69524;0.69577;0.69435;0.68547;0.66593;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.76894;0.77012;0.77285;0.77541;0.77853;0.78072;0.78159;0.78178;0.77813;0.76586;0.73597;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.76487;0.76487;0.76871;0.77095;0.77412;0.77638;0.77761;0.77764;0.7745;0.76377;0.73683;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.7608;0.76211;0.76455;0.76676;0.76995;0.77225;0.77315;0.77362;0.77088;0.76139;0.73732;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.75721;0.75721;0.76048;0.76259;0.7658;0.76812;0.76913;0.76975;0.76745;0.75902;0.73723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75362;0.75428;0.75692;0.75807;0.76167;0.76402;0.7651;0.76588;0.76399;0.75661;0.73693;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.74951;0.74951;0.75253;0.754;0.75756;0.75991;0.76107;0.762;0.76048;0.75406;0.73629;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.7454;0.74655;0.74897;0.75006;0.75346;0.75581;0.75707;0.7581;0.75694;0.7514;0.73544;0.69636;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.74185;0.74185;0.74466;0.74604;0.74937;0.75172;0.75306;0.7542;0.75335;0.74862;0.73442;0.69915;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.73811;0.73811;0.7407;0.74229;0.74529;0.74763;0.74904;0.75028;0.74974;0.74573;0.73322;0.70136;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73437;0.73437;0.73674;0.73844;0.74124;0.74361;0.74507;0.74639;0.7461;0.74276;0.73189;0.70304;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.73063;0.73063;0.73287;0.73447;0.73722;0.7396;0.74112;0.74253;0.74248;0.73973;0.73033;0.70431;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72683;0.72683;0.72898;0.73067;0.73318;0.73558;0.73716;0.73865;0.7386;0.73661;0.72858;0.70513;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72303;0.72368;0.72509;0.72677;0.72916;0.73154;0.73317;0.73472;0.7349;0.73335;0.72653;0.70547;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.71901;0.71901;0.72107;0.72284;0.72513;0.72747;0.72916;0.73077;0.73115;0.73;0.72426;0.70536;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71452;0.71452;0.71651;0.71809;0.72079;0.72316;0.72512;0.72679;0.72735;0.72656;0.72178;0.70499;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.71004;0.71004;0.71197;0.7135;0.71615;0.71844;0.72036;0.72242;0.7235;0.72302;0.71912;0.70444;0.66558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.70555;0.70555;0.70745;0.70894;0.7115;0.71376;0.71565;0.7177;0.71887;0.71904;0.71628;0.70362;0.66918;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70107;0.70167;0.70296;0.70437;0.70685;0.70907;0.71093;0.71299;0.71421;0.71438;0.71273;0.70247;0.67195;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.6967;0.6967;0.6984;0.70006;0.7022;0.70437;0.70623;0.7083;0.70957;0.70988;0.70855;0.70154;0.67369;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69233;0.69277;0.69392;0.69545;0.69757;0.69967;0.70155;0.7036;0.70492;0.70536;0.70434;0.69832;0.6739;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.68797;0.68833;0.68941;0.69088;0.69294;0.69497;0.69685;0.6989;0.70026;0.70082;0.70009;0.69495;0.67372;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68344;0.68344;0.68489;0.68634;0.68832;0.69028;0.69214;0.69418;0.69557;0.69623;0.6958;0.69151;0.67294;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.679;0.679;0.68041;0.6818;0.68369;0.6856;0.68744;0.68947;0.69087;0.69164;0.69147;0.68788;0.67177;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.67949;0.67949;0.68078;0.68215;0.68407;0.68598;0.68782;0.68985;0.69126;0.69203;0.69182;0.68815;0.67159;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.67976;0.67976;0.68114;0.68252;0.68445;0.68637;0.68822;0.69022;0.69162;0.6924;0.69204;0.68843;0.67149;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.68003;0.68058;0.68154;0.68288;0.68485;0.68678;0.68859;0.69059;0.69198;0.69275;0.69241;0.68871;0.67139;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68029;0.68097;0.68193;0.6832;0.68526;0.68717;0.68898;0.69095;0.69234;0.6931;0.69275;0.68899;0.67128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68091;0.68091;0.6823;0.68361;0.68566;0.68755;0.68935;0.69132;0.69271;0.69347;0.69309;0.68929;0.67117;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68153;0.68153;0.68272;0.68402;0.68603;0.68792;0.68973;0.6917;0.69309;0.69384;0.69344;0.68959;0.67106;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.77209;0.77209;0.77534;0.77811;0.78087;0.78316;0.78329;0.78214;0.77423;0.75084;0.69701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.7674;0.7674;0.77092;0.77345;0.77625;0.77856;0.77836;0.77773;0.77064;0.74965;0.70063;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.7627;0.7631;0.76639;0.76921;0.77183;0.77408;0.77439;0.77352;0.76711;0.74831;0.70445;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.75821;0.75821;0.76179;0.76448;0.76736;0.76968;0.77008;0.76941;0.76378;0.74691;0.70706;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.75372;0.75372;0.75742;0.75991;0.76284;0.76513;0.76581;0.76516;0.76033;0.74541;0.70907;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.74922;0.75045;0.75301;0.75543;0.75836;0.76039;0.76146;0.76104;0.75692;0.74371;0.71077;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.74473;0.7461;0.74872;0.75099;0.75393;0.75612;0.75714;0.75692;0.75353;0.74178;0.71229;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.7411;0.7411;0.74443;0.74657;0.74954;0.75175;0.75284;0.75287;0.74999;0.73968;0.7133;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.73747;0.73806;0.74031;0.74224;0.7452;0.7474;0.74833;0.7488;0.7464;0.73741;0.71382;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.73322;0.73322;0.73622;0.73805;0.74099;0.74314;0.74414;0.74477;0.74282;0.73504;0.71388;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.72897;0.73013;0.7325;0.73386;0.73682;0.73898;0.74005;0.74084;0.73926;0.73262;0.71352;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.72536;0.72536;0.72812;0.72939;0.73264;0.73481;0.73595;0.73687;0.73564;0.72992;0.71289;0.67034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.72176;0.72215;0.72426;0.72532;0.72845;0.73061;0.73183;0.73286;0.73197;0.72708;0.71206;0.6738;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.71742;0.71742;0.71983;0.72123;0.72431;0.72639;0.72769;0.72882;0.72823;0.7241;0.71099;0.67658;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.71308;0.71308;0.71561;0.71713;0.71996;0.72215;0.72353;0.72476;0.72445;0.72098;0.70978;0.67884;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.70941;0.70941;0.71149;0.71311;0.71562;0.71791;0.71935;0.72067;0.72061;0.71775;0.70816;0.68043;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.70575;0.706;0.7074;0.70899;0.71137;0.71365;0.71515;0.71655;0.71671;0.7144;0.70627;0.68171;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.70134;0.70134;0.70316;0.70481;0.70712;0.70937;0.71092;0.7124;0.71258;0.71095;0.70411;0.68229;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.69693;0.69765;0.69897;0.70047;0.70285;0.70507;0.70667;0.70821;0.7086;0.70738;0.70171;0.68236;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.69229;0.69229;0.69411;0.69562;0.69815;0.70046;0.70225;0.704;0.70456;0.70372;0.69908;0.68214;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.68765;0.68812;0.68938;0.6908;0.69322;0.69548;0.69729;0.69929;0.70034;0.69996;0.69626;0.68166;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.68282;0.68282;0.68455;0.686;0.68833;0.6905;0.69234;0.69431;0.69541;0.69555;0.69322;0.68083;0.64574;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.67798;0.67863;0.6798;0.6814;0.68346;0.68555;0.68738;0.68934;0.6905;0.69066;0.68918;0.68136;0.64874;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.67871;0.67871;0.68027;0.68187;0.68392;0.68602;0.68787;0.68982;0.69098;0.69126;0.6896;0.68152;0.6483;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.67914;0.67914;0.68074;0.68233;0.68439;0.68652;0.68836;0.6903;0.69146;0.69172;0.69003;0.68183;0.64793;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.67958;0.68017;0.68127;0.68264;0.68487;0.68702;0.68882;0.69078;0.69193;0.6922;0.69046;0.68215;0.64737;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.68001;0.68066;0.68175;0.68313;0.68538;0.68753;0.68932;0.69126;0.69241;0.69265;0.69092;0.68248;0.64692;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.68064;0.68064;0.6822;0.68363;0.68589;0.68802;0.68982;0.69176;0.6929;0.69297;0.69138;0.68281;0.64645;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.68126;0.68164;0.68273;0.68414;0.68639;0.68852;0.69033;0.69227;0.69341;0.69346;0.69185;0.68314;0.64594;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/fraction_fuelflow_to_p3.csv b/engine/test/stubs/V2527-A5/fraction_fuelflow_to_p3.csv
new file mode 100644
index 00000000..ff9b2c6e
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/fraction_fuelflow_to_p3.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;111.82;111.82;111.81;111.79;111.78;111.79;111.83;111.92;112.04;112.22;112.48;112.78;113.16;113.59;114.08;114.62;115.19;115.76;116.31;116.8;
+500;111.7;111.73;111.71;111.7;111.68;111.68;111.7;111.74;111.83;111.98;112.17;112.43;112.77;113.17;113.63;114.16;114.73;115.32;115.91;116.46;
+1000;111.6;111.62;111.61;111.6;111.6;111.61;111.62;111.66;111.71;111.8;111.94;112.13;112.42;112.77;113.2;113.7;114.25;114.85;115.47;116.07;
+1500;111.47;111.47;111.47;111.48;111.49;111.52;111.55;111.58;111.64;111.7;111.8;111.92;112.12;112.41;112.8;113.26;113.79;114.37;115;115.63;
+2000;111.28;111.28;111.29;111.31;111.35;111.39;111.44;111.5;111.56;111.63;111.71;111.8;111.92;112.12;112.43;112.84;113.33;113.9;114.52;115.17;
+2500;111.03;111.04;111.06;111.1;111.15;111.22;111.29;111.37;111.47;111.55;111.62;111.71;111.81;111.94;112.15;112.47;112.91;113.44;114.03;114.68;
+3000;110.72;110.73;110.76;110.81;110.89;110.98;111.09;111.2;111.33;111.44;111.53;111.64;111.72;111.82;111.96;112.19;112.54;113;113.56;114.19;
+3500;110.38;110.39;110.42;110.49;110.57;110.68;110.81;110.97;111.13;111.28;111.41;111.55;111.64;111.73;111.84;111.99;112.25;112.63;113.11;113.7;
+4000;109.99;110.01;110.05;110.12;110.22;110.34;110.49;110.67;110.86;111.06;111.23;111.41;111.55;111.66;111.76;111.87;112.04;112.32;112.73;113.24;
+4500;109.6;109.66;109.71;109.77;109.87;109.99;110.14;110.33;110.54;110.77;111.01;111.22;111.41;111.56;111.67;111.78;111.9;112.09;112.41;112.86;
+5000;109.22;109.29;109.34;109.41;109.52;109.66;109.83;110.02;110.23;110.44;110.7;110.97;111.21;111.41;111.57;111.7;111.81;111.94;112.15;112.51;
+5500;108.86;108.88;108.93;109.01;109.13;109.28;109.47;109.68;109.91;110.15;110.42;110.68;110.94;111.2;111.42;111.6;111.73;111.84;111.98;112.23;
+6000;108.51;108.49;108.49;108.58;108.7;108.87;109.07;109.3;109.55;109.81;110.11;110.4;110.68;110.95;111.21;111.44;111.62;111.76;111.88;112.04;
+6500;108.11;108.12;108.15;108.16;108.27;108.43;108.63;108.87;109.14;109.45;109.76;110.07;110.39;110.7;111;111.26;111.47;111.66;111.8;111.92;
+7000;107.91;107.92;107.95;108;108.08;108.18;108.26;108.49;108.74;109.02;109.36;109.71;110.06;110.4;110.74;111.05;111.33;111.53;111.7;111.84;
+7500;107.71;107.72;107.75;107.8;107.88;107.98;108.11;108.25;108.38;108.68;108.99;109.31;109.68;110.06;110.43;110.79;111.12;111.41;111.61;111.74;
+8000;107.52;107.5;107.55;107.6;107.68;107.79;107.91;108.05;108.22;108.41;108.64;108.99;109.34;109.7;110.08;110.48;110.86;111.2;111.49;111.69;
+8500;107.31;107.3;107.35;107.4;107.48;107.58;107.71;107.86;108.02;108.21;108.42;108.61;109;109.39;109.77;110.14;110.54;110.94;111.3;111.59;
+9000;107.13;107.13;107.16;107.21;107.28;107.38;107.5;107.65;107.82;108.01;108.22;108.45;108.7;109.04;109.46;109.87;110.26;110.63;111.03;111.4;
+9500;106.96;106.93;106.98;107.03;107.1;107.19;107.31;107.45;107.61;107.81;108.02;108.24;108.49;108.76;109.09;109.55;109.98;110.4;110.78;111.13;
+10000;106.81;106.81;106.84;106.88;106.94;107.01;107.12;107.28;107.44;107.62;107.82;108.05;108.29;108.55;108.84;109.17;109.65;110.11;110.54;110.94;
+10500;106.66;106.7;106.72;106.76;106.82;106.89;106.99;107.09;107.26;107.43;107.63;107.85;108.09;108.35;108.63;108.93;109.27;109.78;110.26;110.7;
+11000;106.59;106.6;106.62;106.66;106.71;106.78;106.87;106.98;107.1;107.25;107.45;107.66;107.89;108.16;108.43;108.72;109.04;109.39;109.92;110.42;
+11500;106.98;106.99;107.02;107.06;107.11;107.18;107.27;107.37;107.5;107.64;107.85;108.06;108.3;108.56;108.83;109.13;109.45;109.8;110.32;110.82;
+12000;107.37;107.39;107.42;107.46;107.51;107.58;107.67;107.78;107.9;108.04;108.25;108.47;108.71;108.97;109.24;109.54;109.86;110.21;110.74;111.24;
+12500;107.79;107.8;107.82;107.86;107.92;107.99;108.08;108.19;108.31;108.45;108.66;108.88;109.12;109.38;109.65;109.95;110.27;110.63;111.17;111.67;
+13000;108.22;108.2;108.23;108.27;108.33;108.4;108.49;108.6;108.72;108.86;109.07;109.29;109.53;109.79;110.07;110.37;110.69;111.05;111.59;112.1;
+13500;108.61;108.61;108.64;108.68;108.74;108.82;108.91;109.01;109.14;109.28;109.49;109.71;109.95;110.21;110.49;110.79;111.12;111.48;112.02;112.53;
+14000;108.97;108.98;109.01;109.05;109.11;109.19;109.29;109.41;109.54;109.7;109.9;110.12;110.36;110.63;110.91;111.21;111.55;111.91;112.46;112.97;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;107.26;107.26;107.27;107.29;107.33;107.4;107.5;107.65;107.85;108.11;108.42;108.73;109.05;109.36;109.68;110.04;110.43;110.87;111.38;111.96;
+500;106.86;106.84;106.85;106.87;106.9;106.96;107.05;107.19;107.41;107.7;108.02;108.37;108.72;109.06;109.39;109.73;110.11;110.52;110.99;111.54;
+1000;106.43;106.44;106.45;106.46;106.49;106.55;106.64;106.79;106.99;107.26;107.59;107.96;108.34;108.72;109.08;109.43;109.8;110.2;110.63;111.14;
+1500;106.01;106.07;106.07;106.08;106.11;106.16;106.24;106.39;106.59;106.87;107.19;107.54;107.93;108.35;108.75;109.12;109.49;109.88;110.3;110.76;
+2000;105.73;105.73;105.73;105.74;105.75;105.79;105.87;106.01;106.21;106.48;106.79;107.15;107.53;107.94;108.37;108.79;109.18;109.57;109.98;110.42;
+2500;105.46;105.44;105.44;105.44;105.44;105.47;105.54;105.67;105.85;106.1;106.4;106.74;107.13;107.54;107.98;108.41;108.85;109.25;109.66;110.09;
+3000;105.19;105.22;105.21;105.2;105.2;105.21;105.26;105.37;105.52;105.73;106.03;106.35;106.72;107.14;107.58;108.04;108.49;108.92;109.34;109.76;
+3500;105.06;105.06;105.05;105.03;105.02;105.01;105.04;105.12;105.24;105.42;105.68;105.98;106.32;106.72;107.16;107.64;108.12;108.59;109.01;109.44;
+4000;104.96;104.95;104.94;104.91;104.88;104.87;104.89;104.94;105.03;105.17;105.38;105.64;105.95;106.32;106.75;107.22;107.71;108.21;108.7;109.12;
+4500;104.86;104.91;104.89;104.87;104.85;104.83;104.83;104.85;104.88;104.98;105.14;105.34;105.61;105.94;106.34;106.79;107.29;107.81;108.33;108.82;
+5000;104.86;104.85;104.84;104.83;104.82;104.81;104.82;104.83;104.86;104.91;104.97;105.11;105.32;105.6;105.96;106.38;106.86;107.38;107.92;108.46;
+5500;104.75;104.75;104.75;104.75;104.76;104.77;104.79;104.82;104.85;104.89;104.94;105.02;105.13;105.31;105.61;105.99;106.43;106.94;107.49;108.05;
+6000;104.61;104.61;104.62;104.63;104.66;104.69;104.73;104.78;104.83;104.88;104.93;104.98;105.05;105.17;105.35;105.64;106.04;106.51;107.04;107.62;
+6500;104.48;104.53;104.54;104.56;104.58;104.62;104.65;104.7;104.78;104.85;104.92;104.97;105.03;105.1;105.22;105.41;105.7;106.1;106.6;107.17;
+7000;104.42;104.42;104.43;104.46;104.5;104.55;104.61;104.69;104.76;104.82;104.87;104.97;105.03;105.08;105.15;105.27;105.48;105.79;106.19;106.71;
+7500;104.26;104.27;104.29;104.33;104.38;104.45;104.53;104.62;104.72;104.82;104.9;104.98;105.02;105.07;105.13;105.21;105.34;105.56;105.89;106.32;
+8000;104.07;104.08;104.11;104.15;104.22;104.3;104.4;104.52;104.64;104.76;104.88;105;105.08;105.13;105.15;105.19;105.27;105.41;105.65;106.01;
+8500;103.85;103.85;103.89;103.94;104.01;104.11;104.23;104.36;104.51;104.66;104.8;104.96;105.09;105.18;105.24;105.26;105.26;105.34;105.48;105.75;
+9000;103.58;103.6;103.63;103.69;103.78;103.89;104.02;104.17;104.34;104.51;104.7;104.87;105.03;105.18;105.29;105.36;105.38;105.38;105.41;105.57;
+9500;103.33;103.31;103.33;103.4;103.5;103.62;103.77;103.94;104.13;104.32;104.53;104.73;104.93;105.12;105.28;105.4;105.48;105.5;105.5;105.52;
+10000;103.09;103.1;103.13;103.17;103.23;103.31;103.48;103.67;103.88;104.1;104.33;104.56;104.79;105.01;105.21;105.39;105.52;105.61;105.63;105.62;
+10500;102.86;102.93;102.96;103;103.07;103.15;103.26;103.35;103.57;103.83;104.08;104.34;104.61;104.86;105.1;105.31;105.5;105.64;105.73;105.75;
+11000;102.75;102.76;102.78;102.83;102.9;102.98;103.09;103.22;103.36;103.49;103.78;104.08;104.37;104.66;104.94;105.2;105.43;105.63;105.78;105.86;
+11500;103.13;103.15;103.17;103.22;103.29;103.38;103.48;103.61;103.75;103.88;104.18;104.47;104.77;105.06;105.34;105.6;105.83;106.04;106.18;106.26;
+12000;103.52;103.54;103.57;103.62;103.68;103.76;103.87;104;104.14;104.28;104.57;104.87;105.17;105.46;105.74;106.01;106.24;106.45;106.59;106.67;
+12500;103.93;103.94;103.96;104.01;104.07;104.16;104.27;104.39;104.54;104.67;104.97;105.27;105.57;105.87;106.15;106.41;106.65;106.86;107;107.08;
+13000;104.33;104.33;104.36;104.4;104.47;104.56;104.66;104.79;104.94;105.08;105.37;105.68;105.98;106.28;106.56;106.83;107.07;107.28;107.42;107.49;
+13500;104.71;104.72;104.75;104.79;104.86;104.96;105.07;105.2;105.35;105.48;105.78;106.09;106.39;106.69;106.98;107.25;107.49;107.7;107.84;107.91;
+14000;105.06;105.07;105.1;105.15;105.22;105.32;105.43;105.57;105.73;105.89;106.2;106.5;106.81;107.11;107.4;107.67;107.91;108.12;108.26;108.33;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;103.51;103.5;103.49;103.46;103.44;103.43;103.42;103.43;103.48;103.62;103.82;104.1;104.44;104.83;105.26;105.72;106.2;106.71;107.25;107.83;
+500;103.23;103.22;103.21;103.18;103.16;103.13;103.11;103.11;103.16;103.29;103.47;103.73;104.07;104.45;104.87;105.32;105.8;106.31;106.85;107.41;
+1000;102.95;102.93;102.92;102.9;102.88;102.85;102.84;102.85;102.88;102.97;103.15;103.39;103.7;104.07;104.48;104.93;105.41;105.91;106.44;107;
+1500;102.63;102.62;102.61;102.6;102.58;102.57;102.57;102.58;102.62;102.71;102.87;103.09;103.36;103.7;104.1;104.54;105.01;105.51;106.04;106.59;
+2000;102.29;102.29;102.29;102.28;102.28;102.27;102.28;102.31;102.36;102.45;102.62;102.83;103.08;103.37;103.72;104.14;104.61;105.1;105.63;106.18;
+2500;101.96;101.95;101.91;101.92;101.93;101.94;101.97;102.02;102.09;102.2;102.38;102.58;102.82;103.09;103.4;103.76;104.21;104.7;105.22;105.77;
+3000;101.5;101.5;101.5;101.51;101.53;101.57;101.62;101.7;101.8;101.93;102.13;102.34;102.58;102.84;103.13;103.46;103.84;104.3;104.81;105.35;
+3500;101.05;101.08;101.08;101.09;101.12;101.16;101.23;101.33;101.46;101.64;101.86;102.08;102.33;102.59;102.87;103.17;103.53;103.93;104.4;104.93;
+4000;100.71;100.71;100.71;100.72;100.74;100.77;100.83;100.93;101.09;101.31;101.55;101.81;102.07;102.34;102.61;102.91;103.24;103.61;104.04;104.53;
+4500;100.37;100.37;100.35;100.36;100.38;100.41;100.48;100.58;100.74;100.94;101.2;101.5;101.79;102.07;102.36;102.65;102.96;103.31;103.71;104.17;
+5000;100.01;100.01;100.01;100.01;100.03;100.06;100.13;100.24;100.4;100.62;100.88;101.17;101.47;101.79;102.09;102.39;102.7;103.03;103.4;103.82;
+5500;99.643;99.692;99.689;99.69;99.701;99.733;99.794;99.899;100.06;100.28;100.56;100.85;101.17;101.5;101.81;102.13;102.44;102.77;103.12;103.51;
+6000;99.483;99.479;99.466;99.45;99.439;99.442;99.484;99.585;99.75;99.953;100.22;100.52;100.85;101.19;101.54;101.87;102.17;102.5;102.84;103.21;
+6500;99.382;99.375;99.357;99.332;99.309;99.299;99.314;99.375;99.489;99.649;99.901;100.19;100.51;100.86;101.22;101.6;101.95;102.26;102.57;102.93;
+7000;99.364;99.355;99.331;99.296;99.257;99.227;99.223;99.265;99.347;99.475;99.674;99.899;100.17;100.51;100.89;101.28;101.67;102.04;102.36;102.67;
+7500;99.354;99.401;99.375;99.334;99.287;99.243;99.218;99.227;99.271;99.362;99.518;99.709;99.946;100.22;100.54;100.94;101.35;101.76;102.13;102.46;
+8000;99.489;99.481;99.456;99.417;99.37;99.324;99.291;99.273;99.278;99.322;99.424;99.566;99.762;100.01;100.3;100.64;101.01;101.44;101.87;102.24;
+8500;99.557;99.569;99.547;99.515;99.476;99.437;99.405;99.378;99.362;99.37;99.404;99.492;99.631;99.831;100.09;100.4;100.75;101.14;101.54;101.98;
+9000;99.63;99.622;99.609;99.591;99.571;99.554;99.536;99.514;99.494;99.48;99.475;99.506;99.574;99.709;99.914;100.18;100.51;100.88;101.28;101.7;
+9500;99.635;99.634;99.628;99.621;99.617;99.624;99.63;99.635;99.635;99.626;99.608;99.592;99.61;99.667;99.8;100.01;100.29;100.63;101.03;101.44;
+10000;99.59;99.591;99.596;99.605;99.623;99.646;99.67;99.702;99.737;99.756;99.754;99.737;99.731;99.729;99.771;99.9;100.12;100.41;100.77;101.18;
+10500;99.497;99.501;99.512;99.534;99.567;99.609;99.661;99.721;99.779;99.83;99.867;99.879;99.882;99.861;99.852;99.889;100.01;100.24;100.54;100.92;
+11000;99.366;99.372;99.39;99.422;99.467;99.524;99.595;99.679;99.768;99.851;99.938;99.992;100.02;100.02;99.993;99.98;100.01;100.14;100.37;100.68;
+11500;99.745;99.756;99.774;99.807;99.852;99.91;99.98;100.06;100.15;100.24;100.33;100.38;100.41;100.4;100.38;100.37;100.4;100.53;100.76;101.07;
+12000;100.12;100.14;100.16;100.2;100.24;100.3;100.37;100.45;100.54;100.63;100.72;100.77;100.8;100.79;100.77;100.76;100.8;100.93;101.15;101.47;
+12500;100.53;100.54;100.55;100.59;100.63;100.69;100.76;100.85;100.94;101.02;101.11;101.17;101.19;101.19;101.16;101.16;101.19;101.32;101.55;101.88;
+13000;100.94;100.93;100.95;100.98;101.03;101.09;101.16;101.25;101.34;101.42;101.51;101.57;101.59;101.59;101.56;101.56;101.59;101.72;101.96;102.29;
+13500;101.31;101.31;101.33;101.37;101.42;101.48;101.56;101.65;101.74;101.82;101.91;101.97;101.99;101.99;101.97;101.96;101.99;102.13;102.37;102.7;
+14000;101.67;101.67;101.69;101.73;101.78;101.84;101.92;102.02;102.12;102.21;102.31;102.38;102.4;102.4;102.38;102.36;102.4;102.54;102.78;103.12;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;99.635;99.63;99.62;99.607;99.604;99.611;99.636;99.69;99.769;99.879;100.03;100.25;100.53;100.9;101.32;101.8;102.3;102.82;103.37;103.93;
+500;99.306;99.287;99.276;99.261;99.246;99.237;99.241;99.284;99.368;99.484;99.639;99.854;100.14;100.5;100.92;101.39;101.89;102.42;102.96;103.53;
+1000;98.976;98.948;98.936;98.919;98.902;98.891;98.892;98.933;98.999;99.101;99.252;99.467;99.749;100.1;100.52;100.98;101.47;102;102.55;103.12;
+1500;98.61;98.605;98.594;98.577;98.559;98.547;98.547;98.589;98.66;98.761;98.904;99.101;99.37;99.72;100.12;100.57;101.06;101.58;102.13;102.7;
+2000;98.243;98.262;98.25;98.232;98.212;98.198;98.196;98.241;98.32;98.428;98.577;98.772;99.034;99.354;99.736;100.17;100.65;101.16;101.71;102.28;
+2500;97.939;97.934;97.918;97.896;97.873;97.855;97.85;97.892;97.973;98.087;98.252;98.454;98.713;99.03;99.387;99.777;100.24;100.74;101.28;101.85;
+3000;97.633;97.627;97.61;97.584;97.554;97.528;97.514;97.548;97.63;97.746;97.916;98.134;98.403;98.709;99.061;99.441;99.855;100.32;100.85;101.42;
+3500;97.382;97.375;97.353;97.319;97.277;97.235;97.203;97.22;97.293;97.408;97.581;97.804;98.087;98.399;98.737;99.112;99.513;99.95;100.43;100.98;
+4000;97.131;97.158;97.136;97.102;97.059;97.013;96.973;96.961;97.002;97.082;97.248;97.477;97.761;98.082;98.424;98.783;99.179;99.602;100.06;100.56;
+4500;96.956;96.949;96.927;96.894;96.853;96.808;96.766;96.745;96.777;96.844;96.972;97.166;97.435;97.756;98.104;98.465;98.846;99.263;99.707;100.19;
+5000;96.784;96.779;96.718;96.687;96.649;96.608;96.569;96.543;96.568;96.631;96.748;96.924;97.158;97.446;97.774;98.144;98.522;98.924;99.361;99.826;
+5500;96.616;96.601;96.579;96.544;96.499;96.448;96.397;96.354;96.373;96.435;96.541;96.711;96.922;97.182;97.489;97.823;98.199;98.594;99.017;99.472;
+6000;96.455;96.447;96.43;96.402;96.365;96.325;96.287;96.254;96.25;96.287;96.363;96.519;96.713;96.947;97.223;97.548;97.9;98.272;98.68;99.124;
+6500;96.252;96.248;96.237;96.22;96.2;96.178;96.157;96.143;96.15;96.196;96.283;96.406;96.551;96.739;96.987;97.279;97.622;97.992;98.376;98.778;
+7000;96.05;96.043;96;95.99;95.982;95.979;95.985;96.002;96.034;96.099;96.208;96.33;96.472;96.631;96.812;97.04;97.348;97.71;98.096;98.492;
+7500;95.742;95.74;95.735;95.73;95.729;95.738;95.762;95.807;95.878;95.98;96.115;96.251;96.398;96.552;96.721;96.913;97.138;97.431;97.811;98.212;
+8000;95.471;95.469;95.464;95.459;95.46;95.473;95.508;95.571;95.67;95.81;95.986;96.155;96.317;96.478;96.643;96.821;97.023;97.261;97.55;97.923;
+8500;95.204;95.201;95.197;95.193;95.196;95.214;95.255;95.324;95.438;95.6;95.8;96.013;96.215;96.394;96.568;96.743;96.931;97.143;97.394;97.7;
+9000;94.938;94.955;94.949;94.942;94.941;94.956;94.996;95.075;95.204;95.378;95.589;95.821;96.057;96.284;96.482;96.668;96.852;97.049;97.272;97.536;
+9500;94.675;94.755;94.745;94.732;94.724;94.73;94.763;94.838;94.986;95.143;95.367;95.608;95.865;96.125;96.368;96.58;96.776;96.969;97.175;97.41;
+10000;94.628;94.623;94.607;94.586;94.567;94.56;94.58;94.642;94.758;94.917;95.137;95.381;95.643;95.923;96.206;96.47;96.691;96.893;97.094;97.31;
+10500;94.595;94.587;94.563;94.529;94.493;94.466;94.466;94.507;94.596;94.73;94.925;95.151;95.414;95.695;95.995;96.3;96.584;96.819;97.022;97.227;
+11000;94.661;94.651;94.623;94.581;94.53;94.482;94.45;94.459;94.507;94.601;94.759;94.949;95.184;95.462;95.762;96.082;96.407;96.708;96.955;97.166;
+11500;95.036;95.026;94.998;94.955;94.905;94.857;94.828;94.839;94.888;94.983;95.143;95.335;95.574;95.848;96.149;96.472;96.799;97.102;97.351;97.564;
+12000;95.412;95.405;95.377;95.334;95.284;95.237;95.211;95.223;95.273;95.37;95.532;95.727;95.966;96.236;96.541;96.866;97.194;97.5;97.751;97.966;
+12500;95.798;95.788;95.76;95.718;95.668;95.624;95.599;95.611;95.663;95.761;95.926;96.123;96.357;96.63;96.936;97.264;97.595;97.904;98.155;98.371;
+13000;96.185;96.177;96.149;96.107;96.06;96.016;95.992;96.005;96.058;96.158;96.324;96.518;96.752;97.028;97.336;97.666;98;98.31;98.563;98.781;
+13500;96.549;96.537;96.511;96.473;96.43;96.392;96.374;96.395;96.456;96.572;96.724;96.916;97.153;97.43;97.741;98.073;98.411;98.722;98.975;99.195;
+14000;96.909;96.9;96.875;96.837;96.794;96.757;96.739;96.761;96.824;96.944;97.102;97.305;97.552;97.838;98.15;98.486;98.825;99.137;99.392;99.613;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;96.318;96.316;96.315;96.318;96.338;96.381;96.372;96.391;96.418;96.489;96.592;96.757;96.957;97.194;97.501;97.88;98.297;98.737;99.186;99.649;
+500;95.941;95.94;95.938;95.939;95.949;95.976;95.962;95.97;96.004;96.079;96.184;96.354;96.565;96.816;97.136;97.524;97.95;98.394;98.852;99.317;
+1000;95.553;95.568;95.566;95.565;95.573;95.594;95.585;95.597;95.62;95.657;95.78;95.951;96.168;96.435;96.766;97.163;97.594;98.045;98.508;98.982;
+1500;95.164;95.204;95.201;95.199;95.203;95.22;95.213;95.226;95.252;95.294;95.407;95.563;95.77;96.05;96.392;96.794;97.23;97.686;98.156;98.636;
+2000;94.848;94.846;94.841;94.837;94.837;94.848;94.843;94.858;94.888;94.935;95.057;95.207;95.409;95.672;96.016;96.42;96.86;97.318;97.794;98.281;
+2500;94.531;94.494;94.488;94.481;94.477;94.483;94.48;94.495;94.526;94.577;94.698;94.851;95.058;95.327;95.663;96.043;96.483;96.945;97.423;97.917;
+3000;94.165;94.162;94.152;94.137;94.123;94.123;94.122;94.137;94.169;94.225;94.342;94.497;94.709;94.983;95.325;95.706;96.116;96.563;97.045;97.543;
+3500;93.871;93.867;93.855;93.839;93.822;93.81;93.801;93.804;93.822;93.876;93.991;94.148;94.361;94.64;94.983;95.367;95.775;96.206;96.66;97.161;
+4000;93.576;93.568;93.556;93.539;93.52;93.507;93.504;93.509;93.53;93.573;93.664;93.803;94.018;94.299;94.642;95.024;95.433;95.861;96.312;96.782;
+4500;93.309;93.302;93.284;93.257;93.224;93.197;93.199;93.212;93.243;93.294;93.38;93.511;93.703;93.964;94.301;94.681;95.086;95.515;95.963;96.431;
+5000;93.092;93.085;93.067;93.039;93.005;92.971;92.958;92.954;92.965;93.008;93.103;93.237;93.423;93.681;93.988;94.337;94.738;95.165;95.612;96.078;
+5500;92.876;92.874;92.854;92.824;92.788;92.752;92.741;92.744;92.761;92.8;92.867;92.979;93.158;93.408;93.706;94.043;94.407;94.812;95.258;95.723;
+6000;92.661;92.671;92.65;92.619;92.58;92.541;92.529;92.536;92.558;92.606;92.681;92.795;92.959;93.174;93.434;93.758;94.113;94.496;94.906;95.365;
+6500;92.487;92.48;92.457;92.424;92.382;92.339;92.323;92.332;92.358;92.412;92.498;92.618;92.786;93.001;93.247;93.512;93.825;94.197;94.598;95.026;
+7000;92.316;92.316;92.291;92.251;92.203;92.152;92.127;92.136;92.162;92.22;92.316;92.444;92.62;92.832;93.076;93.338;93.617;93.928;94.295;94.714;
+7500;92.298;92.203;92.173;92.126;92.067;92.002;91.957;91.953;91.973;92.031;92.136;92.274;92.455;92.67;92.908;93.167;93.441;93.734;94.061;94.416;
+8000;92.136;92.126;92.096;92.048;91.986;91.916;91.852;91.827;91.824;91.862;91.957;92.102;92.293;92.507;92.746;92.998;93.27;93.556;93.863;94.204;
+8500;91.976;92.056;92.026;91.98;91.919;91.849;91.777;91.742;91.727;91.744;91.82;91.952;92.133;92.346;92.582;92.835;93.101;93.385;93.681;94.002;
+9000;91.992;91.984;91.956;91.913;91.855;91.789;91.72;91.677;91.659;91.667;91.722;91.833;91.999;92.206;92.43;92.67;92.936;93.214;93.512;93.817;
+9500;91.907;91.898;91.874;91.836;91.786;91.727;91.665;91.619;91.602;91.609;91.657;91.755;91.89;92.074;92.295;92.533;92.781;93.048;93.338;93.645;
+10000;91.825;91.819;91.764;91.734;91.693;91.646;91.599;91.56;91.549;91.562;91.612;91.705;91.823;91.972;92.164;92.397;92.647;92.908;93.183;93.473;
+10500;91.614;91.609;91.597;91.578;91.555;91.53;91.505;91.482;91.486;91.516;91.58;91.67;91.781;91.912;92.067;92.266;92.51;92.772;93.046;93.331;
+11000;91.403;91.388;91.38;91.368;91.357;91.35;91.351;91.365;91.398;91.454;91.541;91.639;91.75;91.872;92.01;92.172;92.379;92.633;92.908;93.193;
+11500;91.773;91.767;91.758;91.747;91.735;91.729;91.73;91.744;91.776;91.834;91.922;92.02;92.133;92.256;92.395;92.559;92.769;93.024;93.299;93.584;
+12000;92.144;92.15;92.141;92.13;92.118;92.111;92.113;92.127;92.161;92.219;92.306;92.406;92.521;92.644;92.784;92.951;93.163;93.419;93.694;93.979;
+12500;92.54;92.537;92.529;92.518;92.506;92.5;92.502;92.515;92.549;92.607;92.696;92.797;92.912;93.037;93.177;93.348;93.561;93.818;94.093;94.379;
+13000;92.917;92.912;92.904;92.895;92.886;92.882;92.887;92.906;92.942;93.001;93.092;93.193;93.308;93.433;93.574;93.749;93.962;94.22;94.496;94.782;
+13500;93.286;93.282;93.275;93.265;93.257;93.253;93.259;93.278;93.317;93.384;93.48;93.587;93.708;93.835;93.976;94.154;94.368;94.627;94.903;95.186;
+14000;93.66;93.659;93.652;93.643;93.635;93.632;93.639;93.66;93.701;93.767;93.865;93.974;94.096;94.229;94.378;94.561;94.778;95.038;95.314;95.59;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;93.295;93.278;93.278;93.287;93.32;93.314;93.257;93.205;93.184;93.172;93.193;93.188;93.185;93.191;93.275;93.409;93.629;93.907;94.217;94.564;
+500;92.909;92.904;92.904;92.914;92.941;92.926;92.864;92.809;92.793;92.789;92.82;92.835;92.853;92.88;92.979;93.137;93.381;93.674;93.985;94.313;
+1000;92.522;92.517;92.519;92.53;92.561;92.546;92.493;92.447;92.424;92.413;92.445;92.478;92.515;92.565;92.679;92.86;93.124;93.431;93.751;94.073;
+1500;92.132;92.132;92.134;92.145;92.175;92.158;92.111;92.07;92.056;92.058;92.096;92.151;92.171;92.242;92.373;92.577;92.857;93.178;93.508;93.838;
+2000;91.746;91.746;91.749;91.76;91.789;91.769;91.728;91.694;91.684;91.693;91.739;91.814;91.855;91.923;92.061;92.287;92.583;92.913;93.254;93.595;
+2500;91.358;91.362;91.363;91.374;91.402;91.38;91.345;91.316;91.282;91.326;91.38;91.463;91.533;91.626;91.771;91.988;92.302;92.639;92.989;93.341;
+3000;91.021;91.02;91.02;91.025;91.045;91.014;90.974;90.939;90.911;90.958;91.017;91.11;91.206;91.313;91.487;91.72;92.021;92.359;92.713;93.075;
+3500;90.683;90.688;90.683;90.685;90.702;90.671;90.636;90.605;90.572;90.606;90.654;90.754;90.872;90.997;91.188;91.449;91.755;92.091;92.431;92.798;
+4000;90.43;90.427;90.421;90.416;90.42;90.377;90.329;90.285;90.246;90.28;90.333;90.421;90.542;90.673;90.882;91.163;91.485;91.823;92.172;92.522;
+4500;90.181;90.172;90.164;90.155;90.156;90.116;90.073;90.032;89.989;89.996;90.032;90.115;90.242;90.375;90.579;90.866;91.2;91.551;91.903;92.264;
+5000;89.941;89.936;89.927;89.916;89.909;89.868;89.823;89.784;89.749;89.753;89.796;89.869;89.968;90.088;90.306;90.589;90.906;91.265;91.629;91.995;
+5500;89.701;89.71;89.7;89.686;89.676;89.637;89.594;89.555;89.516;89.532;89.561;89.64;89.742;89.88;90.072;90.323;90.645;90.984;91.341;91.718;
+6000;89.496;89.492;89.48;89.464;89.449;89.411;89.371;89.335;89.301;89.312;89.336;89.414;89.526;89.675;89.88;90.134;90.418;90.721;91.074;91.433;
+6500;89.292;89.287;89.272;89.252;89.231;89.194;89.155;89.12;89.09;89.101;89.127;89.2;89.312;89.472;89.688;89.946;90.229;90.529;90.836;91.174;
+7000;89.211;89.115;89.099;89.075;89.047;89.007;88.963;88.922;88.888;88.898;88.926;89;89.11;89.27;89.495;89.757;90.041;90.339;90.651;90.969;
+7500;88.951;88.945;88.927;88.901;88.87;88.831;88.791;88.754;88.722;88.726;88.741;88.806;88.919;89.083;89.302;89.566;89.852;90.149;90.46;90.783;
+8000;88.69;88.778;88.759;88.731;88.697;88.661;88.624;88.59;88.562;88.547;88.593;88.656;88.756;88.907;89.123;89.375;89.66;89.959;90.268;90.591;
+8500;88.621;88.615;88.595;88.566;88.529;88.495;88.463;88.434;88.412;88.402;88.441;88.506;88.617;88.772;88.974;89.206;89.466;89.765;90.076;90.397;
+9000;88.553;88.458;88.437;88.405;88.366;88.332;88.305;88.282;88.268;88.264;88.301;88.364;88.474;88.643;88.843;89.071;89.318;89.579;89.881;90.204;
+9500;88.312;88.305;88.283;88.249;88.208;88.173;88.151;88.132;88.126;88.135;88.171;88.237;88.345;88.509;88.716;88.94;89.182;89.441;89.716;90.013;
+10000;88.072;88.16;88.137;88.102;88.058;88.021;88.002;87.987;87.987;88.004;88.044;88.118;88.23;88.391;88.586;88.813;89.049;89.303;89.574;89.863;
+10500;88.032;88.025;88.001;87.964;87.917;87.876;87.859;87.846;87.851;87.877;87.927;88.004;88.124;88.285;88.472;88.684;88.921;89.168;89.434;89.717;
+11000;87.996;87.918;87.891;87.848;87.795;87.744;87.724;87.711;87.718;87.75;87.81;87.894;88.022;88.183;88.368;88.57;88.792;89.039;89.297;89.575;
+11500;88.307;88.295;88.267;88.225;88.171;88.122;88.102;88.089;88.098;88.129;88.189;88.273;88.401;88.562;88.747;88.948;89.171;89.41;89.67;89.95;
+12000;88.622;88.677;88.65;88.607;88.553;88.505;88.485;88.472;88.48;88.512;88.572;88.656;88.784;88.945;89.129;89.33;89.55;89.786;90.048;90.328;
+12500;89.069;89.059;89.032;88.99;88.938;88.89;88.872;88.86;88.868;88.901;88.961;89.044;89.171;89.332;89.515;89.717;89.929;90.167;90.43;90.711;
+13000;89.453;89.443;89.416;89.375;89.322;89.276;89.259;89.248;89.258;89.293;89.354;89.438;89.564;89.723;89.906;90.104;90.313;90.553;90.816;91.099;
+13500;89.843;89.836;89.81;89.768;89.717;89.671;89.654;89.644;89.655;89.69;89.751;89.836;89.963;90.122;90.305;90.493;90.703;90.943;91.206;91.492;
+14000;90.236;90.236;90.209;90.168;90.117;90.071;90.055;90.046;90.057;90.093;90.156;90.242;90.37;90.531;90.708;90.898;91.109;91.346;91.606;91.891;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;90.189;90.193;90.184;90.173;90.17;90.073;89.966;89.818;89.726;89.604;89.431;89.22;88.999;88.778;88.605;88.544;88.585;88.751;89.025;89.343;
+500;89.789;89.813;89.807;89.8;89.757;89.694;89.584;89.436;89.352;89.243;89.095;88.896;88.691;88.495;88.309;88.281;88.329;88.507;88.793;89.112;
+1000;89.438;89.438;89.433;89.429;89.387;89.329;89.227;89.085;88.999;88.89;88.738;88.571;88.384;88.209;88.053;88.023;88.078;88.265;88.552;88.881;
+1500;89.085;89.065;89.06;89.059;89.018;88.963;88.866;88.734;88.657;88.561;88.418;88.254;88.077;87.922;87.794;87.767;87.832;88.027;88.313;88.64;
+2000;88.704;88.701;88.697;88.696;88.654;88.602;88.511;88.386;88.317;88.231;88.105;87.958;87.792;87.644;87.53;87.513;87.596;87.794;88.074;88.397;
+2500;88.371;88.369;88.365;88.363;88.315;88.256;88.162;88.04;87.978;87.904;87.794;87.665;87.515;87.384;87.303;87.26;87.36;87.565;87.841;88.154;
+3000;88.11;88.107;88.099;88.093;88.076;87.969;87.862;87.732;87.66;87.578;87.483;87.37;87.239;87.127;87.071;87.04;87.133;87.34;87.612;87.916;
+3500;87.848;87.851;87.845;87.843;87.829;87.728;87.628;87.495;87.411;87.316;87.2;87.083;86.963;86.866;86.839;86.834;86.926;87.134;87.385;87.682;
+4000;87.586;87.592;87.587;87.586;87.573;87.474;87.382;87.26;87.185;87.105;87.001;86.87;86.72;86.615;86.583;86.626;86.725;86.937;87.189;87.458;
+4500;87.323;87.337;87.333;87.333;87.319;87.224;87.135;87.021;86.951;86.884;86.82;86.689;86.563;86.444;86.387;86.42;86.536;86.741;86.994;87.259;
+5000;87.087;87.085;87.081;87.083;87.067;86.976;86.892;86.784;86.714;86.66;86.61;86.501;86.394;86.298;86.258;86.286;86.374;86.551;86.796;87.061;
+5500;86.851;86.836;86.833;86.835;86.818;86.731;86.651;86.55;86.48;86.437;86.397;86.316;86.225;86.151;86.145;86.179;86.285;86.44;86.613;86.861;
+6000;86.621;86.618;86.612;86.609;86.585;86.494;86.413;86.318;86.248;86.214;86.183;86.13;86.052;85.999;86.011;86.067;86.195;86.356;86.534;86.715;
+6500;86.423;86.42;86.414;86.411;86.386;86.299;86.22;86.121;86.038;85.997;85.969;85.941;85.876;85.845;85.874;85.952;86.097;86.27;86.452;86.635;
+7000;86.225;86.222;86.216;86.213;86.186;86.105;86.031;85.94;85.859;85.829;85.795;85.771;85.699;85.688;85.73;85.834;85.994;86.179;86.363;86.553;
+7500;86.026;86.027;86.02;86.016;85.988;85.913;85.844;85.761;85.708;85.658;85.633;85.63;85.574;85.558;85.587;85.707;85.884;86.079;86.276;86.465;
+8000;85.828;85.829;85.824;85.82;85.792;85.723;85.659;85.582;85.533;85.489;85.472;85.478;85.45;85.456;85.5;85.611;85.771;85.971;86.177;86.38;
+8500;85.648;85.644;85.636;85.628;85.6;85.536;85.478;85.408;85.363;85.324;85.313;85.324;85.322;85.347;85.412;85.534;85.704;85.889;86.07;86.282;
+9000;85.467;85.462;85.453;85.443;85.414;85.356;85.301;85.237;85.196;85.162;85.155;85.172;85.197;85.233;85.319;85.459;85.632;85.823;86.016;86.204;
+9500;85.29;85.286;85.276;85.263;85.234;85.18;85.129;85.07;85.032;85.003;85.002;85.024;85.068;85.117;85.221;85.378;85.558;85.751;85.951;86.151;
+10000;85.114;85.113;85.106;85.09;85.06;85.009;84.961;84.907;84.85;84.848;84.851;84.884;84.939;85.003;85.12;85.289;85.48;85.676;85.878;86.087;
+10500;84.952;84.947;84.934;84.916;84.886;84.841;84.797;84.75;84.699;84.694;84.704;84.743;84.801;84.89;85.022;85.195;85.392;85.597;85.802;86.014;
+11000;84.792;84.784;84.769;84.748;84.716;84.672;84.63;84.587;84.545;84.539;84.564;84.605;84.674;84.777;84.924;85.102;85.299;85.509;85.723;85.935;
+11500;85.172;85.161;85.146;85.125;85.092;85.049;85.006;84.962;84.92;84.916;84.931;84.974;85.043;85.146;85.293;85.47;85.668;85.877;86.09;86.302;
+12000;85.556;85.55;85.535;85.513;85.479;85.434;85.389;85.344;85.297;85.289;85.306;85.348;85.417;85.52;85.666;85.844;86.041;86.25;86.461;86.674;
+12500;85.959;85.953;85.938;85.916;85.881;85.835;85.788;85.739;85.691;85.683;85.7;85.734;85.797;85.899;86.045;86.223;86.42;86.627;86.838;87.05;
+13000;86.365;86.359;86.344;86.321;86.286;86.239;86.192;86.144;86.095;86.088;86.108;86.144;86.209;86.306;86.447;86.614;86.804;87.009;87.219;87.431;
+13500;86.776;86.768;86.753;86.73;86.695;86.649;86.604;86.556;86.509;86.503;86.525;86.563;86.631;86.732;86.873;87.043;87.229;87.421;87.616;87.819;
+14000;87.194;87.188;87.173;87.151;87.117;87.072;87.026;86.98;86.934;86.93;86.954;86.993;87.064;87.167;87.311;87.481;87.668;87.863;88.059;88.255;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;87.09;87.079;87.053;87.007;86.934;86.789;86.599;86.39;86.161;85.88;85.535;85.149;84.725;84.439;84.194;84.015;83.915;83.911;84.022;84.275;
+500;86.718;86.73;86.705;86.661;86.585;86.439;86.247;86.035;85.817;85.547;85.208;84.839;84.43;84.145;83.913;83.743;83.654;83.664;83.791;84.05;
+1000;86.389;86.381;86.358;86.316;86.24;86.097;85.911;85.706;85.487;85.222;84.889;84.529;84.13;83.843;83.619;83.466;83.394;83.416;83.561;83.825;
+1500;86.038;86.031;86.008;85.969;85.894;85.756;85.576;85.377;85.168;84.915;84.592;84.237;83.843;83.542;83.326;83.184;83.126;83.17;83.33;83.6;
+2000;85.683;85.714;85.687;85.641;85.557;85.414;85.24;85.049;84.85;84.591;84.301;83.962;83.578;83.262;83.038;82.904;82.857;82.913;83.098;83.375;
+2500;85.526;85.454;85.429;85.386;85.301;85.155;84.967;84.759;84.548;84.285;84.005;83.685;83.32;83.008;82.784;82.633;82.591;82.659;82.857;83.147;
+3000;85.2;85.193;85.169;85.13;85.048;84.907;84.724;84.524;84.323;84.056;83.755;83.419;83.065;82.756;82.542;82.399;82.339;82.406;82.616;82.91;
+3500;84.874;84.929;84.908;84.873;84.792;84.657;84.482;84.289;84.1;83.852;83.564;83.234;82.875;82.496;82.303;82.137;82.118;82.174;82.375;82.67;
+4000;84.677;84.669;84.649;84.617;84.539;84.408;84.241;84.055;83.882;83.649;83.375;83.058;82.717;82.358;82.137;81.966;81.902;81.966;82.158;82.434;
+4500;84.479;84.414;84.398;84.369;84.291;84.165;84.004;83.825;83.666;83.468;83.188;82.886;82.558;82.225;82;81.834;81.755;81.781;81.957;82.219;
+5000;84.173;84.173;84.155;84.131;84.054;83.932;83.775;83.6;83.452;83.268;83.003;82.718;82.409;82.093;81.869;81.71;81.641;81.672;81.811;82.016;
+5500;83.995;83.987;83.971;83.945;83.86;83.732;83.57;83.382;83.242;83.071;82.823;82.554;82.265;81.965;81.746;81.593;81.531;81.576;81.718;81.903;
+6000;83.815;83.804;83.788;83.767;83.683;83.56;83.404;83.223;83.082;82.906;82.653;82.392;82.122;81.846;81.632;81.49;81.43;81.483;81.628;81.81;
+6500;83.635;83.638;83.607;83.591;83.508;83.39;83.241;83.065;82.936;82.773;82.54;82.279;81.997;81.73;81.485;81.394;81.342;81.396;81.542;81.721;
+7000;83.434;83.43;83.419;83.405;83.324;83.212;83.071;82.901;82.787;82.64;82.428;82.184;81.924;81.673;81.421;81.304;81.263;81.324;81.459;81.635;
+7500;83.232;83.24;83.23;83.22;83.139;83.031;82.898;82.766;82.631;82.495;82.31;82.082;81.843;81.622;81.403;81.28;81.217;81.261;81.39;81.551;
+8000;83.056;83.053;83.045;83.038;82.958;82.855;82.727;82.603;82.477;82.353;82.192;81.977;81.759;81.562;81.372;81.265;81.222;81.262;81.351;81.479;
+8500;82.88;82.882;82.858;82.857;82.777;82.68;82.56;82.443;82.325;82.212;82.075;81.873;81.675;81.499;81.341;81.209;81.227;81.277;81.366;81.469;
+9000;82.685;82.682;82.677;82.675;82.596;82.506;82.393;82.284;82.175;82.074;81.929;81.772;81.591;81.431;81.305;81.207;81.225;81.298;81.384;81.483;
+9500;82.493;82.503;82.497;82.494;82.418;82.333;82.228;82.125;82.025;81.935;81.809;81.671;81.512;81.39;81.267;81.198;81.225;81.309;81.409;81.502;
+10000;82.343;82.34;82.335;82.329;82.253;82.17;82.067;81.939;81.875;81.796;81.722;81.569;81.433;81.327;81.231;81.209;81.235;81.317;81.426;81.527;
+10500;82.195;82.196;82.177;82.169;82.098;82.019;81.922;81.801;81.735;81.658;81.595;81.468;81.352;81.263;81.208;81.196;81.245;81.329;81.436;81.55;
+11000;82.036;82.033;82.028;82.015;81.946;81.873;81.782;81.669;81.607;81.537;81.476;81.367;81.271;81.185;81.167;81.178;81.25;81.347;81.449;81.561;
+11500;82.431;82.423;82.417;82.401;82.329;82.253;82.159;82.04;81.977;81.906;81.846;81.736;81.637;81.564;81.532;81.54;81.61;81.706;81.806;81.918;
+12000;82.838;82.834;82.828;82.812;82.74;82.665;82.571;82.454;82.386;82.312;82.242;82.125;82.014;81.936;81.902;81.909;81.975;82.069;82.168;82.281;
+12500;83.249;83.257;83.251;83.234;83.162;83.087;82.994;82.877;82.814;82.741;82.675;82.56;82.45;82.362;82.311;82.298;82.347;82.438;82.535;82.643;
+13000;83.665;83.694;83.688;83.67;83.598;83.525;83.433;83.318;83.255;83.183;83.12;83.007;82.896;82.809;82.757;82.745;82.787;82.855;82.927;83.01;
+13500;84.148;84.145;84.14;84.122;84.049;83.977;83.885;83.77;83.708;83.636;83.576;83.461;83.352;83.266;83.214;83.201;83.243;83.308;83.373;83.445;
+14000;84.635;84.61;84.604;84.586;84.514;84.442;84.35;84.235;84.173;84.101;84.043;83.928;83.817;83.734;83.682;83.668;83.709;83.768;83.827;83.899;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;83.836;83.824;83.785;83.712;83.594;83.405;83.143;82.862;82.509;82.083;81.608;81.104;80.698;80.321;79.971;79.652;79.362;79.155;79.028;79.034;
+500;83.503;83.491;83.453;83.383;83.263;83.072;82.811;82.533;82.191;81.777;81.311;80.815;80.408;80.04;79.704;79.399;79.125;78.926;78.817;78.84;
+1000;83.169;83.165;83.125;83.054;82.936;82.75;82.495;82.226;81.887;81.476;81.016;80.529;80.119;79.76;79.434;79.139;78.888;78.705;78.606;78.646;
+1500;82.833;82.893;82.854;82.782;82.658;82.466;82.204;81.928;81.593;81.193;80.739;80.251;79.869;79.48;79.165;78.889;78.652;78.487;78.399;78.453;
+2000;82.688;82.641;82.602;82.529;82.403;82.212;81.95;81.684;81.35;80.941;80.477;79.986;79.601;79.207;78.896;78.634;78.416;78.267;78.198;78.261;
+2500;82.407;82.396;82.357;82.287;82.164;81.977;81.72;81.458;81.127;80.722;80.267;79.772;79.364;78.953;78.642;78.381;78.18;78.046;77.997;78.079;
+3000;82.124;82.147;82.111;82.044;81.922;81.74;81.49;81.234;80.914;80.517;80.068;79.57;79.153;78.749;78.424;78.172;77.946;77.825;77.795;77.895;
+3500;81.9;81.889;81.854;81.789;81.669;81.492;81.249;81.002;80.693;80.308;79.871;79.382;78.963;78.555;78.259;77.988;77.769;77.616;77.591;77.711;
+4000;81.673;81.632;81.598;81.536;81.418;81.245;81.008;80.769;80.472;80.1;79.675;79.197;78.775;78.373;78.059;77.816;77.601;77.467;77.431;77.528;
+4500;81.416;81.405;81.367;81.301;81.174;81;80.769;80.537;80.252;79.892;79.48;79.013;78.59;78.194;77.919;77.658;77.457;77.324;77.299;77.41;
+5000;81.232;81.218;81.182;81.117;80.991;80.816;80.576;80.335;80.04;79.686;79.286;78.833;78.409;78.02;77.753;77.501;77.314;77.197;77.182;77.295;
+5500;81.046;81.036;81;80.938;80.813;80.642;80.408;80.176;79.89;79.536;79.126;78.661;78.233;77.85;77.591;77.348;77.172;77.071;77.072;77.196;
+6000;80.859;80.861;80.823;80.762;80.638;80.47;80.243;80.019;79.744;79.401;79.009;78.556;78.065;77.697;77.403;77.199;77.033;76.947;76.961;77.098;
+6500;80.69;80.68;80.647;80.589;80.466;80.302;80.079;79.863;79.6;79.269;78.888;78.454;77.979;77.648;77.336;77.076;76.901;76.828;76.856;76.998;
+7000;80.526;80.511;80.478;80.421;80.297;80.138;79.92;79.712;79.459;79.141;78.773;78.361;77.902;77.567;77.263;77.012;76.828;76.727;76.754;76.901;
+7500;80.373;80.354;80.323;80.268;80.146;79.988;79.773;79.567;79.323;79.021;78.666;78.269;77.831;77.492;77.195;76.953;76.779;76.689;76.706;76.809;
+8000;80.219;80.199;80.17;80.117;79.998;79.844;79.638;79.44;79.205;78.913;78.563;78.181;77.762;77.422;77.132;76.899;76.735;76.656;76.686;76.796;
+8500;80.066;80.053;80.026;79.975;79.86;79.713;79.513;79.322;79.097;78.822;78.482;78.109;77.699;77.359;77.077;76.852;76.696;76.629;76.67;76.783;
+9000;79.912;79.913;79.889;79.84;79.727;79.584;79.391;79.208;78.992;78.735;78.406;78.049;77.652;77.306;77.03;76.815;76.666;76.607;76.658;76.772;
+9500;79.786;79.778;79.756;79.708;79.598;79.46;79.273;79.098;78.893;78.653;78.336;77.994;77.617;77.272;76.998;76.785;76.646;76.595;76.651;76.764;
+10000;79.663;79.649;79.629;79.582;79.475;79.341;79.161;78.994;78.8;78.553;78.272;77.945;77.59;77.216;76.982;76.772;76.634;76.593;76.652;76.76;
+10500;79.516;79.51;79.493;79.447;79.343;79.214;79.04;78.883;78.701;78.47;78.205;77.895;77.565;77.216;76.981;76.743;76.644;76.6;76.662;76.764;
+11000;79.418;79.411;79.394;79.347;79.242;79.113;78.94;78.778;78.601;78.387;78.138;77.845;77.537;77.213;76.977;76.787;76.666;76.63;76.68;76.777;
+11500;79.854;79.847;79.83;79.782;79.678;79.55;79.378;79.218;79.04;78.815;78.549;78.237;77.908;77.567;77.336;77.14;77.012;76.975;77.024;77.12;
+12000;80.295;80.297;80.28;80.231;80.127;79.999;79.829;79.672;79.496;79.27;79.001;78.687;78.355;78.003;77.744;77.521;77.367;77.325;77.375;77.469;
+12500;80.742;80.767;80.749;80.699;80.596;80.468;80.296;80.138;79.958;79.73;79.458;79.14;78.804;78.448;78.188;77.962;77.807;77.738;77.76;77.824;
+13000;81.251;81.244;81.226;81.174;81.07;80.941;80.768;80.609;80.427;80.198;79.923;79.603;79.263;78.903;78.643;78.415;78.256;78.185;78.209;78.275;
+13500;81.766;81.769;81.715;81.663;81.558;81.428;81.253;81.094;80.91;80.678;80.4;80.078;79.737;79.373;79.11;78.877;78.715;78.642;78.67;78.734;
+14000;82.248;82.241;82.222;82.168;82.062;81.931;81.754;81.593;81.407;81.174;80.892;80.566;80.221;79.858;79.588;79.351;79.185;79.115;79.142;79.204;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;80.485;80.475;80.416;80.306;80.133;79.882;79.556;79.168;78.707;78.219;77.704;77.241;76.781;76.275;75.77;75.259;74.803;74.393;74.007;73.727;
+500;80.215;80.181;80.118;80.004;79.826;79.569;79.235;78.85;78.399;77.877;77.404;76.944;76.492;76.004;75.511;75.02;74.572;74.175;73.816;73.561;
+1000;79.944;79.907;79.847;79.738;79.566;79.314;78.984;78.595;78.13;77.593;77.108;76.648;76.203;75.732;75.249;74.78;74.343;73.959;73.624;73.391;
+1500;79.663;79.643;79.584;79.477;79.306;79.059;78.739;78.358;77.899;77.372;76.872;76.385;75.918;75.46;74.991;74.54;74.127;73.75;73.432;73.222;
+2000;79.416;79.399;79.342;79.237;79.068;78.821;78.501;78.126;77.674;77.155;76.654;76.169;75.707;75.233;74.749;74.3;73.901;73.539;73.242;73.051;
+2500;79.168;79.156;79.101;78.999;78.833;78.592;78.278;77.911;77.468;76.952;76.444;75.988;75.5;75.039;74.566;74.106;73.694;73.329;73.052;72.881;
+3000;78.92;78.915;78.861;78.762;78.599;78.364;78.056;77.698;77.264;76.758;76.249;75.793;75.306;74.846;74.391;73.946;73.513;73.165;72.875;72.711;
+3500;78.67;78.667;78.626;78.527;78.368;78.137;77.835;77.488;77.062;76.567;76.058;75.602;75.12;74.675;74.228;73.786;73.37;73.03;72.746;72.578;
+4000;78.505;78.487;78.432;78.331;78.164;77.925;77.618;77.278;76.862;76.379;75.873;75.417;74.941;74.506;74.073;73.648;73.241;72.901;72.634;72.473;
+4500;78.349;78.332;78.277;78.177;78.012;77.776;77.47;77.124;76.697;76.199;75.695;75.236;74.765;74.341;73.921;73.511;73.122;72.795;72.529;72.382;
+5000;78.2;78.188;78.134;78.037;77.875;77.644;77.342;77.002;76.579;76.087;75.563;75.078;74.588;74.176;73.769;73.373;73.001;72.691;72.442;72.303;
+5500;78.05;78.049;77.992;77.896;77.737;77.511;77.215;76.886;76.474;75.992;75.467;74.972;74.479;74.045;73.613;73.237;72.88;72.585;72.354;72.234;
+6000;77.915;77.899;77.849;77.758;77.602;77.38;77.091;76.771;76.371;75.893;75.369;74.871;74.373;73.941;73.532;73.136;72.751;72.48;72.266;72.165;
+6500;77.78;77.752;77.703;77.615;77.46;77.243;76.956;76.645;76.253;75.788;75.272;74.772;74.28;73.851;73.445;73.065;72.704;72.408;72.177;72.096;
+7000;77.646;77.599;77.552;77.466;77.315;77.102;76.822;76.521;76.141;75.686;75.179;74.677;74.188;73.77;73.375;72.999;72.651;72.373;72.157;72.054;
+7500;77.509;77.451;77.405;77.321;77.172;76.965;76.691;76.4;76.032;75.588;75.089;74.587;74.142;73.691;73.308;72.947;72.607;72.34;72.143;72.058;
+8000;77.369;77.37;77.264;77.181;77.034;76.831;76.564;76.283;75.928;75.494;75.005;74.468;74.025;73.62;73.244;72.897;72.575;72.318;72.131;72.065;
+8500;77.182;77.169;77.126;77.046;76.902;76.702;76.44;76.171;75.828;75.405;74.927;74.399;73.989;73.551;73.185;72.851;72.55;72.306;72.129;72.075;
+9000;76.997;77.037;76.995;76.916;76.775;76.58;76.322;76.062;75.733;75.32;74.854;74.336;73.922;73.49;73.132;72.809;72.528;72.298;72.14;72.093;
+9500;76.926;76.913;76.873;76.794;76.656;76.465;76.211;75.958;75.641;75.241;74.789;74.28;73.863;73.436;73.084;72.77;72.507;72.295;72.154;72.125;
+10000;76.845;76.83;76.787;76.705;76.563;76.367;76.109;75.865;75.556;75.169;74.731;74.234;73.813;73.391;73.078;72.745;72.492;72.3;72.174;72.161;
+10500;76.769;76.773;76.731;76.65;76.511;76.319;76.067;75.822;75.511;75.118;74.68;74.198;73.775;73.358;73.052;72.753;72.502;72.309;72.201;72.201;
+11000;76.74;76.725;76.685;76.606;76.469;76.283;76.036;75.8;75.502;75.123;74.698;74.211;73.765;73.372;73.005;72.744;72.505;72.324;72.231;72.244;
+11500;77.212;77.196;77.156;77.075;76.939;76.753;76.506;76.27;75.968;75.586;75.157;74.664;74.217;73.819;73.459;73.14;72.872;72.673;72.576;72.586;
+12000;77.691;77.685;77.644;77.562;77.425;77.238;76.991;76.752;76.448;76.064;75.629;75.13;74.681;74.28;73.917;73.595;73.324;73.109;72.979;72.95;
+12500;78.178;78.191;78.15;78.068;77.93;77.74;77.49;77.248;76.943;76.556;76.115;75.61;75.157;74.753;74.387;74.063;73.788;73.57;73.437;73.407;
+13000;78.729;78.715;78.674;78.59;78.45;78.259;78.006;77.761;77.454;77.061;76.616;76.106;75.649;75.24;74.87;74.542;74.264;74.042;73.906;73.873;
+13500;79.289;79.29;79.217;79.131;78.989;78.795;78.54;78.293;77.982;77.582;77.132;76.617;76.156;75.742;75.368;75.035;74.753;74.527;74.386;74.35;
+14000;79.86;79.861;79.778;79.691;79.547;79.35;79.093;78.843;78.527;78.122;77.665;77.145;76.68;76.261;75.881;75.543;75.255;75.025;74.879;74.838;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;77.136;77.09;77.007;76.857;76.635;76.322;75.926;75.433;74.943;74.468;73.96;73.42;72.808;72.181;71.577;70.95;70.283;69.594;68.914;68.283;
+500;76.854;76.824;76.742;76.594;76.373;76.061;75.668;75.178;74.691;74.204;73.683;73.141;72.538;71.92;71.328;70.727;70.069;69.404;68.751;68.151;
+1000;76.591;76.564;76.484;76.339;76.121;75.814;75.426;74.941;74.452;73.961;73.443;72.936;72.307;71.678;71.078;70.486;69.855;69.214;68.587;68.018;
+1500;76.326;76.321;76.241;76.096;75.878;75.574;75.187;74.711;74.188;73.703;73.213;72.699;72.08;71.462;70.868;70.262;69.631;69.012;68.414;67.879;
+2000;76.121;76.098;76.018;75.874;75.658;75.353;74.969;74.486;73.955;73.462;72.968;72.463;71.864;71.249;70.659;70.063;69.455;68.834;68.233;67.727;
+2500;75.916;75.87;75.791;75.649;75.434;75.13;74.747;74.27;73.745;73.245;72.742;72.241;71.656;71.051;70.464;69.867;69.283;68.684;68.108;67.597;
+3000;75.66;75.634;75.557;75.418;75.206;74.907;74.53;74.062;73.543;73.04;72.542;72.041;71.467;70.858;70.28;69.691;69.119;68.535;67.985;67.501;
+3500;75.513;75.465;75.387;75.242;75.023;74.713;74.324;73.857;73.348;72.848;72.35;71.857;71.294;70.681;70.09;69.528;68.988;68.412;67.864;67.407;
+4000;75.334;75.312;75.234;75.092;74.877;74.574;74.197;73.728;73.201;72.676;72.196;71.676;71.128;70.524;69.942;69.376;68.846;68.288;67.754;67.316;
+4500;75.156;75.163;75.086;74.95;74.741;74.445;74.076;73.615;73.097;72.57;72.083;71.539;70.973;70.373;69.807;69.241;68.706;68.17;67.659;67.235;
+5000;75.047;75.023;74.95;74.817;74.612;74.321;73.958;73.506;72.995;72.469;71.982;71.443;70.891;70.285;69.693;69.111;68.587;68.058;67.567;67.164;
+5500;74.939;74.89;74.819;74.689;74.487;74.201;73.845;73.403;72.899;72.375;71.886;71.352;70.813;70.224;69.642;69.073;68.497;67.972;67.479;67.097;
+6000;74.785;74.762;74.692;74.565;74.367;74.086;73.738;73.304;72.807;72.281;71.795;71.264;70.739;70.167;69.595;69.036;68.471;67.95;67.43;67.032;
+6500;74.63;74.638;74.57;74.445;74.251;73.975;73.633;73.208;72.72;72.191;71.707;71.18;70.67;70.113;69.552;69.004;68.451;67.947;67.449;67.032;
+7000;74.541;74.52;74.453;74.331;74.14;73.869;73.534;73.118;72.638;72.108;71.626;71.102;70.604;70.062;69.513;68.952;68.435;67.943;67.471;67.077;
+7500;74.455;74.454;74.345;74.223;74.035;73.77;73.441;73.034;72.562;72.036;71.553;71.032;70.544;70.018;69.48;68.934;68.426;67.947;67.495;67.124;
+8000;74.322;74.301;74.237;74.121;73.937;73.677;73.356;72.958;72.494;71.967;71.45;70.969;70.487;69.977;69.45;68.924;68.424;67.957;67.528;67.179;
+8500;74.225;74.205;74.142;74.029;73.847;73.591;73.277;72.889;72.433;71.909;71.395;70.912;70.436;69.943;69.43;68.918;68.425;67.974;67.574;67.237;
+9000;74.134;74.137;74.072;73.955;73.769;73.512;73.207;72.828;72.38;71.861;71.348;70.863;70.39;69.909;69.412;68.916;68.431;67.998;67.611;67.3;
+9500;74.136;74.115;74.052;73.937;73.755;73.498;73.186;72.802;72.349;71.811;71.294;70.804;70.337;69.867;69.387;68.905;68.431;68.015;67.658;67.369;
+10000;74.147;74.103;74.041;73.928;73.746;73.492;73.182;72.802;72.351;71.828;71.29;70.813;70.295;69.835;69.37;68.903;68.444;68.037;67.699;67.435;
+10500;74.106;74.087;74.027;73.916;73.738;73.489;73.185;72.814;72.371;71.859;71.32;70.84;70.326;69.854;69.38;68.903;68.465;68.07;67.747;67.501;
+11000;74.078;74.087;74.028;73.919;73.744;73.499;73.202;72.839;72.406;71.902;71.363;70.878;70.365;69.902;69.44;68.98;68.528;68.113;67.804;67.576;
+11500;74.618;74.598;74.538;74.427;74.25;74.002;73.703;73.337;72.899;72.389;71.846;71.358;70.844;70.376;69.909;69.443;68.991;68.57;68.225;67.956;
+12000;75.168;75.127;75.066;74.953;74.774;74.523;74.222;73.852;73.408;72.892;72.346;71.855;71.333;70.861;70.39;69.918;69.459;69.037;68.686;68.412;
+12500;75.697;75.677;75.615;75.5;75.319;75.064;74.758;74.385;73.937;73.415;72.861;72.367;71.838;71.363;70.884;70.407;69.94;69.516;69.158;68.879;
+13000;76.239;76.237;76.173;76.057;75.875;75.619;75.313;74.939;74.487;73.958;73.397;72.897;72.362;71.878;71.395;70.909;70.437;70.005;69.644;69.355;
+13500;76.84;76.818;76.754;76.636;76.45;76.191;75.881;75.501;75.047;74.521;73.959;73.448;72.906;72.414;71.923;71.43;70.949;70.508;70.138;69.834;
+14000;77.457;77.425;77.36;77.239;77.051;76.788;76.472;76.088;75.627;75.094;74.527;74.018;73.471;72.971;72.469;71.968;71.474;71.035;70.639;70.328;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;73.807;73.8;73.707;73.537;73.294;72.957;72.519;72.006;71.563;71.072;70.489;69.817;69.121;68.45;67.741;66.908;65.968;64.921;63.776;62.574;
+500;73.557;73.536;73.443;73.275;73.031;72.695;72.258;71.743;71.298;70.808;70.238;69.574;68.875;68.2;67.492;66.661;65.738;64.728;63.63;62.485;
+1000;73.308;73.303;73.188;73.016;72.774;72.439;72.006;71.498;71.046;70.551;69.991;69.339;68.645;67.965;67.263;66.452;65.546;64.548;63.482;62.392;
+1500;73.063;73.033;72.941;72.774;72.532;72.197;71.765;71.258;70.804;70.309;69.758;69.106;68.417;67.773;67.052;66.248;65.365;64.402;63.368;62.302;
+2000;72.819;72.795;72.703;72.537;72.296;71.964;71.536;71.036;70.578;70.079;69.534;68.886;68.203;67.554;66.846;66.061;65.192;64.255;63.266;62.252;
+2500;72.577;72.561;72.471;72.306;72.068;71.737;71.313;70.816;70.358;69.861;69.325;68.682;68.001;67.352;66.651;65.878;65.035;64.125;63.168;62.202;
+3000;72.441;72.401;72.306;72.134;71.886;71.542;71.102;70.601;70.144;69.648;69.123;68.489;67.817;67.17;66.478;65.715;64.887;64.004;63.081;62.151;
+3500;72.286;72.255;72.16;71.99;71.744;71.402;70.969;70.462;69.986;69.466;68.931;68.304;67.637;66.996;66.321;65.564;64.753;63.887;62.998;62.111;
+4000;72.131;72.117;72.022;71.854;71.611;71.273;70.846;70.342;69.865;69.346;68.824;68.169;67.469;66.828;66.159;65.419;64.627;63.78;62.908;62.053;
+4500;72.018;71.986;71.893;71.726;71.489;71.151;70.729;70.227;69.749;69.231;68.713;68.07;67.395;66.715;66.014;65.269;64.489;63.667;62.825;61.999;
+5000;71.89;71.862;71.77;71.604;71.365;71.034;70.614;70.118;69.633;69.114;68.597;67.958;67.296;66.621;65.929;65.194;64.391;63.558;62.744;61.954;
+5500;71.762;71.741;71.65;71.487;71.25;70.922;70.501;69.999;69.514;68.993;68.482;67.856;67.204;66.537;65.85;65.135;64.352;63.527;62.685;61.91;
+6000;71.638;71.635;71.531;71.365;71.128;70.796;70.38;69.887;69.399;68.879;68.372;67.765;67.122;66.428;65.781;65.084;64.318;63.517;62.702;61.918;
+6500;71.515;71.495;71.405;71.244;71.009;70.681;70.27;69.779;69.292;68.802;68.275;67.684;67.015;66.364;65.719;65.036;64.289;63.511;62.722;61.967;
+7000;71.408;71.378;71.29;71.131;70.899;70.576;70.169;69.684;69.198;68.71;68.185;67.606;66.951;66.303;65.66;64.996;64.266;63.509;62.748;62.022;
+7500;71.299;71.272;71.185;71.029;70.801;70.482;70.082;69.599;69.114;68.626;68.102;67.537;66.896;66.253;65.612;64.963;64.251;63.515;62.779;62.082;
+8000;71.196;71.183;71.095;70.94;70.715;70.398;70.004;69.529;69.04;68.552;68.028;67.477;66.849;66.212;65.568;64.954;64.244;63.529;62.819;62.149;
+8500;71.197;71.168;71.079;70.922;70.69;70.366;69.965;69.476;68.979;68.49;67.967;67.428;66.812;66.181;65.57;64.933;64.262;63.552;62.866;62.223;
+9000;71.208;71.165;71.078;70.922;70.693;70.372;69.976;69.494;68.994;68.486;67.943;67.414;66.787;66.164;65.555;64.924;64.274;63.584;62.92;62.304;
+9500;71.23;71.228;71.095;70.939;70.712;70.394;70.004;69.525;69.026;68.486;67.976;67.447;66.83;66.19;65.561;64.926;64.304;63.627;62.984;62.393;
+10000;71.244;71.216;71.13;70.978;70.751;70.435;70.048;69.574;69.041;68.538;68.023;67.498;66.893;66.269;65.643;64.998;64.345;63.689;63.06;62.492;
+10500;71.278;71.28;71.195;71.044;70.82;70.507;70.125;69.651;69.123;68.608;68.085;67.564;66.975;66.36;65.74;65.102;64.467;63.827;63.178;62.601;
+11000;71.392;71.365;71.282;71.133;70.91;70.601;70.223;69.756;69.232;68.711;68.215;67.657;67.075;66.46;65.84;65.227;64.623;63.979;63.353;62.792;
+11500;71.94;71.912;71.827;71.677;71.451;71.137;70.754;70.282;69.751;69.225;68.723;68.159;67.57;66.949;66.321;65.704;65.091;64.438;63.804;63.235;
+12000;72.505;72.482;72.396;72.243;72.013;71.695;71.307;70.83;70.291;69.759;69.251;68.68;68.084;67.456;66.818;66.198;65.576;64.913;64.27;63.692;
+12500;73.089;73.078;72.989;72.834;72.6;72.277;71.885;71.401;70.856;70.315;69.801;69.22;68.618;67.983;67.334;66.706;66.078;65.403;64.75;64.161;
+13000;73.694;73.701;73.61;73.452;73.214;72.887;72.488;71.998;71.445;70.899;70.374;69.784;69.173;68.53;67.87;67.232;66.598;65.91;65.245;64.645;
+13500;74.489;74.354;74.261;74.099;73.858;73.525;73.12;72.624;72.062;71.508;70.974;70.375;69.752;69.101;68.427;67.778;67.133;66.435;65.758;65.145;
+14000;75.07;75.039;74.945;74.78;74.534;74.195;73.784;73.281;72.711;72.145;71.602;70.994;70.359;69.695;69.036;68.349;67.67;66.97;66.289;65.662;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;70.582;70.486;70.398;70.234;69.999;69.659;69.237;68.808;68.375;67.857;67.216;66.514;65.827;65.054;64.095;62.931;61.49;59.693;57.485;54.487;
+500;71.055;70.226;70.162;69.998;69.764;69.421;68.998;68.565;68.134;67.624;66.989;66.294;65.609;64.846;63.899;62.761;61.373;59.656;57.551;54.765;
+1000;70.077;70.025;69.937;69.771;69.536;69.192;68.772;68.335;67.9;67.388;66.75;66.057;65.372;64.631;63.703;62.595;61.255;59.609;57.616;55.079;
+1500;69.863;69.809;69.72;69.553;69.315;68.967;68.54;68.099;67.662;67.152;66.517;65.826;65.181;64.415;63.509;62.429;61.131;59.557;57.628;55.312;
+2000;69.604;69.576;69.486;69.319;69.083;68.736;68.312;67.87;67.435;66.93;66.297;65.61;64.963;64.204;63.316;62.265;61.01;59.498;57.669;55.51;
+2500;69.457;69.407;69.312;69.136;68.889;68.53;68.088;67.646;67.213;66.713;66.086;65.406;64.758;64.009;63.132;62.102;60.885;59.433;57.696;55.678;
+3000;69.295;69.263;69.167;68.992;68.746;68.388;67.949;67.488;67.035;66.518;65.879;65.196;64.563;63.823;62.961;61.951;60.761;59.365;57.714;55.824;
+3500;69.155;69.123;69.028;68.853;68.607;68.25;67.813;67.354;66.902;66.39;65.748;65.03;64.383;63.64;62.795;61.802;60.647;59.295;57.725;55.948;
+4000;69.015;68.988;68.894;68.719;68.475;68.119;67.686;67.221;66.771;66.261;65.627;64.951;64.273;63.524;62.661;61.661;60.531;59.228;57.721;56.017;
+4500;68.89;68.861;68.765;68.59;68.345;67.99;67.557;67.095;66.646;66.137;65.51;64.841;64.164;63.428;62.581;61.595;60.452;59.157;57.714;56.092;
+5000;68.768;68.738;68.642;68.467;68.223;67.869;67.438;66.975;66.526;66.019;65.4;64.737;64.063;63.337;62.506;61.544;60.43;59.156;57.713;56.156;
+5500;68.655;68.623;68.527;68.352;68.109;67.756;67.327;66.863;66.416;65.91;65.298;64.641;63.968;63.253;62.435;61.496;60.412;59.176;57.783;56.247;
+6000;68.547;68.517;68.422;68.247;68.004;67.652;67.224;66.761;66.313;65.808;65.205;64.551;63.881;63.175;62.371;61.453;60.395;59.19;57.851;56.373;
+6500;68.453;68.423;68.326;68.153;67.909;67.573;67.13;66.667;66.22;65.717;65.122;64.471;63.799;63.099;62.309;61.409;60.378;59.213;57.915;56.495;
+7000;68.368;68.348;68.246;68.066;67.826;67.489;67.05;66.586;66.136;65.641;65.045;64.393;63.723;63.021;62.253;61.372;60.369;59.234;57.969;56.617;
+7500;68.388;68.353;68.251;68.069;67.816;67.467;67.014;66.497;66.06;65.564;64.975;64.298;63.658;62.961;62.209;61.347;60.359;59.246;58.03;56.739;
+8000;68.42;68.369;68.267;68.085;67.83;67.478;67.028;66.516;66.072;65.556;64.949;64.257;63.571;62.91;62.165;61.31;60.349;59.272;58.096;56.861;
+8500;68.432;68.4;68.298;68.115;67.861;67.51;67.062;66.55;66.104;65.59;64.987;64.289;63.576;62.884;62.131;61.286;60.35;59.308;58.172;56.986;
+9000;68.46;68.451;68.347;68.165;67.91;67.559;67.114;66.603;66.142;65.624;65.028;64.341;63.628;62.927;62.179;61.325;60.384;59.353;58.259;57.118;
+9500;68.557;68.521;68.418;68.236;67.981;67.622;67.17;66.652;66.195;65.677;65.09;64.411;63.697;62.992;62.255;61.407;60.479;59.47;58.385;57.262;
+10000;68.675;68.603;68.5;68.316;68.057;67.702;67.252;66.736;66.273;65.752;65.172;64.502;63.787;63.108;62.348;61.513;60.601;59.615;58.565;57.484;
+10500;68.747;68.715;68.611;68.427;68.168;67.811;67.363;66.847;66.376;65.85;65.275;64.611;63.897;63.216;62.464;61.64;60.744;59.783;58.765;57.721;
+11000;68.892;68.857;68.752;68.568;68.308;67.949;67.502;66.986;66.507;65.974;65.406;64.744;64.036;63.351;62.606;61.791;60.909;59.969;58.986;57.982;
+11500;69.512;69.478;69.371;69.184;68.918;68.555;68.101;67.577;67.091;66.55;65.972;65.3;64.581;63.889;63.144;62.305;61.411;60.458;59.462;58.444;
+12000;70.159;70.131;70.021;69.831;69.56;69.191;68.73;68.197;67.704;67.153;66.564;65.884;65.151;64.45;63.682;62.841;61.933;60.965;59.955;58.922;
+12500;70.834;70.82;70.708;70.514;70.237;69.861;69.393;68.852;68.349;67.787;67.186;66.493;65.75;65.037;64.255;63.401;62.477;61.493;60.466;59.418;
+13000;71.586;71.549;71.436;71.238;70.954;70.57;70.089;69.542;69.029;68.456;67.841;67.134;66.378;65.654;64.856;63.986;63.046;62.044;60.998;59.934;
+13500;72.374;72.37;72.194;71.992;71.708;71.324;70.836;70.271;69.749;69.163;68.533;67.81;67.04;66.302;65.488;64.6;63.642;62.621;61.555;60.471;
+14000;73.154;73.115;72.996;72.792;72.501;72.108;71.618;71.053;70.513;69.913;69.266;68.525;67.739;66.985;66.153;65.246;64.268;63.227;62.138;61.031;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;69.216;69.192;69.106;68.943;68.714;68.375;67.949;67.549;67.118;66.566;65.888;65.247;64.516;63.635;62.553;61.187;59.4;57.017;53.422;47.532;
+500;69.822;68.946;68.86;68.696;68.465;68.124;67.696;67.291;66.861;66.318;65.656;65.01;64.292;63.428;62.372;61.049;59.336;57.078;53.766;48.529;
+1000;68.77;68.706;68.622;68.457;68.227;67.884;67.456;67.05;66.596;66.077;65.421;64.775;64.069;63.223;62.193;60.909;59.262;57.123;54.063;49.423;
+1500;68.503;68.479;68.393;68.229;67.997;67.657;67.229;66.82;66.364;65.85;65.198;64.544;63.835;63.019;62.013;60.766;59.182;57.153;54.316;50.128;
+2000;68.291;68.261;68.169;68.004;67.774;67.433;67.009;66.599;66.142;65.637;64.996;64.332;63.62;62.817;61.832;60.622;59.099;57.128;54.534;50.734;
+2500;68.179;68.12;68.028;67.855;67.614;67.26;66.82;66.392;65.927;65.427;64.789;64.092;63.42;62.629;61.658;60.478;59.013;57.139;54.752;51.261;
+3000;68.013;67.983;67.891;67.718;67.477;67.122;66.682;66.255;65.779;65.267;64.608;63.894;63.225;62.451;61.495;60.345;58.926;57.146;54.894;51.717;
+3500;67.847;67.85;67.757;67.585;67.344;66.99;66.553;66.124;65.649;65.142;64.49;63.775;63.077;62.29;61.341;60.212;58.843;57.139;55.012;52.108;
+4000;67.752;67.723;67.63;67.456;67.217;66.864;66.428;65.998;65.552;65.022;64.376;63.667;62.972;62.199;61.248;60.109;58.757;57.125;55.09;52.436;
+4500;67.66;67.604;67.51;67.337;67.097;66.744;66.311;65.879;65.435;64.911;64.268;63.565;62.873;62.114;61.184;60.073;58.737;57.102;55.155;52.721;
+5000;67.522;67.492;67.398;67.222;66.985;66.633;66.201;65.767;65.324;64.805;64.168;63.473;62.783;62.039;61.126;60.039;58.742;57.148;55.207;52.938;
+5500;67.389;67.388;67.294;67.121;66.882;66.53;66.1;65.666;65.224;64.711;64.079;63.392;62.703;61.971;61.074;60.012;58.735;57.196;55.35;53.189;
+6000;67.333;67.304;67.208;67.033;66.794;66.442;66.012;65.576;65.135;64.625;63.997;63.315;62.668;61.909;61.028;59.972;58.725;57.244;55.485;53.453;
+6500;67.289;67.238;67.142;66.967;66.726;66.375;65.946;65.505;65.06;64.549;63.925;63.248;62.596;61.841;60.969;59.938;58.725;57.296;55.618;53.699;
+7000;67.282;67.248;67.147;66.965;66.714;66.353;65.911;65.454;65.002;64.49;63.855;63.164;62.521;61.776;60.918;59.912;58.731;57.351;55.745;53.933;
+7500;67.287;67.274;67.173;66.99;66.739;66.375;65.927;65.461;64.994;64.466;63.817;63.097;62.464;61.721;60.879;59.897;58.745;57.41;55.872;54.155;
+8000;67.342;67.31;67.206;67.02;66.765;66.397;65.95;65.483;65.014;64.487;63.842;63.159;62.469;61.713;60.857;59.891;58.767;57.476;56;54.34;
+8500;67.412;67.354;67.249;67.063;66.806;66.438;65.991;65.521;65.052;64.524;63.884;63.205;62.512;61.766;60.916;59.946;58.817;57.549;56.133;54.548;
+9000;67.454;67.419;67.314;67.127;66.869;66.5;66.054;65.58;65.109;64.579;63.945;63.268;62.575;61.836;60.997;60.043;58.948;57.695;56.291;54.755;
+9500;67.517;67.509;67.404;67.216;66.956;66.587;66.14;65.662;65.188;64.656;64.03;63.354;62.658;61.925;61.095;60.158;59.093;57.871;56.509;55.038;
+10000;67.661;67.629;67.523;67.333;67.072;66.714;66.252;65.771;65.295;64.76;64.142;63.464;62.764;62.024;61.213;60.286;59.242;58.058;56.743;55.337;
+10500;67.834;67.781;67.672;67.481;67.219;66.859;66.398;65.913;65.434;64.896;64.282;63.601;62.894;62.155;61.346;60.431;59.408;58.264;56.995;55.642;
+11000;68.005;67.968;67.86;67.669;67.405;67.043;66.581;66.091;65.606;65.068;64.448;63.732;63.047;62.299;61.506;60.602;59.599;58.488;57.263;55.961;
+11500;68.653;68.623;68.513;68.318;68.048;67.68;67.21;66.712;66.219;65.668;65.044;64.32;63.624;62.866;62.058;61.139;60.12;58.996;57.755;56.432;
+12000;69.332;69.315;69.202;69.003;68.728;68.352;67.874;67.368;66.864;66.301;65.666;64.927;64.23;63.46;62.635;61.701;60.665;59.523;58.268;56.925;
+12500;70.087;70.049;69.932;69.729;69.447;69.064;68.577;68.062;67.546;66.97;66.322;65.605;64.862;64.075;63.242;62.291;61.237;60.074;58.802;57.439;
+13000;70.879;70.828;70.709;70.501;70.211;69.819;69.323;68.798;68.27;67.679;67.017;66.285;65.527;64.724;63.875;62.91;61.838;60.654;59.362;57.977;
+13500;71.717;71.713;71.537;71.321;71.026;70.625;70.115;69.581;69.039;68.432;67.753;67.006;66.232;65.411;64.542;63.557;62.468;61.263;59.95;58.54;
+14000;72.585;72.543;72.417;72.198;71.894;71.484;70.964;70.417;69.859;69.234;68.538;67.773;66.98;66.138;65.249;64.242;63.13;61.905;60.568;59.135;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;67.887;67.866;67.787;67.626;67.404;67.074;66.652;66.287;65.852;65.264;64.619;63.942;63.142;62.165;60.915;59.232;56.891;53.02;45.31;-9999;
+500;67.634;67.622;67.544;67.384;67.161;66.828;66.407;66.035;65.604;65.021;64.384;63.716;62.932;61.977;60.76;59.141;56.917;53.341;46.666;-9999;
+1000;67.414;67.394;67.311;67.151;66.928;66.594;66.171;65.799;65.368;64.786;64.15;63.489;62.722;61.785;60.603;59.044;56.931;53.613;47.718;-9999;
+1500;67.194;67.173;67.087;66.927;66.705;66.371;65.95;65.574;65.142;64.565;63.927;63.265;62.511;61.597;60.446;58.944;56.935;53.841;48.595;-9999;
+2000;67.01;66.981;66.893;66.724;66.49;66.149;65.727;65.354;64.924;64.357;63.72;63.059;62.31;61.409;60.29;58.842;56.885;54.032;49.33;-9999;
+2500;66.788;66.843;66.757;66.587;66.354;66.006;65.567;65.176;64.728;64.151;63.519;62.862;62.127;61.237;60.141;58.744;56.879;54.193;49.969;-9999;
+3000;66.742;66.717;66.628;66.458;66.225;65.877;65.439;65.046;64.6;64.026;63.372;62.693;61.948;61.076;60.003;58.648;56.848;54.364;50.466;-9999;
+3500;66.696;66.597;66.506;66.336;66.103;65.755;65.318;64.923;64.479;63.911;63.263;62.589;61.848;60.963;59.879;58.55;56.791;54.453;50.924;45.553;
+4000;66.511;66.481;66.391;66.221;65.987;65.641;65.206;64.811;64.368;63.809;63.13;62.491;61.761;60.891;59.829;58.486;56.743;54.525;51.256;46.228;
+4500;66.33;66.379;66.289;66.118;65.885;65.538;65.104;64.707;64.266;63.712;63.042;62.401;61.679;60.822;59.765;58.455;56.78;54.611;51.55;47.044;
+5000;66.327;66.299;66.207;66.035;65.801;65.452;65.017;64.613;64.153;63.625;62.961;62.309;61.59;60.74;59.707;58.431;56.815;54.752;51.864;47.761;
+5500;66.328;66.229;66.136;65.963;65.728;65.38;64.946;64.533;64.065;63.533;62.867;62.214;61.503;60.667;59.654;58.411;56.851;54.882;52.187;48.417;
+6000;66.194;66.164;66.07;65.895;65.656;65.302;64.863;64.451;63.982;63.456;62.791;62.131;61.411;60.599;59.608;58.395;56.89;54.973;52.524;49.046;
+6500;66.19;66.158;66.058;65.875;65.625;65.26;64.807;64.378;63.91;63.389;62.742;62.069;61.346;60.544;59.571;58.388;56.93;55.101;52.794;49.615;
+7000;66.197;66.171;66.071;65.886;65.636;65.27;64.817;64.385;63.896;63.363;62.701;62.019;61.298;60.511;59.551;58.388;56.976;55.22;53.047;50.13;
+7500;66.216;66.201;66.099;65.914;65.663;65.295;64.844;64.407;63.917;63.388;62.728;62.004;61.296;60.502;59.549;58.413;57.037;55.349;53.294;50.611;
+8000;66.283;66.25;66.147;65.961;65.708;65.34;64.888;64.448;63.954;63.428;62.77;62.05;61.341;60.561;59.612;58.479;57.115;55.49;53.539;51.056;
+8500;66.368;66.32;66.216;66.029;65.775;65.405;64.953;64.509;64.038;63.489;62.833;62.116;61.405;60.636;59.701;58.594;57.267;55.684;53.808;51.507;
+9000;66.475;66.413;66.309;66.12;65.865;65.494;65.042;64.593;64.12;63.575;62.919;62.203;61.49;60.73;59.806;58.725;57.437;55.903;54.083;51.965;
+9500;66.606;66.537;66.432;66.242;65.984;65.611;65.158;64.703;64.229;63.685;63.029;62.314;61.596;60.843;59.932;58.873;57.62;56.135;54.405;52.403;
+10000;66.766;66.694;66.588;66.396;66.135;65.76;65.305;64.844;64.368;63.823;63.166;62.45;61.769;60.981;60.08;59.037;57.817;56.384;54.736;52.834;
+10500;66.924;66.89;66.78;66.586;66.323;65.947;65.489;65.023;64.542;63.995;63.336;62.618;61.93;61.145;60.251;59.224;58.038;56.66;55.075;53.263;
+11000;67.121;67.129;67.018;66.823;66.556;66.177;65.716;65.242;64.754;64.203;63.54;62.804;62.123;61.34;60.453;59.442;58.29;56.955;55.421;53.699;
+11500;67.855;67.831;67.717;67.517;67.245;66.858;66.387;65.905;65.406;64.845;64.171;63.426;62.729;61.932;61.028;59.999;58.826;57.478;55.926;54.176;
+12000;68.628;68.576;68.46;68.254;67.975;67.581;67.1;66.608;66.097;65.522;64.836;64.079;63.367;62.554;61.635;60.587;59.391;58.026;56.45;54.677;
+12500;69.408;69.37;69.249;69.038;68.752;68.35;67.859;67.355;66.83;66.241;65.54;64.77;64.041;63.211;62.274;61.207;59.99;58.601;57.002;55.205;
+13000;70.234;70.219;70.094;69.876;69.582;69.17;68.668;68.153;67.613;67.006;66.289;65.502;64.756;63.907;62.949;61.863;60.625;59.208;57.586;55.763;
+13500;71.17;71.127;70.998;70.775;70.472;70.049;69.532;69.006;68.449;67.824;67.089;66.287;65.516;64.645;63.666;62.557;61.297;59.855;58.201;56.355;
+14000;72.17;72.102;71.97;71.74;71.427;70.992;70.461;69.92;69.345;68.7;67.944;67.123;66.328;65.432;64.428;63.295;62.01;60.543;58.857;56.982;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;66.644;66.605;66.519;66.374;66.154;65.834;65.453;65.058;64.587;63.978;63.323;62.616;61.747;60.623;59.071;56.922;53.111;44.351;-9999;-9999;
+500;66.424;66.39;66.248;66.075;65.852;65.555;65.176;64.789;64.341;63.736;63.096;62.4;61.551;60.455;58.962;56.912;53.372;45.715;-9999;-9999;
+1000;66.116;66.101;66.032;65.871;65.656;65.33;64.949;64.563;64.115;63.509;62.867;62.185;61.354;60.289;58.853;56.884;53.59;47.01;-9999;-9999;
+1500;65.907;65.888;65.814;65.654;65.44;65.114;64.733;64.348;63.902;63.3;62.654;61.975;61.159;60.128;58.741;56.842;53.774;47.954;-9999;-9999;
+2000;65.653;65.734;65.653;65.486;65.261;64.921;64.524;64.139;63.698;63.103;62.451;61.79;60.98;59.968;58.629;56.747;53.923;48.706;-9999;-9999;
+2500;65.631;65.61;65.527;65.361;65.136;64.798;64.402;64.003;63.545;62.934;62.285;61.613;60.818;59.822;58.506;56.688;54.048;49.351;-9999;-9999;
+3000;65.517;65.495;65.41;65.245;65.022;64.683;64.286;63.888;63.434;62.828;62.181;61.49;60.677;59.668;58.376;56.632;54.176;49.908;-9999;-9999;
+3500;65.416;65.397;65.309;65.143;64.916;64.576;64.177;63.78;63.329;62.727;62.076;61.387;60.582;59.582;58.29;56.573;54.237;50.322;42.976;-9999;
+4000;65.32;65.308;65.211;65.055;64.828;64.484;64.076;63.672;63.216;62.612;61.968;61.286;60.493;59.514;58.258;56.587;54.309;50.674;43.78;-9999;
+4500;65.241;65.216;65.127;64.958;64.73;64.383;63.976;63.572;63.118;62.514;61.869;61.192;60.411;59.451;58.228;56.613;54.44;51.031;44.931;-9999;
+5000;65.168;65.129;65.04;64.87;64.64;64.294;63.885;63.481;63.029;62.429;61.787;61.111;60.336;59.394;58.202;56.641;54.565;51.393;46.02;-9999;
+5500;65.102;65.054;64.965;64.793;64.563;64.215;63.806;63.402;62.951;62.354;61.714;61.043;60.279;59.349;58.181;56.668;54.685;51.73;46.842;-9999;
+6000;65.085;65.054;64.959;64.778;64.536;64.176;63.752;63.333;62.884;62.294;61.653;60.986;60.232;59.319;58.179;56.708;54.809;52.045;47.617;-9999;
+6500;65.078;65.069;64.983;64.795;64.552;64.19;63.738;63.34;62.872;62.274;61.612;60.941;60.195;59.298;58.185;56.759;54.89;52.34;48.32;-9999;
+7000;65.142;65.112;65.014;64.831;64.586;64.222;63.77;63.367;62.897;62.306;61.645;60.96;60.201;59.297;58.202;56.818;55.023;52.657;48.923;-9999;
+7500;65.223;65.17;65.071;64.887;64.64;64.272;63.818;63.412;62.94;62.356;61.695;61.01;60.257;59.367;58.278;56.913;55.16;52.925;49.492;-9999;
+8000;65.281;65.25;65.15;64.964;64.716;64.346;63.89;63.479;63.008;62.427;61.727;61.076;60.329;59.45;58.386;57.059;55.368;53.225;50.058;45.347;
+8500;65.358;65.351;65.259;65.066;64.816;64.444;63.988;63.57;63.084;62.52;61.823;61.164;60.421;59.551;58.509;57.215;55.588;53.537;50.607;46.352;
+9000;65.523;65.49;65.386;65.199;64.944;64.569;64.112;63.687;63.197;62.639;61.943;61.276;60.535;59.671;58.646;57.39;55.823;53.853;51.13;47.332;
+9500;65.719;65.656;65.552;65.36;65.103;64.728;64.267;63.839;63.344;62.785;62.091;61.411;60.655;59.813;58.805;57.589;56.075;54.141;51.634;48.167;
+10000;65.949;65.861;65.755;65.561;65.303;64.926;64.462;64.023;63.52;62.961;62.266;61.579;60.819;59.991;58.997;57.809;56.336;54.466;52.166;48.981;
+10500;66.219;66.114;66.005;65.808;65.545;65.163;64.693;64.248;63.735;63.178;62.5;61.79;61.024;60.202;59.218;58.054;56.603;54.817;52.65;49.743;
+11000;66.535;66.416;66.304;66.104;65.835;65.45;64.979;64.524;64.004;63.444;62.76;62.008;61.27;60.451;59.471;58.306;56.903;55.188;53.14;50.473;
+11500;67.197;67.18;67.064;66.858;66.582;66.187;65.704;65.238;64.704;64.13;63.432;62.665;61.912;61.076;60.082;58.911;57.487;55.745;53.662;50.943;
+12000;67.902;67.995;67.876;67.665;67.381;66.976;66.479;66;65.451;64.859;64.147;63.363;62.593;61.739;60.726;59.544;58.114;56.337;54.216;51.444;
+12500;68.906;68.867;68.743;68.525;68.233;67.819;67.312;66.817;66.251;65.641;64.909;64.105;63.318;62.442;61.409;60.206;58.764;56.963;54.805;51.981;
+13000;69.974;69.802;69.674;69.448;69.147;68.723;68.202;67.695;67.112;66.48;65.729;64.94;64.088;63.193;62.137;60.91;59.456;57.63;55.434;52.558;
+13500;70.856;70.812;70.678;70.444;70.131;69.695;69.159;68.635;68.033;67.38;66.608;65.797;64.92;63.995;62.913;61.662;60.182;58.351;56.108;53.181;
+14000;71.81;71.905;71.766;71.523;71.198;70.747;70.19;69.651;69.025;68.349;67.553;66.718;65.817;64.861;63.746;62.468;60.96;59.114;56.832;53.858;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;64.963;64.938;64.86;64.722;64.514;64.187;63.826;63.47;63.02;62.425;61.765;61.004;60.042;58.728;56.815;53.529;44.975;-9999;-9999;-9999;
+500;64.801;64.783;64.688;64.55;64.34;64.014;63.651;63.284;62.84;62.249;61.601;60.856;59.916;58.64;56.774;53.718;46.19;-9999;-9999;-9999;
+1000;64.631;64.612;64.53;64.389;64.179;63.854;63.49;63.117;62.673;62.081;61.435;60.705;59.787;58.541;56.731;53.886;47.302;-9999;-9999;-9999;
+1500;64.463;64.46;64.375;64.233;64.024;63.699;63.335;62.959;62.52;61.931;61.286;60.553;59.642;58.423;56.681;53.948;48.177;-9999;-9999;-9999;
+2000;64.409;64.388;64.297;64.144;63.924;63.586;63.207;62.811;62.366;61.775;61.13;60.403;59.501;58.31;56.6;54.053;48.882;-9999;-9999;-9999;
+2500;64.367;64.351;64.225;64.071;63.849;63.504;63.118;62.72;62.268;61.659;60.996;60.259;59.374;58.21;56.555;54.125;49.443;-9999;-9999;-9999;
+3000;64.265;64.244;64.167;63.994;63.772;63.426;63.04;62.644;62.189;61.579;60.922;60.19;59.292;58.127;56.504;54.175;49.931;-9999;-9999;-9999;
+3500;64.171;64.176;64.096;63.925;63.702;63.354;62.969;62.574;62.124;61.518;60.859;60.132;59.249;58.097;56.496;54.222;50.297;-9999;-9999;-9999;
+4000;64.139;64.116;64.033;63.862;63.64;63.29;62.903;62.512;62.065;61.462;60.808;60.082;59.197;58.05;56.508;54.336;50.676;42.308;-9999;-9999;
+4500;64.116;64.101;63.965;63.81;63.586;63.233;62.846;62.458;62.007;61.399;60.74;60.021;59.149;58.038;56.539;54.455;51.062;43.699;-9999;-9999;
+5000;64.054;63.94;63.909;63.687;63.509;63.162;62.775;62.387;61.937;61.331;60.676;59.967;59.11;58.026;56.574;54.575;51.409;44.921;-9999;-9999;
+5500;64.013;63.988;63.896;63.722;63.491;63.132;62.729;62.326;61.878;61.275;60.609;59.923;59.08;58.02;56.612;54.692;51.724;45.971;-9999;-9999;
+6000;64.041;64.014;63.922;63.745;63.513;63.151;62.747;62.343;61.876;61.258;60.573;59.889;59.06;58.023;56.659;54.814;52.015;46.886;-9999;-9999;
+6500;64.083;64.057;63.964;63.786;63.552;63.188;62.784;62.379;61.911;61.295;60.607;59.918;59.078;58.04;56.714;54.94;52.332;47.626;-9999;-9999;
+7000;64.142;64.129;64.013;63.848;63.61;63.249;62.841;62.432;61.964;61.349;60.683;59.977;59.15;58.131;56.823;55.05;52.606;48.372;-9999;-9999;
+7500;64.236;64.207;64.112;63.93;63.692;63.332;62.919;62.508;62.037;61.423;60.757;60.055;59.236;58.236;56.966;55.266;52.921;49.054;-9999;-9999;
+8000;64.354;64.32;64.224;64.04;63.799;63.44;63.023;62.606;62.133;61.519;60.852;60.15;59.338;58.359;57.125;55.489;53.237;49.688;43.714;-9999;
+8500;64.497;64.464;64.366;64.18;63.939;63.577;63.154;62.731;62.255;61.639;60.972;60.272;59.468;58.506;57.301;55.709;53.556;50.283;44.636;-9999;
+9000;64.67;64.644;64.545;64.359;64.114;63.745;63.318;62.889;62.409;61.793;61.123;60.422;59.623;58.674;57.495;55.933;53.884;50.85;45.864;-9999;
+9500;64.876;64.869;64.767;64.577;64.328;63.958;63.523;63.087;62.601;61.982;61.307;60.603;59.808;58.865;57.691;56.185;54.224;51.4;46.988;-9999;
+10000;65.121;65.111;65.045;64.846;64.59;64.214;63.773;63.328;62.834;62.212;61.531;60.813;60.012;59.068;57.92;56.462;54.579;51.94;47.955;-9999;
+10500;65.508;65.474;65.365;65.167;64.904;64.522;64.073;63.614;63.111;62.478;61.78;61.054;60.25;59.311;58.181;56.767;54.919;52.482;48.856;-9999;
+11000;65.955;65.866;65.753;65.549;65.279;64.879;64.413;63.942;63.424;62.786;62.078;61.341;60.534;59.597;58.482;57.107;55.336;53.069;49.741;-9999;
+11500;66.705;66.701;66.584;66.374;66.095;65.695;65.198;64.735;64.201;63.547;62.822;62.067;61.241;60.285;59.15;57.756;55.96;53.656;50.272;-9999;
+12000;67.639;67.6;67.478;67.26;66.971;66.56;66.05;65.58;65.032;64.363;63.616;62.842;61.994;61.017;59.86;58.444;56.624;54.284;50.849;-9999;
+12500;68.638;68.569;68.441;68.215;67.915;67.491;66.968;66.479;65.911;65.226;64.466;63.671;62.8;61.798;60.618;59.178;57.333;54.92;51.472;-9999;
+13000;69.66;69.616;69.482;69.247;68.935;68.498;67.96;67.449;66.858;66.151;65.374;64.559;63.664;62.636;61.429;59.963;58.093;55.643;52.157;-9999;
+13500;70.767;70.752;70.612;70.366;70.041;69.59;69.034;68.5;67.883;67.15;66.348;65.507;64.588;63.538;62.301;60.807;58.912;56.427;52.958;-9999;
+14000;72.042;71.994;71.846;71.588;71.244;70.777;70.203;69.642;68.996;68.235;67.404;66.531;65.578;64.503;63.245;61.718;59.795;57.278;53.794;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;63.106;63.084;62.998;62.868;62.722;62.452;62.121;61.774;61.288;60.678;59.971;59.115;57.972;56.304;53.511;46.539;-9999;-9999;-9999;-9999;
+500;62.969;62.949;62.861;62.724;62.575;62.301;61.966;61.616;61.132;60.522;59.827;58.989;57.877;56.241;53.624;47.537;-9999;-9999;-9999;-9999;
+1000;62.838;62.82;62.732;62.588;62.432;62.153;61.816;61.466;60.983;60.372;59.681;58.862;57.781;56.207;53.724;48.342;-9999;-9999;-9999;-9999;
+1500;62.739;62.721;62.628;62.474;62.305;62.022;61.68;61.327;60.848;60.239;59.553;58.737;57.682;56.171;53.872;48.953;-9999;-9999;-9999;-9999;
+2000;62.602;62.677;62.581;62.427;62.257;61.962;61.602;61.236;60.74;60.115;59.434;58.633;57.595;56.127;53.928;49.421;-9999;-9999;-9999;-9999;
+2500;62.654;62.636;62.539;62.387;62.214;61.917;61.556;61.192;60.699;60.073;59.372;58.552;57.518;56.098;53.969;49.953;-9999;-9999;-9999;-9999;
+3000;62.715;62.602;62.503;62.384;62.18;61.879;61.521;61.153;60.665;60.043;59.35;58.542;57.516;56.106;54.021;50.333;-9999;-9999;-9999;-9999;
+3500;62.591;62.577;62.475;62.354;62.151;61.848;61.489;61.121;60.636;60.019;59.334;58.538;57.533;56.162;54.133;50.679;-9999;-9999;-9999;-9999;
+4000;62.579;62.56;62.456;62.333;62.132;61.826;61.465;61.098;60.616;60.002;59.323;58.54;57.555;56.224;54.254;51.049;-9999;-9999;-9999;-9999;
+4500;62.578;62.552;62.447;62.323;62.122;61.814;61.448;61.082;60.604;59.993;59.32;58.547;57.582;56.291;54.406;51.391;43.624;-9999;-9999;-9999;
+5000;62.631;62.608;62.503;62.361;62.152;61.833;61.448;61.078;60.603;59.994;59.325;58.563;57.617;56.359;54.554;51.702;44.926;-9999;-9999;-9999;
+5500;62.699;62.682;62.582;62.438;62.23;61.906;61.516;61.136;60.647;60.024;59.342;58.587;57.658;56.435;54.681;51.909;45.997;-9999;-9999;-9999;
+6000;62.787;62.772;62.698;62.531;62.321;61.994;61.6;61.219;60.732;60.109;59.429;58.662;57.729;56.528;54.838;52.182;46.96;-9999;-9999;-9999;
+6500;62.894;62.891;62.813;62.645;62.432;62.101;61.701;61.319;60.832;60.21;59.534;58.776;57.859;56.684;55.043;52.523;47.787;-9999;-9999;-9999;
+7000;63.053;63.032;62.949;62.78;62.563;62.229;61.843;61.439;60.953;60.333;59.659;58.909;58.004;56.856;55.255;52.833;48.507;-9999;-9999;-9999;
+7500;63.239;63.2;63.113;62.944;62.723;62.386;61.996;61.588;61.1;60.48;59.806;59.061;58.168;57.037;55.47;53.142;49.214;-9999;-9999;-9999;
+8000;63.426;63.402;63.312;63.139;62.914;62.572;62.176;61.763;61.273;60.651;59.976;59.235;58.347;57.218;55.681;53.461;49.863;-9999;-9999;-9999;
+8500;63.647;63.639;63.545;63.368;63.138;62.79;62.388;61.969;61.476;60.851;60.165;59.419;58.533;57.405;55.879;53.787;50.445;43.457;-9999;-9999;
+9000;63.942;63.913;63.817;63.636;63.4;63.047;62.631;62.202;61.7;61.063;60.375;59.609;58.72;57.609;56.156;54.133;51.036;45.128;-9999;-9999;
+9500;64.284;64.224;64.124;63.936;63.692;63.326;62.903;62.454;61.941;61.293;60.566;59.824;58.936;57.848;56.437;54.508;51.613;46.446;-9999;-9999;
+10000;64.615;64.582;64.475;64.28;64.011;63.631;63.192;62.737;62.213;61.553;60.826;60.081;59.196;58.124;56.752;54.875;52.189;47.606;-9999;-9999;
+10500;65.007;64.966;64.855;64.651;64.385;63.994;63.543;63.076;62.541;61.875;61.138;60.388;59.504;58.442;57.105;55.307;52.777;48.634;-9999;-9999;
+11000;65.468;65.431;65.315;65.104;64.827;64.427;63.963;63.483;62.936;62.26;61.504;60.753;59.865;58.812;57.504;55.774;53.388;49.69;-9999;-9999;
+11500;66.423;66.378;66.256;66.036;65.748;65.335;64.856;64.357;63.791;63.096;62.323;61.546;60.637;59.562;58.232;56.48;54.058;50.329;-9999;-9999;
+12000;67.45;67.401;67.273;67.043;66.743;66.315;65.797;65.299;64.71;63.994;63.203;62.397;61.463;60.364;59.011;57.237;54.781;51.03;-9999;-9999;
+12500;68.561;68.51;68.372;68.125;67.82;67.377;66.841;66.318;65.702;64.963;64.148;63.313;62.351;61.225;59.849;58.052;55.564;51.802;-9999;-9999;
+13000;69.767;69.711;69.569;69.323;68.997;68.532;67.995;67.424;66.779;66.012;65.169;64.303;63.309;62.154;60.75;58.933;56.415;52.657;-9999;-9999;
+13500;71.084;71.002;70.851;70.593;70.248;69.782;69.219;68.626;67.951;67.149;66.276;65.375;64.347;63.159;61.727;59.887;57.344;53.612;-9999;-9999;
+14000;72.53;72.415;72.256;71.985;71.62;71.132;70.545;69.934;69.228;68.403;67.516;66.547;65.475;64.251;62.788;60.926;58.364;54.761;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;62.116;62.058;62.014;61.889;61.751;61.487;61.161;60.806;60.296;59.646;58.935;58.021;56.764;54.834;51.244;-9999;-9999;-9999;-9999;-9999;
+500;61.937;61.915;61.892;61.765;61.619;61.348;61.018;60.662;60.157;59.515;58.814;57.921;56.701;54.852;51.526;-9999;-9999;-9999;-9999;-9999;
+1000;61.76;61.832;61.782;61.654;61.506;61.233;60.897;60.535;60.029;59.389;58.692;57.819;56.637;54.866;51.732;49.786;-9999;-9999;-9999;-9999;
+1500;61.772;61.763;61.706;61.57;61.41;61.125;60.787;60.427;59.923;59.283;58.586;57.721;56.569;54.874;51.937;-9999;-9999;-9999;-9999;-9999;
+2000;61.758;61.739;61.679;61.543;61.38;61.093;60.74;60.367;59.851;59.188;58.499;57.645;56.513;54.873;52.128;45.202;-9999;-9999;-9999;-9999;
+2500;61.735;61.721;61.659;61.541;61.357;61.068;60.713;60.342;59.831;59.18;58.474;57.609;56.477;54.891;52.287;46.235;-9999;-9999;-9999;-9999;
+3000;61.722;61.711;61.646;61.526;61.34;61.049;60.693;60.324;59.817;59.187;58.473;57.622;56.515;54.926;52.434;47.048;-9999;-9999;-9999;-9999;
+3500;61.717;61.71;61.643;61.52;61.333;61.04;60.681;60.313;59.811;59.184;58.478;57.641;56.56;55.025;52.705;47.669;-9999;-9999;-9999;-9999;
+4000;61.721;61.704;61.648;61.524;61.334;61.039;60.679;60.311;59.812;59.189;58.49;57.667;56.61;55.126;52.887;48.258;-9999;-9999;-9999;-9999;
+4500;61.777;61.762;61.684;61.548;61.35;61.049;60.689;60.319;59.823;59.203;58.511;57.699;56.663;55.232;53.057;48.817;-9999;-9999;-9999;-9999;
+5000;61.851;61.854;61.773;61.636;61.432;61.116;60.741;60.353;59.846;59.228;58.541;57.74;56.728;55.347;53.225;49.395;-9999;-9999;-9999;-9999;
+5500;61.98;61.962;61.878;61.736;61.53;61.211;60.831;60.443;59.935;59.304;58.604;57.797;56.808;55.47;53.413;49.901;-9999;-9999;-9999;-9999;
+6000;62.105;62.087;62;61.855;61.648;61.324;60.942;60.55;60.044;59.418;58.724;57.927;56.938;55.619;53.625;50.35;-9999;-9999;-9999;-9999;
+6500;62.253;62.237;62.147;61.998;61.787;61.461;61.076;60.682;60.177;59.551;58.86;58.07;57.098;55.801;53.889;50.828;-9999;-9999;-9999;-9999;
+7000;62.428;62.411;62.32;62.168;61.952;61.622;61.231;60.834;60.33;59.703;59.014;58.229;57.265;55.985;54.161;51.282;44.653;-9999;-9999;-9999;
+7500;62.639;62.618;62.538;62.363;62.145;61.81;61.413;61.011;60.506;59.877;59.182;58.394;57.436;56.193;54.417;51.719;45.982;-9999;-9999;-9999;
+8000;62.886;62.854;62.767;62.591;62.367;62.027;61.621;61.209;60.698;60.059;59.363;58.58;57.633;56.42;54.715;52.154;47.089;-9999;-9999;-9999;
+8500;63.173;63.111;63.019;62.84;62.609;62.258;61.842;61.428;60.913;60.271;59.573;58.793;57.857;56.671;55.029;52.533;48.024;-9999;-9999;-9999;
+9000;63.506;63.407;63.309;63.126;62.889;62.532;62.108;61.686;61.166;60.52;59.819;59.04;58.112;56.948;55.365;53.007;48.877;-9999;-9999;-9999;
+9500;63.782;63.753;63.652;63.463;63.218;62.854;62.42;61.99;61.464;60.812;60.105;59.326;58.404;57.257;55.73;53.457;49.735;-9999;-9999;-9999;
+10000;64.116;64.161;64.055;63.86;63.606;63.234;62.788;62.348;61.813;61.154;60.439;59.656;58.738;57.608;56.127;53.94;50.543;-9999;-9999;-9999;
+10500;64.672;64.639;64.528;64.326;64.063;63.68;63.221;62.769;62.223;61.555;60.83;60.04;59.122;58.007;56.537;54.465;51.29;44.958;-9999;-9999;
+11000;65.314;65.201;65.085;64.875;64.6;64.207;63.733;63.265;62.706;62.025;61.287;60.488;59.566;58.434;56.984;55.026;52.089;46.744;-9999;-9999;
+11500;66.22;66.177;66.053;65.834;65.545;65.139;64.65;64.161;63.58;62.88;62.121;61.298;60.355;59.228;57.762;55.77;52.795;47.498;-9999;-9999;
+12000;67.204;67.232;67.101;66.872;66.569;66.147;65.642;65.129;64.522;63.801;63.019;62.17;61.201;60.052;58.584;56.571;53.565;-9999;-9999;-9999;
+12500;68.423;68.378;68.241;67.999;67.68;67.242;66.718;66.177;65.543;64.798;63.988;63.11;62.113;60.939;59.48;57.436;54.409;49.414;-9999;-9999;
+13000;69.752;69.631;69.484;69.23;68.892;68.436;67.89;67.319;66.653;65.879;65.04;64.128;63.1;61.899;60.421;58.378;55.337;-9999;-9999;-9999;
+13500;71.207;71.005;70.848;70.579;70.22;69.743;69.172;68.566;67.864;67.059;66.185;65.235;64.172;62.941;61.443;59.405;56.363;51.762;-9999;-9999;
+14000;72.575;72.519;72.35;72.064;71.68;71.18;70.581;69.935;69.193;68.351;67.437;66.445;65.342;64.077;62.557;60.532;57.505;53.597;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;61.027;61.002;60.97;60.844;60.706;60.444;60.124;59.754;59.231;58.588;57.812;56.83;55.453;53.114;47.942;-9999;-9999;-9999;-9999;-9999;
+500;60.915;60.891;60.872;60.746;60.604;60.339;60.011;59.636;59.114;58.477;57.717;56.758;55.402;53.208;48.462;-9999;-9999;-9999;-9999;-9999;
+1000;60.806;60.782;60.783;60.657;60.512;60.246;59.916;59.543;59.017;58.377;57.621;56.685;55.375;53.289;48.953;-9999;-9999;-9999;-9999;-9999;
+1500;60.803;60.794;60.741;60.606;60.45;60.17;59.827;59.458;58.937;58.302;57.55;56.62;55.343;53.366;49.449;-9999;-9999;-9999;-9999;-9999;
+2000;60.785;60.79;60.734;60.599;60.44;60.159;59.811;59.431;58.896;58.248;57.492;56.58;55.336;53.437;49.868;-9999;-9999;-9999;-9999;-9999;
+2500;60.804;60.793;60.735;60.599;60.437;60.154;59.805;59.427;58.896;58.253;57.5;56.581;55.342;53.513;50.192;-9999;-9999;-9999;-9999;-9999;
+3000;60.824;60.804;60.743;60.606;60.442;60.157;59.806;59.429;58.902;58.236;57.523;56.621;55.414;53.636;50.47;-9999;-9999;-9999;-9999;-9999;
+3500;60.836;60.825;60.762;60.641;60.457;60.169;59.818;59.44;58.918;58.258;57.552;56.666;55.49;53.784;50.766;-9999;-9999;-9999;-9999;-9999;
+4000;60.871;60.858;60.792;60.667;60.482;60.192;59.837;59.461;58.943;58.287;57.588;56.717;55.573;53.933;51.064;-9999;-9999;-9999;-9999;-9999;
+4500;60.962;60.947;60.874;60.738;60.539;60.235;59.867;59.493;58.977;58.326;57.633;56.78;55.67;54.074;51.341;44.925;-9999;-9999;-9999;-9999;
+5000;61.07;61.063;60.986;60.848;60.646;60.339;59.961;59.57;59.043;58.382;57.696;56.857;55.77;54.203;51.61;45.975;-9999;-9999;-9999;-9999;
+5500;61.196;61.201;61.12;60.979;60.774;60.465;60.086;59.694;59.17;58.512;57.81;56.965;55.886;54.335;51.873;46.89;-9999;-9999;-9999;-9999;
+6000;61.38;61.361;61.278;61.133;60.925;60.61;60.226;59.833;59.31;58.656;57.956;57.121;56.042;54.54;52.221;47.652;-9999;-9999;-9999;-9999;
+6500;61.589;61.542;61.456;61.308;61.098;60.775;60.391;59.992;59.469;58.831;58.11;57.272;56.216;54.764;52.522;48.334;-9999;-9999;-9999;-9999;
+7000;61.771;61.75;61.66;61.508;61.294;60.964;60.572;60.165;59.636;58.993;58.275;57.445;56.408;55.002;52.871;49.094;-9999;-9999;-9999;-9999;
+7500;61.991;61.97;61.876;61.719;61.499;61.162;60.766;60.354;59.824;59.18;58.464;57.64;56.62;55.256;53.226;49.773;-9999;-9999;-9999;-9999;
+8000;62.251;62.224;62.125;61.963;61.738;61.395;60.992;60.574;60.042;59.395;58.68;57.861;56.855;55.529;53.595;50.403;-9999;-9999;-9999;-9999;
+8500;62.553;62.535;62.414;62.248;62.016;61.667;61.255;60.831;60.295;59.644;58.927;58.112;57.12;55.827;53.979;50.972;-9999;-9999;-9999;-9999;
+9000;62.899;62.861;62.767;62.579;62.34;61.984;61.564;61.13;60.589;59.933;59.213;58.398;57.418;56.154;54.385;51.565;45.24;-9999;-9999;-9999;
+9500;63.287;63.258;63.157;62.965;62.718;62.354;61.923;61.48;60.932;60.269;59.543;58.727;57.754;56.518;54.818;52.158;46.71;-9999;-9999;-9999;
+10000;63.752;63.722;63.614;63.416;63.159;62.786;62.345;61.888;61.331;60.659;59.926;59.107;58.138;56.925;55.266;52.764;48.007;-9999;-9999;-9999;
+10500;64.297;64.264;64.15;63.944;63.676;63.292;62.837;62.366;61.797;61.114;60.37;59.545;58.576;57.383;55.782;53.398;49.168;-9999;-9999;-9999;
+11000;64.936;64.916;64.772;64.565;64.283;63.886;63.415;62.927;62.343;61.647;60.889;60.052;59.081;57.901;56.351;54.112;50.25;-9999;-9999;-9999;
+11500;65.927;65.919;65.793;65.568;65.272;64.86;64.371;63.86;63.253;62.536;61.754;60.894;59.899;58.7;57.136;54.897;51.034;-9999;-9999;-9999;
+12000;67.075;67.032;66.896;66.659;66.346;65.918;65.408;64.871;64.237;63.497;62.689;61.801;60.781;59.561;57.982;55.739;51.96;-9999;-9999;-9999;
+12500;68.325;68.247;68.1;67.85;67.518;67.071;66.538;65.971;65.307;64.54;63.703;62.783;61.734;60.491;58.898;56.631;52.945;-9999;-9999;-9999;
+13000;69.628;69.575;69.42;69.155;68.801;68.333;67.774;67.174;66.475;65.677;64.807;63.851;62.77;61.503;59.895;57.639;54.056;-9999;-9999;-9999;
+13500;71.069;71.042;70.875;70.593;70.213;69.721;69.133;68.493;67.755;66.922;66.013;65.017;63.9;62.606;60.986;58.748;55.318;-9999;-9999;-9999;
+14000;72.726;72.666;72.484;72.183;71.774;71.254;70.632;69.948;69.165;68.292;67.338;66.297;65.139;63.814;62.183;59.974;56.766;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;59.912;59.891;59.869;59.722;59.583;59.326;59.001;58.606;58.075;57.41;56.593;55.538;53.971;51.064;47.783;-9999;-9999;-9999;-9999;-9999;
+500;59.817;59.791;59.777;59.649;59.507;59.247;58.921;58.527;57.992;57.326;56.525;55.493;53.987;51.249;48.302;-9999;-9999;-9999;-9999;-9999;
+1000;59.726;59.701;59.712;59.584;59.441;59.179;58.853;58.462;57.926;57.264;56.465;55.452;54.005;51.414;48.789;-9999;-9999;-9999;-9999;-9999;
+1500;59.761;59.753;59.702;59.567;59.413;59.139;58.797;58.404;57.871;57.215;56.426;55.425;54.024;51.626;45.663;-9999;-9999;-9999;-9999;-9999;
+2000;59.792;59.769;59.716;59.58;59.424;59.148;58.807;58.411;57.865;57.197;56.4;55.416;54.054;51.769;46.458;-9999;-9999;-9999;-9999;-9999;
+2500;59.806;59.795;59.739;59.603;59.444;59.166;58.822;58.43;57.888;57.227;56.44;55.456;54.082;51.905;47.076;-9999;-9999;-9999;-9999;-9999;
+3000;59.821;59.83;59.772;59.635;59.472;59.193;58.846;58.457;57.918;57.263;56.488;55.524;54.197;52.088;47.551;-9999;-9999;-9999;-9999;-9999;
+3500;59.887;59.876;59.816;59.677;59.511;59.229;58.881;58.493;57.956;57.306;56.542;55.604;54.319;52.285;48.14;-9999;-9999;-9999;-9999;-9999;
+4000;59.958;59.943;59.874;59.731;59.562;59.277;58.925;58.539;58.005;57.364;56.612;55.691;54.442;52.481;48.69;-9999;-9999;-9999;-9999;-9999;
+4500;60.189;60.074;60.003;59.868;59.669;59.37;59.003;58.604;58.073;57.435;56.691;55.786;54.56;52.674;49.173;-9999;-9999;-9999;-9999;-9999;
+5000;60.239;60.222;60.148;60.01;59.807;59.505;59.131;58.73;58.186;57.536;56.782;55.883;54.67;52.869;49.631;-9999;-9999;-9999;-9999;-9999;
+5500;60.31;60.387;60.31;60.168;59.963;59.657;59.28;58.877;58.334;57.679;56.924;56.018;54.823;53.085;50.067;47.722;-9999;-9999;-9999;-9999;
+6000;60.586;60.568;60.488;60.343;60.134;59.821;59.437;59.031;58.484;57.829;57.079;56.186;55.02;53.347;50.47;48.811;-9999;-9999;-9999;-9999;
+6500;60.781;60.761;60.677;60.528;60.315;59.998;59.609;59.201;58.654;57.97;57.254;56.372;55.233;53.621;50.897;-9999;-9999;-9999;-9999;-9999;
+7000;61.005;60.986;60.896;60.743;60.525;60.202;59.807;59.395;58.848;58.168;57.45;56.579;55.464;53.908;51.318;45.678;-9999;-9999;-9999;-9999;
+7500;61.264;61.245;61.148;60.99;60.767;60.438;60.035;59.619;59.071;58.391;57.673;56.81;55.717;54.193;51.739;46.851;-9999;-9999;-9999;-9999;
+8000;61.555;61.536;61.439;61.275;61.047;60.709;60.301;59.877;59.326;58.647;57.926;57.069;55.995;54.524;52.234;47.807;-9999;-9999;-9999;-9999;
+8500;61.902;61.876;61.775;61.606;61.372;61.023;60.609;60.176;59.62;58.939;58.215;57.361;56.304;54.88;52.715;48.68;-9999;-9999;-9999;-9999;
+9000;62.295;62.269;62.162;61.987;61.744;61.387;60.967;60.521;59.957;59.289;58.545;57.692;56.648;55.266;53.215;49.577;-9999;-9999;-9999;-9999;
+9500;62.755;62.724;62.612;62.43;62.177;61.81;61.378;60.92;60.348;59.673;58.924;58.071;57.036;55.69;53.742;50.444;-9999;-9999;-9999;-9999;
+10000;63.29;63.27;63.133;62.942;62.679;62.302;61.857;61.384;60.802;60.117;59.36;58.503;57.476;56.16;54.304;51.274;-9999;-9999;-9999;-9999;
+10500;63.901;63.867;63.751;63.539;63.264;62.875;62.415;61.926;61.33;60.632;59.863;58.999;57.977;56.686;54.912;52.096;-9999;-9999;-9999;-9999;
+11000;64.626;64.591;64.465;64.241;63.948;63.545;63.067;62.559;61.947;61.233;60.449;59.573;58.55;57.28;55.579;52.908;47.744;-9999;-9999;-9999;
+11500;65.705;65.662;65.528;65.292;64.984;64.564;64.065;63.532;62.895;62.158;61.348;60.446;59.401;58.113;56.402;53.737;48.93;-9999;-9999;-9999;
+12000;66.883;66.859;66.684;66.442;66.114;65.674;65.153;64.59;63.924;63.162;62.323;61.392;60.322;59.015;57.298;54.649;-9999;-9999;-9999;-9999;
+12500;68.176;68.15;67.96;67.702;67.351;66.89;66.342;65.745;65.047;64.256;63.384;62.421;61.322;59.998;58.275;55.656;-9999;-9999;-9999;-9999;
+13000;69.589;69.535;69.368;69.09;68.712;68.227;67.649;67.013;66.278;65.453;64.543;63.542;62.412;61.07;59.344;56.774;-9999;-9999;-9999;-9999;
+13500;71.161;71.104;70.923;70.625;70.217;69.704;69.091;68.41;67.633;66.767;65.811;64.767;63.602;62.244;60.52;58.07;-9999;-9999;-9999;-9999;
+14000;72.919;72.851;72.654;72.333;71.889;71.344;70.689;69.957;69.125;68.213;67.208;66.115;64.911;63.53;61.82;59.477;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;58.698;58.671;58.644;58.498;58.356;58.101;57.757;57.324;56.772;56.081;55.236;54.137;52.376;48.539;-9999;-9999;-9999;-9999;-9999;-9999;
+500;58.626;58.599;58.599;58.454;58.309;58.052;57.719;57.283;56.723;56.033;55.199;54.124;52.435;48.903;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;58.558;58.593;58.564;58.417;58.271;58.012;57.68;57.26;56.7;56.006;55.169;54.119;52.496;49.215;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;58.631;58.606;58.571;58.435;58.279;58.009;57.666;57.247;56.687;55.999;55.17;54.114;52.552;49.486;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;58.71;58.664;58.612;58.475;58.317;58.045;57.703;57.288;56.725;56.028;55.19;54.145;52.621;49.714;46.293;-9999;-9999;-9999;-9999;-9999;
+2500;58.727;58.715;58.66;58.523;58.363;58.089;57.747;57.334;56.777;56.091;55.268;54.237;52.717;49.893;46.827;-9999;-9999;-9999;-9999;-9999;
+3000;58.791;58.779;58.721;58.583;58.419;58.143;57.8;57.389;56.841;56.166;55.357;54.346;52.853;50.148;47.343;-9999;-9999;-9999;-9999;-9999;
+3500;58.868;58.845;58.797;58.658;58.491;58.213;57.866;57.461;56.918;56.25;55.451;54.457;52.994;50.43;47.908;-9999;-9999;-9999;-9999;-9999;
+4000;58.961;58.974;58.905;58.757;58.576;58.295;57.944;57.541;57;56.338;55.551;54.55;53.138;50.749;45.205;-9999;-9999;-9999;-9999;-9999;
+4500;59.146;59.13;59.059;58.908;58.722;58.427;58.058;57.643;57.092;56.423;55.636;54.655;53.288;51.026;45.993;-9999;-9999;-9999;-9999;-9999;
+5000;59.353;59.287;59.215;59.076;58.874;58.572;58.197;57.783;57.222;56.545;55.752;54.776;53.435;51.303;46.72;-9999;-9999;-9999;-9999;-9999;
+5500;59.481;59.464;59.388;59.246;59.04;58.734;58.356;57.939;57.379;56.706;55.921;54.96;53.65;51.621;47.421;-9999;-9999;-9999;-9999;-9999;
+6000;59.683;59.664;59.585;59.438;59.228;58.918;58.535;58.116;57.556;56.885;56.107;55.161;53.889;51.954;48.177;-9999;-9999;-9999;-9999;-9999;
+6500;59.913;59.891;59.808;59.658;59.443;59.128;58.739;58.317;57.755;57.085;56.313;55.382;54.144;52.294;48.845;-9999;-9999;-9999;-9999;-9999;
+7000;60.177;60.156;60.064;59.908;59.688;59.367;58.972;58.546;57.982;57.312;56.544;55.625;54.418;52.647;49.469;-9999;-9999;-9999;-9999;-9999;
+7500;60.47;60.448;60.356;60.195;59.968;59.641;59.238;58.807;58.241;57.569;56.802;55.894;54.716;53.016;50.056;-9999;-9999;-9999;-9999;-9999;
+8000;60.809;60.787;60.691;60.523;60.29;59.954;59.543;59.106;58.535;57.86;57.094;56.195;55.042;53.408;50.63;48.529;-9999;-9999;-9999;-9999;
+8500;61.2;61.175;61.074;60.9;60.659;60.315;59.894;59.448;58.872;58.193;57.424;56.531;55.4;53.826;51.174;49.572;-9999;-9999;-9999;-9999;
+9000;61.651;61.623;61.516;61.334;61.084;60.729;60.298;59.841;59.26;58.548;57.802;56.911;55.798;54.279;51.769;46.493;-9999;-9999;-9999;-9999;
+9500;62.172;62.14;62.027;61.836;61.575;61.21;60.764;60.295;59.705;58.986;58.232;57.341;56.242;54.772;52.436;47.889;-9999;-9999;-9999;-9999;
+10000;62.774;62.753;62.618;62.418;62.145;61.765;61.307;60.821;60.218;59.491;58.725;57.831;56.742;55.302;53.163;49.06;-9999;-9999;-9999;-9999;
+10500;63.479;63.441;63.312;63.099;62.81;62.412;61.941;61.432;60.812;60.075;59.293;58.392;57.309;55.908;53.891;50.217;-9999;-9999;-9999;-9999;
+11000;64.318;64.273;64.135;63.909;63.601;63.183;62.689;62.147;61.504;60.756;59.953;59.039;57.957;56.591;54.674;51.378;-9999;-9999;-9999;-9999;
+11500;65.419;65.401;65.255;65.014;64.685;64.248;63.731;63.159;62.492;61.716;60.887;59.949;58.846;57.467;55.566;52.386;-9999;-9999;-9999;-9999;
+12000;66.629;66.603;66.483;66.225;65.872;65.413;64.869;64.267;63.571;62.761;61.901;60.929;59.806;58.423;56.541;53.471;-9999;-9999;-9999;-9999;
+12500;68.06;68.004;67.837;67.558;67.178;66.694;66.118;65.481;64.745;63.903;63.002;61.998;60.849;59.463;57.6;54.698;-9999;-9999;-9999;-9999;
+13000;69.578;69.516;69.332;69.034;68.622;68.109;67.493;66.812;66.033;65.153;64.21;63.169;61.991;60.599;58.769;56.097;-9999;-9999;-9999;-9999;
+13500;71.272;71.198;70.996;70.675;70.223;69.681;69.021;68.28;67.456;66.533;65.542;64.458;63.248;61.848;60.067;57.705;-9999;-9999;-9999;-9999;
+14000;73.176;73.08;72.857;72.508;72.007;71.424;70.721;69.913;69.038;68.066;67.018;65.885;64.639;63.233;61.513;59.569;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;57.42;57.392;57.364;57.225;57.039;56.762;56.399;55.946;55.385;54.674;53.793;52.631;50.6;46.919;-9999;-9999;-9999;-9999;-9999;-9999;
+500;57.366;57.338;57.322;57.195;57.021;56.741;56.379;55.929;55.371;54.665;53.798;52.667;50.721;45.835;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;57.361;57.336;57.298;57.167;57.008;56.728;56.367;55.921;55.363;54.662;53.804;52.703;50.829;46.241;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;57.458;57.392;57.353;57.202;57.046;56.756;56.387;55.933;55.366;54.672;53.829;52.747;50.928;46.598;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;57.471;57.446;57.402;57.263;57.098;56.812;56.445;55.996;55.432;54.732;53.881;52.783;51.028;47.036;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;57.501;57.544;57.487;57.347;57.18;56.893;56.52;56.063;55.508;54.815;53.974;52.879;51.157;47.457;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;57.654;57.629;57.581;57.44;57.272;56.99;56.619;56.165;55.598;54.904;54.056;52.976;51.324;47.898;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;57.824;57.737;57.678;57.537;57.369;57.093;56.722;56.268;55.697;54.994;54.147;53.087;51.494;48.31;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;57.891;57.866;57.807;57.656;57.473;57.186;56.82;56.369;55.8;55.102;54.266;53.21;51.667;48.678;45.259;-9999;-9999;-9999;-9999;-9999;
+4500;57.976;58.041;57.971;57.818;57.631;57.337;56.964;56.499;55.92;55.222;54.397;53.36;51.859;49.035;45.843;-9999;-9999;-9999;-9999;-9999;
+5000;58.245;58.227;58.154;57.999;57.808;57.509;57.139;56.674;56.097;55.393;54.564;53.535;52.078;49.388;46.532;-9999;-9999;-9999;-9999;-9999;
+5500;58.54;58.436;58.36;58.202;58.005;57.702;57.316;56.868;56.29;55.59;54.769;53.759;52.347;49.819;47.199;-9999;-9999;-9999;-9999;-9999;
+6000;58.692;58.672;58.592;58.442;58.228;57.919;57.529;57.083;56.505;55.807;54.993;53.999;52.63;50.261;47.896;-9999;-9999;-9999;-9999;-9999;
+6500;58.875;58.937;58.853;58.699;58.48;58.165;57.77;57.323;56.743;56.046;55.238;54.26;52.93;50.731;45.73;-9999;-9999;-9999;-9999;-9999;
+7000;59.259;59.237;59.149;58.989;58.764;58.442;58.043;57.593;57.009;56.313;55.51;54.544;53.26;51.175;46.612;-9999;-9999;-9999;-9999;-9999;
+7500;59.688;59.576;59.484;59.318;59.086;58.757;58.35;57.897;57.309;56.611;55.811;54.857;53.607;51.631;47.483;-9999;-9999;-9999;-9999;-9999;
+8000;59.99;59.963;59.866;59.693;59.453;59.115;58.699;58.242;57.648;56.947;56.149;55.203;53.983;52.106;48.389;-9999;-9999;-9999;-9999;-9999;
+8500;60.346;60.405;60.302;60.121;59.872;59.525;59.098;58.632;58.034;57.326;56.527;55.589;54.395;52.608;49.272;-9999;-9999;-9999;-9999;-9999;
+9000;60.942;60.911;60.802;60.612;60.352;59.994;59.555;59.078;58.472;57.757;56.955;56.021;54.849;53.148;50.098;-9999;-9999;-9999;-9999;-9999;
+9500;61.62;61.494;61.378;61.179;60.907;60.536;60.081;59.59;58.974;58.251;57.44;56.507;55.355;53.731;50.903;-9999;-9999;-9999;-9999;-9999;
+10000;62.216;62.178;62.052;61.838;61.546;61.162;60.69;60.181;59.552;58.817;57.996;57.06;55.922;54.368;51.719;-9999;-9999;-9999;-9999;-9999;
+10500;62.928;62.981;62.846;62.619;62.31;61.904;61.405;60.867;60.221;59.471;58.634;57.692;56.565;55.07;52.536;50.735;-9999;-9999;-9999;-9999;
+11000;63.961;63.916;63.771;63.529;63.198;62.773;62.251;61.688;61.014;60.236;59.374;58.424;57.303;55.861;53.515;51.857;-9999;-9999;-9999;-9999;
+11500;65.163;65.106;64.95;64.692;64.336;63.889;63.336;62.736;62.031;61.222;60.332;59.354;58.217;56.774;54.497;52.761;-9999;-9999;-9999;-9999;
+12000;66.489;66.46;66.25;65.97;65.587;65.116;64.523;63.878;63.142;62.3;61.38;60.372;59.212;57.788;55.583;53.781;-9999;-9999;-9999;-9999;
+12500;67.959;67.87;67.687;67.383;66.96;66.461;65.83;65.136;64.364;63.485;62.529;61.488;60.304;58.896;56.789;54.883;-9999;-9999;-9999;-9999;
+13000;69.558;69.485;69.289;68.951;68.486;67.946;67.272;66.527;65.714;64.795;63.796;62.717;61.511;60.12;58.136;-9999;-9999;-9999;-9999;-9999;
+13500;71.361;71.29;71.076;70.703;70.183;69.603;68.878;68.074;67.214;66.247;65.198;64.077;62.847;61.474;59.65;57.494;-9999;-9999;-9999;-9999;
+14000;73.416;73.319;73.073;72.663;72.086;71.462;70.678;69.805;68.89;67.866;66.76;65.59;64.334;62.979;61.364;59.185;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;56.088;55.959;55.891;55.729;55.524;55.239;54.865;54.394;53.827;53.097;52.197;50.978;48.317;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;55.995;55.967;55.907;55.752;55.547;55.26;54.886;54.418;53.855;53.138;52.252;51.042;48.544;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;56.055;56.029;55.95;55.792;55.582;55.294;54.923;54.457;53.895;53.184;52.308;51.103;48.761;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;56.228;56.119;56.044;55.881;55.673;55.379;55;54.527;53.956;53.239;52.359;51.171;48.962;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;56.228;56.202;56.132;55.976;55.77;55.476;55.099;54.628;54.058;53.328;52.434;51.251;49.166;45.546;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;56.241;56.287;56.223;56.062;55.858;55.564;55.187;54.718;54.146;53.425;52.543;51.385;49.393;45.924;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;56.397;56.372;56.315;56.158;55.952;55.657;55.28;54.815;54.245;53.53;52.659;51.525;49.628;45.055;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;56.572;56.479;56.421;56.263;56.057;55.761;55.384;54.92;54.352;53.644;52.783;51.672;49.86;45.54;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;56.656;56.63;56.569;56.408;56.189;55.88;55.499;55.037;54.47;53.767;52.917;51.827;50.09;46.038;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;56.77;56.831;56.759;56.595;56.368;56.05;55.661;55.187;54.611;53.904;53.061;51.993;50.329;46.582;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;57.071;57.045;56.975;56.815;56.585;56.263;55.862;55.377;54.799;54.095;53.251;52.195;50.606;47.208;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;57.402;57.296;57.218;57.058;56.824;56.498;56.094;55.608;55.021;54.306;53.47;52.432;50.906;47.783;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;57.592;57.566;57.486;57.323;57.089;56.758;56.35;55.862;55.274;54.562;53.721;52.679;51.222;48.33;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;57.814;57.874;57.787;57.619;57.384;57.047;56.634;56.143;55.554;54.842;54.008;52.979;51.558;48.837;45.753;-9999;-9999;-9999;-9999;-9999;
+7000;58.242;58.217;58.126;57.956;57.714;57.37;56.952;56.456;55.864;55.152;54.322;53.31;51.936;49.36;46.413;-9999;-9999;-9999;-9999;-9999;
+7500;58.722;58.604;58.509;58.333;58.086;57.734;57.308;56.805;56.209;55.496;54.669;53.67;52.341;49.947;47.239;-9999;-9999;-9999;-9999;-9999;
+8000;59.073;59.043;58.942;58.76;58.505;58.145;57.695;57.198;56.597;55.88;55.054;54.067;52.777;50.546;48.04;-9999;-9999;-9999;-9999;-9999;
+8500;59.485;59.543;59.435;59.245;58.982;58.611;58.15;57.643;57.034;56.311;55.484;54.506;53.25;51.164;48.913;-9999;-9999;-9999;-9999;-9999;
+9000;60.147;60.113;59.998;59.799;59.526;59.143;58.669;58.15;57.531;56.798;55.967;54.996;53.772;51.835;47.749;-9999;-9999;-9999;-9999;-9999;
+9500;60.916;60.779;60.654;60.439;60.149;59.753;59.263;58.728;58.096;57.352;56.515;55.547;54.35;52.514;48.909;-9999;-9999;-9999;-9999;-9999;
+10000;61.599;61.556;61.422;61.194;60.885;60.469;59.952;59.393;58.745;57.986;57.142;56.177;54.994;53.249;50.026;-9999;-9999;-9999;-9999;-9999;
+10500;62.401;62.458;62.314;62.071;61.742;61.308;60.77;60.184;59.511;58.727;57.864;56.892;55.725;54.051;51.26;-9999;-9999;-9999;-9999;-9999;
+11000;63.566;63.514;63.358;63.097;62.732;62.288;61.724;61.109;60.411;59.602;58.714;57.721;56.535;54.958;52.461;-9999;-9999;-9999;-9999;-9999;
+11500;64.849;64.764;64.597;64.308;63.909;63.434;62.837;62.185;61.459;60.619;59.701;58.685;57.505;55.961;53.617;-9999;-9999;-9999;-9999;-9999;
+12000;66.274;66.145;65.966;65.646;65.205;64.698;64.064;63.369;62.61;61.735;60.784;59.74;58.563;57.066;54.923;-9999;-9999;-9999;-9999;-9999;
+12500;67.759;67.684;67.474;67.126;66.642;66.101;65.422;64.678;63.88;62.966;61.976;60.903;59.721;58.285;56.409;-9999;-9999;-9999;-9999;-9999;
+13000;69.425;69.386;69.162;68.781;68.248;67.668;66.939;66.137;65.295;64.331;63.296;62.191;61.002;59.644;58.132;-9999;-9999;-9999;-9999;-9999;
+13500;71.413;71.316;71.061;70.642;70.052;69.426;68.637;67.768;66.874;65.854;64.765;63.625;62.429;61.163;60.11;-9999;-9999;-9999;-9999;-9999;
+14000;73.683;73.495;73.212;72.749;72.089;71.409;70.55;69.601;68.648;67.563;66.412;65.226;64.026;62.868;62.424;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;54.327;54.292;54.2;54.036;53.814;53.568;53.227;52.79;52.223;51.438;50.367;48.852;45.57;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;54.375;54.348;54.279;54.115;53.888;53.614;53.271;52.836;52.273;51.5;50.489;49.028;45.805;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;54.475;54.449;54.361;54.193;53.967;53.677;53.324;52.878;52.31;51.536;50.602;49.314;46.149;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;54.56;54.559;54.473;54.305;54.08;53.786;53.415;52.952;52.374;51.593;50.685;49.419;46.617;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;54.706;54.68;54.591;54.424;54.2;53.901;53.523;53.046;52.474;51.719;50.78;49.549;46.882;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;54.858;54.805;54.718;54.551;54.327;54.025;53.645;53.16;52.588;51.858;50.93;49.724;47.176;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;54.97;54.944;54.855;54.687;54.463;54.16;53.775;53.292;52.713;51.978;51.093;49.904;47.557;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;55.101;55.075;55.005;54.835;54.61;54.306;53.919;53.437;52.863;52.137;51.262;50.091;47.893;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;55.323;55.297;55.198;55.022;54.784;54.468;54.076;53.595;53.022;52.306;51.435;50.288;48.224;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;55.568;55.51;55.414;55.237;54.998;54.679;54.279;53.786;53.204;52.484;51.621;50.497;48.574;45.227;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;55.78;55.754;55.653;55.472;55.23;54.908;54.506;54.012;53.431;52.714;51.854;50.752;48.945;45.764;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;56.024;55.997;55.915;55.732;55.486;55.159;54.755;54.259;53.678;52.964;52.111;51.03;49.343;46.419;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;56.34;56.314;56.205;56.019;55.768;55.437;55.028;54.53;53.948;53.236;52.39;51.328;49.726;45.839;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;56.699;56.638;56.528;56.339;56.083;55.746;55.332;54.83;54.245;53.535;52.694;51.65;50.126;46.443;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;57.069;57.042;56.919;56.72;56.449;56.098;55.668;55.163;54.574;53.864;53.029;51.999;50.549;47.183;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;57.494;57.467;57.357;57.152;56.872;56.511;56.073;55.549;54.942;54.23;53.397;52.381;50.999;47.952;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;58.015;57.987;57.85;57.635;57.347;56.976;56.528;55.994;55.381;54.651;53.806;52.807;51.48;48.692;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;58.604;58.539;58.408;58.185;57.885;57.501;57.04;56.494;55.873;55.137;54.292;53.29;51.982;49.422;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;59.237;59.19;59.049;58.811;58.496;58.098;57.622;57.061;56.429;55.687;54.841;53.847;52.551;50.178;47.786;-9999;-9999;-9999;-9999;-9999;
+9500;59.986;59.956;59.806;59.553;59.216;58.796;58.294;57.713;57.069;56.314;55.46;54.472;53.19;51.04;48.69;-9999;-9999;-9999;-9999;-9999;
+10000;60.887;60.831;60.672;60.407;60.05;59.611;59.066;58.475;57.805;57.027;56.162;55.157;53.903;51.957;49.744;-9999;-9999;-9999;-9999;-9999;
+10500;61.926;61.846;61.675;61.392;61.013;60.551;59.979;59.36;58.669;57.859;56.954;55.936;54.717;52.944;50.813;-9999;-9999;-9999;-9999;-9999;
+11000;63.08;63.014;62.831;62.528;62.122;61.631;61.025;60.371;59.647;58.805;57.879;56.851;55.649;54.021;52.075;-9999;-9999;-9999;-9999;-9999;
+11500;64.407;64.321;64.121;63.794;63.354;62.833;62.189;61.494;60.738;59.865;58.91;57.862;56.668;55.139;53.215;-9999;-9999;-9999;-9999;-9999;
+12000;65.848;65.764;65.545;65.19;64.71;64.152;63.465;62.727;61.944;61.033;60.044;58.976;57.792;56.385;54.499;-9999;-9999;-9999;-9999;-9999;
+12500;67.465;67.378;67.138;66.749;66.223;65.621;64.882;64.092;63.266;62.324;61.3;60.208;59.037;57.779;55.956;-9999;-9999;-9999;-9999;-9999;
+13000;69.277;69.194;68.928;68.5;67.892;67.265;66.468;65.614;64.742;63.751;62.695;61.579;60.424;59.35;57.622;-9999;-9999;-9999;-9999;-9999;
+13500;71.371;71.25;70.954;70.48;69.8;69.119;68.251;67.324;66.395;65.347;64.241;63.11;61.977;61.131;59.535;-9999;-9999;-9999;-9999;-9999;
+14000;73.782;73.73;73.268;72.734;71.967;71.221;70.269;69.256;68.258;67.141;65.972;64.81;63.727;63.168;61.788;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;52.365;52.339;52.251;52.137;51.958;51.689;51.319;50.84;50.189;49.335;48.19;46.305;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;52.45;52.424;52.38;52.241;52.066;51.793;51.427;50.951;50.317;49.471;48.328;46.614;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;52.626;52.602;52.516;52.366;52.2;51.92;51.55;51.072;50.446;49.612;48.49;46.87;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;52.784;52.759;52.663;52.519;52.345;52.08;51.715;51.242;50.612;49.776;48.657;47.111;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;52.956;52.931;52.823;52.662;52.483;52.23;51.879;51.419;50.799;49.98;48.873;47.376;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;53.138;53.091;52.991;52.823;52.624;52.375;52.024;51.569;50.99;50.182;49.128;47.674;44.739;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;53.308;53.283;53.177;53.002;52.776;52.528;52.177;51.725;51.149;50.376;49.363;47.952;45.01;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;53.5;53.472;53.372;53.195;52.955;52.695;52.341;51.89;51.315;50.55;49.586;48.235;45.443;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;53.751;53.725;53.611;53.425;53.17;52.877;52.517;52.066;51.494;50.737;49.788;48.569;45.932;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;54.027;53.978;53.87;53.684;53.423;53.111;52.74;52.275;51.696;50.937;50.016;48.832;46.467;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;54.297;54.271;54.153;53.963;53.699;53.372;52.997;52.524;51.944;51.194;50.293;49.14;46.929;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;54.603;54.576;54.463;54.268;54;53.665;53.275;52.794;52.215;51.471;50.592;49.489;47.466;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;54.952;54.925;54.8;54.603;54.33;53.986;53.578;53.089;52.512;51.773;50.912;49.833;47.956;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;55.342;55.291;55.172;54.972;54.693;54.343;53.92;53.415;52.838;52.106;51.228;50.198;48.453;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;55.751;55.723;55.589;55.383;55.095;54.738;54.306;53.779;53.198;52.471;51.612;50.6;48.959;46.187;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;56.221;56.193;56.056;55.842;55.545;55.178;54.737;54.201;53.606;52.877;52.038;51.038;49.487;46.871;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;56.763;56.734;56.584;56.363;56.053;55.675;55.223;54.677;54.068;53.339;52.509;51.502;50.058;47.667;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;57.381;57.329;57.184;56.947;56.632;56.239;55.773;55.214;54.592;53.865;53.032;52.015;50.653;47.871;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;58.113;58.082;57.905;57.645;57.299;56.882;56.398;55.822;55.192;54.453;53.595;52.588;51.292;48.686;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;58.967;58.934;58.74;58.463;58.101;57.658;57.136;56.516;55.855;55.095;54.234;53.233;51.991;49.732;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;59.919;59.856;59.679;59.389;59.002;58.536;57.987;57.342;56.649;55.85;54.97;53.97;52.787;50.824;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;61.023;60.961;60.77;60.46;60.045;59.551;58.972;58.293;57.576;56.755;55.846;54.833;53.682;51.959;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;62.327;62.253;62.045;61.711;61.262;60.735;60.118;59.401;58.653;57.803;56.871;55.852;54.713;53.19;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;63.667;63.628;63.391;63.025;62.537;61.973;61.314;60.551;59.769;58.886;57.927;56.903;55.809;54.546;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;65.167;65.126;64.892;64.492;63.958;63.348;62.642;61.827;60.998;60.079;59.089;58.063;57.026;56.086;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;66.962;66.853;66.577;66.138;65.548;64.886;64.124;63.248;62.397;61.442;60.411;59.365;58.387;57.85;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;69.007;68.788;68.483;67.995;67.34;66.616;65.788;64.87;63.972;62.974;61.904;60.805;59.925;59.888;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;71.137;70.993;70.648;70.106;69.371;68.573;67.691;66.708;65.748;64.692;63.578;62.454;61.626;62.262;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;73.582;73.525;73.132;72.521;71.626;70.816;69.868;68.788;67.755;66.631;65.465;64.332;63.589;65.062;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;50.263;50.225;50.127;49.973;49.78;49.501;49.117;48.608;47.932;47.046;45.968;44.606;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;50.378;50.373;50.278;50.146;49.926;49.649;49.27;48.766;48.099;47.226;46.14;44.525;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;50.59;50.565;50.488;50.341;50.111;49.829;49.449;48.94;48.27;47.41;46.32;44.592;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;50.814;50.76;50.677;50.538;50.312;50.03;49.655;49.153;48.485;47.623;46.509;44.764;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;51.052;50.964;50.886;50.744;50.507;50.237;49.867;49.371;48.713;47.865;46.75;45.016;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;51.204;51.18;51.106;50.959;50.738;50.45;50.085;49.596;48.946;48.115;47.004;45.319;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;51.429;51.404;51.331;51.179;50.979;50.677;50.313;49.829;49.189;48.372;47.255;45.69;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;51.672;51.648;51.57;51.413;51.219;50.916;50.552;50.07;49.441;48.638;47.534;46.076;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;51.943;51.918;51.84;51.68;51.477;51.17;50.803;50.326;49.705;48.917;47.845;46.473;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;52.234;52.21;52.13;51.967;51.75;51.458;51.091;50.607;49.988;49.212;48.178;46.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;52.572;52.547;52.415;52.274;52.056;51.76;51.384;50.903;50.32;49.551;48.551;47.281;44.942;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;52.946;52.92;52.787;52.613;52.388;52.086;51.706;51.222;50.639;49.889;48.942;47.677;45.271;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;53.362;53.281;53.156;52.981;52.748;52.441;52.055;51.567;50.983;50.239;49.333;48.091;45.809;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;53.826;53.717;53.583;53.391;53.146;52.831;52.438;51.945;51.36;50.622;49.727;48.561;46.409;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;54.345;54.201;54.062;53.847;53.59;53.266;52.864;52.365;51.775;51.039;50.144;48.979;47.077;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;54.791;54.763;54.596;54.367;54.084;53.748;53.337;52.829;52.234;51.496;50.594;49.459;47.765;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;55.306;55.331;55.181;54.947;54.637;54.288;53.866;53.345;52.738;51.981;51.09;49.985;48.483;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;56.066;56.036;55.848;55.595;55.244;54.877;54.44;53.903;53.284;52.527;51.639;50.567;49.252;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;56.935;56.777;56.607;56.328;55.963;55.562;55.098;54.536;53.906;53.145;52.262;51.214;50.034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;57.73;57.698;57.482;57.183;56.796;56.359;55.867;55.279;54.629;53.856;52.971;51.949;50.885;49.591;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;58.662;58.682;58.485;58.17;57.756;57.279;56.754;56.138;55.469;54.684;53.793;52.787;51.813;50.604;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;59.95;59.914;59.66;59.317;58.871;58.348;57.789;57.135;56.439;55.636;54.734;53.739;52.836;51.701;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;61.472;61.432;61.037;60.659;60.174;59.613;58.999;58.299;57.571;56.741;55.821;54.858;53.987;54.044;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;62.742;62.701;62.421;62.01;61.478;60.89;60.247;59.505;58.743;57.886;56.95;55.962;55.205;56.219;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;64.171;64.127;63.974;63.523;62.946;62.329;61.64;60.844;60.042;59.153;58.199;57.188;56.605;58.833;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;66.174;66.045;65.725;65.236;64.62;63.946;63.197;62.335;61.488;60.562;59.589;58.601;58.169;62.012;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;68.472;68.072;67.711;67.192;66.513;65.768;64.947;64.01;63.107;62.139;61.144;60.186;59.947;65.938;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;70.573;70.516;70.026;69.458;68.665;67.832;66.924;65.898;64.932;63.914;62.895;61.975;61.986;63.621;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;73.299;73.116;72.68;72.039;71.131;70.19;69.176;68.043;67.001;65.923;64.877;64.008;64.343;67.078;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;47.856;47.803;47.712;47.538;47.334;47.054;46.657;46.127;45.438;44.6;43.841;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;48.03;48.006;47.882;47.753;47.543;47.253;46.844;46.337;45.661;44.823;44.003;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;48.309;48.264;48.17;47.998;47.788;47.495;47.1;46.573;45.888;45.045;44.199;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;48.557;48.533;48.429;48.247;48.041;47.746;47.353;46.831;46.154;45.298;44.409;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;48.82;48.777;48.653;48.54;48.3;48.001;47.614;47.094;46.426;45.575;44.651;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;49.082;49.058;48.95;48.809;48.565;48.268;47.885;47.369;46.705;45.861;44.909;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;49.364;49.322;49.199;49.075;48.84;48.544;48.158;47.652;46.992;46.162;45.176;44.073;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;49.652;49.628;49.515;49.373;49.126;48.83;48.446;47.944;47.291;46.475;45.46;44.188;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;49.981;49.956;49.838;49.647;49.408;49.13;48.747;48.249;47.603;46.801;45.764;44.422;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;50.335;50.311;50.189;49.995;49.768;49.467;49.079;48.578;47.939;47.151;46.117;44.768;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;50.719;50.695;50.564;50.391;50.143;49.831;49.444;48.947;48.314;47.531;46.475;45.187;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;51.116;51.092;50.967;50.776;50.553;50.221;49.834;49.339;48.71;47.925;46.896;45.69;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;51.552;51.514;51.398;51.201;50.976;50.639;50.251;49.756;49.133;48.345;47.344;46.224;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;52.016;51.991;51.865;51.662;51.43;51.09;50.699;50.203;49.574;48.795;47.818;46.767;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;52.526;52.501;52.368;52.166;51.89;51.565;51.174;50.669;50.043;49.277;48.322;47.289;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;53.104;53.077;52.926;52.716;52.422;52.077;51.677;51.163;50.559;49.797;48.864;47.835;46.843;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;53.772;53.744;53.556;53.331;53.022;52.655;52.233;51.707;51.101;50.354;49.451;48.424;47.335;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;54.548;54.427;54.282;54.046;53.708;53.307;52.869;52.324;51.709;50.958;50.085;49.07;48.079;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;55.334;55.303;55.114;54.84;54.499;54.075;53.607;53.028;52.394;51.637;50.775;49.792;48.985;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;56.25;56.238;56.059;55.768;55.401;54.951;54.448;53.848;53.193;52.425;51.574;50.601;49.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;57.324;57.352;57.153;56.84;56.439;55.958;55.424;54.787;54.11;53.331;52.479;51.539;51.105;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;58.731;58.694;58.435;58.086;57.644;57.126;56.553;55.878;55.172;54.38;53.516;52.617;52.346;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;60.29;60.25;59.937;59.55;59.059;58.492;57.872;57.148;56.409;55.593;54.714;53.834;53.696;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;61.719;61.677;61.387;60.964;60.418;59.798;59.132;58.358;57.584;56.745;55.87;55.051;55.252;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;63.446;63.401;63.022;62.548;61.938;61.256;60.533;59.711;58.902;58.036;57.153;56.411;57.004;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;65.413;65.207;64.86;64.338;63.648;62.89;62.115;61.23;60.379;59.488;58.591;57.939;59.024;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;67.671;67.351;66.956;66.396;65.578;64.742;63.894;62.94;62.036;61.117;60.225;59.667;61.373;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;70.012;69.955;69.368;68.716;67.784;66.857;65.922;64.873;63.907;62.954;62.074;61.634;64.128;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;72.721;72.659;72.135;71.388;70.34;69.283;68.237;67.074;66.035;65.044;64.179;63.89;67.405;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;45.063;45.042;44.904;44.761;44.537;44.232;43.836;43.302;42.651;42.203;43.96;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;45.352;45.332;45.16;45.053;44.83;44.513;44.123;43.585;42.931;42.401;43.471;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;45.633;45.632;45.484;45.329;45.138;44.825;44.426;43.891;43.226;42.618;43.034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;45.982;45.961;45.832;45.642;45.45;45.143;44.741;44.208;43.55;42.875;42.864;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;46.306;46.284;46.154;45.965;45.754;45.455;45.061;44.528;43.87;43.159;42.889;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;46.649;46.592;46.484;46.296;46.074;45.8;45.375;44.859;44.212;43.448;43.006;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;47.012;46.93;46.824;46.636;46.41;46.119;45.704;45.192;44.557;43.773;43.213;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;47.329;47.306;47.185;46.988;46.759;46.457;46.047;45.55;44.896;44.093;43.513;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;47.667;47.655;47.545;47.352;47.124;46.815;46.436;45.921;45.25;44.446;43.853;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;48.089;48.066;47.941;47.74;47.509;47.193;46.802;46.283;45.624;44.837;44.187;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;48.544;48.455;48.312;48.154;47.914;47.596;47.203;46.688;46.035;45.271;44.555;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;48.95;48.926;48.792;48.626;48.345;48.023;47.629;47.117;46.47;45.714;44.951;45.063;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;49.393;49.384;49.233;49.093;48.807;48.481;48.085;47.574;46.931;46.185;45.383;45.185;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;49.952;49.928;49.783;49.612;49.28;48.973;48.574;48.062;47.423;46.686;45.848;45.517;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;50.569;50.544;50.349;50.169;49.842;49.508;49.101;48.587;47.951;47.223;46.376;45.988;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;51.15;51.125;50.961;50.753;50.461;50.089;49.675;49.157;48.522;47.803;46.975;46.578;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;51.816;51.806;51.648;51.413;51.121;50.727;50.304;49.779;49.144;48.432;47.623;47.293;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;52.656;52.629;52.438;52.174;51.866;51.441;51.001;50.463;49.836;49.121;48.339;48.073;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;53.609;53.492;53.312;53.049;52.704;52.256;51.799;51.237;50.603;49.893;49.127;48.861;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;54.628;54.598;54.356;54.059;53.647;53.186;52.707;52.112;51.466;50.755;49.998;49.703;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;55.825;55.764;55.536;55.221;54.764;54.264;53.744;53.107;52.445;51.718;50.974;50.673;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;57.284;57.249;56.933;56.572;56.065;55.516;54.954;54.273;53.588;52.832;52.079;51.738;53.801;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;59.015;58.846;58.56;58.125;57.594;56.984;56.366;55.636;54.916;54.153;53.377;52.9;55.098;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;60.419;60.379;60.014;59.531;58.944;58.275;57.612;56.833;56.086;55.3;54.57;54.224;57.46;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;62.146;62.103;61.659;61.12;60.457;59.717;59;58.171;57.386;56.592;55.899;55.733;60.266;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;64.115;63.896;63.5;62.957;62.159;61.335;60.565;59.666;58.852;58.031;57.391;57.444;63.674;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;66.378;66.071;65.618;64.997;64.086;63.168;62.314;61.349;60.495;59.664;59.071;59.401;67.838;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;68.81;68.756;68.066;67.331;66.287;65.259;64.307;63.25;62.345;61.545;60.977;61.656;73.045;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;71.634;71.479;70.859;70.023;68.829;67.651;66.579;65.412;64.446;63.652;63.156;64.298;79.721;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/fuelflow.csv b/engine/test/stubs/V2527-A5/fuelflow.csv
new file mode 100644
index 00000000..da56f9d1
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/fuelflow.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.5981;1.6003;1.6056;1.6146;1.6276;1.6449;1.667;1.6942;1.7264;1.764;1.8085;1.8572;1.9116;1.9719;2.0383;2.1111;2.1904;2.2763;2.3685;2.4665;
+500;1.5203;1.5229;1.5281;1.5367;1.5492;1.5658;1.5869;1.6123;1.6425;1.6782;1.7197;1.7661;1.8179;1.8751;1.9383;2.0076;2.0833;2.1653;2.254;2.3487;
+1000;1.4454;1.4481;1.4531;1.4616;1.4738;1.4899;1.51;1.5342;1.5628;1.5961;1.6342;1.6786;1.7277;1.7822;1.8421;1.908;1.98;2.0584;2.1431;2.2343;
+1500;1.3737;1.3754;1.3803;1.3887;1.4007;1.4165;1.4359;1.4591;1.4865;1.518;1.5547;1.5952;1.6411;1.6927;1.7497;1.8123;1.8807;1.9552;2.0361;2.1232;
+2000;1.3027;1.3044;1.3094;1.3177;1.3296;1.345;1.364;1.3865;1.413;1.4429;1.4778;1.516;1.5588;1.607;1.6609;1.7203;1.7853;1.856;1.933;2.0161;
+2500;1.2333;1.235;1.2399;1.2483;1.2601;1.2752;1.2939;1.3159;1.3416;1.3706;1.4029;1.4402;1.4806;1.5256;1.576;1.632;1.6936;1.7608;1.8338;1.913;
+3000;1.1653;1.167;1.1719;1.1802;1.1918;1.2069;1.2252;1.247;1.2721;1.3002;1.3315;1.3672;1.4057;1.4481;1.4951;1.5476;1.6058;1.6693;1.7386;1.8137;
+3500;1.0994;1.101;1.1058;1.1139;1.1252;1.1398;1.1579;1.1794;1.2041;1.2316;1.2621;1.2967;1.3336;1.374;1.4183;1.4672;1.5217;1.5819;1.6472;1.7184;
+4000;1.0355;1.0371;1.0418;1.0496;1.0606;1.0748;1.0923;1.1132;1.1373;1.1645;1.1944;1.2282;1.2639;1.3026;1.3448;1.3908;1.4416;1.498;1.56;1.6271;
+4500;0.97398;0.97588;0.98039;0.98787;0.99839;1.012;1.0288;1.049;1.0722;1.0986;1.129;1.1613;1.1962;1.2337;1.2741;1.3179;1.3655;1.418;1.4763;1.5399;
+5000;0.91514;0.91671;0.92108;0.92831;0.93848;0.95164;0.9679;0.98725;1.0095;1.0348;1.064;1.0957;1.13;1.1667;1.2058;1.2478;1.293;1.3422;1.3963;1.4562;
+5500;0.85816;0.85961;0.86379;0.87076;0.88056;0.89326;0.90896;0.92758;0.94907;0.97343;1.0015;1.0319;1.0651;1.1012;1.1395;1.1801;1.2234;1.27;1.3205;1.3763;
+6000;0.80385;0.80458;0.80855;0.81524;0.82467;0.83689;0.852;0.86991;0.89059;0.91406;0.94117;0.97043;1.0025;1.0373;1.0746;1.1143;1.1562;1.2008;1.2485;1.3004;
+6500;0.75262;0.75373;0.75713;0.7624;0.77124;0.78273;0.79706;0.81424;0.8341;0.85731;0.88277;0.91095;0.94186;0.97546;1.0117;1.0504;1.091;1.134;1.1796;1.2285;
+7000;0.70646;0.70755;0.71074;0.71609;0.72365;0.73351;0.7454;0.76144;0.78008;0.80192;0.82637;0.85347;0.88322;0.9156;0.9506;0.98816;1.028;1.0695;1.1133;1.1599;
+7500;0.66266;0.66369;0.66669;0.67171;0.67881;0.68806;0.69956;0.71331;0.72906;0.74982;0.77278;0.79822;0.82659;0.85773;0.89143;0.92766;0.96635;1.0072;1.0496;1.0939;
+8000;0.6211;0.62166;0.62484;0.62956;0.63624;0.64494;0.65568;0.66854;0.68361;0.70094;0.72169;0.74611;0.77295;0.8022;0.83427;0.86912;0.90643;0.94611;0.98774;1.0308;
+8500;0.58159;0.58213;0.58512;0.5895;0.59577;0.60394;0.61404;0.6261;0.64015;0.65637;0.67527;0.69589;0.72161;0.74971;0.78013;0.81288;0.84848;0.8867;0.92722;0.9695;
+9000;0.54435;0.54506;0.54752;0.55163;0.55747;0.56509;0.57449;0.58575;0.59895;0.61415;0.63175;0.65133;0.67327;0.6991;0.72829;0.75976;0.79347;0.82938;0.86831;0.90952;
+9500;0.50914;0.5095;0.51191;0.51575;0.52121;0.5283;0.53707;0.54756;0.55987;0.57407;0.59055;0.60879;0.62926;0.65207;0.67835;0.70851;0.74088;0.77543;0.81209;0.85106;
+10000;0.47568;0.47639;0.4785;0.48204;0.48704;0.49352;0.50162;0.51173;0.52323;0.53649;0.5516;0.56863;0.58765;0.60885;0.63242;0.65918;0.69018;0.72334;0.75859;0.79588;
+10500;0.44405;0.44507;0.44705;0.45035;0.455;0.46103;0.46848;0.4774;0.4883;0.50066;0.51472;0.53059;0.54837;0.56811;0.58999;0.61417;0.64141;0.67314;0.70695;0.74279;
+11000;0.41486;0.41548;0.41732;0.4204;0.42473;0.43033;0.43726;0.44554;0.45525;0.46676;0.47987;0.49464;0.51118;0.5296;0.54996;0.57243;0.59718;0.62487;0.65721;0.69156;
+11500;0.38486;0.38556;0.38727;0.39012;0.39414;0.39934;0.40576;0.41345;0.42246;0.43284;0.44529;0.459;0.47436;0.49144;0.51033;0.53119;0.55416;0.57984;0.60976;0.64156;
+12000;0.35702;0.3578;0.35939;0.36203;0.36576;0.37059;0.37655;0.38368;0.39204;0.40168;0.41322;0.42594;0.44021;0.45603;0.47357;0.49292;0.51425;0.53809;0.56586;0.59538;
+12500;0.33156;0.33205;0.33352;0.33598;0.33944;0.34392;0.34945;0.35608;0.36383;0.37276;0.38347;0.39528;0.4085;0.42319;0.43946;0.45743;0.47722;0.49935;0.52513;0.55254;
+13000;0.30792;0.30821;0.30953;0.31181;0.31502;0.31918;0.32431;0.33046;0.33765;0.34594;0.35587;0.36683;0.37909;0.39272;0.40782;0.4245;0.44287;0.46342;0.48735;0.5128;
+13500;0.28559;0.28602;0.28728;0.28939;0.29237;0.29623;0.30099;0.30669;0.31337;0.32106;0.33027;0.34043;0.35181;0.36446;0.37848;0.39395;0.41101;0.43008;0.4523;0.47592;
+14000;0.26514;0.26553;0.2667;0.26866;0.27142;0.27499;0.2794;0.28467;0.29085;0.29797;0.3065;0.31594;0.3265;0.33824;0.35125;0.36562;0.38145;0.39915;0.41979;0.44171;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.3918;1.3931;1.3975;1.405;1.4158;1.43;1.448;1.4701;1.4968;1.5285;1.5659;1.6069;1.6521;1.7015;1.7555;1.8147;1.8794;1.9505;2.0291;2.1157;
+500;1.3228;1.324;1.3283;1.3355;1.3457;1.3593;1.3764;1.3976;1.4233;1.4545;1.4896;1.5292;1.5729;1.6205;1.6723;1.7286;1.7902;1.8573;1.9311;2.0126;
+1000;1.2561;1.2575;1.2616;1.2685;1.2783;1.2913;1.3078;1.3282;1.3528;1.3818;1.4161;1.4539;1.496;1.542;1.5918;1.6457;1.7043;1.7681;1.8376;1.914;
+1500;1.1919;1.1937;1.1976;1.2042;1.2136;1.226;1.2418;1.2614;1.2851;1.3136;1.3455;1.3815;1.4215;1.4658;1.5139;1.5657;1.6217;1.6823;1.7481;1.8199;
+2000;1.1311;1.1324;1.1361;1.1424;1.1514;1.1633;1.1785;1.1973;1.2199;1.2471;1.2776;1.3119;1.35;1.392;1.4382;1.4882;1.542;1.5998;1.6624;1.7302;
+2500;1.0724;1.0736;1.0772;1.0832;1.0918;1.1032;1.1177;1.1358;1.1574;1.1833;1.2123;1.245;1.2813;1.3213;1.3652;1.4131;1.4649;1.5203;1.5798;1.6443;
+3000;1.0158;1.0176;1.021;1.0267;1.0348;1.0457;1.0596;1.0768;1.0973;1.1212;1.1496;1.1806;1.2151;1.2532;1.2951;1.3407;1.3903;1.4435;1.5005;1.5616;
+3500;0.96322;0.96435;0.96755;0.97293;0.98065;0.99092;1.0041;1.0204;1.0398;1.0624;1.0893;1.1187;1.1514;1.1877;1.2275;1.271;1.3183;1.3695;1.4239;1.4823;
+4000;0.91253;0.91355;0.91658;0.92168;0.92898;0.93879;0.95131;0.96663;0.98484;1.0062;1.0316;1.0594;1.0904;1.1247;1.1625;1.2039;1.249;1.2978;1.3503;1.406;
+4500;0.86351;0.86515;0.86805;0.87298;0.88005;0.88943;0.90132;0.91567;0.93263;0.95265;0.97634;1.0026;1.0318;1.0643;1.1001;1.1394;1.1823;1.2288;1.2789;1.3326;
+5000;0.81756;0.8185;0.82132;0.8261;0.83297;0.84211;0.85354;0.86725;0.88336;0.90209;0.92333;0.94824;0.97582;1.0065;1.0403;1.0775;1.1181;1.1623;1.2101;1.2615;
+5500;0.77232;0.77327;0.77606;0.78077;0.7875;0.79641;0.80745;0.82066;0.83614;0.85388;0.87389;0.89708;0.92256;0.95116;0.9831;1.0182;1.0566;1.0985;1.1439;1.1928;
+6000;0.72838;0.72931;0.73208;0.73675;0.74343;0.75212;0.76281;0.77559;0.79056;0.80758;0.8266;0.84844;0.87229;0.8989;0.92861;0.96148;0.99774;1.0373;1.0803;1.1268;
+6500;0.68621;0.68755;0.69023;0.69478;0.70125;0.70958;0.71978;0.73195;0.74641;0.76279;0.78111;0.80136;0.82441;0.84934;0.87699;0.90774;0.9416;0.97874;1.0193;1.0633;
+7000;0.64618;0.64706;0.64971;0.65417;0.66048;0.66863;0.67866;0.69062;0.70438;0.71982;0.73707;0.75713;0.7786;0.80213;0.82803;0.85663;0.88834;0.92317;0.96112;1.0026;
+7500;0.60701;0.60789;0.61048;0.61483;0.62094;0.62884;0.63858;0.65023;0.66368;0.67881;0.69553;0.71444;0.73461;0.75696;0.78141;0.80819;0.83766;0.87026;0.90595;0.94477;
+8000;0.56916;0.57;0.57254;0.57675;0.58266;0.59031;0.59975;0.61101;0.62399;0.63868;0.65506;0.67353;0.69305;0.7142;0.73698;0.76208;0.78966;0.81991;0.85333;0.88981;
+8500;0.53283;0.53345;0.53588;0.53994;0.54563;0.55303;0.56215;0.57303;0.58554;0.59971;0.61554;0.63358;0.65268;0.67316;0.69518;0.71876;0.74409;0.77228;0.80325;0.83741;
+9000;0.49745;0.49825;0.5006;0.5045;0.51;0.51711;0.52588;0.53632;0.54834;0.56199;0.5777;0.59466;0.61321;0.63327;0.65461;0.67741;0.70168;0.72766;0.75594;0.78756;
+9500;0.46381;0.46424;0.46658;0.47034;0.47562;0.48246;0.49091;0.50094;0.51249;0.5256;0.54069;0.55699;0.57487;0.59428;0.61519;0.63729;0.66076;0.68561;0.71215;0.74088;
+10000;0.43252;0.43317;0.4351;0.43833;0.4429;0.44911;0.4572;0.4668;0.47789;0.49082;0.50499;0.52068;0.53785;0.55651;0.57666;0.59829;0.62105;0.64508;0.67044;0.69746;
+10500;0.40337;0.40424;0.40605;0.40908;0.41334;0.41891;0.42583;0.434;0.44456;0.45695;0.47055;0.48561;0.50212;0.52008;0.53945;0.56023;0.58245;0.60577;0.63027;0.65604;
+11000;0.37629;0.37686;0.37855;0.38138;0.38537;0.39058;0.39705;0.40475;0.41378;0.42414;0.43738;0.45181;0.46765;0.48489;0.50353;0.52353;0.54488;0.56757;0.59133;0.61621;
+11500;0.34911;0.34973;0.35129;0.35392;0.35763;0.36246;0.36844;0.37559;0.38397;0.39359;0.40588;0.41928;0.43398;0.44998;0.46728;0.48584;0.50565;0.52672;0.5487;0.57171;
+12000;0.32389;0.32456;0.32601;0.32844;0.33187;0.33635;0.34191;0.34855;0.35632;0.36524;0.37666;0.38909;0.40274;0.41759;0.43364;0.45087;0.46926;0.48883;0.50923;0.53057;
+12500;0.30075;0.3012;0.30254;0.3048;0.30798;0.31214;0.3173;0.32346;0.33066;0.33895;0.34955;0.3611;0.37377;0.38755;0.40244;0.41844;0.43551;0.45367;0.4726;0.4924;
+13000;0.27925;0.27952;0.28077;0.28286;0.28582;0.28968;0.29447;0.30018;0.30688;0.31457;0.32441;0.33512;0.34688;0.35968;0.3735;0.38834;0.4042;0.42105;0.43862;0.45697;
+13500;0.25905;0.25944;0.2606;0.26253;0.26527;0.26884;0.27329;0.27859;0.28481;0.29195;0.30108;0.31103;0.32195;0.33382;0.34665;0.36043;0.37515;0.39079;0.40708;0.4241;
+14000;0.24049;0.24085;0.24193;0.24372;0.24627;0.24958;0.2537;0.25861;0.26436;0.27113;0.27944;0.28868;0.29881;0.30983;0.32174;0.33453;0.3482;0.36271;0.37782;0.39361;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.2016;1.2029;1.2063;1.2121;1.2203;1.2311;1.2447;1.2614;1.2813;1.306;1.3355;1.3697;1.4089;1.4527;1.5012;1.5544;1.6126;1.6762;1.7454;1.8207;
+500;1.1438;1.1453;1.1486;1.1541;1.1619;1.1721;1.185;1.2008;1.2197;1.2435;1.271;1.3032;1.3402;1.3819;1.4279;1.4785;1.5339;1.5942;1.66;1.7315;
+1000;1.0882;1.0896;1.0928;1.0981;1.1056;1.1155;1.1279;1.143;1.161;1.1828;1.2093;1.2398;1.2745;1.3139;1.3576;1.4056;1.4581;1.5155;1.5779;1.6457;
+1500;1.0348;1.0358;1.0389;1.044;1.0513;1.0608;1.0728;1.0873;1.1047;1.1254;1.1507;1.1793;1.2119;1.2487;1.29;1.3355;1.3854;1.4398;1.4991;1.5634;
+2000;0.98272;0.98373;0.9867;0.99169;0.99876;1.008;1.0196;1.0337;1.0505;1.0703;1.0946;1.1217;1.1524;1.1868;1.2253;1.2683;1.3155;1.3672;1.4234;1.4844;
+2500;0.9328;0.93324;0.93612;0.94095;0.94783;0.95684;0.9681;0.98179;0.99813;1.0173;1.0406;1.0665;1.0956;1.128;1.164;1.2039;1.2485;1.2974;1.3507;1.4086;
+3000;0.88359;0.88452;0.88729;0.89193;0.89854;0.90724;0.91819;0.93154;0.94746;0.96618;0.98856;1.0134;1.0411;1.0718;1.1056;1.1431;1.1845;1.2305;1.281;1.3358;
+3500;0.83664;0.8377;0.84034;0.84477;0.85108;0.85942;0.86994;0.88284;0.89835;0.91667;0.9383;0.96212;0.98862;1.0178;1.0498;1.0851;1.1239;1.1668;1.2141;1.266;
+4000;0.79224;0.79308;0.79557;0.79977;0.80575;0.81365;0.82365;0.83594;0.85086;0.86883;0.88961;0.91262;0.93803;0.96587;0.99631;1.0296;1.0661;1.1063;1.1506;1.1993;
+4500;0.74964;0.75003;0.75262;0.75662;0.76234;0.76989;0.77946;0.79125;0.80551;0.82243;0.84242;0.86465;0.88914;0.91582;0.94486;0.97648;1.011;1.0487;1.0901;1.1358;
+5000;0.70842;0.70918;0.71144;0.71525;0.7207;0.72791;0.73706;0.74836;0.76204;0.77824;0.79733;0.81841;0.84178;0.86746;0.89529;0.92544;0.95812;0.99368;1.0325;1.0751;
+5500;0.66891;0.66984;0.67199;0.67562;0.68082;0.68772;0.69646;0.70726;0.72037;0.73578;0.75401;0.77408;0.79634;0.82085;0.84745;0.87628;0.90742;0.94108;0.97765;1.0175;
+6000;0.63209;0.63277;0.63476;0.63812;0.64294;0.64934;0.65759;0.66794;0.68052;0.6951;0.71243;0.73148;0.75263;0.77594;0.80148;0.82906;0.85863;0.89066;0.92521;0.96271;
+6500;0.59717;0.59779;0.59968;0.60287;0.60745;0.61355;0.62132;0.63097;0.64263;0.6562;0.67259;0.69061;0.71066;0.73279;0.75705;0.78352;0.81197;0.84235;0.87502;0.91038;
+7000;0.56408;0.56467;0.56643;0.56942;0.57372;0.57947;0.58685;0.59607;0.60706;0.61986;0.6351;0.65179;0.67042;0.69138;0.71439;0.73951;0.76681;0.79603;0.82713;0.86041;
+7500;0.53226;0.53324;0.53492;0.53774;0.54181;0.54724;0.5542;0.56284;0.57314;0.58521;0.59953;0.61525;0.63278;0.65216;0.6735;0.69729;0.72318;0.75122;0.78109;0.81283;
+8000;0.50271;0.50325;0.50486;0.50758;0.51148;0.51668;0.52331;0.5314;0.54098;0.55224;0.5656;0.58035;0.59684;0.61513;0.63526;0.65733;0.68137;0.70792;0.73661;0.76704;
+8500;0.47396;0.47452;0.47608;0.47872;0.4825;0.48752;0.49386;0.50151;0.51055;0.52107;0.53306;0.5471;0.56255;0.57974;0.59871;0.61951;0.64223;0.66691;0.69359;0.72284;
+9000;0.44627;0.44678;0.44832;0.45092;0.45464;0.45957;0.46569;0.473;0.48157;0.49146;0.50265;0.51561;0.52993;0.54599;0.5638;0.58338;0.60477;0.62808;0.65331;0.68051;
+9500;0.41939;0.41991;0.42142;0.42398;0.42764;0.43248;0.43844;0.44554;0.45381;0.46322;0.47378;0.48555;0.49909;0.51394;0.53054;0.5489;0.56901;0.59094;0.61476;0.64048;
+10000;0.39324;0.39375;0.39527;0.39783;0.40147;0.40618;0.41197;0.41889;0.42694;0.43601;0.44611;0.4573;0.47;0.48374;0.49901;0.51608;0.53492;0.5555;0.5779;0.60216;
+10500;0.36791;0.36841;0.3699;0.37241;0.37597;0.38057;0.38624;0.393;0.40081;0.4096;0.41938;0.43014;0.44224;0.45518;0.46938;0.48506;0.5025;0.52175;0.54274;0.56554;
+11000;0.34349;0.34398;0.34543;0.34788;0.35132;0.35576;0.36125;0.36781;0.3754;0.38395;0.39372;0.40417;0.41555;0.42788;0.44127;0.45588;0.47193;0.48974;0.50931;0.53064;
+11500;0.31869;0.31923;0.32058;0.32285;0.32604;0.33017;0.33526;0.34134;0.34838;0.35631;0.36538;0.37509;0.38565;0.39709;0.40951;0.42307;0.43797;0.45452;0.47266;0.4924;
+12000;0.29568;0.29627;0.29752;0.29963;0.30259;0.30642;0.31114;0.31679;0.32332;0.33068;0.3391;0.34811;0.3579;0.36852;0.38005;0.39263;0.40648;0.42183;0.43866;0.457;
+12500;0.27458;0.27496;0.27613;0.27808;0.28083;0.28439;0.28877;0.29401;0.30008;0.30691;0.31472;0.32308;0.33217;0.34202;0.35272;0.3644;0.37726;0.3915;0.40712;0.42416;
+13000;0.25498;0.2552;0.25629;0.2581;0.26065;0.26395;0.26802;0.27289;0.27851;0.28485;0.2921;0.29986;0.30829;0.31744;0.32737;0.33822;0.35014;0.36335;0.37787;0.3937;
+13500;0.23658;0.23692;0.23792;0.2396;0.24196;0.24501;0.24877;0.25328;0.25851;0.26439;0.27112;0.27832;0.28615;0.29463;0.30386;0.31392;0.32498;0.33725;0.35073;0.36543;
+14000;0.21968;0.21998;0.22091;0.22247;0.22466;0.22749;0.23099;0.23516;0.23999;0.24543;0.25167;0.25833;0.2656;0.27348;0.28204;0.29137;0.30164;0.31303;0.32556;0.33922;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0292;1.0303;1.0333;1.0384;1.0457;1.0553;1.0674;1.0823;1.1;1.1208;1.1449;1.1732;1.2055;1.2426;1.2843;1.3304;1.3809;1.4359;1.4958;1.5606;
+500;0.97891;0.97994;0.98279;0.98759;0.99442;1.0034;1.0147;1.0287;1.0456;1.0654;1.0884;1.1154;1.1461;1.1814;1.2211;1.2649;1.3129;1.3653;1.4222;1.4839;
+1000;0.93061;0.93161;0.9343;0.93884;0.9453;0.9538;0.96444;0.97778;0.99367;1.0124;1.0342;1.0599;1.0892;1.1228;1.1604;1.202;1.2476;1.2974;1.3515;1.4102;
+1500;0.88429;0.88514;0.8877;0.892;0.89813;0.90619;0.91626;0.92894;0.94411;0.96188;0.9826;1.007;1.0347;1.0666;1.1022;1.1416;1.1849;1.2321;1.2835;1.3392;
+2000;0.83981;0.84049;0.84292;0.84699;0.85279;0.86041;0.86995;0.882;0.89648;0.91347;0.93355;0.95646;0.98285;1.0128;1.0464;1.0837;1.1246;1.1694;1.2182;1.2711;
+2500;0.79703;0.7978;0.80007;0.80388;0.80933;0.81652;0.82555;0.83695;0.85074;0.86693;0.8862;0.90808;0.93323;0.96165;0.9933;1.0282;1.0669;1.1093;1.1555;1.2057;
+3000;0.75637;0.75707;0.7592;0.76277;0.76787;0.7746;0.78305;0.79378;0.80689;0.82229;0.84067;0.86163;0.88567;0.91259;0.94257;0.97554;1.0117;1.0516;1.0953;1.1429;
+3500;0.71767;0.71834;0.72033;0.72367;0.72843;0.7347;0.74258;0.75256;0.76489;0.7795;0.797;0.81701;0.83997;0.8656;0.89393;0.92514;0.95931;0.99673;1.0377;1.0827;
+4000;0.68039;0.68139;0.68328;0.68644;0.69095;0.69687;0.70431;0.71355;0.72502;0.73862;0.75517;0.77423;0.79606;0.82046;0.84737;0.87681;0.90914;0.94443;0.98301;1.0251;
+4500;0.64536;0.64597;0.64777;0.65079;0.65508;0.66071;0.66778;0.67647;0.68726;0.70005;0.71547;0.73335;0.75395;0.77709;0.80265;0.83059;0.86106;0.89442;0.93077;0.97042;
+5000;0.61169;0.61198;0.61366;0.61655;0.62065;0.62605;0.6328;0.64102;0.65119;0.6633;0.67785;0.69465;0.71388;0.73562;0.75971;0.78623;0.8151;0.84654;0.88085;0.91818;
+5500;0.57934;0.57985;0.58147;0.58419;0.58804;0.59309;0.59942;0.6071;0.61673;0.62822;0.64173;0.65784;0.67584;0.69614;0.7188;0.74372;0.77105;0.80076;0.83309;0.86829;
+6000;0.54838;0.54891;0.55048;0.55312;0.55685;0.56174;0.56786;0.57528;0.58425;0.595;0.60759;0.62275;0.63966;0.65862;0.67975;0.70324;0.72896;0.75699;0.78745;0.82061;
+6500;0.51844;0.51895;0.52048;0.52305;0.52668;0.53144;0.53739;0.54461;0.55324;0.56356;0.57565;0.58978;0.6054;0.62295;0.64266;0.66454;0.68878;0.71525;0.74397;0.77505;
+7000;0.48985;0.49011;0.49153;0.49399;0.49749;0.5021;0.5079;0.51496;0.52334;0.5333;0.54522;0.55843;0.57323;0.58962;0.60771;0.62781;0.65038;0.67531;0.70246;0.73181;
+7500;0.46184;0.46231;0.46371;0.46606;0.46941;0.47383;0.4794;0.48624;0.49444;0.50413;0.51565;0.5283;0.54239;0.55789;0.57491;0.59363;0.61423;0.63715;0.66273;0.69048;
+8000;0.43529;0.43573;0.43705;0.43928;0.44246;0.44667;0.45201;0.45858;0.4665;0.4759;0.48706;0.49926;0.51273;0.52747;0.54357;0.56117;0.58046;0.60163;0.62497;0.6509;
+8500;0.40988;0.4103;0.41156;0.41368;0.41672;0.42074;0.42584;0.43211;0.43969;0.44871;0.45938;0.47116;0.48412;0.49822;0.51353;0.53017;0.5483;0.56809;0.58978;0.61367;
+9000;0.38556;0.386;0.38719;0.38921;0.39209;0.39592;0.40078;0.40679;0.41408;0.42269;0.43284;0.44404;0.45642;0.46999;0.48465;0.50047;0.5176;0.53618;0.55643;0.5786;
+9500;0.36226;0.36284;0.36398;0.36589;0.36862;0.37225;0.37687;0.38261;0.38972;0.39775;0.40742;0.41805;0.42982;0.44274;0.45679;0.47192;0.4882;0.50575;0.52474;0.5454;
+10000;0.34048;0.34085;0.34192;0.34372;0.34631;0.34975;0.35413;0.35958;0.36619;0.3739;0.38307;0.39314;0.40427;0.41654;0.42995;0.44447;0.45998;0.47662;0.49454;0.51389;
+10500;0.31974;0.32007;0.32105;0.32273;0.32515;0.32839;0.33255;0.33772;0.34394;0.35119;0.35982;0.36929;0.37982;0.39141;0.40412;0.41795;0.43287;0.44876;0.46568;0.48388;
+11000;0.30021;0.30052;0.30145;0.30302;0.30528;0.3083;0.31217;0.31701;0.32282;0.32961;0.3377;0.34655;0.35644;0.36738;0.37937;0.39246;0.40666;0.42192;0.43811;0.45532;
+11500;0.27859;0.27892;0.27978;0.28124;0.28334;0.28614;0.28974;0.29424;0.29963;0.30594;0.31345;0.32167;0.33086;0.341;0.35213;0.36428;0.37746;0.39164;0.40667;0.42265;
+12000;0.25853;0.25888;0.25968;0.26104;0.26298;0.26559;0.26894;0.27311;0.27812;0.28398;0.29096;0.2986;0.30712;0.31652;0.32685;0.33814;0.35038;0.36354;0.3775;0.39233;
+12500;0.24005;0.24029;0.24104;0.24229;0.2441;0.24653;0.24964;0.25352;0.25817;0.2636;0.27009;0.27719;0.28508;0.29381;0.3034;0.31389;0.32525;0.33747;0.35043;0.3642;
+13000;0.22289;0.22305;0.22374;0.22491;0.2266;0.22885;0.23173;0.23534;0.23966;0.24471;0.25073;0.25731;0.26463;0.27273;0.28165;0.29138;0.30193;0.31327;0.32531;0.3381;
+13500;0.20691;0.20713;0.20776;0.20885;0.21041;0.21249;0.21516;0.21849;0.22248;0.22733;0.23276;0.23885;0.24566;0.25318;0.26146;0.2705;0.28029;0.29083;0.302;0.31388;
+14000;0.19217;0.19236;0.19296;0.19397;0.19541;0.19735;0.19983;0.20292;0.20663;0.21112;0.21614;0.22178;0.22807;0.23504;0.24273;0.25112;0.26022;0.26999;0.28037;0.2914;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.88288;0.88381;0.88655;0.89119;0.89789;0.90685;0.91685;0.92918;0.94357;0.96074;0.9803;1.0036;1.0298;1.0592;1.0929;1.131;1.1732;1.2193;1.2691;1.3231;
+500;0.83915;0.84003;0.84263;0.84701;0.85325;0.86159;0.87107;0.88269;0.89648;0.91286;0.93145;0.95363;0.9787;1.0069;1.0392;1.0757;1.1159;1.1598;1.2074;1.2587;
+1000;0.79732;0.79803;0.80049;0.80462;0.81053;0.81837;0.82744;0.83853;0.85157;0.86654;0.88464;0.90574;0.92962;0.95672;0.98755;1.0224;1.0607;1.1026;1.1479;1.1969;
+1500;0.75719;0.75777;0.7601;0.764;0.76956;0.77694;0.78559;0.79617;0.80862;0.82292;0.84003;0.85996;0.88255;0.90852;0.93799;0.97112;1.0077;1.0475;1.0907;1.1373;
+2000;0.71843;0.71917;0.72136;0.72504;0.73027;0.73721;0.74545;0.75552;0.76741;0.7811;0.79766;0.81634;0.83778;0.86233;0.89041;0.92189;0.95661;0.99444;1.0355;1.08;
+2500;0.68128;0.68218;0.68424;0.6877;0.69262;0.69913;0.70698;0.71655;0.72787;0.74097;0.7567;0.77451;0.79495;0.81833;0.845;0.87464;0.90757;0.94349;0.9825;1.0248;
+3000;0.64618;0.64682;0.64874;0.65197;0.65657;0.66266;0.67013;0.67921;0.68997;0.70248;0.71743;0.73439;0.75387;0.77617;0.80155;0.82971;0.86066;0.89455;0.93159;0.97171;
+3500;0.61249;0.6131;0.6149;0.61794;0.62226;0.62794;0.635;0.64355;0.65371;0.6656;0.67979;0.69594;0.7145;0.73575;0.75987;0.78662;0.81592;0.8479;0.8827;0.92076;
+4000;0.58018;0.58077;0.58247;0.58533;0.58939;0.59473;0.60145;0.60957;0.61921;0.63049;0.64382;0.6591;0.67677;0.69703;0.71991;0.74526;0.77304;0.80329;0.83622;0.87196;
+4500;0.54955;0.55007;0.55162;0.55424;0.55797;0.5629;0.56929;0.57703;0.58622;0.59697;0.60959;0.62405;0.64075;0.65994;0.68162;0.70563;0.73191;0.76057;0.79169;0.8255;
+5000;0.52056;0.52105;0.52251;0.52497;0.52847;0.53307;0.539;0.54618;0.55473;0.56483;0.57687;0.5906;0.60641;0.62462;0.64505;0.66766;0.69251;0.71961;0.74908;0.78101;
+5500;0.49276;0.49328;0.49465;0.49696;0.50026;0.50457;0.51018;0.51701;0.52514;0.53468;0.54573;0.55873;0.57365;0.59086;0.61016;0.63151;0.65486;0.68039;0.70824;0.73843;
+6000;0.4661;0.46672;0.46801;0.47019;0.47328;0.47733;0.48262;0.48911;0.49682;0.5059;0.51645;0.5288;0.54284;0.55885;0.5768;0.59692;0.61897;0.64302;0.66918;0.69768;
+6500;0.44094;0.44134;0.44255;0.44459;0.44751;0.45132;0.45628;0.46242;0.46974;0.47837;0.48844;0.50018;0.51353;0.52869;0.54556;0.56412;0.58464;0.60733;0.632;0.65879;
+7000;0.4168;0.41721;0.41834;0.42023;0.42293;0.42649;0.43111;0.43693;0.44384;0.45203;0.46177;0.47282;0.48553;0.49985;0.51578;0.53329;0.55243;0.5734;0.59647;0.62172;
+7500;0.39431;0.39439;0.39543;0.39718;0.39967;0.40295;0.40719;0.41261;0.41911;0.42686;0.43612;0.44667;0.45874;0.47228;0.4873;0.50381;0.52184;0.54152;0.56303;0.5864;
+8000;0.3724;0.37272;0.3737;0.37535;0.3777;0.38077;0.38468;0.38968;0.39569;0.40289;0.41161;0.42164;0.43312;0.44591;0.46009;0.47563;0.49263;0.51114;0.53131;0.5533;
+8500;0.35143;0.35199;0.35293;0.35449;0.35672;0.35964;0.36329;0.36796;0.37358;0.38028;0.38841;0.39783;0.40863;0.42072;0.43407;0.44871;0.4647;0.48215;0.50109;0.5217;
+9000;0.33181;0.33212;0.33302;0.33451;0.33664;0.33943;0.34291;0.34728;0.35258;0.35887;0.36646;0.37525;0.38535;0.39673;0.40927;0.423;0.43805;0.45445;0.47229;0.4916;
+9500;0.31272;0.31301;0.31387;0.31532;0.31737;0.32005;0.32339;0.32752;0.33254;0.33849;0.3455;0.35388;0.36325;0.37384;0.38564;0.39858;0.41267;0.42803;0.44479;0.46296;
+10000;0.2945;0.29467;0.29542;0.29682;0.2988;0.30139;0.30463;0.30858;0.31337;0.31905;0.32571;0.3336;0.34235;0.35216;0.3631;0.37526;0.38854;0.40297;0.41863;0.43564;
+10500;0.27651;0.27679;0.2776;0.27895;0.28088;0.2834;0.28656;0.29037;0.29498;0.30044;0.30682;0.31428;0.32251;0.33165;0.34178;0.35303;0.36549;0.37908;0.3938;0.40974;
+11000;0.25946;0.25971;0.26048;0.26177;0.26361;0.26604;0.2691;0.27282;0.27729;0.28256;0.28886;0.29582;0.30359;0.31216;0.32161;0.33201;0.34353;0.35626;0.37011;0.38508;
+11500;0.2408;0.24108;0.2418;0.243;0.24471;0.24697;0.2498;0.25326;0.2574;0.26231;0.26815;0.27461;0.28183;0.28979;0.29856;0.30822;0.31893;0.33074;0.3436;0.35749;
+12000;0.22348;0.22381;0.22447;0.22558;0.22717;0.22927;0.2319;0.23511;0.23896;0.24352;0.24894;0.25494;0.26164;0.26903;0.27717;0.28615;0.29609;0.30706;0.31899;0.33189;
+12500;0.20757;0.20777;0.20839;0.20942;0.2109;0.21284;0.21529;0.21827;0.22185;0.22608;0.23111;0.23668;0.2429;0.24977;0.25732;0.26567;0.2749;0.28508;0.29616;0.30813;
+13000;0.19276;0.19295;0.19352;0.19448;0.19584;0.19764;0.1999;0.20265;0.20597;0.20989;0.21457;0.21974;0.22551;0.23189;0.23891;0.24666;0.25523;0.26468;0.27496;0.28608;
+13500;0.17906;0.17923;0.17976;0.18065;0.18192;0.18359;0.18569;0.18825;0.19131;0.19495;0.19928;0.20405;0.20939;0.2153;0.22181;0.22902;0.23697;0.24575;0.2553;0.2656;
+14000;0.16631;0.1665;0.16699;0.16782;0.169;0.17055;0.1725;0.17488;0.17773;0.18111;0.18514;0.18957;0.19453;0.2;0.20602;0.21268;0.22003;0.22818;0.23704;0.24659;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.75671;0.7573;0.75972;0.76386;0.76997;0.77716;0.78513;0.79482;0.80667;0.82033;0.83637;0.8538;0.87321;0.89479;0.91965;0.94783;0.98021;1.0165;1.0562;1.0996;
+500;0.71873;0.7194;0.7217;0.72562;0.73136;0.73808;0.74562;0.7548;0.7661;0.77917;0.79451;0.81139;0.83011;0.85099;0.87496;0.90217;0.93342;0.96821;1.0061;1.0471;
+1000;0.68237;0.68296;0.68515;0.68888;0.69434;0.70068;0.70793;0.71673;0.72741;0.73975;0.75435;0.77065;0.78866;0.80883;0.83192;0.85821;0.88827;0.92161;0.95784;0.99685;
+1500;0.64755;0.64805;0.65012;0.65364;0.65881;0.66478;0.67172;0.68013;0.69033;0.70215;0.71607;0.73191;0.74884;0.76827;0.7905;0.81587;0.84473;0.87663;0.91126;0.94852;
+2000;0.61395;0.6146;0.61656;0.61989;0.62478;0.63039;0.63702;0.64505;0.65476;0.66604;0.67931;0.69452;0.71088;0.72938;0.75065;0.7751;0.80279;0.83326;0.86631;0.90191;
+2500;0.58181;0.58255;0.5844;0.58755;0.59216;0.59744;0.60378;0.61145;0.62028;0.63141;0.64407;0.65858;0.67443;0.69224;0.71261;0.73586;0.76239;0.79147;0.82298;0.85695;
+3000;0.55144;0.55202;0.55376;0.55672;0.56104;0.56599;0.57201;0.57926;0.5877;0.59824;0.61029;0.62412;0.63945;0.6565;0.67616;0.69841;0.72358;0.75125;0.78125;0.81363;
+3500;0.52237;0.52285;0.52446;0.52723;0.53129;0.53597;0.54172;0.54864;0.55665;0.56657;0.57793;0.59109;0.60587;0.62231;0.64107;0.66249;0.68643;0.7127;0.7411;0.77191;
+4000;0.49491;0.49542;0.49694;0.49951;0.50325;0.50761;0.51296;0.51942;0.52697;0.53635;0.54714;0.55957;0.5737;0.58941;0.60739;0.62791;0.65072;0.67569;0.70272;0.73185;
+4500;0.46866;0.46919;0.47062;0.47302;0.47652;0.48067;0.48578;0.49194;0.49908;0.50774;0.51782;0.52968;0.543;0.558;0.57512;0.59469;0.61641;0.64014;0.66581;0.69353;
+5000;0.44372;0.44416;0.4455;0.44775;0.45102;0.45495;0.45979;0.46565;0.47247;0.48064;0.49024;0.50141;0.5138;0.52795;0.54432;0.56291;0.58346;0.60599;0.63036;0.65669;
+5500;0.41984;0.42023;0.42149;0.42361;0.42666;0.43039;0.435;0.44056;0.44704;0.45496;0.46385;0.47446;0.48634;0.49979;0.51513;0.5325;0.55201;0.57327;0.59633;0.62131;
+6000;0.39697;0.39736;0.39854;0.40053;0.40337;0.40691;0.41129;0.41658;0.42276;0.43024;0.43863;0.44869;0.46002;0.47286;0.4875;0.50397;0.52215;0.54198;0.5638;0.58736;
+6500;0.37518;0.37554;0.37664;0.37849;0.38115;0.38449;0.38864;0.39365;0.39954;0.40662;0.41458;0.42409;0.43483;0.44708;0.46104;0.47665;0.49384;0.51258;0.53287;0.55497;
+7000;0.35483;0.35482;0.35584;0.35757;0.36003;0.36318;0.36708;0.37179;0.37736;0.38406;0.39161;0.40062;0.41079;0.42243;0.4357;0.4505;0.46675;0.48444;0.50366;0.52441;
+7500;0.33469;0.33501;0.33597;0.33758;0.33988;0.34285;0.34654;0.35102;0.3563;0.36262;0.3697;0.3782;0.38785;0.3989;0.41146;0.42546;0.44082;0.45752;0.47565;0.4953;
+8000;0.31549;0.3161;0.317;0.3185;0.32064;0.32345;0.32694;0.33117;0.33619;0.34198;0.34903;0.35696;0.36604;0.37645;0.38833;0.4015;0.416;0.43177;0.44887;0.4674;
+8500;0.29776;0.29806;0.29889;0.3003;0.30229;0.30494;0.30825;0.31226;0.317;0.32252;0.32913;0.33665;0.3453;0.35517;0.36634;0.3787;0.39227;0.40713;0.42327;0.44073;
+9000;0.28081;0.28085;0.28163;0.28294;0.2848;0.28729;0.29042;0.29421;0.29871;0.30395;0.31019;0.31727;0.32545;0.33486;0.34539;0.35704;0.36978;0.38364;0.3988;0.41526;
+9500;0.2642;0.26444;0.26517;0.26639;0.26813;0.27046;0.27343;0.27701;0.28127;0.28627;0.29215;0.29884;0.30656;0.31543;0.32539;0.33636;0.34834;0.3614;0.37557;0.39095;
+10000;0.24837;0.2488;0.24948;0.25063;0.25225;0.25443;0.25723;0.26061;0.26465;0.26939;0.27485;0.2813;0.2886;0.29694;0.30628;0.31662;0.32788;0.34015;0.35349;0.36793;
+10500;0.23369;0.23392;0.23455;0.23562;0.23713;0.23916;0.2418;0.24499;0.2488;0.25329;0.2585;0.26459;0.2715;0.27936;0.28811;0.29777;0.30837;0.31989;0.33242;0.34599;
+11000;0.21968;0.21983;0.22041;0.22139;0.22279;0.22466;0.22713;0.23012;0.23372;0.23795;0.243;0.24868;0.25523;0.26262;0.27083;0.27986;0.28976;0.30058;0.31232;0.32507;
+11500;0.2039;0.20409;0.20464;0.20555;0.20685;0.20858;0.21088;0.21366;0.217;0.22093;0.22561;0.23089;0.23697;0.24383;0.25145;0.25983;0.26901;0.27904;0.28994;0.30178;
+12000;0.18925;0.18949;0.19;0.19084;0.19205;0.19367;0.1958;0.19838;0.20148;0.20514;0.20948;0.21438;0.22002;0.22638;0.23345;0.24123;0.24975;0.25904;0.26917;0.28016;
+12500;0.17584;0.176;0.17647;0.17725;0.17836;0.17985;0.18182;0.18419;0.18708;0.19048;0.19443;0.19905;0.20429;0.2102;0.21676;0.22398;0.23187;0.2405;0.2499;0.2601;
+13000;0.16339;0.16353;0.16396;0.16469;0.16572;0.16711;0.16894;0.17115;0.17381;0.17695;0.18067;0.18486;0.18969;0.19517;0.20126;0.20796;0.21527;0.22329;0.23202;0.24149;
+13500;0.1518;0.15196;0.15236;0.15304;0.154;0.15529;0.15699;0.15905;0.16152;0.16444;0.1679;0.1718;0.17628;0.18134;0.18695;0.1931;0.19987;0.20732;0.21542;0.22421;
+14000;0.14102;0.14122;0.14159;0.14222;0.14311;0.14432;0.1459;0.14781;0.15011;0.15282;0.15604;0.15966;0.16383;0.16853;0.17374;0.17945;0.18572;0.19259;0.20005;0.20818;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.64635;0.64709;0.64911;0.65251;0.65746;0.66251;0.66882;0.67588;0.68515;0.6954;0.70635;0.71819;0.73127;0.74567;0.76261;0.78283;0.8066;0.83461;0.86696;0.90271;
+500;0.61333;0.61428;0.61623;0.61949;0.62368;0.62893;0.6349;0.64164;0.65053;0.66042;0.67115;0.68253;0.69522;0.7093;0.72503;0.7449;0.76765;0.79454;0.82549;0.85953;
+1000;0.58223;0.58287;0.58472;0.58784;0.59182;0.59684;0.60258;0.60904;0.61749;0.62693;0.63699;0.6483;0.66057;0.67434;0.68967;0.70853;0.7303;0.75604;0.78553;0.818;
+1500;0.55247;0.55278;0.55453;0.55751;0.56129;0.56608;0.57157;0.57779;0.5859;0.59499;0.6047;0.61551;0.62732;0.64073;0.65566;0.67362;0.69449;0.7191;0.74712;0.77798;
+2000;0.52342;0.52397;0.52564;0.52848;0.53204;0.5366;0.54186;0.54783;0.5556;0.56436;0.57377;0.58421;0.59559;0.60846;0.62296;0.6401;0.66019;0.68367;0.71024;0.73951;
+2500;0.49598;0.49652;0.4981;0.5008;0.50416;0.50846;0.51344;0.51914;0.52658;0.53499;0.54411;0.55419;0.56519;0.57761;0.59174;0.60792;0.62726;0.64968;0.67489;0.70256;
+3000;0.47019;0.47068;0.47216;0.47469;0.4782;0.48181;0.48645;0.49184;0.49887;0.50686;0.51567;0.52538;0.53602;0.54799;0.56173;0.57724;0.59568;0.61708;0.64099;0.66715;
+3500;0.44553;0.446;0.44741;0.44982;0.45316;0.45661;0.46106;0.46616;0.47273;0.48023;0.48853;0.4978;0.50804;0.51955;0.53292;0.54793;0.56549;0.5859;0.60846;0.63322;
+4000;0.42194;0.42236;0.4237;0.42599;0.42914;0.43243;0.43668;0.44159;0.44787;0.45509;0.46309;0.4718;0.48139;0.49232;0.50513;0.51977;0.53653;0.55601;0.57745;0.60073;
+4500;0.3994;0.39975;0.40102;0.40319;0.40616;0.40931;0.41336;0.41805;0.42402;0.43094;0.43885;0.4471;0.45639;0.46673;0.47878;0.49275;0.50885;0.5273;0.54768;0.56972;
+5000;0.37774;0.37814;0.37933;0.3814;0.38418;0.38719;0.39106;0.39554;0.40118;0.40782;0.41539;0.42338;0.43235;0.44236;0.45394;0.46726;0.48243;0.49976;0.51908;0.54;
+5500;0.35706;0.35748;0.35862;0.36056;0.36318;0.36604;0.36973;0.37403;0.37934;0.3857;0.39293;0.4007;0.4093;0.419;0.43027;0.44298;0.45757;0.47387;0.49166;0.51146;
+6000;0.33752;0.33786;0.33892;0.34074;0.34316;0.34586;0.34934;0.35344;0.35847;0.36453;0.37143;0.37899;0.38721;0.39655;0.40739;0.41963;0.43366;0.4492;0.46612;0.48437;
+6500;0.31886;0.31919;0.32018;0.32189;0.32417;0.32674;0.33004;0.33391;0.3386;0.34432;0.35087;0.35819;0.36605;0.37505;0.38544;0.39722;0.41066;0.42549;0.44157;0.45887;
+7000;0.30106;0.30135;0.30228;0.30389;0.30602;0.30847;0.31161;0.3153;0.31972;0.32518;0.33136;0.33836;0.34581;0.35443;0.3644;0.37572;0.38856;0.40269;0.41796;0.4344;
+7500;0.28409;0.28431;0.28519;0.2867;0.2887;0.29104;0.29402;0.29754;0.3019;0.30689;0.31276;0.31948;0.32661;0.33482;0.34425;0.35509;0.36733;0.38077;0.39529;0.41089;
+8000;0.26791;0.26801;0.26887;0.27029;0.27217;0.2744;0.27723;0.28058;0.28471;0.28942;0.29499;0.30137;0.30826;0.31613;0.32516;0.33545;0.34698;0.35972;0.37351;0.38833;
+8500;0.25229;0.25255;0.25332;0.25464;0.2564;0.25853;0.26122;0.26441;0.26831;0.27276;0.27802;0.28406;0.29071;0.29833;0.30691;0.3167;0.32767;0.33966;0.35259;0.36665;
+9000;0.23742;0.23777;0.23849;0.23972;0.24138;0.2434;0.24596;0.24899;0.25267;0.25689;0.26186;0.26757;0.27396;0.28122;0.28943;0.29877;0.30915;0.32051;0.33277;0.34596;
+9500;0.22348;0.2237;0.22437;0.22552;0.22707;0.22899;0.23141;0.2343;0.23778;0.24175;0.24645;0.25184;0.25797;0.26487;0.27271;0.2816;0.29143;0.30215;0.31376;0.32625;
+10000;0.2102;0.21028;0.21094;0.212;0.21345;0.21527;0.21756;0.2203;0.22346;0.22734;0.23177;0.23697;0.2427;0.24929;0.25673;0.26517;0.27447;0.28458;0.29554;0.30736;
+10500;0.19735;0.19755;0.19813;0.19912;0.20048;0.20221;0.20438;0.20697;0.20997;0.21361;0.2178;0.22271;0.2282;0.23442;0.2415;0.24946;0.25824;0.26779;0.2781;0.28926;
+11000;0.18514;0.18542;0.18596;0.18687;0.18814;0.18977;0.19181;0.19426;0.19712;0.20053;0.20451;0.20915;0.21436;0.22026;0.22699;0.23449;0.24274;0.25173;0.26146;0.27195;
+11500;0.17201;0.17218;0.17268;0.17353;0.17471;0.17622;0.17811;0.18039;0.18304;0.18621;0.18989;0.19419;0.19903;0.20451;0.21075;0.21772;0.22537;0.23372;0.24275;0.25248;
+12000;0.1598;0.15996;0.16042;0.1612;0.16228;0.16367;0.16541;0.16751;0.16996;0.1729;0.17632;0.18032;0.18481;0.1899;0.19569;0.20215;0.20926;0.217;0.22538;0.23441;
+12500;0.14853;0.14867;0.1491;0.14983;0.15083;0.15212;0.15374;0.15568;0.15794;0.16065;0.16387;0.16748;0.17161;0.17634;0.18171;0.18771;0.1943;0.20149;0.20926;0.21765;
+13000;0.13804;0.13819;0.13859;0.13926;0.14019;0.1414;0.1429;0.1447;0.1468;0.14933;0.15232;0.15568;0.15952;0.16388;0.16882;0.17434;0.18043;0.18709;0.19431;0.20209;
+13500;0.12829;0.12845;0.12882;0.12945;0.13032;0.13144;0.13283;0.13451;0.13647;0.13882;0.1416;0.14473;0.1483;0.15235;0.15695;0.16208;0.16771;0.17384;0.18047;0.18766;
+14000;0.1193;0.11941;0.11976;0.12034;0.12115;0.12219;0.12349;0.12505;0.12687;0.12906;0.13165;0.13456;0.13788;0.14164;0.14592;0.15069;0.15592;0.16162;0.16779;0.17444;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.54972;0.5503;0.55189;0.55449;0.55802;0.56186;0.56632;0.57168;0.57789;0.5846;0.59164;0.59923;0.60733;0.61832;0.63097;0.64587;0.6634;0.684;0.70823;0.73682;
+500;0.52152;0.52231;0.52382;0.5263;0.5296;0.53323;0.53746;0.54252;0.54855;0.55504;0.5618;0.5692;0.5771;0.58753;0.59971;0.614;0.63081;0.65062;0.67395;0.70129;
+1000;0.49501;0.49549;0.49692;0.49929;0.50241;0.50588;0.50992;0.51479;0.52054;0.52676;0.53325;0.5404;0.54808;0.55793;0.56961;0.58338;0.59955;0.61855;0.64099;0.6671;
+1500;0.46931;0.46977;0.47114;0.4734;0.47636;0.47967;0.48355;0.48821;0.49377;0.49981;0.50602;0.5129;0.52029;0.52957;0.54077;0.55396;0.56949;0.58777;0.60933;0.63425;
+2000;0.4447;0.44535;0.44662;0.44873;0.45146;0.45457;0.45829;0.46276;0.4681;0.47369;0.48;0.48665;0.49379;0.50252;0.51314;0.52578;0.54065;0.55817;0.57891;0.60267;
+2500;0.42204;0.42225;0.42346;0.42549;0.42808;0.43103;0.43448;0.43864;0.44365;0.44894;0.45504;0.46148;0.46841;0.47675;0.48688;0.49882;0.51303;0.5298;0.54965;0.57233;
+3000;0.39974;0.40013;0.4013;0.40323;0.40569;0.40852;0.41184;0.41583;0.42067;0.42572;0.43142;0.43745;0.44411;0.45207;0.46178;0.47321;0.48664;0.50262;0.5216;0.54314;
+3500;0.37843;0.37895;0.38006;0.38192;0.38426;0.38697;0.39016;0.39398;0.39867;0.40361;0.40911;0.41496;0.42127;0.42825;0.43776;0.44825;0.46153;0.47669;0.4947;0.51514;
+4000;0.35834;0.35868;0.35975;0.36153;0.36375;0.36635;0.36942;0.37308;0.37764;0.38243;0.38774;0.39341;0.39956;0.40636;0.41523;0.4254;0.43749;0.45195;0.46904;0.48832;
+4500;0.33914;0.33929;0.34032;0.34203;0.34414;0.34663;0.34958;0.35309;0.35749;0.36235;0.36727;0.37275;0.37876;0.38536;0.39375;0.4035;0.41495;0.42844;0.44453;0.46272;
+5000;0.32043;0.32079;0.32175;0.32341;0.3254;0.32779;0.33061;0.33396;0.33822;0.34291;0.34768;0.35299;0.35883;0.36528;0.3732;0.38251;0.39349;0.40639;0.42143;0.43827;
+5500;0.30298;0.30328;0.3042;0.30576;0.30762;0.30987;0.31255;0.31568;0.31977;0.32431;0.32893;0.33408;0.33974;0.34603;0.35354;0.36243;0.37292;0.38528;0.39959;0.41543;
+6000;0.28632;0.28654;0.28742;0.28892;0.29067;0.29282;0.29539;0.29839;0.3023;0.3066;0.31103;0.31597;0.32146;0.32759;0.33475;0.34326;0.35325;0.36506;0.37865;0.39364;
+6500;0.27043;0.27052;0.27138;0.27282;0.27448;0.27653;0.27899;0.28186;0.28562;0.28977;0.29407;0.29881;0.30401;0.30993;0.31659;0.32493;0.33445;0.34569;0.35859;0.37277;
+7000;0.25498;0.25525;0.25604;0.25741;0.25898;0.26094;0.2633;0.26604;0.26966;0.27367;0.27786;0.28244;0.28748;0.29321;0.2996;0.30742;0.31651;0.3272;0.33937;0.35277;
+7500;0.24027;0.24064;0.24139;0.2427;0.24418;0.24604;0.2483;0.2511;0.2544;0.25824;0.26234;0.26674;0.27163;0.27721;0.28344;0.29086;0.29945;0.30954;0.32101;0.33361;
+8000;0.22648;0.22672;0.22743;0.22868;0.23006;0.23184;0.23399;0.23667;0.23982;0.2435;0.2475;0.25172;0.25645;0.26186;0.26791;0.27503;0.28329;0.29286;0.30355;0.31532;
+8500;0.21336;0.21343;0.21412;0.21531;0.21661;0.2183;0.22035;0.2229;0.2259;0.22943;0.23332;0.23737;0.24194;0.24715;0.25304;0.25969;0.2678;0.27691;0.28703;0.29804;
+9000;0.20061;0.20082;0.20146;0.20257;0.20379;0.2054;0.20736;0.20978;0.21264;0.21601;0.21965;0.22367;0.22807;0.23306;0.23878;0.24525;0.25294;0.26166;0.27121;0.28159;
+9500;0.18851;0.1888;0.1894;0.19044;0.19159;0.19312;0.19498;0.19728;0.2;0.20321;0.20673;0.21058;0.21484;0.21974;0.22514;0.23138;0.23871;0.24702;0.25609;0.26586;
+10000;0.17721;0.1774;0.17796;0.17892;0.18001;0.18146;0.18321;0.18526;0.18796;0.19101;0.19451;0.1981;0.2022;0.2069;0.2121;0.21822;0.22514;0.23298;0.24159;0.25083;
+10500;0.16649;0.16655;0.16709;0.16798;0.16901;0.17038;0.17205;0.17399;0.17652;0.1794;0.18272;0.18619;0.19013;0.19464;0.19973;0.20552;0.21217;0.21956;0.22767;0.23644;
+11000;0.15612;0.15628;0.15677;0.15759;0.15857;0.15986;0.16144;0.16328;0.16566;0.16838;0.17151;0.17485;0.17863;0.18285;0.18782;0.19338;0.19974;0.20676;0.21437;0.22262;
+11500;0.14508;0.14522;0.14567;0.14642;0.14731;0.1485;0.14995;0.15164;0.15384;0.15637;0.15928;0.16238;0.16587;0.16988;0.17441;0.17957;0.18546;0.19197;0.19904;0.2067;
+12000;0.13487;0.135;0.13543;0.13612;0.13695;0.13806;0.13941;0.14098;0.14301;0.14534;0.14801;0.15085;0.15405;0.15776;0.16197;0.16675;0.17222;0.17826;0.18481;0.19193;
+12500;0.12537;0.12552;0.12592;0.12656;0.12733;0.12836;0.12962;0.13108;0.13297;0.13514;0.13763;0.14027;0.14326;0.14667;0.15052;0.1549;0.15993;0.16553;0.17161;0.17821;
+13000;0.11653;0.11672;0.11709;0.11769;0.1184;0.11936;0.12053;0.12189;0.12366;0.12567;0.128;0.13046;0.13323;0.1364;0.13998;0.14406;0.14871;0.15385;0.15942;0.16548;
+13500;0.10844;0.10855;0.10889;0.10945;0.11011;0.11101;0.1121;0.11336;0.11501;0.11688;0.11905;0.12133;0.12392;0.12686;0.1302;0.13399;0.13831;0.14308;0.14825;0.15385;
+14000;0.10091;0.10097;0.10129;0.1018;0.10242;0.10325;0.10427;0.10545;0.10698;0.10872;0.11074;0.11286;0.11527;0.11801;0.12111;0.12463;0.12865;0.13308;0.13787;0.14308;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.46497;0.46543;0.46668;0.46867;0.47122;0.47403;0.477;0.48074;0.48462;0.4886;0.49282;0.49738;0.50384;0.51153;0.52049;0.53085;0.54271;0.55715;0.57379;0.59381;
+500;0.44114;0.44154;0.44273;0.44463;0.44703;0.44969;0.45251;0.45609;0.45988;0.46377;0.46786;0.4723;0.4784;0.48579;0.49444;0.50445;0.51591;0.5298;0.54585;0.56514;
+1000;0.41835;0.4187;0.41981;0.4216;0.42389;0.42644;0.42916;0.43263;0.43626;0.43999;0.44394;0.44825;0.454;0.46111;0.46944;0.47905;0.49019;0.50358;0.519;0.53757;
+1500;0.39656;0.39715;0.39821;0.3999;0.40202;0.4044;0.40694;0.4102;0.41367;0.4173;0.42111;0.42525;0.43111;0.43743;0.44545;0.45478;0.46552;0.47843;0.49325;0.51109;
+2000;0.37651;0.37657;0.37757;0.37918;0.38119;0.38347;0.3859;0.38905;0.39238;0.39578;0.39935;0.40328;0.4088;0.41481;0.42246;0.43145;0.44184;0.45427;0.46856;0.48566;
+2500;0.35656;0.35688;0.35784;0.35938;0.36129;0.36347;0.3658;0.36885;0.37206;0.37534;0.37883;0.38256;0.38764;0.39323;0.40053;0.40911;0.41913;0.43109;0.44485;0.46131;
+3000;0.33751;0.33802;0.33894;0.34041;0.34223;0.34433;0.34658;0.3495;0.35262;0.35581;0.35918;0.36277;0.36755;0.37291;0.37975;0.38817;0.39737;0.40884;0.42209;0.43791;
+3500;0.31965;0.31994;0.32081;0.32222;0.32395;0.32596;0.32813;0.33095;0.33397;0.33707;0.34036;0.34385;0.34837;0.35348;0.36037;0.36808;0.37707;0.38758;0.40025;0.41546;
+4000;0.30258;0.30265;0.30348;0.30482;0.30645;0.30838;0.31048;0.3132;0.31613;0.31914;0.32235;0.32572;0.33001;0.33491;0.34118;0.34889;0.35749;0.3676;0.37957;0.39392;
+4500;0.28594;0.28621;0.28698;0.28824;0.28976;0.29159;0.2936;0.29622;0.29906;0.30198;0.3051;0.30838;0.31243;0.31713;0.32348;0.33054;0.33882;0.34848;0.35995;0.37366;
+5000;0.27037;0.27061;0.27134;0.27255;0.27398;0.27571;0.2776;0.28008;0.28277;0.28557;0.2886;0.29179;0.29564;0.30014;0.3062;0.31297;0.32092;0.33021;0.34119;0.35426;
+5500;0.25552;0.25571;0.25641;0.25756;0.25891;0.26057;0.26238;0.26477;0.26737;0.27006;0.27293;0.27595;0.2796;0.2839;0.28969;0.29616;0.30378;0.3127;0.32324;0.33572;
+6000;0.24136;0.24143;0.24216;0.24325;0.24453;0.2461;0.24785;0.25014;0.25266;0.25527;0.25807;0.261;0.26412;0.26843;0.27366;0.2801;0.28738;0.29593;0.30602;0.31793;
+6500;0.22771;0.22792;0.22855;0.22959;0.23079;0.2323;0.23397;0.23617;0.23859;0.24113;0.24384;0.2467;0.24976;0.2541;0.25903;0.26483;0.27172;0.27991;0.28956;0.30087;
+7000;0.21472;0.21498;0.21557;0.21655;0.21769;0.21914;0.22073;0.22283;0.22517;0.22762;0.23027;0.23307;0.23606;0.24014;0.24485;0.2504;0.25693;0.26463;0.27381;0.28455;
+7500;0.20239;0.20265;0.20321;0.20415;0.20523;0.2066;0.20812;0.21012;0.21237;0.21476;0.21732;0.22005;0.22297;0.2268;0.23131;0.23661;0.24285;0.2502;0.25891;0.26894;
+8000;0.19066;0.19089;0.19143;0.19232;0.19334;0.19465;0.19612;0.19804;0.2002;0.20251;0.20495;0.20762;0.21046;0.21408;0.21837;0.22344;0.22939;0.23641;0.24473;0.25424;
+8500;0.1795;0.17969;0.1802;0.18105;0.18202;0.18328;0.18469;0.18653;0.1886;0.19085;0.19319;0.19577;0.19852;0.20193;0.20604;0.21087;0.21655;0.22324;0.23117;0.24018;
+9000;0.1689;0.16903;0.16952;0.17032;0.17125;0.17244;0.1738;0.17556;0.17755;0.17974;0.18199;0.18448;0.18716;0.19036;0.19427;0.19889;0.20429;0.21067;0.21821;0.22672;
+9500;0.15873;0.15889;0.15936;0.16011;0.16099;0.16212;0.16342;0.16512;0.16703;0.16915;0.17131;0.17372;0.17633;0.17936;0.18308;0.18746;0.19261;0.19868;0.20583;0.21385;
+10000;0.14908;0.14924;0.14969;0.1504;0.15123;0.15231;0.15356;0.15517;0.15701;0.15898;0.16115;0.16347;0.16601;0.1688;0.17243;0.17659;0.18148;0.18725;0.19402;0.20157;
+10500;0.13991;0.14006;0.14048;0.14115;0.14193;0.14296;0.14415;0.14569;0.14747;0.14937;0.15147;0.15371;0.15618;0.15891;0.16233;0.16611;0.1709;0.17637;0.18276;0.18986;
+11000;0.1313;0.13143;0.13183;0.13245;0.13318;0.13414;0.13526;0.13669;0.13837;0.14022;0.14224;0.1444;0.14681;0.14947;0.15269;0.15645;0.16085;0.16603;0.17204;0.1787;
+11500;0.12211;0.12224;0.12261;0.12318;0.12387;0.12476;0.1258;0.12714;0.1287;0.13039;0.13222;0.13419;0.13637;0.1388;0.14181;0.14529;0.14937;0.15418;0.15975;0.16594;
+12000;0.11356;0.1137;0.11405;0.11458;0.11522;0.11605;0.11701;0.11827;0.11972;0.12129;0.123;0.12482;0.12685;0.12909;0.13182;0.13499;0.13872;0.14318;0.14835;0.15409;
+12500;0.1056;0.10578;0.1061;0.10659;0.10719;0.10796;0.10886;0.11003;0.11138;0.11283;0.11442;0.11611;0.118;0.12008;0.12262;0.12557;0.12903;0.13311;0.13785;0.1431;
+13000;0.098318;0.098416;0.098717;0.09917;0.099723;0.10044;0.10128;0.10237;0.10362;0.10497;0.10645;0.10803;0.10978;0.11171;0.11407;0.11681;0.12003;0.12383;0.12824;0.13312;
+13500;0.091534;0.09156;0.091857;0.09228;0.092795;0.093466;0.094241;0.095254;0.096421;0.097678;0.099053;0.10052;0.10215;0.10394;0.10614;0.10868;0.11167;0.1152;0.11931;0.12385;
+14000;0.085147;0.085232;0.085493;0.085883;0.086362;0.086986;0.087707;0.08865;0.089735;0.090903;0.092182;0.093544;0.095057;0.096716;0.098763;0.10113;0.10391;0.10719;0.11101;0.11523;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.39057;0.39098;0.3919;0.39329;0.39498;0.39677;0.39863;0.40066;0.40272;0.40516;0.40782;0.4117;0.41624;0.42092;0.42634;0.43249;0.44018;0.44935;0.46019;0.47305;
+500;0.37077;0.371;0.37184;0.37314;0.37469;0.37633;0.37804;0.38;0.38203;0.38393;0.38692;0.3906;0.39497;0.39959;0.40487;0.41087;0.41823;0.42705;0.43765;0.45011;
+1000;0.35182;0.35194;0.35275;0.35399;0.35549;0.35708;0.35873;0.36057;0.36243;0.36418;0.36691;0.37038;0.37458;0.37912;0.38423;0.39013;0.39718;0.40566;0.416;0.42807;
+1500;0.33343;0.33369;0.33447;0.33566;0.33709;0.33863;0.34025;0.34205;0.34386;0.3456;0.34811;0.35123;0.35509;0.3595;0.36445;0.37023;0.37739;0.38555;0.3952;0.40689;
+2000;0.31602;0.31628;0.31702;0.31816;0.31953;0.32099;0.32255;0.32432;0.32609;0.32782;0.33019;0.33314;0.33684;0.34097;0.3456;0.35117;0.35803;0.3659;0.37524;0.38654;
+2500;0.29937;0.2996;0.30031;0.30141;0.30272;0.30415;0.30565;0.30738;0.30912;0.31081;0.31304;0.31615;0.31937;0.3234;0.3279;0.33316;0.33959;0.34706;0.35609;0.36699;
+3000;0.28348;0.28364;0.28432;0.28537;0.28663;0.28801;0.28947;0.29117;0.29287;0.29454;0.29666;0.2996;0.30268;0.30654;0.31095;0.31604;0.32184;0.32928;0.33781;0.34824;
+3500;0.2683;0.26837;0.26905;0.27003;0.27124;0.27257;0.27398;0.27565;0.27732;0.27897;0.28098;0.28376;0.28671;0.29048;0.29475;0.29963;0.30528;0.31238;0.32056;0.33048;
+4000;0.2537;0.25391;0.25452;0.25546;0.25659;0.25784;0.25918;0.2608;0.26243;0.26407;0.266;0.26862;0.27144;0.27508;0.27923;0.28397;0.28943;0.2962;0.30408;0.31359;
+4500;0.23997;0.24016;0.24074;0.24164;0.24271;0.24391;0.24519;0.24674;0.24828;0.24983;0.25167;0.25414;0.25685;0.26035;0.26436;0.26896;0.27426;0.28077;0.2883;0.29744;
+5000;0.22687;0.22704;0.22759;0.22845;0.22948;0.23064;0.23187;0.23337;0.23487;0.23638;0.2381;0.24037;0.2429;0.24627;0.25015;0.25458;0.25971;0.26597;0.27322;0.28198;
+5500;0.21439;0.21445;0.21503;0.21585;0.21683;0.21794;0.21914;0.22061;0.22208;0.22357;0.2252;0.22733;0.22973;0.2329;0.23654;0.24084;0.24577;0.25179;0.25876;0.26718;
+6000;0.20234;0.20252;0.20302;0.20381;0.20475;0.20582;0.20697;0.20841;0.20985;0.2113;0.21286;0.21486;0.21713;0.22016;0.22371;0.22778;0.23242;0.23822;0.24492;0.253;
+6500;0.19087;0.19106;0.19154;0.1923;0.19319;0.19422;0.19532;0.19672;0.19813;0.19955;0.20106;0.20295;0.20514;0.20802;0.21142;0.21536;0.21986;0.22533;0.23166;0.23943;
+7000;0.17996;0.18012;0.18058;0.1813;0.18215;0.18314;0.1842;0.18556;0.18694;0.18833;0.1898;0.19158;0.19367;0.19645;0.19971;0.20348;0.20782;0.21309;0.21916;0.2265;
+7500;0.16958;0.1697;0.17013;0.17082;0.17162;0.17257;0.17359;0.17491;0.17626;0.17761;0.17904;0.18073;0.18294;0.18539;0.18853;0.19216;0.19632;0.20137;0.20722;0.21425;
+8000;0.15973;0.15978;0.16018;0.16083;0.1616;0.16251;0.16348;0.16477;0.16608;0.1674;0.16879;0.17022;0.1723;0.17484;0.17785;0.18135;0.18536;0.1902;0.19579;0.20253;
+8500;0.15018;0.15032;0.15071;0.15132;0.15205;0.15292;0.15386;0.1551;0.15638;0.15766;0.15902;0.16042;0.16254;0.16479;0.16766;0.17102;0.1749;0.17954;0.18489;0.19133;
+9000;0.14113;0.14133;0.1417;0.14228;0.14297;0.1438;0.1447;0.1459;0.14715;0.14839;0.1497;0.15107;0.15306;0.15521;0.15795;0.16117;0.16492;0.16936;0.17449;0.18064;
+9500;0.13266;0.13278;0.13313;0.13368;0.13434;0.13513;0.13599;0.13715;0.13836;0.13956;0.14084;0.14218;0.14404;0.14608;0.1487;0.15177;0.15538;0.15964;0.16456;0.17044;
+10000;0.12463;0.12474;0.12506;0.12557;0.12618;0.12691;0.12771;0.12882;0.13;0.13116;0.13241;0.13371;0.13545;0.13741;0.14005;0.14285;0.14629;0.15038;0.15509;0.1607;
+10500;0.11703;0.11714;0.11745;0.11792;0.1185;0.1192;0.11996;0.12101;0.12212;0.12322;0.1244;0.12567;0.12731;0.12917;0.13168;0.13448;0.13775;0.14155;0.14605;0.1514;
+11000;0.10984;0.10993;0.11022;0.11067;0.11122;0.11188;0.11261;0.11362;0.11469;0.11576;0.11691;0.11811;0.11961;0.12147;0.1236;0.12638;0.1295;0.13314;0.13743;0.14252;
+11500;0.10221;0.1023;0.10257;0.10298;0.10349;0.10411;0.1048;0.10574;0.10673;0.10773;0.10879;0.1099;0.1113;0.11303;0.11508;0.1175;0.12034;0.12367;0.12765;0.13237;
+12000;0.095116;0.095212;0.095464;0.095847;0.096324;0.096905;0.097542;0.098417;0.099344;0.10026;0.10125;0.10228;0.10358;0.10519;0.1071;0.10934;0.11198;0.11505;0.11869;0.12299;
+12500;0.088515;0.088634;0.088869;0.089227;0.089672;0.090212;0.090803;0.091616;0.092477;0.09333;0.094249;0.095199;0.09641;0.097904;0.099679;0.10177;0.10422;0.10708;0.11045;0.11445;
+13000;0.082456;0.082529;0.082747;0.083079;0.083493;0.083994;0.084545;0.0853;0.086098;0.086889;0.087743;0.088624;0.089751;0.091139;0.092789;0.094731;0.09701;0.099663;0.1028;0.10652;
+13500;0.076815;0.076837;0.077062;0.077369;0.077754;0.07822;0.078733;0.079432;0.080172;0.080908;0.081701;0.082516;0.083566;0.084855;0.086388;0.088193;0.09031;0.092774;0.09569;0.099142;
+14000;0.071565;0.071585;0.071781;0.072066;0.072424;0.072856;0.073333;0.073981;0.074669;0.075352;0.076087;0.076845;0.07782;0.079018;0.080441;0.082119;0.084084;0.086375;0.089083;0.092289;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.32568;0.32581;0.32643;0.32731;0.32834;0.3293;0.33023;0.33088;0.33219;0.33413;0.33619;0.33864;0.34061;0.34317;0.34679;0.35067;0.35479;0.3594;0.36477;0.37137;
+500;0.30885;0.30916;0.30975;0.31059;0.31156;0.31246;0.31335;0.31399;0.31523;0.31699;0.31884;0.32118;0.32313;0.3256;0.32907;0.33284;0.33693;0.34149;0.34682;0.35338;
+1000;0.293;0.29319;0.29376;0.29457;0.2955;0.29639;0.29726;0.29788;0.29905;0.30068;0.30245;0.30486;0.30661;0.30889;0.31209;0.3157;0.3198;0.32431;0.32959;0.33607;
+1500;0.27778;0.27796;0.27849;0.27926;0.28014;0.28099;0.28184;0.28249;0.28328;0.28483;0.2868;0.28905;0.29082;0.29303;0.29609;0.2994;0.30334;0.30778;0.313;0.31941;
+2000;0.26324;0.26342;0.26393;0.26466;0.26551;0.26632;0.26714;0.26776;0.26849;0.26991;0.27176;0.27392;0.27572;0.27784;0.28075;0.28394;0.28786;0.29207;0.29705;0.30336;
+2500;0.24935;0.24948;0.24997;0.25067;0.25148;0.25226;0.25305;0.25368;0.25441;0.2557;0.25741;0.25948;0.26128;0.26333;0.26612;0.26914;0.27302;0.27716;0.28206;0.28807;
+3000;0.23596;0.23612;0.23658;0.23725;0.23803;0.23879;0.23957;0.24021;0.24094;0.24214;0.24375;0.24572;0.2475;0.24943;0.25214;0.25504;0.25882;0.26287;0.26769;0.27358;
+3500;0.2235;0.22349;0.22393;0.22455;0.22528;0.22598;0.22669;0.22733;0.22806;0.2292;0.23069;0.2326;0.23435;0.23616;0.23855;0.24158;0.24528;0.24917;0.25391;0.25968;
+4000;0.2113;0.21144;0.21186;0.21246;0.21316;0.21384;0.21456;0.21517;0.21584;0.21686;0.21847;0.22004;0.22182;0.22355;0.22587;0.22873;0.23228;0.23609;0.24071;0.24634;
+4500;0.19967;0.19992;0.20032;0.2009;0.20158;0.20225;0.20296;0.20358;0.20426;0.20521;0.20671;0.20816;0.20983;0.21152;0.21379;0.21649;0.21984;0.22357;0.22809;0.23354;
+5000;0.18879;0.18892;0.1893;0.18986;0.19052;0.19117;0.19187;0.19249;0.19317;0.19407;0.19549;0.19688;0.19853;0.20019;0.20229;0.20478;0.20799;0.21161;0.21601;0.2213;
+5500;0.17841;0.17842;0.17878;0.17932;0.17995;0.18058;0.18127;0.18191;0.18258;0.18344;0.18478;0.1861;0.18773;0.18939;0.19142;0.194;0.19677;0.20027;0.20445;0.20957;
+6000;0.16827;0.16839;0.16874;0.16926;0.16986;0.17048;0.17116;0.17179;0.17246;0.17327;0.17454;0.17581;0.17741;0.17907;0.18105;0.18351;0.18617;0.18956;0.19336;0.19835;
+6500;0.15864;0.15882;0.15916;0.15965;0.16024;0.16084;0.1615;0.16214;0.16281;0.16356;0.16477;0.16598;0.16756;0.16919;0.17112;0.17349;0.17605;0.17934;0.18303;0.18776;
+7000;0.14959;0.14971;0.15003;0.1505;0.15106;0.15164;0.15229;0.15293;0.15359;0.15429;0.15545;0.15661;0.15815;0.15975;0.16163;0.16373;0.16637;0.16953;0.17314;0.17773;
+7500;0.14099;0.14103;0.14134;0.14178;0.14232;0.14288;0.14352;0.14415;0.14481;0.14547;0.14658;0.14768;0.14917;0.15076;0.15257;0.15464;0.15715;0.16018;0.16383;0.16814;
+8000;0.13265;0.13275;0.13304;0.13348;0.13399;0.13454;0.13516;0.13579;0.13644;0.13708;0.13796;0.13917;0.14061;0.14216;0.14392;0.14595;0.14836;0.15125;0.1548;0.15896;
+8500;0.12479;0.12489;0.12516;0.12558;0.12607;0.1266;0.12721;0.12783;0.12847;0.12908;0.12993;0.13107;0.13244;0.13397;0.13568;0.13765;0.13997;0.14274;0.14607;0.15019;
+9000;0.11734;0.11745;0.11771;0.11809;0.11855;0.11905;0.11964;0.12025;0.12088;0.12148;0.12228;0.12335;0.12466;0.12615;0.12781;0.12973;0.13195;0.13462;0.13794;0.14181;
+9500;0.11036;0.11045;0.11069;0.11106;0.1115;0.11197;0.11253;0.1131;0.11369;0.11423;0.11499;0.11598;0.11724;0.11867;0.12029;0.12215;0.12427;0.12687;0.13007;0.1338;
+10000;0.10375;0.10379;0.10402;0.10437;0.10479;0.10524;0.10577;0.10633;0.1069;0.10745;0.10813;0.10914;0.11018;0.11156;0.11314;0.11493;0.11699;0.11947;0.12254;0.12613;
+10500;0.097373;0.09745;0.09767;0.098004;0.098401;0.09884;0.099353;0.0999;0.10046;0.10101;0.10165;0.1026;0.10359;0.10488;0.10637;0.10805;0.11005;0.11242;0.11536;0.11881;
+11000;0.091339;0.091434;0.091643;0.09196;0.09234;0.092761;0.093258;0.093792;0.094342;0.094885;0.0955;0.096383;0.097324;0.098571;0.10001;0.10164;0.10351;0.10572;0.10853;0.11183;
+11500;0.085072;0.085139;0.085333;0.085627;0.08598;0.086371;0.086833;0.087329;0.087838;0.088338;0.08891;0.089733;0.090608;0.091766;0.093098;0.094611;0.096354;0.098404;0.10096;0.10396;
+12000;0.079238;0.079293;0.079473;0.079746;0.080073;0.080435;0.080866;0.081325;0.081796;0.082259;0.082789;0.083555;0.084366;0.085443;0.086679;0.088085;0.089702;0.091608;0.093987;0.096765;
+12500;0.073806;0.073864;0.074032;0.074284;0.074588;0.074923;0.075322;0.075749;0.076186;0.076614;0.077103;0.077817;0.078568;0.079569;0.080716;0.082021;0.083518;0.085293;0.087502;0.090081;
+13000;0.068755;0.068812;0.068967;0.069202;0.069485;0.069799;0.070172;0.070571;0.070977;0.071372;0.071823;0.072487;0.073183;0.074111;0.075177;0.076387;0.077777;0.079422;0.081476;0.083865;
+13500;0.06407;0.06412;0.064264;0.064482;0.064744;0.065034;0.065381;0.065751;0.06613;0.066502;0.066924;0.067537;0.068183;0.069043;0.070032;0.071153;0.072442;0.073966;0.075871;0.078079;
+14000;0.059712;0.059763;0.059897;0.060098;0.060343;0.060611;0.060932;0.061275;0.061625;0.061969;0.062361;0.062937;0.063539;0.064336;0.065251;0.06629;0.067481;0.068958;0.070655;0.072704;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.26757;0.26794;0.2684;0.26901;0.26971;0.27028;0.27064;0.27091;0.27229;0.27376;0.27489;0.27559;0.27658;0.2784;0.28039;0.2818;0.28281;0.28337;0.28351;0.28344;
+500;0.25409;0.25428;0.25471;0.25529;0.25593;0.25647;0.2568;0.25703;0.25831;0.25967;0.26084;0.26156;0.26246;0.26412;0.26604;0.26738;0.26845;0.26923;0.26969;0.27008;
+1000;0.24118;0.24119;0.24163;0.24214;0.24274;0.24325;0.24357;0.24382;0.24496;0.2462;0.24737;0.24813;0.24898;0.25049;0.25237;0.25376;0.25487;0.2557;0.25639;0.25716;
+1500;0.22854;0.22868;0.22907;0.22958;0.23015;0.23062;0.23094;0.23116;0.23222;0.23337;0.23453;0.23524;0.23605;0.23777;0.23933;0.24071;0.2419;0.2429;0.24377;0.24473;
+2000;0.21647;0.2167;0.21707;0.21755;0.21808;0.21854;0.21885;0.2191;0.22006;0.22111;0.22226;0.22294;0.22373;0.2253;0.22685;0.22825;0.22949;0.2306;0.23169;0.23294;
+2500;0.20494;0.20523;0.20558;0.20604;0.20655;0.20698;0.20729;0.20753;0.20842;0.20941;0.21054;0.2112;0.21196;0.21343;0.21494;0.21632;0.21762;0.21884;0.22008;0.22158;
+3000;0.1942;0.1944;0.19472;0.19514;0.1956;0.19598;0.19623;0.19647;0.1973;0.19821;0.19934;0.19999;0.20072;0.2021;0.20357;0.20494;0.20626;0.20757;0.20896;0.21062;
+3500;0.18395;0.18406;0.18436;0.18475;0.1852;0.18556;0.18583;0.18604;0.18677;0.18756;0.18863;0.18928;0.18997;0.19129;0.19272;0.19407;0.19541;0.19676;0.19828;0.20011;
+4000;0.17415;0.17416;0.17444;0.17482;0.17525;0.1756;0.17588;0.17608;0.17676;0.1775;0.17857;0.17914;0.17968;0.18096;0.18232;0.18368;0.18502;0.18641;0.18797;0.18992;
+4500;0.1646;0.1647;0.16497;0.16533;0.16575;0.16608;0.16636;0.16656;0.16719;0.16788;0.1689;0.1695;0.1702;0.1712;0.17241;0.17372;0.17504;0.17646;0.17808;0.1801;
+5000;0.15556;0.15565;0.15591;0.15625;0.15665;0.15698;0.15725;0.15747;0.15803;0.15867;0.15964;0.16025;0.16095;0.1619;0.16305;0.16436;0.16559;0.16694;0.1686;0.17069;
+5500;0.14695;0.14701;0.14725;0.14758;0.14796;0.14828;0.14854;0.14874;0.14927;0.14985;0.15078;0.15141;0.15211;0.15302;0.15411;0.15544;0.15668;0.15802;0.15957;0.16165;
+6000;0.13874;0.13877;0.13898;0.13928;0.13963;0.13993;0.1402;0.14041;0.1409;0.14145;0.14233;0.14298;0.14367;0.14435;0.14558;0.14692;0.14816;0.14952;0.1511;0.1531;
+6500;0.13093;0.13083;0.13105;0.13135;0.13169;0.13198;0.13225;0.13246;0.13291;0.13358;0.13427;0.13495;0.13544;0.1363;0.13745;0.13877;0.14002;0.14139;0.14299;0.145;
+7000;0.12322;0.1233;0.12351;0.12379;0.12412;0.12441;0.12467;0.12488;0.12531;0.12594;0.12659;0.12728;0.1278;0.12861;0.1297;0.131;0.13224;0.13362;0.13523;0.13726;
+7500;0.11605;0.11612;0.11632;0.11659;0.11691;0.11718;0.11745;0.11766;0.11806;0.11866;0.11928;0.11997;0.12051;0.12129;0.1223;0.12359;0.12482;0.12619;0.12781;0.12984;
+8000;0.10924;0.1093;0.10948;0.10974;0.11004;0.11031;0.11058;0.11079;0.11117;0.11172;0.11231;0.11301;0.11356;0.11431;0.11524;0.11654;0.11774;0.11911;0.12073;0.12274;
+8500;0.10286;0.10292;0.10309;0.10333;0.1036;0.10385;0.10409;0.10427;0.10461;0.10513;0.10569;0.10638;0.10694;0.10766;0.10869;0.10979;0.11101;0.11235;0.11396;0.11595;
+9000;0.096798;0.096844;0.09701;0.097239;0.097502;0.097738;0.097981;0.098171;0.098486;0.098945;0.099436;0.10013;0.10064;0.10134;0.10232;0.10336;0.10458;0.10591;0.10749;0.10946;
+9500;0.091053;0.091075;0.091235;0.091449;0.091702;0.091932;0.092176;0.092365;0.092667;0.092998;0.093565;0.094226;0.094744;0.095385;0.096272;0.097245;0.098478;0.099774;0.10133;0.10327;
+10000;0.085542;0.085595;0.085745;0.085955;0.086196;0.086419;0.086659;0.086851;0.087044;0.087461;0.08798;0.088613;0.08915;0.089782;0.09063;0.091534;0.092685;0.093918;0.095467;0.097362;
+10500;0.080335;0.080407;0.080549;0.08075;0.080982;0.0812;0.081438;0.081625;0.081826;0.082199;0.082675;0.083284;0.083836;0.084452;0.085268;0.086135;0.08727;0.088472;0.08993;0.091727;
+11000;0.075438;0.075486;0.075621;0.075815;0.076037;0.076249;0.076484;0.076676;0.076881;0.077223;0.077748;0.078235;0.078785;0.079372;0.080089;0.081005;0.082118;0.083284;0.084724;0.086473;
+11500;0.070297;0.070343;0.070468;0.070647;0.070853;0.071048;0.071265;0.071443;0.071628;0.071946;0.072433;0.072884;0.073392;0.073938;0.074602;0.075454;0.076486;0.077563;0.078895;0.080513;
+12000;0.065516;0.065568;0.065684;0.065849;0.066039;0.066219;0.06642;0.066583;0.066751;0.067046;0.067498;0.067914;0.068384;0.068891;0.069502;0.070298;0.071254;0.072247;0.073478;0.074974;
+12500;0.06107;0.061134;0.061241;0.061394;0.061569;0.061735;0.06192;0.062071;0.062224;0.062493;0.062915;0.063299;0.063734;0.064203;0.064767;0.065505;0.066393;0.067307;0.068445;0.069828;
+13000;0.056937;0.057018;0.057117;0.057258;0.05742;0.057573;0.057742;0.057881;0.058021;0.058273;0.05866;0.059013;0.059414;0.05985;0.060369;0.061053;0.061877;0.062719;0.063769;0.065047;
+13500;0.053215;0.053197;0.053288;0.053419;0.053568;0.053708;0.053865;0.053992;0.054118;0.054351;0.054709;0.055035;0.055403;0.055807;0.056283;0.056917;0.05768;0.058455;0.059425;0.060605;
+14000;0.04962;0.049649;0.049734;0.049855;0.049993;0.050121;0.050265;0.050382;0.050496;0.05071;0.051041;0.051343;0.051679;0.052053;0.052556;0.053079;0.053771;0.054509;0.05539;0.056479;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.21629;0.21641;0.21685;0.21741;0.21806;0.21846;0.21882;0.21957;0.2208;0.2218;0.22219;0.22262;0.22371;0.22454;0.22446;0.22325;0.22034;0.21498;0.2064;0.19219;
+500;0.21056;0.20532;0.20578;0.20631;0.20691;0.20725;0.20757;0.20824;0.20939;0.21037;0.21075;0.21117;0.21218;0.21303;0.21301;0.21203;0.20957;0.205;0.1976;0.18558;
+1000;0.19479;0.19484;0.19522;0.1957;0.19625;0.19656;0.19686;0.19746;0.19851;0.19942;0.19976;0.20016;0.20108;0.20197;0.20205;0.20126;0.19921;0.19532;0.18903;0.1792;
+1500;0.18474;0.18476;0.18512;0.18555;0.18606;0.18634;0.18659;0.18712;0.18809;0.18896;0.18926;0.18963;0.1907;0.19137;0.19154;0.19094;0.18922;0.18594;0.18051;0.17243;
+2000;0.17493;0.17505;0.17538;0.17579;0.17627;0.17653;0.17676;0.17724;0.17815;0.17899;0.17926;0.17962;0.18059;0.18124;0.18148;0.18104;0.17963;0.17688;0.17231;0.16558;
+2500;0.16585;0.16589;0.16618;0.16655;0.16697;0.16718;0.16736;0.1678;0.16865;0.16945;0.16973;0.17006;0.17095;0.1716;0.17186;0.17155;0.17041;0.16813;0.16431;0.15874;
+3000;0.15713;0.15715;0.15743;0.15776;0.15816;0.15835;0.15852;0.15889;0.15965;0.16037;0.16061;0.16086;0.16176;0.1624;0.16269;0.16249;0.16157;0.15969;0.15653;0.15194;
+3500;0.1487;0.1488;0.14905;0.14936;0.14973;0.14991;0.15007;0.15041;0.15112;0.15182;0.15204;0.15215;0.15301;0.15362;0.15394;0.15381;0.15309;0.15153;0.14897;0.14522;
+4000;0.14068;0.1408;0.14104;0.14133;0.14168;0.14185;0.142;0.1423;0.14297;0.14365;0.14385;0.14415;0.14478;0.14535;0.14564;0.14553;0.14494;0.14368;0.14155;0.13849;
+4500;0.13308;0.13317;0.13339;0.13366;0.13398;0.13414;0.13428;0.13455;0.13518;0.13581;0.13603;0.13632;0.1369;0.13748;0.1378;0.13776;0.13722;0.13612;0.13439;0.13189;
+5000;0.12584;0.12587;0.12608;0.12633;0.12663;0.12678;0.12691;0.12716;0.12774;0.12832;0.12857;0.12885;0.12938;0.12996;0.13031;0.13034;0.12994;0.12902;0.1275;0.12547;
+5500;0.11884;0.11891;0.1191;0.11933;0.11961;0.11975;0.11988;0.1201;0.12064;0.12119;0.12144;0.12172;0.12221;0.12278;0.12314;0.12324;0.12297;0.12225;0.12103;0.11931;
+6000;0.11218;0.11226;0.11244;0.11266;0.11292;0.11305;0.11317;0.11337;0.11387;0.11438;0.11465;0.11492;0.11537;0.11593;0.11631;0.11646;0.1163;0.11575;0.1148;0.11342;
+6500;0.10587;0.10593;0.1061;0.1063;0.10654;0.10672;0.10677;0.10696;0.10742;0.1079;0.10818;0.10843;0.10885;0.10938;0.10979;0.10999;0.10992;0.10953;0.10879;0.10772;
+7000;0.099866;0.099906;0.10005;0.10023;0.10046;0.10063;0.10068;0.10085;0.10128;0.10174;0.10202;0.10226;0.10264;0.10314;0.10358;0.10382;0.10383;0.10356;0.103;0.10221;
+7500;0.094222;0.09427;0.094406;0.094569;0.094762;0.0949;0.094931;0.094957;0.095439;0.095873;0.096158;0.096263;0.09673;0.097196;0.097659;0.097928;0.09799;0.097821;0.097439;0.096903;
+8000;0.08886;0.088899;0.089028;0.089181;0.089363;0.08949;0.089529;0.089558;0.089992;0.09037;0.090621;0.090706;0.090986;0.091541;0.092006;0.092287;0.092411;0.092346;0.092113;0.091784;
+8500;0.083742;0.083788;0.083907;0.084051;0.084222;0.084341;0.084385;0.084414;0.084812;0.085172;0.085423;0.085509;0.085723;0.086185;0.086627;0.086918;0.087094;0.08712;0.087016;0.086861;
+9000;0.078885;0.078925;0.079035;0.07917;0.07933;0.079442;0.079489;0.079521;0.07987;0.080204;0.080457;0.080564;0.080761;0.081169;0.081611;0.081886;0.082063;0.082134;0.082145;0.082137;
+9500;0.074261;0.074297;0.074402;0.074529;0.074679;0.074777;0.074818;0.074842;0.075168;0.075482;0.075738;0.075861;0.076041;0.076408;0.076856;0.077139;0.077345;0.077474;0.077535;0.077609;
+10000;0.069881;0.069888;0.069987;0.070104;0.070242;0.070338;0.070383;0.070412;0.070705;0.070993;0.071255;0.071391;0.071559;0.071982;0.072337;0.072633;0.072869;0.073048;0.073194;0.073376;
+10500;0.065673;0.065708;0.065799;0.06591;0.066039;0.066128;0.066177;0.066208;0.066471;0.066729;0.066998;0.067146;0.067303;0.067693;0.068048;0.068352;0.068613;0.068841;0.069057;0.069324;
+11000;0.061714;0.061744;0.061829;0.061935;0.062055;0.062139;0.062191;0.062224;0.062458;0.06269;0.062963;0.063113;0.06327;0.063629;0.063981;0.064291;0.064571;0.064835;0.065113;0.065459;
+11500;0.057573;0.057607;0.057686;0.057783;0.057893;0.05797;0.058015;0.058044;0.058261;0.058475;0.058724;0.058859;0.059002;0.059335;0.059692;0.059939;0.06019;0.060425;0.060673;0.06098;
+12000;0.053724;0.053768;0.05384;0.05393;0.05403;0.0541;0.054139;0.054163;0.054365;0.054562;0.054787;0.054912;0.055039;0.055347;0.05564;0.055895;0.056122;0.056329;0.056547;0.056819;
+12500;0.050148;0.050205;0.05027;0.050353;0.050445;0.050511;0.050542;0.050562;0.050749;0.050929;0.051134;0.051244;0.05136;0.051643;0.05191;0.05214;0.052342;0.052525;0.052714;0.052954;
+13000;0.046876;0.046898;0.04696;0.047036;0.047118;0.047177;0.047202;0.04722;0.047393;0.047558;0.047742;0.047839;0.047944;0.048205;0.048447;0.048653;0.048833;0.048992;0.049155;0.049365;
+13500;0.043833;0.04384;0.043884;0.043951;0.04403;0.044087;0.04411;0.04412;0.044279;0.04443;0.044594;0.044679;0.044773;0.045013;0.045231;0.045416;0.045574;0.045712;0.045851;0.046032;
+14000;0.040953;0.040972;0.041024;0.041089;0.04116;0.041212;0.041234;0.041248;0.04139;0.041528;0.041675;0.041748;0.041831;0.04205;0.042247;0.042411;0.042549;0.042667;0.042784;0.042936;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.19773;0.19789;0.19833;0.19888;0.19956;0.19997;0.2003;0.20126;0.20247;0.20315;0.20334;0.20422;0.20498;0.20511;0.20422;0.20166;0.1964;0.18693;0.16925;0.13732;
+500;0.19459;0.18774;0.18816;0.18867;0.18928;0.18964;0.18992;0.19078;0.19191;0.1926;0.19284;0.1936;0.19436;0.19455;0.19383;0.19163;0.18708;0.1789;0.16387;0.13733;
+1000;0.17804;0.17804;0.17843;0.1789;0.17948;0.1798;0.18005;0.18083;0.18173;0.18252;0.18277;0.18344;0.1842;0.18444;0.18387;0.18199;0.17806;0.17101;0.15824;0.13626;
+1500;0.16865;0.16878;0.16914;0.16958;0.1701;0.1704;0.17063;0.17134;0.17217;0.17293;0.17317;0.17372;0.17444;0.17476;0.17432;0.17273;0.16934;0.16328;0.15244;0.13418;
+2000;0.15981;0.15992;0.16025;0.16065;0.16115;0.16141;0.16164;0.16228;0.16304;0.16379;0.16402;0.16449;0.16513;0.1655;0.16518;0.16384;0.16093;0.15561;0.14653;0.13118;
+2500;0.1516;0.15158;0.15188;0.15224;0.15268;0.1529;0.15308;0.15363;0.15432;0.15505;0.15527;0.15551;0.1563;0.15668;0.15644;0.15531;0.15283;0.14828;0.14076;0.12773;
+3000;0.1435;0.1436;0.14388;0.14421;0.14462;0.14482;0.14498;0.14549;0.14612;0.14678;0.14694;0.14714;0.14787;0.14827;0.14808;0.14715;0.14503;0.14116;0.13475;0.1239;
+3500;0.13578;0.13596;0.13622;0.13653;0.13691;0.1371;0.13724;0.13771;0.13829;0.13894;0.1391;0.13927;0.13989;0.14027;0.14012;0.13931;0.13752;0.13419;0.12879;0.11977;
+4000;0.12857;0.12866;0.1289;0.12919;0.12955;0.12971;0.12985;0.13027;0.13093;0.13144;0.13159;0.13177;0.13233;0.13274;0.13263;0.13188;0.13026;0.12743;0.12277;0.11538;
+4500;0.1217;0.12169;0.12191;0.12218;0.12251;0.12266;0.12279;0.12317;0.12379;0.12428;0.12443;0.1246;0.12512;0.12555;0.12549;0.12488;0.12346;0.12089;0.1169;0.1108;
+5000;0.11496;0.11503;0.11524;0.11548;0.11579;0.11593;0.11604;0.11639;0.11697;0.11745;0.11759;0.11777;0.11823;0.11868;0.11867;0.11817;0.11698;0.11474;0.11116;0.10606;
+5500;0.10855;0.10868;0.10887;0.1091;0.10938;0.10951;0.10961;0.10993;0.11046;0.11093;0.11107;0.11125;0.11167;0.11212;0.11216;0.11177;0.11073;0.10883;0.10579;0.10142;
+6000;0.10257;0.10263;0.10281;0.10301;0.10327;0.10339;0.10348;0.10377;0.10426;0.10471;0.10484;0.10501;0.10554;0.10586;0.10594;0.10561;0.10473;0.10313;0.10057;0.096921;
+6500;0.096883;0.096871;0.097031;0.097223;0.097463;0.097569;0.097655;0.097907;0.098362;0.09878;0.098912;0.099075;0.099551;0.099868;0.099971;0.099723;0.099005;0.09766;0.095519;0.092478;
+7000;0.09143;0.09148;0.091622;0.091787;0.091995;0.092076;0.092135;0.092338;0.092751;0.093145;0.093255;0.093362;0.093833;0.094155;0.094282;0.094113;0.093526;0.092409;0.090624;0.088117;
+7500;0.086251;0.086343;0.086475;0.086627;0.086819;0.08689;0.086938;0.08711;0.087472;0.08782;0.087901;0.087925;0.088403;0.088718;0.08887;0.088766;0.088297;0.087375;0.085899;0.083844;
+8000;0.081398;0.081444;0.081563;0.081701;0.081873;0.081934;0.081979;0.082131;0.082467;0.082801;0.082883;0.083009;0.083315;0.083596;0.083728;0.083671;0.083306;0.082557;0.08135;0.079644;
+8500;0.076791;0.07677;0.076879;0.077006;0.077164;0.077221;0.077261;0.077397;0.077707;0.078015;0.07811;0.078235;0.078509;0.078796;0.078938;0.078891;0.078571;0.077949;0.076976;0.075608;
+9000;0.072289;0.072325;0.072427;0.072544;0.07269;0.072742;0.072781;0.0729;0.073186;0.07347;0.073575;0.073698;0.073945;0.074231;0.074389;0.074384;0.074155;0.073637;0.072817;0.071699;
+9500;0.06803;0.068105;0.0682;0.068307;0.068441;0.06849;0.068527;0.06863;0.068893;0.069154;0.069272;0.06939;0.069612;0.069894;0.070064;0.070096;0.069942;0.06955;0.068902;0.068022;
+10000;0.064068;0.064102;0.064188;0.064288;0.064411;0.06449;0.064489;0.064581;0.064824;0.065063;0.065196;0.065302;0.065502;0.065765;0.065957;0.06602;0.06593;0.065646;0.065149;0.064483;
+10500;0.06032;0.060305;0.060384;0.060476;0.060589;0.060662;0.060665;0.060746;0.060969;0.061191;0.06133;0.061427;0.061607;0.061849;0.062061;0.06215;0.062112;0.061921;0.061558;0.061069;
+11000;0.056681;0.056708;0.056782;0.056868;0.056973;0.057039;0.057046;0.057115;0.057319;0.05753;0.05767;0.057688;0.057921;0.05814;0.058369;0.058478;0.058483;0.05837;0.058123;0.057785;
+11500;0.052907;0.052942;0.05301;0.053089;0.053184;0.053244;0.053246;0.05331;0.053497;0.053688;0.053814;0.053828;0.054042;0.054242;0.054447;0.05454;0.054535;0.054417;0.054174;0.053837;
+12000;0.049401;0.049448;0.049511;0.049583;0.04967;0.049723;0.049722;0.049779;0.04995;0.050123;0.050235;0.050242;0.050441;0.050623;0.050805;0.050883;0.050869;0.050746;0.050506;0.050172;
+12500;0.046186;0.046207;0.046264;0.04633;0.046409;0.046456;0.046452;0.046504;0.04666;0.046815;0.046915;0.046978;0.0471;0.047264;0.047425;0.047489;0.047465;0.047338;0.0471;0.046771;
+13000;0.043198;0.043202;0.043254;0.043314;0.043385;0.043427;0.04342;0.043467;0.043608;0.043747;0.043835;0.043889;0.043999;0.044148;0.044288;0.044339;0.044306;0.044175;0.04394;0.043615;
+13500;0.040423;0.040426;0.040467;0.040517;0.040581;0.040619;0.040608;0.04065;0.040778;0.040902;0.040978;0.041024;0.041122;0.041257;0.041378;0.041416;0.041375;0.041239;0.041005;0.040686;
+14000;0.037816;0.037832;0.037876;0.037926;0.037983;0.038014;0.038002;0.038039;0.038155;0.038265;0.038329;0.038368;0.038454;0.038574;0.038678;0.038705;0.038656;0.038517;0.038283;0.037968;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.18022;0.18042;0.18089;0.18143;0.18214;0.1826;0.18295;0.18412;0.1853;0.18568;0.18612;0.18687;0.18719;0.18673;0.18481;0.18031;0.17145;0.15281;0.1122;-9999;
+500;0.17097;0.17113;0.17158;0.17209;0.17274;0.17315;0.17344;0.1745;0.17562;0.17599;0.17641;0.17713;0.17749;0.17715;0.17549;0.17157;0.16386;0.1479;0.11453;-9999;
+1000;0.16212;0.1623;0.16269;0.16317;0.16377;0.16414;0.1644;0.16538;0.1664;0.16674;0.16712;0.1678;0.1682;0.16796;0.16654;0.16313;0.15642;0.14274;0.11505;-9999;
+1500;0.15367;0.15385;0.1542;0.15464;0.1552;0.15554;0.15578;0.15667;0.15763;0.15796;0.15828;0.15888;0.15931;0.15916;0.15795;0.155;0.14917;0.13743;0.11429;-9999;
+2000;0.14568;0.14579;0.14612;0.14652;0.14702;0.14731;0.14753;0.14836;0.14925;0.14959;0.14988;0.15042;0.15083;0.15073;0.14972;0.14717;0.14199;0.13203;0.11277;-9999;
+2500;0.13798;0.13817;0.13849;0.13885;0.13932;0.13957;0.13974;0.14047;0.14127;0.14159;0.14185;0.14235;0.14277;0.1427;0.14184;0.13964;0.13516;0.1266;0.1105;-9999;
+3000;0.13078;0.1309;0.13119;0.13153;0.13196;0.13219;0.13234;0.13301;0.13376;0.13408;0.13428;0.13469;0.13507;0.13505;0.1343;0.13238;0.12849;0.12133;0.10766;-9999;
+3500;0.12393;0.12396;0.12421;0.12452;0.12493;0.12513;0.12527;0.12589;0.12658;0.1269;0.12708;0.12747;0.12785;0.12782;0.12712;0.12542;0.12196;0.11581;0.10444;0.08532;
+4000;0.11722;0.11729;0.11754;0.11783;0.1182;0.11839;0.11852;0.11908;0.11973;0.12005;0.12009;0.12057;0.12095;0.12096;0.12038;0.11881;0.11569;0.11036;0.10065;0.083963;
+4500;0.11083;0.11094;0.11117;0.11144;0.11179;0.11195;0.11207;0.11258;0.11319;0.11351;0.11356;0.11398;0.11436;0.1144;0.11389;0.11252;0.10981;0.10508;0.096761;0.082812;
+5000;0.10482;0.1049;0.10511;0.10536;0.10568;0.10582;0.10593;0.10638;0.10689;0.10727;0.10734;0.10769;0.10805;0.10811;0.10768;0.1065;0.10416;0.10007;0.092894;0.081145;
+5500;0.099115;0.099142;0.09933;0.099555;0.099851;0.099984;0.10008;0.10048;0.10093;0.1013;0.10136;0.10166;0.10202;0.1021;0.10176;0.10075;0.098709;0.095185;0.089077;0.079193;
+6000;0.093573;0.093632;0.093808;0.094012;0.09428;0.094391;0.094466;0.094839;0.095256;0.095606;0.095676;0.095924;0.09625;0.096377;0.096104;0.095234;0.093483;0.090387;0.085374;0.076946;
+6500;0.0884;0.088457;0.088611;0.088787;0.08902;0.0891;0.089145;0.089461;0.089845;0.090189;0.090276;0.090482;0.090772;0.090924;0.090711;0.089975;0.088464;0.085814;0.081538;0.074496;
+7000;0.083486;0.083529;0.083671;0.083833;0.084047;0.084118;0.084158;0.084441;0.084763;0.08508;0.085133;0.085303;0.085568;0.085749;0.085582;0.08495;0.083655;0.081375;0.077747;0.071872;
+7500;0.078822;0.078837;0.078967;0.079116;0.079313;0.079376;0.079415;0.079665;0.079955;0.080269;0.080318;0.080374;0.080677;0.080843;0.080707;0.080179;0.079065;0.077111;0.074035;0.069141;
+8000;0.074329;0.074373;0.074493;0.074628;0.074809;0.074865;0.074898;0.075122;0.075381;0.075691;0.075737;0.075799;0.076066;0.076252;0.076142;0.075673;0.074687;0.073019;0.070416;0.066341;
+8500;0.070073;0.070128;0.070239;0.070362;0.070527;0.070577;0.070606;0.070805;0.071109;0.07134;0.071385;0.071447;0.071687;0.071886;0.071812;0.071429;0.070594;0.069153;0.066928;0.063584;
+9000;0.066044;0.066095;0.066197;0.06631;0.06646;0.066505;0.06653;0.066705;0.066985;0.067211;0.067254;0.067311;0.06753;0.067734;0.067691;0.067384;0.066687;0.065465;0.063559;0.060823;
+9500;0.062232;0.062269;0.062362;0.062465;0.062602;0.062641;0.062663;0.062817;0.063075;0.063293;0.063333;0.063386;0.063577;0.06379;0.063776;0.063532;0.062956;0.061926;0.060337;0.058063;
+10000;0.058629;0.058642;0.058727;0.05882;0.058944;0.058979;0.058998;0.059132;0.05937;0.059578;0.059616;0.059664;0.05991;0.060049;0.060058;0.059867;0.059395;0.058538;0.057219;0.055336;
+10500;0.055179;0.055208;0.055284;0.055369;0.055482;0.055514;0.055529;0.055645;0.055863;0.05606;0.056096;0.056136;0.056361;0.056504;0.05653;0.056386;0.056005;0.055303;0.054211;0.052658;
+11000;0.051927;0.05196;0.05203;0.052108;0.052209;0.052237;0.05225;0.052349;0.052547;0.052732;0.052767;0.052768;0.053003;0.053147;0.053188;0.053084;0.052782;0.05221;0.051307;0.050044;
+11500;0.048512;0.048547;0.048611;0.048682;0.048775;0.048797;0.048806;0.048897;0.049077;0.049245;0.049274;0.049278;0.049487;0.049613;0.049643;0.049536;0.049242;0.048697;0.047837;0.046626;
+12000;0.045341;0.045381;0.045441;0.045505;0.045589;0.045608;0.045612;0.045696;0.045859;0.046011;0.046033;0.046039;0.046223;0.046334;0.046354;0.046244;0.045957;0.045435;0.044613;0.043458;
+12500;0.042428;0.042448;0.042501;0.042559;0.042636;0.042651;0.042651;0.042727;0.042876;0.043011;0.043027;0.043031;0.043194;0.043291;0.043302;0.04319;0.04291;0.042409;0.041622;0.040519;
+13000;0.039722;0.03973;0.039777;0.039829;0.039899;0.03991;0.039907;0.039976;0.04011;0.04023;0.040239;0.040242;0.040386;0.040468;0.04047;0.040357;0.040084;0.039601;0.038849;0.037795;
+13500;0.037194;0.03721;0.037254;0.0373;0.037363;0.03737;0.037364;0.037426;0.037546;0.037652;0.037656;0.037659;0.037781;0.03785;0.037844;0.037729;0.037464;0.036998;0.036277;0.035272;
+14000;0.034851;0.034877;0.034918;0.034959;0.035016;0.035019;0.03501;0.035065;0.035172;0.035264;0.035262;0.035262;0.035368;0.035423;0.035409;0.035292;0.035034;0.034585;0.033894;0.032932;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.16409;0.16428;0.16469;0.16536;0.16609;0.16661;0.16725;0.16826;0.16926;0.16957;0.17;0.17056;0.1705;0.16923;0.16569;0.15828;0.14097;0.096471;-9999;-9999;
+500;0.15566;0.15581;0.15608;0.15657;0.15727;0.15784;0.15842;0.15937;0.16037;0.16067;0.1611;0.16167;0.16167;0.1606;0.15751;0.15102;0.13611;0.099094;-9999;-9999;
+1000;0.14742;0.14762;0.14809;0.14854;0.14919;0.14961;0.15014;0.15102;0.15194;0.15219;0.15253;0.15315;0.15321;0.15231;0.14963;0.14394;0.1311;0.10098;-9999;-9999;
+1500;0.13975;0.13992;0.14034;0.14076;0.14137;0.14175;0.14223;0.14306;0.14392;0.14415;0.14443;0.145;0.14511;0.14438;0.14205;0.13705;0.126;0.10099;-9999;-9999;
+2000;0.13233;0.13264;0.13301;0.1334;0.13394;0.13427;0.13468;0.13545;0.13626;0.13649;0.13668;0.13728;0.13739;0.13677;0.13476;0.13022;0.12085;0.099912;-9999;-9999;
+2500;0.12557;0.12571;0.12604;0.12641;0.12692;0.12721;0.12759;0.12828;0.12902;0.12919;0.12946;0.12993;0.13006;0.12951;0.12773;0.12375;0.11571;0.098234;-9999;-9999;
+3000;0.11895;0.11909;0.11938;0.11973;0.12021;0.12047;0.12081;0.12145;0.12215;0.12232;0.12257;0.12298;0.12308;0.12257;0.12097;0.11748;0.11069;0.095921;-9999;-9999;
+3500;0.11267;0.11277;0.11304;0.11336;0.11379;0.11403;0.11433;0.11493;0.11559;0.11576;0.11597;0.11636;0.11647;0.11603;0.11458;0.11144;0.10551;0.093058;0.067789;-9999;
+4000;0.10668;0.10668;0.10694;0.10728;0.10769;0.10789;0.10815;0.1087;0.10931;0.10945;0.10965;0.11003;0.11016;0.1098;0.10854;0.10577;0.10049;0.089787;0.067211;-9999;
+4500;0.10085;0.10095;0.10118;0.10145;0.10183;0.10201;0.10224;0.10275;0.10332;0.10345;0.10363;0.10399;0.10413;0.10384;0.10275;0.10032;0.095716;0.086476;0.067667;-9999;
+5000;0.095317;0.095425;0.095641;0.095889;0.096233;0.096396;0.096601;0.09707;0.097608;0.097734;0.0979;0.098228;0.098383;0.098149;0.097207;0.095087;0.091072;0.083152;0.06765;-9999;
+5500;0.090053;0.090159;0.090359;0.090586;0.090903;0.091047;0.091229;0.091663;0.092166;0.092286;0.09244;0.092746;0.092914;0.092725;0.091908;0.090053;0.086566;0.079782;0.066637;-9999;
+6000;0.085166;0.085232;0.085409;0.085605;0.085881;0.085992;0.086134;0.086512;0.086982;0.087108;0.087243;0.087526;0.087705;0.087562;0.086862;0.085237;0.082206;0.076396;0.065401;-9999;
+6500;0.080518;0.080523;0.080723;0.080882;0.081136;0.081233;0.081278;0.081697;0.082109;0.082221;0.082309;0.082557;0.082743;0.082641;0.082044;0.080633;0.077924;0.073013;0.063781;-9999;
+7000;0.076018;0.076073;0.076221;0.076386;0.076619;0.076702;0.076743;0.07712;0.0775;0.077622;0.077699;0.077904;0.078065;0.077965;0.077449;0.076226;0.073877;0.06976;0.061911;-9999;
+7500;0.071749;0.071822;0.071958;0.072109;0.072322;0.072393;0.072425;0.072767;0.073117;0.073248;0.073314;0.073497;0.073663;0.073595;0.073137;0.072051;0.069982;0.066451;0.05983;-9999;
+8000;0.067732;0.067779;0.067903;0.068041;0.068236;0.068296;0.068324;0.06863;0.068956;0.06909;0.069055;0.069306;0.069474;0.069433;0.069051;0.068116;0.066326;0.063268;0.057687;0.048201;
+8500;0.063928;0.06393;0.064065;0.064175;0.064354;0.064406;0.064431;0.064703;0.064978;0.065141;0.065118;0.065326;0.065494;0.065474;0.065158;0.064357;0.062812;0.060179;0.055482;0.047659;
+9000;0.060254;0.060291;0.060394;0.06051;0.060671;0.060713;0.060735;0.060976;0.061226;0.061391;0.06138;0.06155;0.061715;0.061712;0.06145;0.060769;0.059442;0.057175;0.053223;0.046799;
+9500;0.056785;0.056832;0.056927;0.05703;0.057177;0.057214;0.05723;0.057448;0.057675;0.057835;0.057834;0.057969;0.058121;0.058141;0.057925;0.057351;0.056216;0.054228;0.050939;0.045637;
+10000;0.053512;0.053556;0.053643;0.053735;0.05387;0.053904;0.053915;0.054105;0.054308;0.054466;0.054472;0.054578;0.054712;0.054756;0.054581;0.054096;0.053121;0.051407;0.048724;0.044282;
+10500;0.050426;0.050461;0.050539;0.050623;0.050743;0.050771;0.050777;0.050944;0.051122;0.05128;0.051296;0.051373;0.051489;0.05155;0.051409;0.051001;0.050152;0.0487;0.046444;0.042792;
+11000;0.047522;0.047537;0.047608;0.047683;0.04779;0.047812;0.047816;0.047959;0.048114;0.04827;0.04828;0.048289;0.048449;0.048518;0.048403;0.048042;0.047323;0.046098;0.044207;0.041208;
+11500;0.044419;0.044458;0.044522;0.04459;0.044688;0.044706;0.044706;0.044837;0.044978;0.045116;0.045121;0.045123;0.045269;0.045325;0.045211;0.044874;0.044187;0.043023;0.041221;0.038355;
+12000;0.041541;0.041605;0.041664;0.041725;0.041814;0.041827;0.041822;0.041943;0.042071;0.042191;0.042192;0.042188;0.042319;0.042364;0.042248;0.04193;0.041294;0.040172;0.038454;0.035716;
+12500;0.038942;0.038962;0.039015;0.03907;0.039151;0.039161;0.039152;0.039262;0.039377;0.039481;0.039477;0.039467;0.039585;0.039617;0.039501;0.039193;0.038589;0.037528;0.035891;0.033276;
+13000;0.036532;0.036515;0.036563;0.036612;0.036685;0.036691;0.036679;0.036779;0.036882;0.036971;0.036961;0.036992;0.037048;0.037071;0.036954;0.036657;0.036086;0.03508;0.033519;0.03102;
+13500;0.034234;0.03425;0.034294;0.034337;0.034403;0.034405;0.034389;0.03448;0.034572;0.034647;0.034632;0.034655;0.034701;0.034712;0.034594;0.034306;0.033761;0.032817;0.031323;0.028937;
+14000;0.032109;0.032157;0.032196;0.032234;0.032293;0.032291;0.032272;0.032354;0.032434;0.032496;0.032476;0.032491;0.032529;0.032529;0.032408;0.032129;0.031607;0.030716;0.029292;0.027015;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.14886;0.14908;0.14955;0.15026;0.15104;0.15162;0.15239;0.1535;0.15444;0.15477;0.15517;0.15537;0.15467;0.15216;0.14625;0.13193;0.09003;-9999;-9999;-9999;
+500;0.14125;0.14126;0.14184;0.1425;0.14322;0.14374;0.14442;0.14542;0.14631;0.14663;0.14703;0.14727;0.14671;0.14453;0.13927;0.12694;0.092242;-9999;-9999;-9999;
+1000;0.13389;0.13409;0.13448;0.13508;0.13576;0.13623;0.13686;0.13777;0.1386;0.13886;0.13923;0.13951;0.13907;0.13716;0.13252;0.1219;0.093248;-9999;-9999;-9999;
+1500;0.12687;0.12709;0.12744;0.12799;0.12863;0.12906;0.12963;0.13048;0.13127;0.13151;0.13183;0.13208;0.13171;0.13005;0.126;0.11683;0.092977;-9999;-9999;-9999;
+2000;0.12035;0.12051;0.12082;0.12132;0.12189;0.12227;0.12277;0.12352;0.12425;0.12447;0.12476;0.12502;0.12469;0.12324;0.11956;0.1118;0.091865;-9999;-9999;-9999;
+2500;0.11414;0.11415;0.1145;0.11496;0.11549;0.11581;0.11626;0.11696;0.11764;0.1178;0.11805;0.11828;0.11802;0.11673;0.1135;0.10679;0.090084;-9999;-9999;-9999;
+3000;0.10804;0.10819;0.10855;0.10886;0.10936;0.10965;0.11006;0.11071;0.11134;0.11149;0.11172;0.11196;0.11171;0.11055;0.10767;0.10177;0.087735;-9999;-9999;-9999;
+3500;0.10224;0.10243;0.10274;0.10304;0.1035;0.10376;0.10413;0.10474;0.10535;0.10548;0.10569;0.10593;0.10574;0.10472;0.10217;0.096912;0.084956;-9999;-9999;-9999;
+4000;0.096799;0.096922;0.097201;0.097481;0.09791;0.098141;0.098479;0.099051;0.099622;0.099751;0.099945;0.10018;0.10003;0.099143;0.096915;0.0923;0.081977;0.055389;-9999;-9999;
+4500;0.091622;0.091627;0.091851;0.092183;0.092578;0.092782;0.093087;0.093623;0.094159;0.094277;0.094459;0.094702;0.094598;0.093845;0.091878;0.087832;0.078968;0.057003;-9999;-9999;
+5000;0.086557;0.086561;0.086849;0.087039;0.087467;0.087663;0.087947;0.088449;0.088955;0.089067;0.089233;0.089477;0.089411;0.088766;0.08705;0.083505;0.075873;0.057597;-9999;-9999;
+5500;0.081838;0.081924;0.082122;0.08235;0.082684;0.082843;0.083078;0.083522;0.083997;0.084101;0.08421;0.084497;0.084463;0.083913;0.082414;0.07931;0.072729;0.05758;-9999;-9999;
+6000;0.077382;0.077463;0.077645;0.077854;0.078161;0.0783;0.07851;0.078922;0.07934;0.079413;0.079483;0.079755;0.079746;0.079281;0.077978;0.075264;0.069572;0.056979;-9999;-9999;
+6500;0.073148;0.073211;0.07338;0.07357;0.073853;0.073975;0.074166;0.074546;0.074938;0.075004;0.075056;0.075309;0.075292;0.074867;0.073732;0.071363;0.066544;0.055889;-9999;-9999;
+7000;0.069128;0.069132;0.069286;0.069498;0.069754;0.069865;0.070033;0.070382;0.070748;0.07081;0.070906;0.071101;0.071104;0.070746;0.069736;0.06757;0.063455;0.054544;-9999;-9999;
+7500;0.06526;0.065318;0.065462;0.06562;0.065858;0.065957;0.066104;0.066425;0.066765;0.066823;0.066909;0.067097;0.067115;0.066816;0.065944;0.064065;0.060481;0.053051;-9999;-9999;
+8000;0.061597;0.061662;0.061795;0.061939;0.062156;0.062246;0.062373;0.062665;0.062982;0.063034;0.063112;0.06329;0.063319;0.063074;0.062322;0.060694;0.057572;0.051296;0.039296;-9999;
+8500;0.05813;0.058193;0.058315;0.058445;0.058646;0.058724;0.058833;0.059099;0.059391;0.059439;0.059509;0.059676;0.059715;0.059513;0.058866;0.057442;0.05474;0.049436;0.038707;-9999;
+9000;0.054851;0.054906;0.055017;0.055138;0.05532;0.055384;0.055477;0.055718;0.055988;0.056032;0.056092;0.056246;0.056293;0.056128;0.055572;0.054316;0.051992;0.047507;0.038725;-9999;
+9500;0.051755;0.051796;0.051897;0.052005;0.052169;0.052224;0.052302;0.052519;0.052766;0.052806;0.052855;0.052994;0.053049;0.052911;0.052416;0.051337;0.049334;0.045539;0.038368;-9999;
+10000;0.048833;0.048835;0.048957;0.049042;0.04919;0.049235;0.049298;0.049493;0.049719;0.049757;0.049795;0.04991;0.049965;0.049844;0.049423;0.048494;0.046768;0.043558;0.03766;-9999;
+10500;0.046047;0.046078;0.046159;0.046245;0.046376;0.046411;0.046462;0.046632;0.046837;0.04687;0.046891;0.046987;0.047043;0.046944;0.046584;0.045785;0.044265;0.041586;0.036748;-9999;
+11000;0.04343;0.043458;0.04353;0.043606;0.043723;0.043743;0.043777;0.043925;0.044105;0.044141;0.044151;0.044229;0.044286;0.044204;0.043895;0.04321;0.04191;0.03969;0.035629;-9999;
+11500;0.040646;0.040692;0.040758;0.040827;0.040933;0.040955;0.040947;0.041119;0.041282;0.041309;0.041313;0.041382;0.041427;0.041343;0.041045;0.040394;0.039162;0.037053;0.033185;-9999;
+12000;0.038109;0.038132;0.038192;0.038253;0.03835;0.038367;0.038357;0.038517;0.038667;0.038686;0.038684;0.038743;0.038777;0.038691;0.038403;0.037782;0.036616;0.034611;0.03093;-9999;
+12500;0.035757;0.035764;0.035817;0.035872;0.03596;0.035972;0.03596;0.036104;0.036238;0.036251;0.036247;0.036297;0.036321;0.036232;0.035954;0.035363;0.034257;0.032305;0.028849;-9999;
+13000;0.033555;0.033573;0.033622;0.03367;0.033749;0.033757;0.033743;0.033872;0.03399;0.033995;0.033989;0.034032;0.034047;0.033955;0.033685;0.033122;0.032072;0.030218;0.026932;-9999;
+13500;0.03152;0.031549;0.031593;0.031636;0.031707;0.031711;0.031694;0.031808;0.031912;0.031908;0.031896;0.031931;0.031939;0.031848;0.031584;0.031047;0.030052;0.02829;0.025161;-9999;
+14000;0.029667;0.029683;0.029722;0.029759;0.029821;0.029821;0.029802;0.029902;0.029992;0.02998;0.029963;0.029988;0.029986;0.029894;0.029644;0.029128;0.028184;0.02651;0.023537;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.1347;0.13496;0.13546;0.13609;0.13721;0.13796;0.13887;0.14004;0.14073;0.14105;0.14127;0.1409;0.13917;0.13468;0.12342;0.089239;-9999;-9999;-9999;-9999;
+500;0.12783;0.12785;0.12844;0.12902;0.13005;0.13073;0.13154;0.13262;0.13327;0.13356;0.13381;0.13354;0.13205;0.12795;0.11831;0.09011;-9999;-9999;-9999;-9999;
+1000;0.12127;0.12133;0.12175;0.12228;0.12321;0.12383;0.12457;0.12558;0.12619;0.12643;0.12666;0.12648;0.12522;0.12164;0.11325;0.089828;-9999;-9999;-9999;-9999;
+1500;0.11483;0.11502;0.11539;0.11586;0.1167;0.11727;0.11794;0.11887;0.11946;0.11969;0.1199;0.11974;0.11866;0.11556;0.10846;0.088554;-9999;-9999;-9999;-9999;
+2000;0.10862;0.10906;0.10939;0.10984;0.11061;0.11111;0.1117;0.11255;0.11308;0.11325;0.11347;0.11336;0.1124;0.10967;0.10349;0.086654;-9999;-9999;-9999;-9999;
+2500;0.10319;0.10335;0.10366;0.10407;0.10478;0.10524;0.10578;0.10658;0.10709;0.10724;0.10741;0.1073;0.10645;0.10405;0.098577;0.084574;-9999;-9999;-9999;-9999;
+3000;0.097996;0.097898;0.098177;0.098676;0.099229;0.099647;0.10013;0.10088;0.10137;0.10151;0.10168;0.10162;0.10087;0.09872;0.093834;0.08194;-9999;-9999;-9999;-9999;
+3500;0.092546;0.092696;0.092944;0.093403;0.093921;0.094298;0.094738;0.095436;0.09591;0.096047;0.096215;0.096189;0.09555;0.093657;0.08933;0.079041;-9999;-9999;-9999;-9999;
+4000;0.087595;0.087726;0.08795;0.088372;0.088857;0.089196;0.089596;0.090247;0.090702;0.090828;0.090993;0.091001;0.090458;0.088805;0.084979;0.076129;-9999;-9999;-9999;-9999;
+4500;0.082885;0.082986;0.083188;0.083576;0.084027;0.084332;0.084688;0.085299;0.085733;0.085851;0.086012;0.086048;0.085591;0.084151;0.080809;0.07315;0.050751;-9999;-9999;-9999;
+5000;0.078438;0.078546;0.078728;0.079062;0.079464;0.079729;0.080022;0.080587;0.081;0.081108;0.081261;0.081323;0.080941;0.079685;0.076762;0.070124;0.051732;-9999;-9999;-9999;
+5500;0.07421;0.074318;0.074491;0.074796;0.075175;0.075405;0.075661;0.076177;0.076545;0.076621;0.07674;0.076817;0.076501;0.07541;0.072788;0.066989;0.051893;-9999;-9999;-9999;
+6000;0.070194;0.070289;0.07052;0.070728;0.071081;0.071285;0.071509;0.071994;0.072344;0.072411;0.072523;0.072585;0.072296;0.071331;0.069037;0.063994;0.051525;-9999;-9999;-9999;
+6500;0.066382;0.066462;0.066665;0.06686;0.067184;0.067365;0.06756;0.068011;0.068343;0.068403;0.06851;0.068587;0.06835;0.067508;0.06549;0.061184;0.050679;-9999;-9999;-9999;
+7000;0.062738;0.062819;0.062996;0.063179;0.063477;0.063637;0.063862;0.064226;0.06454;0.064595;0.064693;0.06478;0.064588;0.063861;0.062083;0.058334;0.04952;-9999;-9999;-9999;
+7500;0.059286;0.059354;0.059512;0.059684;0.059956;0.060098;0.060297;0.060632;0.060927;0.060975;0.061065;0.061159;0.061004;0.060372;0.0588;0.055548;0.048152;-9999;-9999;-9999;
+8000;0.056001;0.056068;0.056208;0.056366;0.056614;0.056738;0.056915;0.057221;0.057497;0.057538;0.057619;0.057717;0.057589;0.057027;0.055656;0.052837;0.046609;-9999;-9999;-9999;
+8500;0.052896;0.052951;0.053078;0.05322;0.053446;0.053552;0.053708;0.053986;0.054244;0.054279;0.054343;0.054435;0.054328;0.053838;0.052635;0.050206;0.044948;0.031803;-9999;-9999;
+9000;0.049946;0.049996;0.050112;0.050241;0.050445;0.050536;0.050665;0.050917;0.051152;0.051174;0.051229;0.051313;0.051229;0.050813;0.049788;0.047665;0.043207;0.032826;-9999;-9999;
+9500;0.047165;0.047191;0.047298;0.047411;0.047594;0.047667;0.047779;0.048;0.048216;0.048233;0.048246;0.048364;0.048296;0.047941;0.047053;0.045224;0.041431;0.032916;-9999;-9999;
+10000;0.044501;0.04454;0.044634;0.044734;0.044892;0.044954;0.045049;0.045251;0.045448;0.045458;0.045466;0.045576;0.045522;0.045218;0.04445;0.042833;0.039645;0.032687;-9999;-9999;
+10500;0.042;0.042037;0.042121;0.04221;0.042355;0.042402;0.04248;0.04266;0.042839;0.042843;0.042844;0.042945;0.042902;0.04264;0.041977;0.040586;0.03787;0.032159;-9999;-9999;
+11000;0.039655;0.039684;0.03976;0.039837;0.039966;0.040002;0.040064;0.040223;0.040384;0.040382;0.040358;0.040467;0.040432;0.040206;0.039632;0.038436;0.036123;0.031435;-9999;-9999;
+11500;0.0372;0.037224;0.037293;0.037363;0.037479;0.03751;0.037564;0.037706;0.03785;0.037842;0.03782;0.037908;0.037868;0.037648;0.037102;0.035969;0.033774;0.029321;-9999;-9999;
+12000;0.034928;0.03495;0.035012;0.035074;0.03518;0.035204;0.035218;0.035375;0.035504;0.035491;0.035469;0.035539;0.035493;0.035278;0.034758;0.033686;0.031602;0.027374;-9999;-9999;
+12500;0.032826;0.032849;0.032903;0.032956;0.033055;0.033073;0.033083;0.033222;0.033335;0.033316;0.033293;0.033346;0.033294;0.033085;0.032588;0.031573;0.029596;0.025583;-9999;-9999;
+13000;0.030885;0.030913;0.030962;0.031011;0.031097;0.031106;0.031114;0.031233;0.03133;0.031306;0.031277;0.031318;0.03126;0.031055;0.030581;0.02962;0.027744;0.023938;-9999;-9999;
+13500;0.029095;0.029124;0.029167;0.029209;0.029286;0.029294;0.029296;0.029398;0.02948;0.029447;0.029414;0.029444;0.029381;0.029179;0.028725;0.027815;0.026038;0.022431;-9999;-9999;
+14000;0.027448;0.027476;0.027514;0.027551;0.027618;0.02762;0.027619;0.027709;0.027777;0.027739;0.027703;0.027716;0.027645;0.027447;0.027013;0.026151;0.024467;0.021058;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.12813;0.12828;0.1289;0.12956;0.13075;0.13155;0.13253;0.13367;0.13421;0.13437;0.13454;0.13381;0.13136;0.12525;0.10912;-9999;-9999;-9999;-9999;-9999;
+500;0.12144;0.12146;0.1222;0.12282;0.1239;0.12462;0.1255;0.12655;0.12707;0.12725;0.12744;0.12685;0.12473;0.11938;0.10553;-9999;-9999;-9999;-9999;-9999;
+1000;0.11505;0.11531;0.11583;0.11639;0.11739;0.11805;0.11885;0.11982;0.12031;0.12046;0.12064;0.12017;0.11835;0.11369;0.10174;0.098501;-9999;-9999;-9999;-9999;
+1500;0.10911;0.10932;0.10978;0.1103;0.11119;0.11179;0.11251;0.11343;0.1139;0.11404;0.11421;0.11379;0.11221;0.10817;0.097856;-9999;-9999;-9999;-9999;-9999;
+2000;0.10339;0.10365;0.10407;0.10456;0.10538;0.10593;0.10657;0.10741;0.10784;0.10793;0.1081;0.10776;0.10635;0.1028;0.093935;0.066999;-9999;-9999;-9999;-9999;
+2500;0.098056;0.098231;0.098618;0.099177;0.099824;0.10033;0.10091;0.1017;0.10212;0.10224;0.10237;0.10205;0.10078;0.097658;0.089919;0.067649;-9999;-9999;-9999;-9999;
+3000;0.092889;0.093057;0.093407;0.093921;0.094521;0.09498;0.095517;0.096258;0.096663;0.096807;0.096916;0.096664;0.095565;0.092658;0.085945;0.067348;-9999;-9999;-9999;-9999;
+3500;0.08797;0.088117;0.088434;0.088906;0.08946;0.089879;0.090369;0.091064;0.091456;0.091592;0.091709;0.091515;0.090567;0.088019;0.082291;0.066235;-9999;-9999;-9999;-9999;
+4000;0.08329;0.083298;0.083684;0.084123;0.084634;0.085016;0.085461;0.08611;0.086489;0.086617;0.086741;0.086596;0.08578;0.083551;0.078504;0.064795;-9999;-9999;-9999;-9999;
+4500;0.078813;0.078942;0.079193;0.079576;0.080045;0.080384;0.080785;0.081391;0.081756;0.081874;0.082;0.081898;0.081194;0.079254;0.074793;0.063155;-9999;-9999;-9999;-9999;
+5000;0.07456;0.074745;0.07497;0.075322;0.075752;0.076038;0.076377;0.076919;0.07725;0.077355;0.077483;0.077417;0.07682;0.075126;0.071175;0.061363;-9999;-9999;-9999;-9999;
+5500;0.070632;0.070741;0.070944;0.071264;0.071658;0.071919;0.072221;0.072729;0.073042;0.073117;0.073214;0.07315;0.072642;0.07117;0.067689;0.059358;-9999;-9999;-9999;-9999;
+6000;0.066823;0.066925;0.067107;0.067398;0.067768;0.067997;0.068272;0.06874;0.06904;0.06911;0.069207;0.069172;0.068716;0.067406;0.06434;0.057251;-9999;-9999;-9999;-9999;
+6500;0.063209;0.063296;0.063459;0.063724;0.064063;0.064267;0.064514;0.064948;0.065234;0.065298;0.065392;0.06538;0.064994;0.063839;0.061166;0.055079;-9999;-9999;-9999;-9999;
+7000;0.059782;0.059785;0.059985;0.06023;0.060541;0.060722;0.060941;0.061342;0.061616;0.061671;0.06176;0.061768;0.061433;0.060411;0.058098;0.05286;0.03844;-9999;-9999;-9999;
+7500;0.056486;0.056565;0.056746;0.056908;0.057196;0.057355;0.05755;0.057919;0.058177;0.058226;0.058302;0.058316;0.058028;0.057144;0.055073;0.05062;0.038924;-9999;-9999;-9999;
+8000;0.053369;0.053451;0.053606;0.053759;0.054021;0.05416;0.05433;0.054663;0.054903;0.054938;0.055007;0.055033;0.054792;0.054026;0.052229;0.048446;0.038801;-9999;-9999;-9999;
+8500;0.050425;0.050484;0.05062;0.050761;0.050998;0.051116;0.051259;0.051569;0.051794;0.051821;0.051883;0.051919;0.051717;0.051055;0.049497;0.046142;0.038211;-9999;-9999;-9999;
+9000;0.047647;0.047672;0.04779;0.047921;0.048136;0.048237;0.048357;0.048642;0.048851;0.048872;0.048926;0.048968;0.048799;0.048227;0.046876;0.044043;0.037402;-9999;-9999;-9999;
+9500;0.044964;0.045014;0.045121;0.045238;0.045432;0.045517;0.045616;0.045877;0.046071;0.046085;0.04613;0.046176;0.046035;0.045541;0.044372;0.041921;0.036413;-9999;-9999;-9999;
+10000;0.042443;0.042508;0.042604;0.042708;0.042882;0.042953;0.043033;0.043269;0.043448;0.043455;0.043491;0.043538;0.04342;0.042993;0.041981;0.03987;0.035274;-9999;-9999;-9999;
+10500;0.040111;0.040149;0.040235;0.040327;0.040481;0.040539;0.040601;0.040815;0.040978;0.040979;0.041005;0.04105;0.04095;0.040581;0.039699;0.037895;0.034033;0.02433;-9999;-9999;
+11000;0.037928;0.037933;0.038011;0.038091;0.038227;0.038273;0.038319;0.038509;0.038657;0.03865;0.038667;0.038708;0.038623;0.038297;0.037538;0.035992;0.032743;0.025105;-9999;-9999;
+11500;0.035585;0.035614;0.035683;0.035754;0.035878;0.035916;0.035957;0.036127;0.036257;0.036245;0.036255;0.036285;0.036198;0.03589;0.035166;0.033704;0.03062;0.02336;-9999;-9999;
+12000;0.033418;0.03347;0.033531;0.033595;0.033707;0.033738;0.033773;0.033924;0.034036;0.03402;0.034022;0.034042;0.033952;0.033656;0.03297;0.031588;0.028661;-9999;-9999;-9999;
+12500;0.031464;0.031486;0.031544;0.0316;0.031702;0.031726;0.031755;0.031887;0.031984;0.031962;0.031957;0.031967;0.031874;0.031588;0.030943;0.029631;0.026858;0.020542;-9999;-9999;
+13000;0.029662;0.029659;0.029712;0.029761;0.029852;0.02987;0.029893;0.030008;0.030089;0.030061;0.030049;0.03005;0.029953;0.029677;0.029065;0.027826;0.025199;-9999;-9999;-9999;
+13500;0.028002;0.027978;0.028026;0.028068;0.028149;0.02816;0.028178;0.028276;0.028342;0.028308;0.028289;0.028279;0.028179;0.027911;0.02733;0.026162;0.023676;0.017425;-9999;-9999;
+14000;0.02642;0.026436;0.026477;0.026512;0.026583;0.026588;0.0266;0.026682;0.026734;0.026694;0.026667;0.026647;0.026543;0.026283;0.025731;0.02463;0.022281;0.016698;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.12172;0.12173;0.12265;0.12333;0.12458;0.12544;0.12648;0.12757;0.12802;0.12822;0.128;0.12682;0.12359;0.11496;0.089948;-9999;-9999;-9999;-9999;-9999;
+500;0.11546;0.11548;0.11627;0.1169;0.11805;0.11883;0.11977;0.12076;0.12119;0.12139;0.12125;0.12026;0.11729;0.10994;0.088635;-9999;-9999;-9999;-9999;-9999;
+1000;0.10949;0.1095;0.11019;0.11078;0.11183;0.11255;0.11341;0.11435;0.11473;0.11491;0.11479;0.11396;0.11139;0.10499;0.086917;-9999;-9999;-9999;-9999;-9999;
+1500;0.10374;0.10396;0.10445;0.10498;0.10593;0.10658;0.10735;0.10823;0.10861;0.10879;0.1087;0.10795;0.1057;0.10016;0.084854;-9999;-9999;-9999;-9999;-9999;
+2000;0.098235;0.098562;0.099017;0.09951;0.10039;0.10098;0.10168;0.10249;0.10282;0.10297;0.1029;0.10227;0.10029;0.095431;0.082497;-9999;-9999;-9999;-9999;-9999;
+2500;0.093221;0.093408;0.093822;0.094283;0.095086;0.09563;0.096272;0.097042;0.097362;0.097508;0.097467;0.096897;0.09512;0.090851;0.079719;-9999;-9999;-9999;-9999;-9999;
+3000;0.088434;0.088484;0.088862;0.089291;0.090029;0.090527;0.091113;0.091839;0.092149;0.09219;0.092288;0.091812;0.090261;0.08648;0.076776;-9999;-9999;-9999;-9999;-9999;
+3500;0.083627;0.083787;0.08413;0.084621;0.085206;0.085662;0.0862;0.086879;0.087184;0.087232;0.087343;0.086947;0.085596;0.082291;0.073848;-9999;-9999;-9999;-9999;-9999;
+4000;0.079159;0.079307;0.079618;0.080068;0.080608;0.081024;0.081511;0.082151;0.08245;0.082507;0.082622;0.082295;0.081126;0.078237;0.070876;-9999;-9999;-9999;-9999;-9999;
+4500;0.074974;0.075107;0.07538;0.075782;0.076259;0.07662;0.077046;0.077647;0.077937;0.078001;0.078119;0.077857;0.076847;0.074303;0.067883;0.049077;-9999;-9999;-9999;-9999;
+5000;0.070994;0.071119;0.071366;0.071732;0.072174;0.072501;0.072879;0.073414;0.073671;0.073715;0.073832;0.07362;0.072747;0.070437;0.06491;0.049331;-9999;-9999;-9999;-9999;
+5500;0.067212;0.06732;0.067542;0.067877;0.068283;0.06858;0.068925;0.069425;0.069675;0.069726;0.069809;0.069614;0.068839;0.066775;0.061974;0.049116;-9999;-9999;-9999;-9999;
+6000;0.0636;0.063704;0.063904;0.06421;0.064596;0.064852;0.065158;0.065625;0.065867;0.065922;0.066002;0.065848;0.065154;0.063348;0.059244;0.048268;-9999;-9999;-9999;-9999;
+6500;0.060174;0.060261;0.06044;0.060718;0.061076;0.061302;0.061578;0.062012;0.062247;0.062308;0.062365;0.062236;0.06164;0.060068;0.056465;0.047224;-9999;-9999;-9999;-9999;
+7000;0.0569;0.056988;0.057148;0.0574;0.057727;0.057929;0.05817;0.05857;0.05879;0.058839;0.058898;0.058799;0.058288;0.056921;0.0538;0.046068;-9999;-9999;-9999;-9999;
+7500;0.053783;0.053864;0.054006;0.054233;0.054533;0.054708;0.054924;0.055293;0.055503;0.055546;0.055604;0.055531;0.055093;0.053906;0.051205;0.044691;-9999;-9999;-9999;-9999;
+8000;0.050837;0.0509;0.051025;0.051231;0.051504;0.051658;0.051848;0.052187;0.052387;0.052423;0.052478;0.052426;0.052053;0.051023;0.048688;0.043173;-9999;-9999;-9999;-9999;
+8500;0.048057;0.048059;0.0482;0.048388;0.048636;0.04877;0.048937;0.049247;0.049435;0.049464;0.049516;0.049482;0.049163;0.04827;0.046254;0.041562;-9999;-9999;-9999;-9999;
+9000;0.045431;0.045439;0.045575;0.045698;0.045926;0.046041;0.046186;0.046468;0.046645;0.046666;0.046712;0.046692;0.04642;0.045646;0.043906;0.039902;0.028731;-9999;-9999;-9999;
+9500;0.042877;0.042932;0.043047;0.043162;0.043367;0.043465;0.04359;0.043845;0.044009;0.044024;0.044063;0.044054;0.043822;0.043151;0.041649;0.038224;0.029246;-9999;-9999;-9999;
+10000;0.040518;0.040567;0.040667;0.040772;0.040956;0.041039;0.041145;0.041374;0.041525;0.041532;0.041565;0.041562;0.041364;0.040784;0.039447;0.036551;0.029298;-9999;-9999;-9999;
+10500;0.038309;0.038345;0.038433;0.038527;0.03869;0.038758;0.038846;0.03905;0.039189;0.039188;0.039212;0.039214;0.039044;0.03854;0.037387;0.034901;0.028983;-9999;-9999;-9999;
+11000;0.036246;0.036246;0.03632;0.036423;0.036565;0.036619;0.036691;0.036871;0.036996;0.036988;0.037002;0.037006;0.036858;0.036421;0.035426;0.033343;0.028447;-9999;-9999;-9999;
+11500;0.034022;0.034069;0.034145;0.034218;0.034349;0.034395;0.034456;0.034618;0.034726;0.034713;0.03472;0.034715;0.034569;0.034152;0.033211;0.031247;0.026599;-9999;-9999;-9999;
+12000;0.032025;0.032054;0.032119;0.032183;0.032302;0.032339;0.032391;0.032536;0.032628;0.032609;0.032609;0.032595;0.03245;0.032052;0.031162;0.029309;0.024912;-9999;-9999;-9999;
+12500;0.030181;0.030199;0.03025;0.030307;0.030414;0.030443;0.030486;0.030614;0.030691;0.030666;0.030658;0.030636;0.030491;0.03011;0.029269;0.027485;0.023361;-9999;-9999;-9999;
+13000;0.028461;0.028479;0.02853;0.028579;0.028674;0.028697;0.02873;0.028841;0.028904;0.028873;0.028857;0.028827;0.028682;0.028317;0.027521;0.025841;0.021945;-9999;-9999;-9999;
+13500;0.026882;0.026901;0.02695;0.026992;0.027076;0.027091;0.027115;0.027211;0.027259;0.027222;0.027198;0.02716;0.027014;0.026663;0.025912;0.024329;0.020658;-9999;-9999;-9999;
+14000;0.025445;0.025463;0.025502;0.025537;0.02561;0.025618;0.025633;0.025713;0.025747;0.025703;0.025672;0.025625;0.025478;0.025141;0.02443;0.022942;0.019498;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.11571;0.11604;0.11689;0.11742;0.11874;0.11965;0.12066;0.12173;0.12211;0.12217;0.12164;0.11989;0.11538;0.10309;0.089875;-9999;-9999;-9999;-9999;-9999;
+500;0.10977;0.10979;0.11064;0.11128;0.11249;0.11333;0.11425;0.11525;0.11559;0.11565;0.11524;0.11373;0.1098;0.09912;0.088442;-9999;-9999;-9999;-9999;-9999;
+1000;0.1041;0.10411;0.10483;0.10543;0.10655;0.10732;0.10818;0.10911;0.10943;0.10949;0.10913;0.10783;0.10442;0.095121;0.086991;-9999;-9999;-9999;-9999;-9999;
+1500;0.098622;0.098849;0.099384;0.099924;0.10093;0.10163;0.10246;0.10328;0.10358;0.10365;0.10335;0.1022;0.099219;0.091342;0.066692;-9999;-9999;-9999;-9999;-9999;
+2000;0.093389;0.093712;0.094197;0.094703;0.095633;0.096271;0.097036;0.097809;0.098068;0.098129;0.097856;0.096858;0.094239;0.087346;0.066762;-9999;-9999;-9999;-9999;-9999;
+2500;0.088611;0.088805;0.089249;0.08972;0.090575;0.091162;0.091862;0.092597;0.092852;0.09293;0.092712;0.09182;0.089358;0.083413;0.066052;-9999;-9999;-9999;-9999;-9999;
+3000;0.084051;0.084122;0.084528;0.084966;0.08575;0.08629;0.08693;0.087626;0.087874;0.087964;0.087799;0.087034;0.084883;0.079633;0.064615;-9999;-9999;-9999;-9999;-9999;
+3500;0.07949;0.079656;0.080026;0.080433;0.081152;0.081646;0.082234;0.082887;0.08313;0.083227;0.083104;0.082457;0.080581;0.07597;0.063188;-9999;-9999;-9999;-9999;-9999;
+4000;0.075263;0.075412;0.075737;0.076111;0.07677;0.077221;0.077755;0.078372;0.078604;0.078712;0.078629;0.07808;0.076443;0.072397;0.061484;-9999;-9999;-9999;-9999;-9999;
+4500;0.071415;0.071444;0.071739;0.072157;0.072663;0.073055;0.073518;0.074078;0.074303;0.07441;0.074359;0.073895;0.072458;0.068914;0.059574;-9999;-9999;-9999;-9999;-9999;
+5000;0.067532;0.067659;0.067927;0.06831;0.068775;0.069132;0.069549;0.070072;0.070263;0.070342;0.070292;0.06989;0.068617;0.065538;0.057562;-9999;-9999;-9999;-9999;-9999;
+5500;0.063848;0.064053;0.064295;0.064644;0.065073;0.065398;0.065776;0.066265;0.066448;0.066518;0.066485;0.066117;0.064991;0.062295;0.055461;0.052561;-9999;-9999;-9999;-9999;
+6000;0.060503;0.060612;0.060831;0.06115;0.061544;0.061835;0.062173;0.06263;0.062803;0.062868;0.062854;0.062546;0.061569;0.059221;0.053309;0.052382;-9999;-9999;-9999;-9999;
+6500;0.05723;0.057329;0.057525;0.057816;0.058176;0.058439;0.058744;0.059169;0.059339;0.059334;0.059399;0.059142;0.058297;0.056254;0.051137;-9999;-9999;-9999;-9999;-9999;
+7000;0.054131;0.054136;0.054384;0.054652;0.05498;0.055216;0.055489;0.055883;0.056049;0.056051;0.056114;0.055901;0.055172;0.053396;0.048961;0.036212;-9999;-9999;-9999;-9999;
+7500;0.0512;0.051204;0.051408;0.05165;0.051965;0.052161;0.052403;0.052768;0.052928;0.052936;0.052994;0.052819;0.05219;0.050588;0.0468;0.036469;-9999;-9999;-9999;-9999;
+8000;0.048427;0.048453;0.048591;0.048806;0.049094;0.049267;0.049481;0.049817;0.049971;0.049983;0.050035;0.049891;0.04935;0.047962;0.044764;0.03616;-9999;-9999;-9999;-9999;
+8500;0.045732;0.045801;0.045924;0.046117;0.046379;0.04653;0.046718;0.047026;0.047173;0.047187;0.047231;0.047114;0.046648;0.045447;0.042697;0.035477;-9999;-9999;-9999;-9999;
+9000;0.043233;0.043297;0.043403;0.043577;0.043814;0.043944;0.044109;0.04439;0.044528;0.04455;0.044578;0.044484;0.044083;0.043044;0.040681;0.034695;-9999;-9999;-9999;-9999;
+9500;0.040885;0.040935;0.041027;0.041183;0.041396;0.041507;0.041649;0.041904;0.042033;0.042048;0.042073;0.041997;0.041652;0.040752;0.038724;0.033739;-9999;-9999;-9999;-9999;
+10000;0.038683;0.038684;0.038789;0.038928;0.03912;0.039214;0.039335;0.039565;0.039684;0.039691;0.039712;0.039651;0.039353;0.038574;0.036834;0.032656;-9999;-9999;-9999;-9999;
+10500;0.036578;0.036625;0.036722;0.036812;0.036984;0.037062;0.037164;0.037368;0.037477;0.037477;0.037491;0.03744;0.037183;0.036507;0.035014;0.031493;-9999;-9999;-9999;-9999;
+11000;0.034621;0.034674;0.034755;0.034834;0.034985;0.035048;0.035131;0.035312;0.03541;0.035401;0.035408;0.035365;0.03514;0.034555;0.033274;0.030288;0.022174;-9999;-9999;-9999;
+11500;0.03258;0.032614;0.032687;0.032758;0.032897;0.03295;0.033022;0.033183;0.033266;0.033251;0.033251;0.033202;0.032984;0.032428;0.031219;0.028397;0.020804;-9999;-9999;-9999;
+12000;0.030697;0.030696;0.030761;0.030846;0.03097;0.031014;0.031074;0.031218;0.031286;0.031265;0.031258;0.031203;0.03099;0.030461;0.029321;0.026656;-9999;-9999;-9999;-9999;
+12500;0.028962;0.028961;0.029009;0.029084;0.029195;0.02923;0.02928;0.029406;0.02946;0.029433;0.029417;0.029356;0.029149;0.028646;0.027571;0.025057;-9999;-9999;-9999;-9999;
+13000;0.027337;0.027364;0.027415;0.027463;0.027563;0.027589;0.027629;0.027737;0.027778;0.027745;0.027721;0.027654;0.02745;0.026973;0.025958;0.023591;-9999;-9999;-9999;-9999;
+13500;0.02585;0.025895;0.025938;0.025979;0.026067;0.026084;0.026113;0.026205;0.026232;0.026191;0.026159;0.026085;0.025885;0.025432;0.024476;0.022259;-9999;-9999;-9999;-9999;
+14000;0.024533;0.024552;0.02459;0.024623;0.024697;0.024708;0.024726;0.024801;0.024813;0.024765;0.024724;0.024644;0.024446;0.024014;0.023116;0.021039;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10999;0.11039;0.11128;0.11183;0.11322;0.1142;0.11517;0.11617;0.11645;0.11626;0.11534;0.11284;0.10657;0.088314;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.10438;0.1044;0.10546;0.10596;0.10724;0.10814;0.10905;0.10997;0.11024;0.1101;0.10933;0.10716;0.10169;0.086036;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.099017;0.099142;0.099907;0.10037;0.10155;0.10237;0.10323;0.10411;0.10436;0.10425;0.10358;0.1017;0.096939;0.083474;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.093768;0.093785;0.094565;0.095127;0.096197;0.096943;0.097723;0.098543;0.098773;0.098699;0.098128;0.096465;0.092305;0.08072;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.088765;0.089109;0.08963;0.090146;0.091131;0.091819;0.09255;0.093325;0.093531;0.093462;0.092946;0.091477;0.087835;0.077781;0.066209;-9999;-9999;-9999;-9999;-9999;
+2500;0.084234;0.084437;0.084912;0.085394;0.0863;0.086934;0.087616;0.088345;0.088548;0.088514;0.088085;0.08679;0.083523;0.07467;0.065554;-9999;-9999;-9999;-9999;-9999;
+3000;0.079793;0.07998;0.080414;0.080863;0.081694;0.082276;0.082912;0.083599;0.0838;0.083794;0.083442;0.082317;0.079427;0.071648;0.064265;-9999;-9999;-9999;-9999;-9999;
+3500;0.075567;0.075579;0.076122;0.076546;0.07731;0.077843;0.07848;0.079084;0.079278;0.079292;0.079001;0.078029;0.075476;0.068696;0.063056;-9999;-9999;-9999;-9999;-9999;
+4000;0.071549;0.071728;0.072078;0.072452;0.073133;0.073621;0.074201;0.074776;0.074961;0.074994;0.074759;0.07389;0.071665;0.065883;0.048266;-9999;-9999;-9999;-9999;-9999;
+4500;0.06781;0.067954;0.068273;0.068619;0.06924;0.069666;0.07017;0.070694;0.070853;0.070882;0.070684;0.069937;0.068;0.06297;0.048162;-9999;-9999;-9999;-9999;-9999;
+5000;0.064254;0.064338;0.064629;0.065029;0.065522;0.065908;0.066364;0.06686;0.066997;0.067016;0.066832;0.066169;0.064397;0.060117;0.047644;-9999;-9999;-9999;-9999;-9999;
+5500;0.060773;0.060897;0.06116;0.061526;0.061978;0.062329;0.062742;0.063208;0.063343;0.063372;0.063225;0.062656;0.0611;0.057381;0.046798;-9999;-9999;-9999;-9999;-9999;
+6000;0.05751;0.057623;0.05786;0.058194;0.058609;0.058928;0.059301;0.059738;0.059869;0.059904;0.059789;0.059304;0.057952;0.054722;0.045841;-9999;-9999;-9999;-9999;-9999;
+6500;0.054419;0.054425;0.054723;0.055031;0.055411;0.055698;0.056034;0.056443;0.056569;0.056608;0.056521;0.056107;0.054934;0.052132;0.044609;-9999;-9999;-9999;-9999;-9999;
+7000;0.051493;0.051498;0.05175;0.052029;0.052376;0.052635;0.052936;0.053318;0.053437;0.053477;0.053414;0.053063;0.052046;0.049617;0.043239;-9999;-9999;-9999;-9999;-9999;
+7500;0.048678;0.048764;0.048935;0.049184;0.0495;0.049733;0.050002;0.050356;0.050469;0.050508;0.050464;0.050167;0.049287;0.047184;0.04175;-9999;-9999;-9999;-9999;-9999;
+8000;0.046022;0.046116;0.046268;0.046493;0.046779;0.046987;0.047225;0.047553;0.047659;0.047695;0.047667;0.047416;0.046656;0.044836;0.040191;0.038572;-9999;-9999;-9999;-9999;
+8500;0.043521;0.043612;0.043746;0.043949;0.044224;0.044393;0.044603;0.044904;0.045005;0.045036;0.045019;0.044806;0.04415;0.042578;0.038582;0.038127;-9999;-9999;-9999;-9999;
+9000;0.041169;0.04125;0.041368;0.041549;0.041799;0.041946;0.042129;0.042404;0.042502;0.042478;0.042515;0.042335;0.041768;0.040411;0.036977;0.026882;-9999;-9999;-9999;-9999;
+9500;0.038963;0.039027;0.03913;0.03929;0.039516;0.039642;0.039799;0.040051;0.040142;0.04012;0.040152;0.039999;0.039509;0.038339;0.035421;0.027404;-9999;-9999;-9999;-9999;
+10000;0.036896;0.036897;0.037024;0.037169;0.03737;0.037477;0.037613;0.037839;0.037923;0.037902;0.037927;0.037795;0.037372;0.036324;0.033934;0.027277;-9999;-9999;-9999;-9999;
+10500;0.034937;0.034984;0.03506;0.035183;0.035361;0.035449;0.035564;0.035765;0.035842;0.035821;0.035836;0.035722;0.035355;0.03445;0.03241;0.026959;-9999;-9999;-9999;-9999;
+11000;0.033122;0.033167;0.033231;0.033339;0.033494;0.033564;0.033656;0.033829;0.033895;0.033874;0.033877;0.033778;0.033457;0.032677;0.030934;0.026451;-9999;-9999;-9999;-9999;
+11500;0.031196;0.031232;0.031291;0.031386;0.031527;0.031586;0.031666;0.031819;0.031873;0.031844;0.031841;0.03174;0.031433;0.030695;0.029059;0.024836;-9999;-9999;-9999;-9999;
+12000;0.029421;0.029421;0.029503;0.029588;0.029715;0.029763;0.02983;0.029966;0.030008;0.02997;0.029961;0.029857;0.029562;0.028866;0.027331;0.023344;-9999;-9999;-9999;-9999;
+12500;0.027788;0.027819;0.027885;0.027934;0.028048;0.028087;0.028141;0.02826;0.028288;0.028243;0.028226;0.028119;0.027834;0.027178;0.025736;0.021986;-9999;-9999;-9999;-9999;
+13000;0.026293;0.02632;0.026377;0.026418;0.026519;0.026548;0.026589;0.026691;0.026705;0.026652;0.026628;0.026518;0.026243;0.025624;0.024271;0.020757;-9999;-9999;-9999;-9999;
+13500;0.024927;0.024951;0.024999;0.025033;0.02512;0.02514;0.025169;0.025252;0.025253;0.025193;0.025161;0.025047;0.024781;0.024195;0.02293;0.019652;-9999;-9999;-9999;-9999;
+14000;0.023687;0.023706;0.023746;0.023772;0.023845;0.023854;0.023885;0.023936;0.023925;0.023857;0.023816;0.023698;0.023439;0.022887;0.021706;0.018668;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10471;0.10473;0.10597;0.10653;0.10794;0.10895;0.10986;0.11077;0.11094;0.11048;0.10908;0.10575;0.096811;0.079131;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.09927;0.099287;0.10025;0.10093;0.10224;0.10316;0.10401;0.10486;0.10504;0.10464;0.10345;0.10055;0.092711;0.068471;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.094051;0.094069;0.094961;0.095591;0.096817;0.097671;0.098462;0.099275;0.099439;0.099096;0.098042;0.095516;0.088667;0.067921;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.089228;0.089438;0.09017;0.090607;0.091733;0.092509;0.093235;0.093979;0.094123;0.093843;0.092926;0.0907;0.084677;0.066876;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.084539;0.084554;0.085314;0.085853;0.086896;0.087622;0.088302;0.089013;0.089157;0.088907;0.088079;0.085965;0.080783;0.06553;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.080071;0.080317;0.080825;0.081319;0.082278;0.082949;0.083594;0.084258;0.08442;0.084221;0.083508;0.081627;0.077024;0.063841;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.075873;0.075885;0.076524;0.076993;0.077875;0.078498;0.079105;0.079739;0.07989;0.079745;0.079108;0.077456;0.073434;0.062079;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.071878;0.072007;0.072432;0.072861;0.073675;0.074253;0.074821;0.075414;0.075553;0.075432;0.074902;0.073464;0.069945;0.060153;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.068029;0.06804;0.068564;0.068954;0.069678;0.070191;0.070723;0.071282;0.071417;0.071328;0.070879;0.069627;0.066558;0.05807;0.048471;-9999;-9999;-9999;-9999;-9999;
+4500;0.064374;0.064584;0.064929;0.065286;0.065948;0.06641;0.066889;0.067385;0.06749;0.06742;0.067043;0.065957;0.063279;0.055948;0.047838;-9999;-9999;-9999;-9999;-9999;
+5000;0.06101;0.06115;0.061463;0.061793;0.062399;0.062821;0.063269;0.063735;0.063837;0.063773;0.063434;0.062473;0.060131;0.053764;0.047383;-9999;-9999;-9999;-9999;-9999;
+5500;0.057815;0.057883;0.058167;0.058472;0.059025;0.059409;0.059858;0.060266;0.060362;0.060317;0.060034;0.059203;0.05716;0.051659;0.04651;-9999;-9999;-9999;-9999;-9999;
+6000;0.054663;0.05478;0.055037;0.055386;0.055823;0.056169;0.056576;0.056967;0.057059;0.057029;0.056794;0.056077;0.0543;0.049562;0.045698;-9999;-9999;-9999;-9999;-9999;
+6500;0.051681;0.051834;0.052065;0.052382;0.052783;0.053096;0.053464;0.053836;0.053923;0.053907;0.053712;0.053095;0.051551;0.047544;0.035164;-9999;-9999;-9999;-9999;-9999;
+7000;0.048941;0.04904;0.049248;0.049535;0.049902;0.050184;0.050515;0.050867;0.050949;0.050942;0.050782;0.050252;0.048863;0.045461;0.035116;-9999;-9999;-9999;-9999;-9999;
+7500;0.046352;0.046394;0.04658;0.04684;0.047174;0.047427;0.047724;0.048056;0.048132;0.048132;0.048;0.047546;0.046342;0.04341;0.034799;-9999;-9999;-9999;-9999;-9999;
+8000;0.04381;0.043892;0.044057;0.044292;0.044595;0.044821;0.045085;0.045396;0.045467;0.045471;0.045364;0.044974;0.043932;0.041407;0.034198;-9999;-9999;-9999;-9999;-9999;
+8500;0.041419;0.04153;0.041676;0.041887;0.042161;0.042362;0.042595;0.042883;0.042949;0.042955;0.042867;0.042534;0.041633;0.039461;0.033443;-9999;-9999;-9999;-9999;-9999;
+9000;0.039237;0.039304;0.039433;0.039621;0.039868;0.040045;0.04025;0.040513;0.040575;0.040581;0.040509;0.040223;0.039445;0.037578;0.032537;-9999;-9999;-9999;-9999;-9999;
+9500;0.037191;0.037212;0.037324;0.037492;0.037712;0.037867;0.038045;0.038285;0.038341;0.038345;0.038285;0.038039;0.037367;0.035765;0.031514;-9999;-9999;-9999;-9999;-9999;
+10000;0.035201;0.035255;0.035352;0.035498;0.035707;0.035827;0.035978;0.036195;0.036244;0.036244;0.036194;0.03598;0.035399;0.034026;0.030422;-9999;-9999;-9999;-9999;-9999;
+10500;0.033354;0.033432;0.033516;0.033644;0.033829;0.033926;0.03405;0.034239;0.03428;0.034275;0.034231;0.034046;0.033541;0.032364;0.029285;0.028786;-9999;-9999;-9999;-9999;
+11000;0.031693;0.031736;0.031807;0.031918;0.03208;0.03216;0.032261;0.032427;0.032458;0.03244;0.032397;0.032233;0.031796;0.030756;0.028195;0.028064;-9999;-9999;-9999;-9999;
+11500;0.029897;0.029924;0.029987;0.030085;0.030231;0.030299;0.030385;0.030531;0.030549;0.030524;0.030476;0.030314;0.029898;0.028947;0.026521;0.026365;-9999;-9999;-9999;-9999;
+12000;0.028245;0.028244;0.028312;0.028399;0.028531;0.028586;0.028657;0.028781;0.028789;0.028757;0.028704;0.028544;0.028146;0.027256;0.024984;0.024811;-9999;-9999;-9999;-9999;
+12500;0.02673;0.026732;0.026779;0.026853;0.026967;0.027012;0.027068;0.027173;0.02717;0.027132;0.027072;0.026913;0.026533;0.025698;0.023576;0.023353;-9999;-9999;-9999;-9999;
+13000;0.02531;0.025337;0.025377;0.025438;0.025537;0.025569;0.025611;0.025698;0.025684;0.025639;0.025573;0.025414;0.025051;0.024269;0.022291;-9999;-9999;-9999;-9999;-9999;
+13500;0.024021;0.024067;0.0241;0.024149;0.024231;0.024252;0.02428;0.024348;0.024324;0.024272;0.024198;0.024039;0.023691;0.022958;0.021124;0.020704;-9999;-9999;-9999;-9999;
+14000;0.022899;0.022918;0.022942;0.02298;0.023046;0.023056;0.02307;0.02312;0.023085;0.023024;0.022942;0.022783;0.022449;0.021762;0.02007;0.019728;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.099534;0.099925;0.10088;0.10143;0.10291;0.10398;0.10483;0.10564;0.10568;0.10486;0.10287;0.098222;0.084689;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.094411;0.094427;0.095583;0.096092;0.097449;0.098432;0.099221;0.099994;0.10005;0.099336;0.097614;0.093511;0.081771;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.089474;0.089491;0.090556;0.091025;0.092268;0.093172;0.093918;0.094654;0.094709;0.094091;0.092565;0.088933;0.078799;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.084926;0.085092;0.085834;0.086279;0.087429;0.088256;0.088942;0.089619;0.089661;0.089112;0.087748;0.084544;0.075762;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.080404;0.080418;0.08134;0.081751;0.082813;0.083576;0.084224;0.084872;0.084927;0.084426;0.083185;0.080328;0.072787;0.057887;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.076099;0.076374;0.077015;0.077405;0.078388;0.079093;0.079704;0.080316;0.080376;0.079958;0.078876;0.076366;0.069768;0.057042;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.072106;0.072118;0.072797;0.073266;0.07417;0.074818;0.075393;0.075974;0.076044;0.075695;0.074752;0.072555;0.066784;0.049139;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.068307;0.068438;0.068991;0.069324;0.070155;0.07075;0.071291;0.07184;0.071919;0.071628;0.07081;0.068887;0.063845;0.048746;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.064662;0.064673;0.065232;0.065627;0.066369;0.06689;0.067389;0.067907;0.067991;0.067751;0.067045;0.065364;0.060956;0.047953;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.061207;0.061401;0.061771;0.062133;0.062813;0.0633;0.063748;0.064211;0.064275;0.064059;0.06345;0.061986;0.058149;0.04698;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.05799;0.057999;0.058465;0.058811;0.059434;0.059875;0.060296;0.060733;0.060806;0.060627;0.060084;0.058796;0.055465;0.045987;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.054937;0.055034;0.055339;0.055655;0.056224;0.056626;0.057017;0.057428;0.057498;0.057357;0.056897;0.055776;0.052876;0.044757;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.051966;0.051973;0.052359;0.052655;0.053177;0.053542;0.053906;0.05429;0.054358;0.054246;0.053853;0.052823;0.050369;0.043418;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.049156;0.049295;0.049544;0.049811;0.050288;0.050619;0.050956;0.051313;0.051379;0.05129;0.050957;0.050067;0.047939;0.041973;0.035282;-9999;-9999;-9999;-9999;-9999;
+7000;0.046546;0.046649;0.046873;0.047173;0.047553;0.047851;0.048162;0.048493;0.048554;0.048485;0.048203;0.047434;0.045591;0.040448;0.034943;-9999;-9999;-9999;-9999;-9999;
+7500;0.044083;0.044146;0.044347;0.044618;0.044966;0.045233;0.045518;0.045824;0.045881;0.045827;0.045589;0.044925;0.043331;0.038939;0.034442;-9999;-9999;-9999;-9999;-9999;
+8000;0.041697;0.041782;0.041961;0.042206;0.042522;0.042762;0.04304;0.043304;0.043354;0.043312;0.043112;0.04254;0.041162;0.037413;0.033899;-9999;-9999;-9999;-9999;-9999;
+8500;0.039455;0.039554;0.039713;0.039932;0.040219;0.040432;0.040678;0.040925;0.040969;0.040936;0.040767;0.040275;0.039085;0.035886;0.033323;-9999;-9999;-9999;-9999;-9999;
+9000;0.037388;0.037458;0.037598;0.037793;0.038053;0.038241;0.038456;0.038687;0.038725;0.038696;0.038553;0.038129;0.037103;0.034419;0.026174;-9999;-9999;-9999;-9999;-9999;
+9500;0.035462;0.035496;0.035618;0.03579;0.036019;0.036184;0.036371;0.036584;0.036615;0.036589;0.036467;0.036101;0.035217;0.032918;0.026151;-9999;-9999;-9999;-9999;-9999;
+10000;0.033611;0.033667;0.033773;0.033924;0.034127;0.034266;0.034423;0.034614;0.034638;0.034613;0.034507;0.034192;0.033395;0.031461;0.025864;-9999;-9999;-9999;-9999;-9999;
+10500;0.031894;0.031963;0.032055;0.032187;0.032364;0.032483;0.032615;0.032785;0.032799;0.032768;0.032672;0.032398;0.031709;0.03005;0.025492;-9999;-9999;-9999;-9999;-9999;
+11000;0.030342;0.030385;0.030463;0.030577;0.030743;0.030831;0.030938;0.031086;0.031093;0.031059;0.030969;0.030724;0.030113;0.028709;0.024947;-9999;-9999;-9999;-9999;-9999;
+11500;0.028647;0.028689;0.028757;0.028856;0.029004;0.029076;0.029168;0.029297;0.029294;0.029253;0.02916;0.028923;0.028354;0.027038;0.023506;-9999;-9999;-9999;-9999;-9999;
+12000;0.027093;0.027132;0.027193;0.027276;0.027406;0.027464;0.02754;0.02765;0.027637;0.02759;0.027494;0.027264;0.02673;0.025502;0.022196;-9999;-9999;-9999;-9999;-9999;
+12500;0.025679;0.02571;0.025758;0.025829;0.025942;0.025987;0.026047;0.026138;0.026116;0.026062;0.025961;0.025737;0.025234;0.024094;0.021012;-9999;-9999;-9999;-9999;-9999;
+13000;0.024391;0.024388;0.024451;0.02451;0.024606;0.024639;0.024683;0.024755;0.024723;0.02466;0.024556;0.024337;0.023862;0.022806;0.019962;-9999;-9999;-9999;-9999;-9999;
+13500;0.023216;0.023236;0.023267;0.023313;0.023393;0.023413;0.023441;0.023494;0.023452;0.023381;0.023271;0.023058;0.022608;0.021632;0.019021;-9999;-9999;-9999;-9999;-9999;
+14000;0.022165;0.022179;0.022202;0.022236;0.022298;0.022305;0.022317;0.02235;0.022298;0.022218;0.022102;0.021892;0.021467;0.020569;0.018199;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.094774;0.095144;0.096138;0.096701;0.098256;0.099497;0.10033;0.10111;0.10097;0.099498;0.095901;0.087305;0.068386;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.089824;0.089838;0.090883;0.09157;0.092995;0.094096;0.094862;0.095604;0.095505;0.094307;0.091635;0.084131;0.067175;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.085081;0.085096;0.08607;0.086706;0.088014;0.089;0.089709;0.090391;0.0903;0.089239;0.087109;0.081893;0.065934;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.080526;0.080903;0.081692;0.082137;0.083347;0.084247;0.084902;0.085508;0.085417;0.084452;0.082597;0.078008;0.065006;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.076385;0.076399;0.077226;0.077779;0.078894;0.079717;0.080336;0.080895;0.080841;0.080104;0.078257;0.074282;0.062921;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.072436;0.072571;0.073126;0.073628;0.074656;0.075408;0.075994;0.076518;0.076492;0.075878;0.074248;0.070753;0.060777;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.068488;0.068499;0.069197;0.069677;0.070624;0.071318;0.071857;0.072365;0.072352;0.071746;0.070416;0.067343;0.058731;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.064741;0.064751;0.065473;0.065919;0.066793;0.067428;0.067932;0.068418;0.068419;0.067909;0.066747;0.064043;0.056581;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.061428;0.061438;0.062008;0.062406;0.063182;0.063743;0.064208;0.06467;0.064683;0.064256;0.063234;0.060867;0.054405;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.058275;0.05835;0.058731;0.059092;0.059805;0.060319;0.060743;0.061155;0.061155;0.060774;0.05988;0.057811;0.052255;0.04144;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.055108;0.055116;0.055598;0.05594;0.056594;0.057065;0.057462;0.057854;0.057865;0.05754;0.056751;0.054942;0.050142;0.040955;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.052109;0.052117;0.052629;0.052946;0.053544;0.053974;0.054346;0.054717;0.054736;0.054462;0.053775;0.052197;0.048113;0.040449;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.049407;0.049413;0.049813;0.050105;0.05065;0.051042;0.051389;0.051738;0.051763;0.051533;0.050937;0.049563;0.046024;0.034987;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.046847;0.046885;0.047144;0.047412;0.047908;0.048263;0.048586;0.048913;0.048942;0.04875;0.048236;0.04704;0.043978;0.034565;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.044275;0.04428;0.044607;0.044856;0.045306;0.045629;0.045928;0.046237;0.046269;0.046109;0.045666;0.044627;0.041984;0.033985;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.041856;0.04186;0.042216;0.042443;0.04285;0.04314;0.043416;0.0437;0.043734;0.043605;0.043225;0.042325;0.040046;0.033309;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.039694;0.039698;0.039962;0.040213;0.040535;0.040794;0.041045;0.041307;0.041339;0.04123;0.040907;0.040134;0.038168;0.032445;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.037661;0.037678;0.037844;0.038065;0.038356;0.038586;0.038813;0.039054;0.039082;0.03899;0.038713;0.038009;0.036348;0.031501;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.035642;0.035711;0.035855;0.036049;0.03631;0.036513;0.036717;0.036935;0.036958;0.036881;0.036644;0.036036;0.034594;0.030502;0.026282;-9999;-9999;-9999;-9999;-9999;
+9500;0.033766;0.033768;0.034;0.034174;0.034404;0.034578;0.034756;0.034951;0.034968;0.034901;0.034696;0.034172;0.032919;0.029482;0.025984;-9999;-9999;-9999;-9999;-9999;
+10000;0.03211;0.032165;0.032275;0.032425;0.032629;0.032779;0.032949;0.033105;0.03311;0.033045;0.032867;0.032404;0.031324;0.028443;0.025422;-9999;-9999;-9999;-9999;-9999;
+10500;0.030575;0.030576;0.030671;0.030801;0.030979;0.031106;0.031249;0.031389;0.031386;0.03132;0.031152;0.030745;0.029821;0.027405;0.025268;-9999;-9999;-9999;-9999;-9999;
+11000;0.029063;0.029106;0.029186;0.029296;0.02945;0.029554;0.029669;0.029791;0.029777;0.029711;0.02956;0.029204;0.02841;0.026382;0.024898;-9999;-9999;-9999;-9999;-9999;
+11500;0.027476;0.027521;0.027591;0.027686;0.027822;0.027912;0.028009;0.028111;0.02809;0.028018;0.027869;0.027528;0.026783;0.024894;0.023473;-9999;-9999;-9999;-9999;-9999;
+12000;0.026034;0.026069;0.026126;0.026208;0.026326;0.0264;0.026481;0.026566;0.026539;0.026462;0.026313;0.025987;0.025287;0.023533;0.022173;-9999;-9999;-9999;-9999;-9999;
+12500;0.02472;0.024741;0.024791;0.024859;0.024959;0.025019;0.025081;0.025148;0.025112;0.025034;0.024885;0.024572;0.023916;0.022294;0.020997;-9999;-9999;-9999;-9999;-9999;
+13000;0.023526;0.023539;0.02358;0.023634;0.023728;0.023761;0.023806;0.023853;0.023809;0.023724;0.023578;0.023278;0.022663;0.02117;0.019941;-9999;-9999;-9999;-9999;-9999;
+13500;0.022437;0.022457;0.022488;0.022529;0.022603;0.022622;0.022649;0.022677;0.022623;0.02253;0.022382;0.022099;0.021522;0.020158;0.019014;-9999;-9999;-9999;-9999;-9999;
+14000;0.021472;0.021468;0.021513;0.02154;0.021594;0.021599;0.021606;0.021615;0.02155;0.021449;0.021297;0.021024;0.020491;0.019256;0.018178;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.08954;0.089553;0.090946;0.091586;0.093092;0.094249;0.094721;0.09493;0.09386;0.091267;0.08567;0.073238;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.085047;0.085059;0.086186;0.086971;0.088345;0.089449;0.089922;0.090166;0.089272;0.08701;0.082102;0.071355;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.080887;0.0809;0.081905;0.08272;0.083887;0.08493;0.085388;0.085639;0.084896;0.082924;0.078657;0.069247;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.076695;0.076708;0.077679;0.078346;0.079734;0.08068;0.081146;0.081423;0.080775;0.079037;0.075277;0.067048;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.072699;0.07271;0.073532;0.074132;0.075394;0.076361;0.076945;0.077382;0.076858;0.075362;0.072079;0.064801;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.06889;0.06901;0.069596;0.070134;0.07127;0.072168;0.072723;0.073238;0.073052;0.071752;0.069019;0.062557;0.048814;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.065089;0.065099;0.065836;0.066343;0.067358;0.068187;0.068716;0.069207;0.069066;0.068123;0.065974;0.060308;0.047892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.061486;0.061806;0.062294;0.06274;0.063665;0.064415;0.064912;0.065381;0.06527;0.064455;0.062779;0.058045;0.047026;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.058368;0.058376;0.058972;0.059386;0.0602;0.060844;0.061306;0.061748;0.061672;0.060964;0.059503;0.056035;0.046114;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.0554;0.055456;0.055857;0.056228;0.056971;0.05755;0.057966;0.058354;0.058278;0.057645;0.056386;0.053371;0.045028;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.052361;0.052368;0.052873;0.053227;0.053909;0.054427;0.054824;0.055183;0.055126;0.054581;0.053488;0.050856;0.043621;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.049488;0.049494;0.050049;0.050379;0.051003;0.051472;0.05184;0.052175;0.052136;0.051663;0.050725;0.048467;0.042256;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.046953;0.046959;0.047377;0.047679;0.048249;0.04867;0.049008;0.049322;0.049301;0.048893;0.048086;0.046115;0.040781;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.044553;0.044577;0.044851;0.045122;0.045642;0.046024;0.046328;0.04662;0.046615;0.046271;0.04551;0.043852;0.039275;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.0421;0.042104;0.04245;0.042705;0.043176;0.043522;0.043801;0.044067;0.044065;0.043779;0.043126;0.041684;0.037752;0.030088;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.039795;0.039799;0.040188;0.040423;0.040849;0.041161;0.041419;0.041668;0.041664;0.04142;0.040862;0.039609;0.036231;0.029856;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.037778;0.037781;0.038062;0.038274;0.038658;0.038936;0.039174;0.039405;0.0394;0.039195;0.038715;0.037616;0.034775;0.029533;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.035885;0.035892;0.036067;0.036297;0.036599;0.036846;0.037062;0.037276;0.03727;0.037098;0.036683;0.035718;0.033285;0.025728;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.033976;0.033977;0.034197;0.034403;0.03467;0.034887;0.035081;0.035275;0.035272;0.035123;0.03475;0.033915;0.031832;0.02547;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.032202;0.032203;0.032452;0.032634;0.032873;0.03306;0.03323;0.033398;0.033389;0.033254;0.032931;0.03221;0.030426;0.025161;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.030653;0.030709;0.030827;0.030981;0.031192;0.031353;0.0315;0.031648;0.031633;0.031511;0.03123;0.030606;0.029084;0.02473;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.029222;0.02922;0.029321;0.029453;0.029636;0.029771;0.029897;0.030025;0.030005;0.029893;0.029645;0.029079;0.027809;0.024177;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.027811;0.027854;0.027937;0.02805;0.028207;0.028318;0.028421;0.028528;0.0285;0.028396;0.028174;0.027683;0.0266;0.023586;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.026345;0.026343;0.026449;0.026546;0.026683;0.026777;0.026863;0.026949;0.026915;0.026807;0.026592;0.026128;0.025119;0.022327;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.025006;0.025004;0.02509;0.025172;0.02529;0.025366;0.025435;0.025502;0.025457;0.025347;0.025137;0.024722;0.023761;0.021191;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.023778;0.023806;0.023856;0.023922;0.024021;0.02408;0.024131;0.024179;0.024132;0.02402;0.023812;0.023417;0.022524;0.020174;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.022677;0.022702;0.022742;0.022793;0.022871;0.022914;0.022946;0.022982;0.022928;0.022813;0.022608;0.022223;0.021402;0.019275;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.021698;0.021716;0.021745;0.02178;0.021837;0.021862;0.021882;0.021902;0.021838;0.021717;0.021515;0.021126;0.020372;0.018494;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.020832;0.020826;0.020862;0.020881;0.020926;0.020927;0.020932;0.020932;0.020856;0.020729;0.020529;0.02016;0.019463;0.017833;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.083482;0.083971;0.085176;0.085811;0.087364;0.088358;0.088509;0.088309;0.086607;0.082565;0.074541;0.058962;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.079368;0.079774;0.080881;0.081329;0.082904;0.083853;0.08404;0.083914;0.082455;0.078912;0.07185;0.057606;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.075512;0.075524;0.076765;0.077315;0.078759;0.079647;0.07986;0.079764;0.078478;0.075375;0.06917;0.056314;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.071823;0.072144;0.073067;0.073491;0.074828;0.075672;0.075927;0.075891;0.074775;0.072018;0.066494;0.054986;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.068299;0.068572;0.069428;0.069838;0.07105;0.071865;0.072152;0.072171;0.071226;0.068819;0.063945;0.05361;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.064876;0.064885;0.065771;0.066347;0.067423;0.068223;0.068535;0.068601;0.067717;0.065714;0.061429;0.052182;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.061629;0.061637;0.062452;0.063026;0.06397;0.064745;0.065067;0.065177;0.064437;0.062702;0.058922;0.050835;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.058535;0.058543;0.059276;0.059836;0.060689;0.061421;0.061748;0.061892;0.061282;0.059785;0.056486;0.049416;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.055542;0.055549;0.056252;0.05673;0.057573;0.05825;0.058575;0.058746;0.058252;0.056967;0.054128;0.047994;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.052584;0.052591;0.05324;0.053675;0.054534;0.05519;0.055572;0.055772;0.05536;0.054255;0.05183;0.046478;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.049797;0.049803;0.050477;0.050781;0.051567;0.052169;0.052525;0.052847;0.052659;0.051718;0.049638;0.044939;0.03495;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.047155;0.047161;0.047672;0.048041;0.048758;0.049309;0.049646;0.04995;0.04981;0.049112;0.047501;0.04337;0.03437;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.044657;0.044791;0.045117;0.045448;0.046101;0.046604;0.046921;0.047208;0.047096;0.046491;0.045267;0.04179;0.033842;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.042298;0.042414;0.042701;0.042999;0.043592;0.044048;0.044347;0.044617;0.044528;0.044004;0.042943;0.040388;0.033241;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.040075;0.04017;0.040429;0.040687;0.041225;0.041638;0.041918;0.042171;0.042102;0.041648;0.04072;0.038477;0.032429;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.037949;0.037952;0.03828;0.038519;0.038995;0.039369;0.039628;0.039866;0.039812;0.039417;0.038602;0.036658;0.031539;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.035953;0.036056;0.036267;0.03648;0.036899;0.037235;0.037476;0.037696;0.037648;0.037295;0.036592;0.034913;0.030595;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.034104;0.034106;0.034369;0.034563;0.034923;0.035221;0.035444;0.035643;0.035602;0.035299;0.034658;0.033243;0.029624;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.032383;0.032444;0.032607;0.032816;0.033092;0.033346;0.033545;0.033721;0.033687;0.033425;0.032873;0.031651;0.028603;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.030753;0.030754;0.030959;0.031147;0.031392;0.031604;0.031781;0.031938;0.031905;0.031674;0.031195;0.030147;0.02758;0.022645;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.029248;0.029314;0.029438;0.029597;0.029813;0.02999;0.030139;0.03028;0.030249;0.03005;0.029631;0.02873;0.026566;0.022581;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.027877;0.027876;0.028031;0.028171;0.028357;0.028501;0.028628;0.028748;0.028711;0.028539;0.028175;0.027401;0.025611;0.022379;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.026639;0.026637;0.02675;0.026872;0.027025;0.027142;0.027243;0.027342;0.0273;0.027146;0.026825;0.026177;0.024649;0.020094;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.025255;0.025253;0.025363;0.025466;0.025599;0.025702;0.02579;0.025871;0.025823;0.02567;0.025365;0.024743;0.023306;0.019229;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.023994;0.02399;0.024101;0.024185;0.0243;0.024392;0.024463;0.024525;0.02447;0.024318;0.024026;0.02343;0.022115;0.018488;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.02288;0.022907;0.022958;0.023027;0.023128;0.023202;0.023254;0.023297;0.023236;0.023082;0.022803;0.022246;0.021034;0.0179;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.021893;0.021893;0.02193;0.021988;0.022071;0.022126;0.022159;0.022182;0.022114;0.021958;0.02169;0.021171;0.020063;0.017479;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.020979;0.020973;0.021024;0.021059;0.021127;0.021161;0.021177;0.021178;0.021099;0.020942;0.020684;0.020201;0.019201;0.017768;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.020204;0.020216;0.020235;0.020253;0.020293;0.020305;0.0203;0.02028;0.02019;0.020031;0.019782;0.019335;0.018448;0.017272;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.077932;0.078416;0.079616;0.080677;0.082047;0.082837;0.082684;0.081954;0.079201;0.073229;0.062031;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.074027;0.074037;0.075598;0.07652;0.077826;0.078597;0.078622;0.077885;0.075508;0.070319;0.060332;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.070433;0.070896;0.071873;0.072684;0.073942;0.074694;0.074588;0.074077;0.071962;0.067396;0.058618;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.067049;0.067059;0.068299;0.069021;0.070234;0.070958;0.070913;0.070507;0.068672;0.06461;0.056796;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.063814;0.064085;0.065028;0.065425;0.066692;0.067389;0.067396;0.067081;0.065496;0.061931;0.054992;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.060595;0.060603;0.061643;0.062117;0.06331;0.063981;0.064031;0.063799;0.06243;0.059306;0.053161;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.057528;0.057869;0.058657;0.05899;0.060081;0.060726;0.060812;0.060652;0.059475;0.056751;0.051306;0.040846;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.054703;0.054709;0.055587;0.055993;0.057003;0.057621;0.057736;0.057634;0.05663;0.054263;0.049448;0.039958;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.052037;0.052043;0.052795;0.0532;0.054052;0.054657;0.054798;0.054747;0.053897;0.051845;0.047604;0.039093;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.049496;0.049502;0.05016;0.050577;0.05135;0.051911;0.052051;0.052019;0.051293;0.049531;0.045844;0.038213;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.047077;0.047082;0.047671;0.048064;0.048775;0.04931;0.049469;0.049475;0.048862;0.047333;0.044077;0.037338;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.044752;0.044756;0.045297;0.045689;0.046325;0.046828;0.047002;0.04704;0.046465;0.045199;0.042385;0.036474;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.042544;0.042702;0.043039;0.043411;0.043987;0.044462;0.044649;0.044709;0.044231;0.043131;0.040702;0.035558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.040378;0.040382;0.040861;0.041239;0.04176;0.04221;0.042407;0.042484;0.042081;0.041138;0.039047;0.034576;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.038214;0.038217;0.038651;0.03896;0.039537;0.039995;0.040263;0.040351;0.040021;0.039217;0.037424;0.033532;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.036184;0.036186;0.036574;0.036855;0.037379;0.037782;0.03803;0.038221;0.038059;0.037371;0.035843;0.032454;0.025549;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.03429;0.034292;0.034633;0.034883;0.035353;0.035717;0.035936;0.036116;0.035986;0.03551;0.034308;0.031362;0.025241;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.032531;0.032604;0.032832;0.033048;0.033463;0.033784;0.033978;0.034145;0.034038;0.033593;0.032703;0.03027;0.024951;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.030866;0.030866;0.031143;0.031385;0.03171;0.031992;0.032165;0.032312;0.032217;0.03183;0.031061;0.029269;0.024564;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.029326;0.029417;0.029586;0.029786;0.030081;0.030328;0.030484;0.030615;0.030532;0.030194;0.02953;0.027979;0.02403;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.02791;0.028001;0.028144;0.02832;0.028578;0.028789;0.028926;0.029041;0.028966;0.02867;0.028098;0.026772;0.023514;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.02665;0.026648;0.026825;0.026982;0.027199;0.027377;0.027494;0.027591;0.027521;0.02726;0.026767;0.02565;0.022958;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.025498;0.025495;0.025637;0.025766;0.025946;0.026093;0.026188;0.026266;0.026196;0.025965;0.025539;0.024585;0.022381;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.024231;0.024228;0.024355;0.024465;0.024623;0.024747;0.024824;0.024884;0.024809;0.024587;0.024183;0.023298;0.021281;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.023086;0.023082;0.023191;0.023282;0.023417;0.023519;0.023579;0.02362;0.02354;0.023325;0.022921;0.022125;0.020299;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.02206;0.022088;0.022145;0.022213;0.022326;0.022406;0.022446;0.022469;0.022383;0.022175;0.021796;0.021061;0.019431;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.021151;0.021166;0.02121;0.021255;0.021345;0.021402;0.021423;0.021427;0.021334;0.021132;0.020776;0.020102;0.018679;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.02034;0.020334;0.020385;0.020412;0.020473;0.020506;0.020507;0.020491;0.020391;0.020193;0.019859;0.019247;0.018044;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.019639;0.019631;0.019672;0.019679;0.019709;0.019716;0.019696;0.019658;0.019549;0.019356;0.019043;0.018495;0.017532;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.073546;0.073552;0.074965;0.076255;0.077494;0.078341;0.077668;0.076085;0.071591;0.063149;0.050411;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.069769;0.069776;0.071183;0.072327;0.073498;0.074288;0.073507;0.072323;0.068381;0.060912;0.04892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.066142;0.066328;0.067601;0.068734;0.069803;0.070517;0.070046;0.068827;0.065326;0.058695;0.047556;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.062834;0.062841;0.064165;0.065132;0.066249;0.066968;0.066569;0.065525;0.062473;0.056552;0.046229;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.059628;0.059634;0.060929;0.061771;0.062807;0.063481;0.063266;0.062294;0.059668;0.05446;0.044969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.056576;0.056956;0.057816;0.058587;0.059562;0.060112;0.060039;0.059245;0.057003;0.052374;0.043771;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.053674;0.05405;0.054887;0.055564;0.056492;0.057057;0.056986;0.056308;0.054426;0.050324;0.042673;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.051095;0.0511;0.052094;0.052686;0.053574;0.054114;0.054082;0.053551;0.051893;0.048286;0.041588;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.048635;0.048852;0.049486;0.049974;0.050809;0.051319;0.051271;0.050905;0.049455;0.046303;0.040467;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.046235;0.04624;0.047042;0.047471;0.048253;0.048705;0.04867;0.048369;0.047134;0.044421;0.039268;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.043949;0.044188;0.044777;0.045087;0.045834;0.046273;0.046263;0.046034;0.044965;0.04263;0.038045;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.041828;0.041832;0.042501;0.042764;0.043531;0.043953;0.043967;0.043798;0.042879;0.040845;0.0368;0.029383;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.039815;0.039953;0.040424;0.040643;0.041338;0.041739;0.041779;0.041656;0.040872;0.039108;0.035549;0.028799;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.03783;0.037832;0.038361;0.038632;0.039256;0.039632;0.039696;0.039612;0.038946;0.037419;0.034292;0.028254;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.035956;0.035958;0.036437;0.036722;0.03726;0.037633;0.037714;0.037664;0.037102;0.035786;0.033087;0.027715;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.034232;0.034234;0.034638;0.034922;0.03538;0.03574;0.035835;0.035811;0.035339;0.034209;0.031885;0.027157;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.032622;0.032704;0.032954;0.033207;0.033621;0.033952;0.034054;0.034053;0.033659;0.032692;0.030698;0.02664;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.031048;0.031048;0.031353;0.0316;0.031974;0.032271;0.032374;0.032389;0.032028;0.03124;0.02954;0.026061;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.029584;0.02966;0.029865;0.030074;0.030432;0.030701;0.030806;0.030826;0.030526;0.029859;0.028415;0.025415;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.028111;0.02811;0.028367;0.028556;0.028903;0.029176;0.029311;0.029364;0.029114;0.028548;0.027326;0.024739;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.026766;0.026851;0.027007;0.027164;0.027461;0.027697;0.027814;0.027905;0.027765;0.027307;0.026281;0.024067;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.025569;0.025567;0.025758;0.025898;0.026148;0.026345;0.026453;0.02652;0.026394;0.026048;0.025287;0.023383;0.019806;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.024502;0.024539;0.024647;0.024782;0.024968;0.025125;0.025213;0.025263;0.025149;0.024825;0.024232;0.022919;0.019718;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.023312;0.023309;0.023445;0.023561;0.023721;0.023854;0.023926;0.023959;0.023843;0.023553;0.022983;0.021753;0.018973;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.022247;0.022243;0.022358;0.022453;0.022587;0.022698;0.022749;0.022768;0.022649;0.022374;0.021843;0.020722;0.018369;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.021295;0.021324;0.021383;0.021444;0.021561;0.021649;0.021681;0.021684;0.021565;0.021301;0.02081;0.019796;0.017893;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.020456;0.020472;0.020514;0.020556;0.020645;0.020705;0.020716;0.020705;0.020584;0.02033;0.019877;0.018975;0.017589;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.019713;0.019707;0.019751;0.019774;0.019831;0.019865;0.019856;0.019826;0.019701;0.019449;0.019043;0.018257;0.017475;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.019079;0.019092;0.019099;0.019099;0.019123;0.019127;0.019095;0.019046;0.018916;0.018678;0.018308;0.017649;0.017595;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/sNOx.csv b/engine/test/stubs/V2527-A5/sNOx.csv
new file mode 100644
index 00000000..ccb55541
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/sNOx.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.7744;1.7774;1.7846;1.7968;1.8146;1.8383;1.8688;1.9059;1.9498;2.0016;2.0638;2.1323;2.2095;2.296;2.3927;2.5006;2.6201;2.752;2.8965;3.054;
+500;1.6987;1.702;1.7089;1.7207;1.7376;1.7601;1.7888;1.8237;1.8656;1.9146;1.9729;2.0381;2.1115;2.1938;2.2856;2.3879;2.5017;2.6274;2.7658;2.9169;
+1000;1.6257;1.629;1.6357;1.6471;1.6636;1.6854;1.7128;1.7459;1.7853;1.8316;1.8846;1.9475;2.0172;2.0954;2.1827;2.2797;2.3877;2.5073;2.6392;2.784;
+1500;1.5554;1.5576;1.5643;1.5756;1.5917;1.613;1.6394;1.6711;1.7087;1.7525;1.8045;1.8616;1.9266;2.0007;2.0837;2.1758;2.2781;2.3917;2.5172;2.6552;
+2000;1.4854;1.4877;1.4943;1.5055;1.5215;1.5423;1.5679;1.5987;1.635;1.6765;1.7257;1.7801;1.8413;1.9101;1.9884;2.076;2.173;2.2804;2.3996;2.5309;
+2500;1.4166;1.4188;1.4255;1.4366;1.4524;1.4728;1.4979;1.528;1.5633;1.6033;1.6484;1.7017;1.7598;1.8248;1.8977;1.9799;2.072;2.1739;2.2865;2.4113;
+3000;1.3486;1.3508;1.3574;1.3684;1.384;1.4042;1.429;1.4586;1.4929;1.5318;1.5755;1.6263;1.6814;1.7431;1.8119;1.8889;1.9755;2.0716;2.1783;2.2962;
+3500;1.2823;1.2844;1.2909;1.3016;1.3168;1.3364;1.3608;1.39;1.4237;1.4617;1.5042;1.5534;1.6061;1.6646;1.7299;1.8024;1.8835;1.9743;2.0745;2.186;
+4000;1.2176;1.2198;1.226;1.2364;1.2511;1.2702;1.2938;1.3222;1.3551;1.3925;1.4342;1.4821;1.5331;1.5891;1.651;1.7198;1.7959;1.8811;1.9761;2.0808;
+4500;1.1558;1.1585;1.1645;1.1743;1.1883;1.2064;1.2288;1.2559;1.2877;1.324;1.3666;1.412;1.4617;1.516;1.5752;1.6404;1.7126;1.7923;1.8816;1.9809;
+5000;1.0966;1.099;1.1048;1.1143;1.1278;1.1453;1.1671;1.193;1.2232;1.2575;1.2982;1.3428;1.3916;1.4445;1.5018;1.5642;1.6325;1.708;1.7914;1.8848;
+5500;1.0392;1.0411;1.0466;1.0559;1.0689;1.0858;1.1069;1.1319;1.161;1.1943;1.2332;1.2753;1.3222;1.3741;1.43;1.4903;1.5556;1.6271;1.706;1.793;
+6000;0.98418;0.98493;0.99004;0.99893;1.0115;1.0279;1.0482;1.0723;1.1004;1.1325;1.1701;1.2109;1.2559;1.3055;1.3595;1.4182;1.4813;1.5495;1.6239;1.7061;
+6500;0.93101;0.93253;0.93718;0.94409;0.95603;0.97162;0.99103;1.0143;1.0414;1.0733;1.1086;1.1479;1.1915;1.2394;1.2917;1.3481;1.4088;1.4745;1.5455;1.623;
+7000;0.88304;0.88453;0.88894;0.8963;0.90673;0.92034;0.93649;0.95848;0.98421;1.0147;1.0486;1.0865;1.1286;1.1748;1.2254;1.2803;1.3394;1.402;1.4698;1.5434;
+7500;0.83723;0.83861;0.84277;0.84974;0.8596;0.87248;0.88851;0.90773;0.92953;0.95857;0.99087;1.027;1.0673;1.1118;1.1606;1.2137;1.2712;1.3327;1.3977;1.4669;
+8000;0.79352;0.79412;0.79862;0.80522;0.81454;0.82671;0.84181;0.85992;0.88123;0.90585;0.9351;0.96984;1.0084;1.0508;1.0975;1.1487;1.2042;1.264;1.3278;1.395;
+8500;0.75205;0.7526;0.75643;0.76258;0.7714;0.78291;0.79717;0.81425;0.83429;0.85749;0.88477;0.9143;0.95133;0.99219;1.0369;1.0856;1.1388;1.1966;1.2587;1.3246;
+9000;0.71146;0.71248;0.71602;0.72193;0.73034;0.74123;0.75457;0.77058;0.78944;0.81132;0.83692;0.86548;0.89767;0.93515;0.97818;1.0251;1.076;1.1309;1.1908;1.255;
+9500;0.67284;0.67373;0.67723;0.68279;0.69071;0.70101;0.71378;0.7291;0.74684;0.76735;0.79137;0.8181;0.84835;0.88226;0.92106;0.96616;1.0151;1.0681;1.1251;1.1865;
+10000;0.63657;0.63759;0.64067;0.64582;0.65311;0.66259;0.67449;0.68942;0.70645;0.72606;0.74821;0.77329;0.80152;0.83315;0.86871;0.90888;0.95593;1.0069;1.0618;1.1208;
+10500;0.60203;0.60313;0.60604;0.61089;0.61774;0.62663;0.63764;0.65085;0.66714;0.68567;0.70684;0.73055;0.75711;0.78682;0.81996;0.85679;0.8984;0.9473;1.0001;1.0569;
+11000;0.56932;0.57025;0.57299;0.57756;0.58399;0.59234;0.60267;0.61507;0.62963;0.64702;0.66694;0.68949;0.71471;0.74264;0.77376;0.80833;0.84667;0.88945;0.94011;0.99469;
+11500;0.55476;0.55587;0.55854;0.56299;0.56927;0.57742;0.5875;0.59958;0.6138;0.63024;0.65018;0.67218;0.6967;0.72395;0.7543;0.78804;0.82546;0.86715;0.91617;0.96901;
+12000;0.54058;0.54186;0.54446;0.54881;0.55494;0.56288;0.57272;0.58451;0.59838;0.61442;0.63385;0.65532;0.67916;0.70574;0.73536;0.76828;0.80479;0.84547;0.8933;0.94488;
+12500;0.52738;0.52822;0.53076;0.535;0.54098;0.54874;0.55833;0.56985;0.58337;0.599;0.61795;0.63886;0.66208;0.68801;0.71692;0.74903;0.78466;0.82434;0.87104;0.92138;
+13000;0.51451;0.51488;0.51742;0.52156;0.52739;0.53496;0.54432;0.55555;0.56874;0.584;0.60246;0.62279;0.64544;0.67074;0.69894;0.73029;0.76505;0.80376;0.84936;0.8985;
+13500;0.50099;0.50182;0.5043;0.50843;0.51416;0.52154;0.53068;0.54163;0.5545;0.5694;0.58738;0.60715;0.62923;0.65393;0.68146;0.71203;0.74593;0.78373;0.82824;0.8762;
+14000;0.48714;0.48796;0.49037;0.49439;0.50006;0.50741;0.51651;0.52743;0.54026;0.55512;0.57269;0.5919;0.61346;0.63756;0.66441;0.69423;0.72731;0.76422;0.80767;0.85449;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.4469;1.4484;1.4541;1.4635;1.4772;1.4953;1.5183;1.5466;1.5809;1.6217;1.6709;1.7251;1.7859;1.8533;1.9283;2.0105;2.1019;2.2042;2.3192;2.4485;
+500;1.3833;1.3853;1.3907;1.3998;1.4127;1.4298;1.4517;1.4786;1.5115;1.5522;1.5979;1.6501;1.7084;1.7731;1.8447;1.9239;2.0106;2.1069;2.2148;2.3362;
+1000;1.3226;1.3244;1.3296;1.3383;1.3506;1.3671;1.3881;1.414;1.4454;1.4826;1.5275;1.5773;1.6333;1.6954;1.764;1.8396;1.9229;2.0141;2.1155;2.2291;
+1500;1.2642;1.2659;1.2708;1.2791;1.2909;1.3067;1.3267;1.3516;1.3819;1.4188;1.4602;1.5073;1.5604;1.62;1.6858;1.7582;1.8378;1.9251;2.0209;2.1274;
+2000;1.2079;1.2095;1.2142;1.2222;1.2335;1.2486;1.2678;1.2917;1.3206;1.3559;1.3955;1.4404;1.4909;1.5471;1.61;1.6794;1.7555;1.8391;1.9304;2.0308;
+2500;1.1536;1.1553;1.1599;1.1675;1.1783;1.1927;1.2112;1.2341;1.2617;1.2953;1.3331;1.3759;1.4239;1.4776;1.5371;1.603;1.676;1.7557;1.8433;1.9385;
+3000;1.1011;1.1036;1.108;1.1152;1.1255;1.1392;1.1568;1.1788;1.205;1.2357;1.2729;1.3136;1.3593;1.4104;1.4673;1.5301;1.5993;1.6753;1.7587;1.85;
+3500;1.0531;1.0546;1.0586;1.0654;1.0752;1.0882;1.1049;1.1257;1.1506;1.1798;1.2151;1.2537;1.2971;1.3457;1.3998;1.4597;1.5257;1.5982;1.6772;1.7642;
+4000;1.0067;1.008;1.0118;1.0182;1.0273;1.0397;1.0556;1.0752;1.0985;1.1261;1.1595;1.1961;1.2372;1.2833;1.3347;1.3917;1.4546;1.5237;1.5994;1.6816;
+4500;0.96197;0.96412;0.96776;0.97393;0.98279;0.99455;1.0095;1.0276;1.0491;1.075;1.1061;1.1407;1.1797;1.2234;1.2721;1.3262;1.386;1.4519;1.5241;1.6029;
+5000;0.92041;0.9216;0.92515;0.93115;0.93977;0.95124;0.96565;0.98299;1.0035;1.0274;1.0548;1.0877;1.1245;1.1658;1.212;1.2632;1.32;1.3826;1.4513;1.5266;
+5500;0.87889;0.88008;0.88358;0.88948;0.89795;0.90916;0.92311;0.93985;0.95957;0.98229;1.0082;1.0387;1.0724;1.1106;1.1542;1.2027;1.2564;1.3158;1.3812;1.4527;
+6000;0.83819;0.83935;0.84283;0.84869;0.85708;0.86803;0.88156;0.89781;0.91694;0.93883;0.96342;0.99222;1.0238;1.0594;1.0996;1.1447;1.1955;1.2516;1.3136;1.3816;
+6500;0.79869;0.79974;0.80321;0.80908;0.81737;0.82801;0.8411;0.85676;0.87529;0.89641;0.92024;0.94669;0.97746;1.0108;1.0483;1.0905;1.1376;1.1901;1.2487;1.3131;
+7000;0.75952;0.76066;0.76408;0.76986;0.77803;0.78863;0.80171;0.81719;0.83507;0.85527;0.87799;0.90449;0.93303;0.9646;0.99974;1.039;1.0832;1.1324;1.1866;1.2473;
+7500;0.72135;0.72249;0.72586;0.73149;0.73944;0.74974;0.76248;0.77778;0.79556;0.8154;0.8375;0.86284;0.89003;0.9202;0.95345;0.99029;1.0314;1.0775;1.1287;1.1851;
+8000;0.68411;0.68521;0.6885;0.69398;0.7017;0.7117;0.72408;0.73894;0.75614;0.77575;0.79762;0.82241;0.84878;0.87765;0.90912;0.94385;0.98234;1.0252;1.0732;1.1264;
+8500;0.64889;0.64892;0.65209;0.65737;0.6648;0.67451;0.68653;0.70092;0.71756;0.73653;0.75788;0.78249;0.80833;0.83634;0.8668;0.89981;0.93573;0.97574;1.0203;1.0702;
+9000;0.61272;0.61378;0.61684;0.62196;0.62916;0.6385;0.65006;0.66387;0.67985;0.69818;0.71955;0.74271;0.76827;0.7958;0.82537;0.85734;0.89182;0.92921;0.97039;1.0167;
+9500;0.57822;0.57862;0.58249;0.58744;0.59438;0.60339;0.61458;0.62792;0.64336;0.66099;0.68152;0.70375;0.72848;0.75557;0.78471;0.81576;0.84916;0.88502;0.92382;0.96643;
+10000;0.54725;0.54813;0.55072;0.55505;0.56117;0.56925;0.57998;0.5928;0.60771;0.62527;0.64458;0.66609;0.68983;0.71584;0.7443;0.77492;0.80737;0.8421;0.87928;0.91943;
+10500;0.51794;0.51854;0.52098;0.52507;0.53085;0.5384;0.5478;0.55873;0.57294;0.58985;0.60848;0.62926;0.6522;0.67735;0.70476;0.73444;0.76632;0.80008;0.83606;0.87447;
+11000;0.48946;0.49024;0.49255;0.49641;0.50187;0.50899;0.51785;0.52845;0.54089;0.55502;0.57327;0.59329;0.61543;0.63971;0.6662;0.69492;0.7259;0.75886;0.79376;0.83091;
+11500;0.47683;0.47772;0.47997;0.48374;0.48907;0.49602;0.50465;0.51499;0.52713;0.5409;0.55874;0.57827;0.59986;0.62354;0.64938;0.67739;0.7076;0.73967;0.77346;0.80933;
+12000;0.46453;0.46554;0.46774;0.47141;0.4766;0.48338;0.49181;0.50189;0.51372;0.52716;0.54459;0.56364;0.58469;0.60779;0.63299;0.66033;0.68977;0.72098;0.75395;0.78893;
+12500;0.45297;0.45368;0.45582;0.45941;0.46447;0.47108;0.4793;0.48913;0.50067;0.5138;0.53081;0.54939;0.56993;0.59246;0.61704;0.6437;0.67234;0.70278;0.73494;0.76906;
+13000;0.4417;0.44213;0.44422;0.44772;0.45266;0.4591;0.46712;0.47671;0.48799;0.5008;0.5174;0.53551;0.55555;0.57753;0.60151;0.62752;0.65537;0.68506;0.71643;0.74971;
+13500;0.42983;0.43053;0.43261;0.43609;0.44101;0.44741;0.45527;0.46464;0.47565;0.48814;0.50433;0.522;0.54155;0.56299;0.58639;0.61176;0.63886;0.66781;0.69841;0.73086;
+14000;0.41793;0.41861;0.42064;0.42402;0.42882;0.43508;0.44286;0.45217;0.46311;0.47592;0.4916;0.50884;0.52792;0.54883;0.57167;0.59641;0.62276;0.65101;0.68086;0.71251;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.1776;1.1791;1.1832;1.1902;1.2002;1.2134;1.2301;1.2507;1.2756;1.3061;1.3433;1.3863;1.4359;1.492;1.555;1.6253;1.7036;1.7907;1.8878;1.9953;
+500;1.1281;1.1301;1.134;1.1407;1.1501;1.1626;1.1783;1.1976;1.2212;1.2509;1.2851;1.3255;1.3723;1.4256;1.4853;1.5519;1.6261;1.7086;1.8003;1.9024;
+1000;1.0805;1.0827;1.0865;1.0929;1.102;1.1139;1.129;1.1475;1.1697;1.1966;1.2296;1.2678;1.3116;1.3619;1.4184;1.4816;1.5518;1.6299;1.7166;1.813;
+1500;1.0355;1.0367;1.0404;1.0466;1.0553;1.0668;1.0813;1.0991;1.1204;1.146;1.1773;1.213;1.2539;1.301;1.3543;1.414;1.4806;1.5545;1.6365;1.7275;
+2000;0.99086;0.99207;0.99562;1.0016;1.0101;1.0212;1.0352;1.0523;1.0729;1.0973;1.1273;1.1611;1.1997;1.2433;1.2929;1.3493;1.4122;1.4822;1.5597;1.6457;
+2500;0.948;0.94834;0.95211;0.95786;0.96607;0.97686;0.99041;1.007;1.0269;1.0504;1.0792;1.1114;1.1479;1.1891;1.2353;1.2874;1.3467;1.4129;1.4862;1.5675;
+3000;0.90555;0.90666;0.90995;0.91547;0.92336;0.93377;0.94689;0.96297;0.98225;1.0051;1.0328;1.0635;1.0983;1.1372;1.1807;1.2295;1.2844;1.3465;1.4158;1.4925;
+3500;0.86443;0.86556;0.86876;0.87413;0.88181;0.89196;0.90466;0.92018;0.93888;0.96107;0.98777;1.0173;1.0505;1.0874;1.1286;1.1745;1.2258;1.2836;1.3483;1.4209;
+4000;0.82578;0.8268;0.82979;0.83483;0.84204;0.85158;0.86368;0.8786;0.89678;0.91851;0.94407;0.97247;1.0043;1.0395;1.0786;1.122;1.1703;1.2241;1.2848;1.3524;
+4500;0.78864;0.78896;0.79236;0.79717;0.80406;0.81318;0.82475;0.83908;0.85643;0.8771;0.9016;0.92895;0.95947;0.99324;1.0305;1.0717;1.1172;1.1678;1.2243;1.2878;
+5000;0.75266;0.75358;0.7563;0.7609;0.76747;0.7762;0.78728;0.801;0.81766;0.83749;0.86123;0.88722;0.91606;0.94838;0.98405;1.0233;1.0664;1.1141;1.167;1.2262;
+5500;0.71821;0.71901;0.72162;0.726;0.73227;0.74062;0.75124;0.76438;0.78037;0.79924;0.82194;0.84699;0.87485;0.90545;0.93914;0.97655;1.0176;1.0628;1.1126;1.1679;
+6000;0.68536;0.68619;0.68863;0.69275;0.69866;0.70652;0.71661;0.7292;0.74453;0.76247;0.78412;0.80791;0.83461;0.8642;0.89651;0.93192;0.9706;1.0135;1.0606;1.1125;
+6500;0.65426;0.65502;0.65734;0.66126;0.66689;0.67438;0.68394;0.69585;0.71026;0.72714;0.74771;0.77029;0.79562;0.82391;0.85513;0.88908;0.92615;0.9665;1.0107;1.0597;
+7000;0.62472;0.62544;0.62762;0.6313;0.6366;0.64369;0.65281;0.6642;0.67781;0.69378;0.71309;0.73428;0.75812;0.78494;0.81474;0.84751;0.88304;0.9217;0.96368;1.0094;
+7500;0.59617;0.59729;0.59937;0.60287;0.60791;0.61463;0.62325;0.63395;0.64678;0.66187;0.68005;0.70007;0.72259;0.74775;0.77571;0.80697;0.84121;0.87825;0.91844;0.96201;
+8000;0.56964;0.57031;0.57232;0.57569;0.58054;0.58699;0.59524;0.60534;0.61731;0.63142;0.64846;0.66727;0.68852;0.71232;0.7388;0.76812;0.80048;0.83611;0.87461;0.91627;
+8500;0.54479;0.54446;0.54639;0.54965;0.55433;0.56054;0.56842;0.57801;0.58938;0.60264;0.61783;0.63596;0.65591;0.67833;0.70334;0.73108;0.76171;0.79543;0.83207;0.87198;
+9000;0.5187;0.51932;0.52123;0.52446;0.52908;0.53521;0.54283;0.55198;0.56274;0.57522;0.58946;0.60623;0.62481;0.64581;0.66935;0.69553;0.72448;0.75637;0.79141;0.82929;
+9500;0.49403;0.49469;0.49658;0.49976;0.50433;0.51037;0.51782;0.52674;0.53717;0.54911;0.56259;0.5777;0.59535;0.61487;0.63687;0.66148;0.68877;0.71889;0.75201;0.78831;
+10000;0.46972;0.47037;0.47226;0.47546;0.48002;0.48593;0.49321;0.50194;0.51214;0.52371;0.53667;0.55113;0.56776;0.58582;0.60603;0.62896;0.65459;0.68296;0.7142;0.74851;
+10500;0.44586;0.44649;0.44836;0.45151;0.45598;0.46178;0.46895;0.47752;0.48746;0.49874;0.51135;0.52532;0.54126;0.55836;0.57728;0.59836;0.62202;0.64859;0.67798;0.71031;
+11000;0.42253;0.42315;0.42498;0.42808;0.43243;0.43806;0.44504;0.4534;0.46312;0.47414;0.48686;0.50054;0.51553;0.53192;0.54987;0.56962;0.59154;0.61611;0.64339;0.67375;
+11500;0.41151;0.41225;0.41404;0.41705;0.42129;0.42679;0.43359;0.44174;0.45121;0.46195;0.47436;0.48769;0.50231;0.51828;0.53578;0.55504;0.57642;0.60043;0.62706;0.6564;
+12000;0.40079;0.40164;0.40338;0.40632;0.41046;0.41582;0.42244;0.43039;0.43963;0.45009;0.46219;0.47519;0.48944;0.50501;0.52207;0.54085;0.56175;0.58517;0.61116;0.63978;
+12500;0.39074;0.39131;0.39301;0.39588;0.39991;0.40513;0.4116;0.41934;0.42835;0.43855;0.45035;0.46302;0.47691;0.49209;0.50872;0.52708;0.54747;0.57032;0.59567;0.62363;
+13000;0.38096;0.38125;0.38292;0.38571;0.38964;0.39474;0.40104;0.40859;0.41737;0.42731;0.43882;0.45117;0.46471;0.47951;0.49576;0.51367;0.53357;0.55586;0.58061;0.60792;
+13500;0.37049;0.37105;0.37271;0.37548;0.37939;0.38445;0.39071;0.39812;0.40668;0.41637;0.4276;0.43964;0.45284;0.46731;0.48316;0.50063;0.52003;0.54178;0.56596;0.59261;
+14000;0.36026;0.36079;0.3624;0.3651;0.3689;0.37383;0.37992;0.38722;0.39571;0.40533;0.41651;0.42842;0.44133;0.45544;0.47089;0.48793;0.50686;0.52809;0.5517;0.57772;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.96114;0.96244;0.96599;0.97198;0.98053;0.99184;1.0061;1.0237;1.0448;1.0697;1.0987;1.1334;1.1728;1.2184;1.2701;1.3281;1.3928;1.4647;1.5445;1.6329;
+500;0.9193;0.92072;0.92407;0.92973;0.93781;0.9485;0.96201;0.97861;0.99867;1.0223;1.05;1.0829;1.1203;1.1636;1.2126;1.2676;1.3289;1.3971;1.4727;1.5565;
+1000;0.87915;0.88068;0.88384;0.88919;0.89683;0.90692;0.91968;0.93564;0.95478;0.97713;1.0033;1.0345;1.0701;1.1111;1.1575;1.2096;1.2677;1.3322;1.4038;1.4831;
+1500;0.84125;0.84223;0.84523;0.85029;0.85751;0.86705;0.87909;0.89424;0.91247;0.93396;0.95897;0.98841;1.022;1.0608;1.1047;1.154;1.2089;1.27;1.3377;1.4128;
+2000;0.80484;0.80534;0.80819;0.81296;0.81978;0.8288;0.84018;0.85452;0.87183;0.89228;0.91677;0.94465;0.97647;1.0129;1.0542;1.1007;1.1526;1.2104;1.2745;1.3455;
+2500;0.76917;0.77008;0.77274;0.77722;0.78362;0.79212;0.80288;0.81643;0.83288;0.8523;0.87564;0.90223;0.93295;0.96743;1.0063;1.0497;1.0987;1.1533;1.2138;1.281;
+3000;0.73562;0.73644;0.73893;0.74313;0.74914;0.7571;0.76717;0.77993;0.79553;0.81396;0.83617;0.86149;0.89074;0.92387;0.96064;1.0016;1.0474;1.0986;1.1558;1.2192;
+3500;0.70391;0.70469;0.70701;0.7109;0.71646;0.72382;0.73318;0.74507;0.75975;0.77721;0.79832;0.82242;0.85021;0.88165;0.91689;0.95566;0.99879;1.0468;1.1002;1.1601;
+4000;0.67339;0.67453;0.67673;0.68042;0.68568;0.69263;0.70142;0.71238;0.72596;0.74212;0.76203;0.78495;0.81133;0.84112;0.8745;0.91161;0.95233;0.99755;1.0478;1.1037;
+4500;0.6449;0.6456;0.64769;0.6512;0.6562;0.66279;0.67112;0.68142;0.6942;0.70939;0.72788;0.74921;0.77402;0.80225;0.83383;0.86895;0.90785;0.95051;0.99784;1.0504;
+5000;0.61741;0.61762;0.61971;0.62306;0.62784;0.63414;0.64206;0.6518;0.66384;0.67822;0.69564;0.71571;0.73882;0.76518;0.79482;0.82803;0.86487;0.90551;0.95011;0.99954;
+5500;0.59088;0.59108;0.59298;0.59618;0.60072;0.60669;0.61421;0.62339;0.63479;0.64842;0.66448;0.68384;0.70551;0.73016;0.75797;0.78898;0.82363;0.86214;0.90451;0.95103;
+6000;0.5646;0.56523;0.56707;0.57016;0.57455;0.58032;0.58757;0.59642;0.60716;0.62004;0.63519;0.65345;0.67382;0.6969;0.72287;0.75209;0.78458;0.82054;0.86067;0.90471;
+6500;0.53948;0.54008;0.54186;0.54485;0.54911;0.5547;0.56172;0.5703;0.58061;0.59296;0.60747;0.62467;0.64373;0.66527;0.68955;0.71682;0.74742;0.78136;0.81884;0.86034;
+7000;0.51537;0.51558;0.51741;0.52027;0.52437;0.52977;0.53659;0.54492;0.5549;0.56681;0.5812;0.59718;0.61523;0.63545;0.65804;0.68336;0.71189;0.74385;0.77921;0.81819;
+7500;0.49155;0.49211;0.49374;0.4965;0.50042;0.50561;0.51217;0.52023;0.52993;0.54145;0.55536;0.57068;0.58787;0.607;0.62827;0.65195;0.67836;0.70799;0.74128;0.77804;
+8000;0.46894;0.46946;0.471;0.4736;0.47732;0.48224;0.48854;0.4963;0.50566;0.51682;0.53027;0.54501;0.56148;0.57968;0.5998;0.62209;0.64683;0.67437;0.70514;0.73963;
+8500;0.44726;0.44775;0.44923;0.45172;0.45528;0.46;0.46599;0.47337;0.48232;0.49297;0.50586;0.52007;0.53588;0.55331;0.57246;0.59354;0.61681;0.64258;0.67123;0.70323;
+9000;0.42642;0.42685;0.42826;0.43064;0.43404;0.43856;0.44429;0.45139;0.46001;0.47022;0.48248;0.49596;0.51098;0.52773;0.54608;0.56614;0.58813;0.61234;0.63912;0.66887;
+9500;0.40634;0.40677;0.40812;0.41039;0.41364;0.41795;0.42343;0.43024;0.43868;0.44826;0.45998;0.47284;0.48719;0.50308;0.52053;0.53968;0.56061;0.58348;0.60861;0.63637;
+10000;0.38709;0.38754;0.38881;0.39097;0.39407;0.39819;0.40343;0.40994;0.41784;0.42708;0.43825;0.45049;0.46415;0.47932;0.49603;0.51431;0.53414;0.5558;0.57951;0.60553;
+10500;0.36877;0.36917;0.37039;0.37243;0.37535;0.37926;0.38426;0.39049;0.398;0.40676;0.41734;0.42892;0.44189;0.45631;0.47225;0.48974;0.50882;0.52944;0.55172;0.57615;
+11000;0.3512;0.35159;0.35274;0.35469;0.35749;0.36123;0.36602;0.37192;0.37899;0.38727;0.39727;0.40819;0.42046;0.43412;0.44925;0.4659;0.48413;0.50396;0.52533;0.54837;
+11500;0.34203;0.34248;0.34361;0.3455;0.34823;0.35188;0.35652;0.36226;0.36915;0.37723;0.38698;0.39764;0.40961;0.42293;0.43769;0.45393;0.47171;0.49105;0.51188;0.53435;
+12000;0.3331;0.33362;0.33471;0.33656;0.33923;0.34278;0.34727;0.35287;0.35958;0.36746;0.37697;0.38738;0.39905;0.41205;0.42644;0.44228;0.45962;0.47847;0.49879;0.5207;
+12500;0.32465;0.325;0.32606;0.32787;0.33047;0.33389;0.33827;0.34372;0.35027;0.35795;0.36725;0.3774;0.38878;0.40145;0.41549;0.43094;0.44785;0.46622;0.48604;0.50741;
+13000;0.31641;0.31657;0.31765;0.31941;0.32191;0.32524;0.32951;0.33483;0.34122;0.34872;0.35778;0.36769;0.37878;0.39114;0.40483;0.4199;0.43638;0.45431;0.47364;0.49448;
+13500;0.30759;0.30795;0.30899;0.31071;0.3132;0.3165;0.32074;0.32602;0.33235;0.34004;0.34858;0.35823;0.36906;0.38111;0.39445;0.40915;0.42522;0.4427;0.46155;0.48188;
+14000;0.29916;0.29949;0.30049;0.30217;0.30459;0.30782;0.31195;0.3171;0.32327;0.33082;0.33926;0.34879;0.35948;0.37133;0.38435;0.39868;0.41435;0.4314;0.44979;0.46962;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.79264;0.79369;0.79675;0.80192;0.80944;0.81946;0.8311;0.84548;0.86252;0.88308;0.90651;0.93458;0.96634;1.0022;1.0428;1.0891;1.1409;1.1983;1.2618;1.3318;
+500;0.75788;0.75885;0.76174;0.76663;0.77364;0.78297;0.79396;0.80749;0.82372;0.84326;0.8655;0.89221;0.92249;0.95692;0.99601;1.0401;1.0894;1.1441;1.2044;1.2709;
+1000;0.72485;0.7254;0.72814;0.73276;0.73938;0.74817;0.75864;0.7715;0.78679;0.80466;0.82619;0.85156;0.88035;0.91323;0.95077;0.99302;1.0399;1.0919;1.1493;1.2125;
+1500;0.69317;0.69326;0.69586;0.70023;0.70648;0.71477;0.72473;0.73697;0.75153;0.76853;0.78883;0.81274;0.83994;0.87129;0.90706;0.94754;0.99228;1.0416;1.0962;1.1562;
+2000;0.66157;0.66241;0.66486;0.66898;0.67488;0.6827;0.69218;0.70381;0.71767;0.73388;0.75355;0.77587;0.80159;0.83115;0.8651;0.9035;0.94642;0.99334;1.0451;1.1022;
+2500;0.63133;0.63281;0.63511;0.63901;0.64456;0.65192;0.66094;0.67198;0.68516;0.70061;0.71927;0.7405;0.76495;0.79302;0.82515;0.86126;0.9019;0.94693;0.99601;1.0502;
+3000;0.60385;0.60455;0.6067;0.61033;0.6155;0.62241;0.63098;0.64145;0.65396;0.66865;0.68638;0.70656;0.72981;0.7565;0.78698;0.82122;0.85939;0.90187;0.94889;1.0002;
+3500;0.57707;0.57775;0.57978;0.58319;0.58806;0.59449;0.60254;0.61237;0.62411;0.63802;0.65481;0.67399;0.6961;0.72148;0.75039;0.78283;0.81894;0.85896;0.90328;0.95227;
+4000;0.55137;0.55207;0.55397;0.55718;0.56176;0.56781;0.57546;0.58477;0.5959;0.60902;0.62473;0.64276;0.66376;0.6879;0.71531;0.74601;0.78017;0.81801;0.85989;0.90617;
+4500;0.527;0.52758;0.52936;0.53235;0.53661;0.54226;0.54952;0.55836;0.56892;0.58136;0.59623;0.61325;0.63298;0.65569;0.68166;0.71072;0.743;0.77878;0.81835;0.86208;
+5000;0.50375;0.5043;0.50597;0.50877;0.51278;0.51807;0.52489;0.5332;0.54315;0.5549;0.56898;0.58509;0.60374;0.62526;0.64961;0.6769;0.7074;0.74119;0.77858;0.81986;
+5500;0.48141;0.48199;0.48356;0.4862;0.48997;0.49494;0.50138;0.50927;0.5187;0.52982;0.5428;0.55823;0.57583;0.59615;0.61913;0.64487;0.67345;0.70521;0.74049;0.77946;
+6000;0.45995;0.46063;0.4621;0.46458;0.46812;0.4728;0.47887;0.48635;0.49529;0.50585;0.51819;0.5328;0.5494;0.56845;0.59;0.61425;0.64122;0.67109;0.7041;0.74079;
+6500;0.43971;0.44017;0.44155;0.44388;0.44721;0.45161;0.45732;0.4644;0.47287;0.4829;0.49462;0.50849;0.52422;0.5422;0.56245;0.58508;0.61036;0.63854;0.66968;0.70405;
+7000;0.42023;0.42068;0.42197;0.42414;0.42724;0.43135;0.43669;0.44339;0.4514;0.4609;0.4723;0.48524;0.50016;0.5171;0.53618;0.55747;0.58115;0.60748;0.63675;0.66915;
+7500;0.40191;0.40227;0.40347;0.4055;0.40839;0.41217;0.41704;0.42329;0.43083;0.43982;0.45066;0.46298;0.47713;0.49313;0.51109;0.53111;0.55336;0.57807;0.60549;0.63582;
+8000;0.38432;0.38469;0.38583;0.38774;0.39047;0.39407;0.39867;0.40452;0.41148;0.41979;0.42994;0.44163;0.45506;0.47019;0.48712;0.50593;0.52684;0.55004;0.57575;0.60426;
+8500;0.3674;0.36778;0.36887;0.37069;0.37328;0.3767;0.38101;0.3865;0.39313;0.40103;0.41053;0.42144;0.43399;0.44822;0.46418;0.4819;0.50154;0.52332;0.54743;0.57414;
+9000;0.3511;0.35146;0.3525;0.35424;0.35673;0.35999;0.3641;0.36925;0.37552;0.38297;0.39202;0.40236;0.41415;0.42751;0.44238;0.45892;0.4774;0.49784;0.52046;0.54547;
+9500;0.33527;0.3356;0.33661;0.33829;0.34069;0.34384;0.34779;0.35268;0.35863;0.36569;0.37402;0.38406;0.39523;0.40774;0.42179;0.43735;0.45452;0.47354;0.49476;0.5182;
+10000;0.32005;0.32017;0.32113;0.32276;0.32509;0.32814;0.33197;0.33666;0.34236;0.34911;0.35705;0.36654;0.37706;0.38893;0.40204;0.41671;0.43294;0.45079;0.47044;0.49222;
+10500;0.30476;0.30508;0.30603;0.30762;0.30987;0.31284;0.31657;0.3211;0.3266;0.33311;0.34073;0.34976;0.35969;0.37082;0.38325;0.39695;0.41222;0.42908;0.44759;0.46794;
+11000;0.29015;0.29047;0.29137;0.2929;0.29507;0.29794;0.30155;0.30597;0.31129;0.31759;0.3252;0.3336;0.34304;0.35353;0.36519;0.37815;0.39241;0.40825;0.42571;0.44486;
+11500;0.2825;0.2829;0.28378;0.28527;0.28738;0.29018;0.2937;0.29801;0.30319;0.30934;0.31676;0.32495;0.33414;0.34437;0.35573;0.36835;0.38222;0.39766;0.41468;0.43334;
+12000;0.27506;0.27553;0.27639;0.27784;0.2799;0.28262;0.28606;0.29026;0.29531;0.30131;0.30854;0.31652;0.32548;0.33544;0.34652;0.35878;0.3723;0.38736;0.40394;0.42212;
+12500;0.26808;0.26836;0.2692;0.27061;0.27262;0.27528;0.27862;0.28271;0.28764;0.2935;0.30054;0.30831;0.31704;0.32676;0.33756;0.34947;0.36264;0.37732;0.39348;0.41122;
+13000;0.26083;0.26113;0.26196;0.26336;0.26535;0.26797;0.27128;0.27532;0.28016;0.28588;0.29274;0.30032;0.30883;0.3183;0.32883;0.34041;0.35325;0.36755;0.38331;0.4006;
+13500;0.2537;0.25398;0.25479;0.25615;0.25809;0.26065;0.26388;0.26782;0.27256;0.27818;0.28496;0.29243;0.30081;0.31007;0.32034;0.33159;0.3441;0.35804;0.37341;0.39027;
+14000;0.24673;0.24705;0.24783;0.24916;0.25106;0.25355;0.2567;0.26054;0.26516;0.27064;0.27725;0.28453;0.29271;0.3018;0.31187;0.32293;0.33521;0.34879;0.36378;0.38021;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.65797;0.65872;0.66128;0.66565;0.67209;0.67995;0.6891;0.7003;0.71406;0.73002;0.74886;0.76997;0.79373;0.82054;0.8513;0.88625;0.92626;0.9713;1.0208;1.0753;
+500;0.62903;0.62977;0.6322;0.63636;0.64241;0.64978;0.65842;0.66901;0.6821;0.6973;0.71527;0.73555;0.7583;0.78403;0.81349;0.84699;0.88528;0.92827;0.97589;1.0276;
+1000;0.60131;0.60194;0.60425;0.60821;0.61396;0.62091;0.62917;0.63927;0.65162;0.66597;0.68301;0.70247;0.72421;0.74886;0.77707;0.8092;0.84579;0.88679;0.93215;0.98192;
+1500;0.57475;0.57524;0.57743;0.58117;0.58662;0.59319;0.60106;0.6107;0.62246;0.63612;0.65228;0.67091;0.69143;0.71502;0.74201;0.77279;0.80776;0.84681;0.88999;0.93747;
+2000;0.5489;0.54959;0.55167;0.55522;0.56038;0.56658;0.57409;0.58326;0.59444;0.60745;0.62282;0.64057;0.66019;0.68256;0.70827;0.73773;0.77114;0.80832;0.84938;0.89455;
+2500;0.52415;0.52494;0.52691;0.53028;0.53516;0.54101;0.54818;0.55693;0.5672;0.5799;0.59453;0.61142;0.63026;0.65161;0.67611;0.70398;0.73585;0.77126;0.81028;0.85322;
+3000;0.50092;0.50154;0.5034;0.50656;0.51113;0.51662;0.52339;0.53164;0.54142;0.55346;0.56737;0.58343;0.60151;0.62187;0.6453;0.67185;0.70198;0.73557;0.77267;0.81345;
+3500;0.47865;0.4791;0.48084;0.48382;0.48813;0.49333;0.49978;0.50764;0.51689;0.5282;0.5413;0.55656;0.57387;0.59345;0.61567;0.64104;0.66962;0.70143;0.73647;0.77521;
+4000;0.45718;0.45773;0.45938;0.46217;0.46621;0.47111;0.47721;0.48463;0.4934;0.50412;0.51656;0.53093;0.54737;0.566;0.58722;0.6114;0.63852;0.66869;0.70196;0.73851;
+4500;0.43653;0.43716;0.43874;0.44141;0.44521;0.44986;0.45567;0.46273;0.47105;0.48111;0.49286;0.50669;0.52212;0.53983;0.55992;0.58292;0.60868;0.63723;0.66877;0.70348;
+5000;0.41675;0.41724;0.41873;0.42125;0.42487;0.42936;0.43495;0.44171;0.44962;0.45912;0.47029;0.48339;0.49794;0.51478;0.53395;0.55572;0.58001;0.60707;0.6369;0.66979;
+5500;0.39778;0.39813;0.39953;0.4019;0.40529;0.40955;0.41486;0.42133;0.42898;0.43829;0.44867;0.4611;0.47509;0.491;0.50912;0.52969;0.55275;0.57822;0.60633;0.63744;
+6000;0.37938;0.37982;0.38114;0.38336;0.38655;0.39058;0.39561;0.40174;0.40902;0.41789;0.42787;0.43972;0.45304;0.46818;0.48545;0.50494;0.52668;0.5507;0.57725;0.60644;
+6500;0.36195;0.36236;0.36357;0.36564;0.36862;0.37243;0.37719;0.383;0.38989;0.39828;0.40773;0.41911;0.43188;0.4463;0.46273;0.48121;0.50177;0.5245;0.5495;0.57703;
+7000;0.34578;0.34597;0.34711;0.34903;0.35177;0.35532;0.35975;0.36515;0.37161;0.37952;0.38847;0.39924;0.41142;0.42531;0.44093;0.45844;0.47789;0.49937;0.52303;0.54903;
+7500;0.3299;0.33026;0.33133;0.33313;0.33571;0.33907;0.34327;0.34838;0.35448;0.36185;0.37015;0.38023;0.39175;0.40498;0.42001;0.4366;0.45499;0.47528;0.49763;0.52222;
+8000;0.31469;0.31518;0.3162;0.31789;0.32031;0.32349;0.32748;0.33233;0.33811;0.34487;0.35313;0.36246;0.3732;0.38552;0.39973;0.41564;0.43303;0.4522;0.47329;0.4965;
+8500;0.30042;0.30075;0.3017;0.30329;0.30555;0.30856;0.31235;0.31695;0.32244;0.32887;0.33663;0.34547;0.35565;0.36734;0.3806;0.39543;0.41198;0.43008;0.44999;0.47188;
+9000;0.28672;0.28692;0.2878;0.28929;0.29142;0.29426;0.29785;0.30222;0.30743;0.31353;0.32087;0.32921;0.33884;0.34992;0.36245;0.37644;0.39195;0.40898;0.42767;0.44831;
+9500;0.27338;0.27365;0.27448;0.27588;0.27788;0.28056;0.28397;0.28811;0.29305;0.29886;0.3058;0.31368;0.32278;0.33325;0.34506;0.35825;0.37286;0.389;0.40666;0.42581;
+10000;0.26059;0.26093;0.26172;0.26303;0.26491;0.26742;0.27066;0.27458;0.27928;0.2848;0.29122;0.29885;0.30745;0.31732;0.32843;0.34085;0.35459;0.36978;0.38653;0.40479;
+10500;0.24851;0.24877;0.2495;0.25073;0.25249;0.25485;0.25791;0.26161;0.26607;0.27131;0.27742;0.28465;0.2928;0.30211;0.31255;0.3242;0.33712;0.3514;0.36716;0.3845;
+11000;0.23691;0.23719;0.23786;0.23901;0.24064;0.24283;0.24571;0.24921;0.25342;0.25838;0.26435;0.27106;0.2788;0.28757;0.29739;0.30831;0.32042;0.33384;0.34863;0.36494;
+11500;0.23067;0.23092;0.23159;0.2327;0.23429;0.23643;0.23923;0.24264;0.24675;0.2516;0.2574;0.26394;0.27148;0.28002;0.28959;0.30023;0.31203;0.3251;0.33953;0.35542;
+12000;0.22459;0.22483;0.22548;0.22656;0.22812;0.2302;0.23293;0.23626;0.24026;0.24499;0.25064;0.25701;0.26435;0.27268;0.282;0.29237;0.30386;0.31659;0.33067;0.34616;
+12500;0.21857;0.21879;0.21943;0.2205;0.22203;0.22409;0.22677;0.23004;0.23395;0.23856;0.24392;0.25027;0.25742;0.26553;0.27461;0.28471;0.29591;0.30834;0.32205;0.33715;
+13000;0.21263;0.21284;0.21346;0.21451;0.216;0.21801;0.22063;0.22382;0.22765;0.23217;0.23759;0.24367;0.25068;0.25857;0.26742;0.27727;0.28818;0.30029;0.31367;0.32837;
+13500;0.20683;0.20706;0.20767;0.20869;0.21015;0.21211;0.21467;0.21778;0.22152;0.22593;0.23121;0.23714;0.24397;0.25171;0.26037;0.27;0.28067;0.29247;0.3055;0.31982;
+14000;0.20117;0.20147;0.20206;0.20306;0.20448;0.20639;0.20889;0.21193;0.21557;0.21988;0.22502;0.23081;0.23747;0.24501;0.25345;0.26284;0.27327;0.28481;0.29754;0.31151;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.5471;0.54786;0.54992;0.55341;0.55848;0.56418;0.57136;0.57977;0.59049;0.60273;0.61635;0.63159;0.64874;0.66781;0.69007;0.716;0.74593;0.78046;0.81993;0.86405;
+500;0.52313;0.52391;0.52589;0.52923;0.5337;0.5394;0.54619;0.55417;0.56441;0.57614;0.58931;0.60385;0.62036;0.63877;0.65953;0.68463;0.71312;0.74605;0.7836;0.82549;
+1000;0.50027;0.50091;0.50279;0.50599;0.51024;0.51567;0.52217;0.5298;0.53949;0.55063;0.563;0.57718;0.593;0.61083;0.63073;0.65453;0.68166;0.71301;0.74869;0.78844;
+1500;0.47836;0.47878;0.48057;0.48363;0.48767;0.49285;0.49906;0.50635;0.51562;0.52628;0.53813;0.55159;0.56668;0.5839;0.60304;0.6256;0.65148;0.68133;0.71515;0.75286;
+2000;0.45678;0.45735;0.45909;0.46206;0.46595;0.47088;0.47681;0.48379;0.49265;0.50286;0.51424;0.52714;0.54154;0.55795;0.57642;0.5978;0.62251;0.65092;0.68298;0.71869;
+2500;0.4362;0.43675;0.4384;0.44121;0.44487;0.4496;0.45532;0.46209;0.47054;0.48031;0.49125;0.5036;0.51741;0.53313;0.5508;0.57105;0.59469;0.62173;0.65213;0.6859;
+3000;0.41666;0.41718;0.41873;0.4214;0.42512;0.42932;0.43471;0.44112;0.44922;0.45863;0.46914;0.48095;0.49418;0.50921;0.52625;0.54557;0.56801;0.5937;0.62254;0.65448;
+3500;0.39796;0.39842;0.3999;0.40243;0.40596;0.40997;0.4151;0.42118;0.42886;0.43778;0.44789;0.45921;0.47184;0.48619;0.50261;0.52115;0.54249;0.56691;0.59412;0.62437;
+4000;0.38004;0.38041;0.38182;0.38423;0.38757;0.39138;0.39627;0.40208;0.40937;0.41788;0.42757;0.43837;0.45053;0.46412;0.47986;0.49763;0.51794;0.54122;0.56705;0.59552;
+4500;0.36289;0.36313;0.36447;0.36676;0.36992;0.37355;0.3782;0.38374;0.39065;0.39876;0.40815;0.41838;0.43001;0.44314;0.45814;0.47505;0.49441;0.51649;0.54105;0.56801;
+5000;0.34612;0.34655;0.34782;0.34999;0.35297;0.35643;0.36085;0.36613;0.37267;0.38042;0.38936;0.39916;0.41028;0.42286;0.43731;0.45362;0.47198;0.49272;0.51602;0.54162;
+5500;0.33009;0.33064;0.33184;0.3339;0.33671;0.34;0.34421;0.34924;0.35542;0.3628;0.37132;0.38074;0.39134;0.40338;0.41727;0.43294;0.45062;0.47029;0.49201;0.51624;
+6000;0.31524;0.3156;0.31672;0.31863;0.32123;0.32429;0.32824;0.33303;0.33887;0.3459;0.354;0.36307;0.37316;0.38464;0.39792;0.4129;0.42996;0.44878;0.46941;0.49206;
+6500;0.30095;0.3013;0.30236;0.30417;0.30662;0.30953;0.31327;0.31774;0.32315;0.32972;0.33737;0.34608;0.35569;0.36666;0.37933;0.39364;0.4099;0.428;0.44766;0.46911;
+7000;0.28727;0.28756;0.28856;0.29027;0.29258;0.29536;0.29892;0.30318;0.3083;0.31455;0.32173;0.32993;0.33892;0.34939;0.36147;0.37513;0.3906;0.4078;0.42671;0.44709;
+7500;0.27416;0.27435;0.2753;0.27691;0.2791;0.28175;0.28513;0.28919;0.29423;0.29999;0.3068;0.31465;0.32323;0.33306;0.34436;0.35734;0.37205;0.38837;0.4063;0.42589;
+8000;0.26161;0.26165;0.26255;0.26408;0.26614;0.26867;0.27189;0.27575;0.28053;0.28599;0.29245;0.29991;0.30815;0.31754;0.32835;0.34056;0.35428;0.36969;0.38667;0.40528;
+8500;0.24919;0.24947;0.25031;0.25174;0.25369;0.2561;0.25916;0.26284;0.26737;0.27255;0.27868;0.28575;0.29365;0.30275;0.31296;0.32458;0.33763;0.35204;0.36783;0.38544;
+9000;0.23731;0.23776;0.23855;0.23989;0.24172;0.24402;0.24693;0.25044;0.25473;0.25965;0.26546;0.27217;0.27975;0.28842;0.29817;0.30923;0.3216;0.33528;0.35025;0.36662;
+9500;0.22628;0.22652;0.22726;0.22852;0.23025;0.23244;0.2352;0.23854;0.24261;0.24727;0.25278;0.25914;0.26639;0.27465;0.28395;0.29449;0.3062;0.31914;0.33334;0.34885;
+10000;0.2157;0.21575;0.21645;0.21763;0.21926;0.22134;0.22396;0.22713;0.23086;0.23539;0.24062;0.24679;0.25355;0.26145;0.27029;0.2803;0.29141;0.30364;0.31706;0.33177;
+10500;0.20521;0.20544;0.20609;0.20719;0.20873;0.2107;0.21319;0.21619;0.21973;0.224;0.22897;0.23481;0.24135;0.24877;0.2572;0.26667;0.27719;0.28876;0.30144;0.31533;
+11000;0.19519;0.19557;0.19617;0.1972;0.19865;0.20052;0.20287;0.20571;0.20907;0.21309;0.21779;0.22334;0.22955;0.23661;0.24463;0.2536;0.26353;0.27447;0.28645;0.29956;
+11500;0.19013;0.19035;0.19094;0.19195;0.19335;0.19518;0.19746;0.20023;0.2035;0.20742;0.21201;0.2174;0.22346;0.23033;0.23814;0.24688;0.25655;0.2672;0.27886;0.29162;
+12000;0.18502;0.18522;0.18581;0.18679;0.18817;0.18995;0.19219;0.1949;0.19809;0.20191;0.20637;0.21164;0.21753;0.22423;0.23183;0.24033;0.24975;0.26012;0.27149;0.28391;
+12500;0.18001;0.1802;0.18077;0.18173;0.18308;0.18482;0.187;0.18964;0.19276;0.1965;0.20098;0.20601;0.21176;0.21829;0.22569;0.23397;0.24314;0.25324;0.26431;0.27641;
+13000;0.17513;0.17534;0.17589;0.17683;0.17814;0.17983;0.18197;0.18455;0.18759;0.19124;0.19561;0.20051;0.20612;0.21249;0.2197;0.22777;0.23672;0.24655;0.25733;0.26911;
+13500;0.17037;0.17062;0.17116;0.17207;0.17335;0.17501;0.17709;0.1796;0.18257;0.18614;0.19039;0.19517;0.20064;0.20684;0.21388;0.22174;0.23045;0.24004;0.25053;0.26202;
+14000;0.16587;0.16604;0.16657;0.16746;0.1687;0.17032;0.17235;0.17481;0.1777;0.18118;0.18532;0.18999;0.19532;0.20136;0.20822;0.21588;0.22437;0.23371;0.24394;0.25513;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.45455;0.4552;0.45684;0.45956;0.46336;0.46785;0.4733;0.47999;0.48784;0.49662;0.50638;0.51733;0.52953;0.54476;0.56218;0.58226;0.60534;0.6318;0.66213;0.69695;
+500;0.43442;0.43519;0.43674;0.43934;0.4429;0.44714;0.4523;0.45863;0.46621;0.47476;0.48422;0.49474;0.50645;0.52086;0.53746;0.55659;0.57857;0.60383;0.6328;0.66598;
+1000;0.41546;0.41596;0.41744;0.41991;0.42329;0.42733;0.43226;0.43829;0.44553;0.45366;0.46268;0.47292;0.48425;0.49789;0.51371;0.53193;0.55287;0.57693;0.60459;0.63618;
+1500;0.39699;0.39746;0.39887;0.40123;0.40444;0.4083;0.413;0.41876;0.4257;0.43354;0.44209;0.45184;0.46272;0.47583;0.4909;0.50826;0.5282;0.55111;0.57751;0.60754;
+2000;0.3793;0.37976;0.3811;0.38333;0.38635;0.39001;0.39449;0.4;0.40663;0.41395;0.42237;0.43169;0.44207;0.45441;0.46894;0.48553;0.50452;0.52634;0.55146;0.58002;
+2500;0.36232;0.36294;0.36421;0.36634;0.3692;0.37266;0.37689;0.38207;0.38835;0.39533;0.40344;0.41232;0.42227;0.43398;0.44776;0.46365;0.48179;0.50256;0.52648;0.55358;
+3000;0.34639;0.34679;0.34801;0.35004;0.35275;0.35606;0.3601;0.36504;0.37105;0.37769;0.38536;0.39378;0.40325;0.41437;0.42748;0.4426;0.45997;0.47975;0.5025;0.52818;
+3500;0.33112;0.33129;0.33245;0.3344;0.33698;0.34013;0.34399;0.34868;0.35445;0.36084;0.36817;0.37627;0.38523;0.39537;0.40805;0.42208;0.43892;0.45793;0.4795;0.50384;
+4000;0.31603;0.31639;0.3175;0.31937;0.32181;0.32483;0.32851;0.333;0.33852;0.34466;0.35166;0.35944;0.36805;0.37774;0.38962;0.40314;0.41875;0.4368;0.45756;0.48051;
+4500;0.3016;0.30207;0.30313;0.30492;0.30725;0.31012;0.31364;0.31792;0.32322;0.32925;0.33579;0.34323;0.35156;0.3608;0.37203;0.38489;0.39965;0.41663;0.43627;0.45825;
+5000;0.28799;0.28833;0.28932;0.29104;0.29324;0.29599;0.29935;0.30342;0.3085;0.31428;0.32055;0.32767;0.33568;0.34458;0.35515;0.36737;0.38143;0.39756;0.416;0.43674;
+5500;0.27513;0.27544;0.27639;0.278;0.28004;0.2826;0.28574;0.28952;0.29435;0.29989;0.3059;0.31272;0.32039;0.329;0.33896;0.35057;0.36394;0.37931;0.39679;0.41629;
+6000;0.26282;0.26305;0.26395;0.2655;0.26743;0.26988;0.27288;0.27648;0.28104;0.28624;0.29188;0.29835;0.3057;0.31398;0.32343;0.33447;0.34717;0.36179;0.37838;0.3968;
+6500;0.25103;0.25105;0.25199;0.25347;0.25531;0.25764;0.26051;0.26394;0.26832;0.2733;0.27872;0.28484;0.29171;0.29954;0.30846;0.31904;0.33109;0.34497;0.3607;0.37814;
+7000;0.2394;0.23968;0.2405;0.24191;0.24365;0.24588;0.24862;0.25189;0.25608;0.26084;0.26606;0.27193;0.27851;0.28601;0.29441;0.30425;0.31569;0.32886;0.34373;0.36023;
+7500;0.22828;0.22867;0.22945;0.2308;0.23245;0.23457;0.23719;0.24046;0.24432;0.24887;0.25391;0.25951;0.26582;0.27302;0.2811;0.29043;0.30112;0.31344;0.32748;0.34304;
+8000;0.21784;0.21809;0.21884;0.22013;0.22168;0.22371;0.22621;0.22932;0.233;0.23735;0.24222;0.24756;0.25361;0.26053;0.26829;0.27717;0.2874;0.29904;0.31206;0.32659;
+8500;0.20785;0.20787;0.20864;0.20987;0.21134;0.21327;0.21565;0.21862;0.22213;0.22628;0.23098;0.23607;0.24187;0.24849;0.25596;0.26438;0.2742;0.28527;0.29761;0.31117;
+9000;0.19796;0.19818;0.19886;0.20002;0.20141;0.20325;0.20552;0.20835;0.21168;0.21564;0.22009;0.22503;0.23058;0.23689;0.24408;0.25218;0.2615;0.27205;0.28372;0.29655;
+9500;0.18849;0.18881;0.18946;0.19055;0.19187;0.19362;0.19579;0.19848;0.20165;0.20542;0.20969;0.21441;0.21973;0.22584;0.23264;0.24041;0.24929;0.25933;0.27039;0.28251;
+10000;0.17952;0.17972;0.18034;0.18138;0.18265;0.18433;0.18642;0.18889;0.19201;0.1956;0.19975;0.20421;0.2093;0.21514;0.22165;0.22915;0.23758;0.24708;0.25758;0.26904;
+10500;0.17095;0.17097;0.17159;0.17257;0.17377;0.17537;0.17736;0.17972;0.18271;0.18617;0.19012;0.1944;0.19928;0.20486;0.21114;0.21826;0.22633;0.23531;0.24524;0.25611;
+11000;0.16248;0.16267;0.16322;0.16412;0.16527;0.16679;0.16867;0.17091;0.17374;0.17702;0.18082;0.18498;0.18963;0.19488;0.20097;0.20778;0.21549;0.22403;0.23339;0.24366;
+11500;0.15809;0.15828;0.15881;0.15969;0.16081;0.16229;0.16413;0.16632;0.16907;0.17227;0.17597;0.18;0.18453;0.18972;0.19557;0.2022;0.20969;0.21801;0.22712;0.23712;
+12000;0.15382;0.15399;0.15452;0.15538;0.15646;0.15791;0.15971;0.16184;0.16452;0.16764;0.17125;0.17515;0.17956;0.18462;0.19031;0.19676;0.20406;0.21215;0.22102;0.23076;
+12500;0.14966;0.14984;0.15035;0.15118;0.15224;0.15366;0.15541;0.15749;0.16011;0.16315;0.16666;0.17046;0.17476;0.17967;0.18521;0.19148;0.19858;0.20646;0.21508;0.22457;
+13000;0.14561;0.14581;0.14631;0.14712;0.14815;0.14953;0.15124;0.15326;0.15582;0.15879;0.1622;0.1659;0.17009;0.17487;0.18027;0.18638;0.19329;0.20095;0.20933;0.21855;
+13500;0.14175;0.1419;0.14239;0.14318;0.14418;0.14553;0.14719;0.14916;0.15166;0.15455;0.15787;0.16147;0.16555;0.17021;0.17547;0.18142;0.18816;0.19561;0.20378;0.21276;
+14000;0.13798;0.13811;0.13858;0.13935;0.14033;0.14164;0.14326;0.14518;0.14762;0.15044;0.15366;0.15717;0.16115;0.16568;0.17081;0.17661;0.18316;0.19043;0.19839;0.20713;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.37768;0.37814;0.37941;0.38149;0.3843;0.3877;0.39167;0.39666;0.40231;0.40863;0.41581;0.42395;0.4342;0.44615;0.45987;0.47548;0.49305;0.51321;0.5359;0.56203;
+500;0.36118;0.36158;0.36279;0.36477;0.36743;0.37064;0.37441;0.37916;0.38459;0.39066;0.39751;0.4053;0.41499;0.42636;0.43945;0.45434;0.47118;0.49066;0.51232;0.53727;
+1000;0.34537;0.34567;0.34681;0.3487;0.35123;0.35431;0.35792;0.36247;0.36764;0.3734;0.37993;0.38736;0.39651;0.40735;0.41982;0.43401;0.45011;0.46878;0.48965;0.51347;
+1500;0.33023;0.33045;0.33154;0.33334;0.33574;0.33866;0.34209;0.34642;0.35136;0.35689;0.36311;0.37016;0.37909;0.38906;0.40095;0.41451;0.42988;0.44769;0.46772;0.49059;
+2000;0.3157;0.3159;0.31693;0.31864;0.32091;0.32368;0.32694;0.3311;0.33583;0.34109;0.347;0.3537;0.36212;0.37155;0.38282;0.39575;0.41044;0.42743;0.44654;0.46855;
+2500;0.30161;0.30194;0.30293;0.30456;0.30672;0.30937;0.31248;0.31645;0.32095;0.32595;0.33162;0.33799;0.34591;0.35482;0.3655;0.37776;0.39177;0.40796;0.42618;0.44718;
+3000;0.28814;0.28852;0.28947;0.29103;0.29309;0.29562;0.2986;0.30239;0.30671;0.31151;0.31691;0.32296;0.33041;0.33889;0.34899;0.36085;0.37386;0.38926;0.40664;0.42665;
+3500;0.27532;0.27562;0.27653;0.27802;0.27998;0.28241;0.28526;0.28889;0.29303;0.29762;0.3028;0.30858;0.31562;0.32365;0.33347;0.3445;0.35707;0.37138;0.38788;0.40695;
+4000;0.26307;0.26323;0.26409;0.26552;0.26738;0.2697;0.27244;0.27592;0.27988;0.28429;0.28924;0.29476;0.30142;0.30905;0.31816;0.32885;0.34077;0.35441;0.37003;0.38805;
+4500;0.25119;0.25145;0.25225;0.25358;0.25531;0.2575;0.26011;0.26345;0.26725;0.27147;0.27622;0.28149;0.28778;0.29504;0.30394;0.31388;0.32524;0.33816;0.353;0.37011;
+5000;0.24006;0.24031;0.24107;0.24234;0.24397;0.24604;0.24848;0.2516;0.25517;0.25915;0.2637;0.26874;0.2747;0.28159;0.29005;0.29951;0.31033;0.32264;0.33674;0.35293;
+5500;0.22941;0.22959;0.23032;0.23153;0.23308;0.23506;0.23739;0.24038;0.24381;0.24758;0.25182;0.25653;0.26215;0.26869;0.27673;0.28571;0.296;0.30774;0.32116;0.33656;
+6000;0.21921;0.21923;0.21999;0.22115;0.22262;0.2245;0.22673;0.22959;0.23288;0.23652;0.24058;0.24509;0.25011;0.25638;0.26376;0.27248;0.28226;0.29343;0.3062;0.32083;
+6500;0.20918;0.2094;0.21006;0.21116;0.21256;0.21435;0.21648;0.21921;0.22236;0.22587;0.22976;0.23408;0.2389;0.24501;0.25194;0.2599;0.26909;0.27971;0.29186;0.30574;
+7000;0.19956;0.19985;0.20049;0.20156;0.20289;0.20461;0.20663;0.20924;0.21226;0.21562;0.21938;0.22352;0.22814;0.2339;0.24049;0.24806;0.25672;0.26663;0.27811;0.29126;
+7500;0.19029;0.1906;0.19121;0.19223;0.1935;0.19516;0.19712;0.19965;0.20255;0.20578;0.20939;0.21338;0.2178;0.22323;0.2295;0.23669;0.24493;0.25436;0.26516;0.27738;
+8000;0.18142;0.18171;0.18229;0.18326;0.18447;0.18605;0.18793;0.19035;0.19315;0.19629;0.19977;0.20364;0.20786;0.21298;0.21893;0.22578;0.23361;0.24258;0.25286;0.26445;
+8500;0.17295;0.17316;0.17372;0.17464;0.17579;0.1773;0.1791;0.1814;0.18408;0.1871;0.19044;0.19419;0.19831;0.20314;0.2088;0.21531;0.22275;0.23127;0.24105;0.25203;
+9000;0.16486;0.16497;0.1655;0.16637;0.16747;0.16891;0.17063;0.17282;0.17538;0.17829;0.18147;0.18506;0.18905;0.19366;0.19906;0.20525;0.21233;0.22043;0.22971;0.2401;
+9500;0.15692;0.1571;0.1576;0.15843;0.15948;0.16085;0.16249;0.16459;0.16704;0.16984;0.17286;0.1763;0.18013;0.18449;0.18967;0.1956;0.20232;0.21003;0.21883;0.22866;
+10000;0.14935;0.14955;0.15004;0.15082;0.15182;0.15313;0.15469;0.15669;0.15903;0.16165;0.16461;0.16789;0.17157;0.17568;0.18063;0.18628;0.19274;0.20005;0.2084;0.21768;
+10500;0.14217;0.14232;0.14279;0.14353;0.14447;0.14572;0.14721;0.14912;0.15136;0.15387;0.15671;0.15985;0.16337;0.16732;0.17198;0.17721;0.18346;0.19049;0.19839;0.20716;
+11000;0.13524;0.13539;0.13583;0.13653;0.13743;0.13861;0.14004;0.14184;0.14399;0.1464;0.14911;0.15212;0.15551;0.15929;0.1637;0.16877;0.17457;0.18124;0.1888;0.19707;
+11500;0.13156;0.13171;0.13214;0.13282;0.1337;0.13485;0.13624;0.138;0.14009;0.14244;0.14507;0.14799;0.15128;0.15496;0.15925;0.16418;0.16983;0.17632;0.18366;0.19172;
+12000;0.12797;0.12813;0.12855;0.12922;0.13007;0.13119;0.13255;0.13427;0.1363;0.13859;0.14116;0.144;0.14721;0.15078;0.15495;0.15973;0.16523;0.17155;0.17867;0.18651;
+12500;0.12448;0.12467;0.12508;0.12572;0.12655;0.12765;0.12897;0.13065;0.13263;0.13485;0.13735;0.14012;0.14325;0.14673;0.15079;0.15545;0.1608;0.16694;0.17385;0.18145;
+13000;0.12117;0.1213;0.1217;0.12233;0.12314;0.12421;0.12549;0.12713;0.12906;0.13123;0.13367;0.13637;0.13941;0.1428;0.14675;0.15129;0.1565;0.16248;0.16919;0.17659;
+13500;0.11795;0.11796;0.11843;0.11904;0.11983;0.12087;0.12212;0.12372;0.12561;0.12771;0.13009;0.13272;0.13568;0.13898;0.14282;0.14725;0.15233;0.15815;0.16466;0.17186;
+14000;0.11476;0.11488;0.11526;0.11585;0.11662;0.11764;0.11885;0.12041;0.12225;0.12429;0.12662;0.12918;0.13206;0.13525;0.13902;0.14333;0.14828;0.15393;0.16026;0.16727;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.31343;0.31383;0.31478;0.31632;0.31839;0.32089;0.32382;0.32731;0.33132;0.33614;0.34169;0.34871;0.35685;0.36583;0.37601;0.3875;0.40085;0.41607;0.43348;0.45312;
+500;0.30005;0.30033;0.30125;0.30271;0.30464;0.30697;0.30973;0.31305;0.31689;0.32119;0.32674;0.33339;0.34113;0.34975;0.3595;0.37044;0.38311;0.39759;0.41428;0.43301;
+1000;0.28721;0.28736;0.28822;0.28961;0.29145;0.29368;0.29632;0.29949;0.30311;0.30718;0.31237;0.31865;0.32602;0.33427;0.34356;0.35405;0.36608;0.37985;0.39584;0.41373;
+1500;0.27458;0.27486;0.27568;0.277;0.27875;0.28089;0.28342;0.28646;0.28992;0.29383;0.2987;0.30457;0.3115;0.31938;0.32825;0.33831;0.35006;0.3632;0.37811;0.3952;
+2000;0.26262;0.26288;0.26367;0.26493;0.2666;0.26862;0.27104;0.27394;0.27725;0.28098;0.2856;0.29114;0.29772;0.30518;0.31357;0.32318;0.33433;0.34684;0.36108;0.37739;
+2500;0.25115;0.25136;0.25211;0.25332;0.25491;0.25686;0.25916;0.26195;0.26512;0.26868;0.27302;0.27845;0.28449;0.29161;0.29962;0.30872;0.31927;0.33114;0.34471;0.36027;
+3000;0.24016;0.24027;0.24098;0.24214;0.24367;0.24553;0.24774;0.25042;0.25345;0.25686;0.26098;0.2661;0.27182;0.27857;0.28622;0.2949;0.30463;0.31615;0.32903;0.34384;
+3500;0.22962;0.22967;0.23029;0.23139;0.23285;0.23463;0.23675;0.23933;0.24224;0.24551;0.2494;0.25424;0.25967;0.26612;0.2734;0.28162;0.29093;0.30184;0.31407;0.32814;
+4000;0.21929;0.2195;0.22014;0.22118;0.22254;0.2242;0.22618;0.22866;0.23145;0.23458;0.23827;0.24285;0.24799;0.25413;0.26109;0.26895;0.2778;0.28812;0.29976;0.31312;
+4500;0.20959;0.2098;0.21042;0.21142;0.21274;0.21434;0.21624;0.21856;0.22116;0.22407;0.22757;0.23189;0.23678;0.24262;0.24925;0.25674;0.26519;0.27502;0.28606;0.29875;
+5000;0.20025;0.20041;0.201;0.20196;0.20322;0.20476;0.20659;0.20885;0.21138;0.21422;0.21747;0.22146;0.22602;0.23158;0.2379;0.24503;0.25309;0.26243;0.27294;0.28502;
+5500;0.19131;0.19135;0.19196;0.19287;0.19407;0.19555;0.1973;0.19948;0.20191;0.20464;0.20778;0.2116;0.21593;0.22111;0.22702;0.2338;0.24147;0.25035;0.26035;0.27184;
+6000;0.18253;0.18272;0.18326;0.18414;0.18528;0.1867;0.18838;0.19047;0.1928;0.19542;0.19841;0.20202;0.20618;0.21117;0.21681;0.22318;0.23034;0.23876;0.24827;0.2592;
+6500;0.17413;0.17438;0.1749;0.17574;0.17683;0.17819;0.17979;0.1818;0.18405;0.18656;0.1894;0.19281;0.19677;0.20152;0.20698;0.21308;0.21991;0.2278;0.23669;0.24709;
+7000;0.1661;0.16638;0.16687;0.16768;0.16872;0.17001;0.17154;0.17348;0.17563;0.17804;0.18075;0.18397;0.18772;0.19225;0.19744;0.20333;0.20988;0.21741;0.22586;0.23557;
+7500;0.15845;0.15869;0.15915;0.15993;0.16092;0.16215;0.16362;0.16547;0.16755;0.16985;0.17244;0.17548;0.17917;0.18334;0.18828;0.19389;0.2002;0.20743;0.21548;0.22472;
+8000;0.15115;0.15117;0.15175;0.15248;0.15343;0.15461;0.156;0.15779;0.15978;0.16198;0.16445;0.16722;0.1707;0.17479;0.17948;0.18483;0.19084;0.19779;0.20552;0.21431;
+8500;0.14406;0.1442;0.14463;0.14533;0.14623;0.14736;0.1487;0.1504;0.15231;0.15442;0.15679;0.15942;0.16282;0.16658;0.17104;0.17613;0.18187;0.18848;0.1959;0.20433;
+9000;0.13729;0.13739;0.1378;0.13846;0.13932;0.1404;0.14168;0.14332;0.14515;0.14716;0.14943;0.15194;0.15514;0.15871;0.16294;0.16778;0.17326;0.17954;0.18661;0.1947;
+9500;0.13072;0.13085;0.13124;0.13187;0.13268;0.13371;0.13493;0.13651;0.13827;0.14019;0.14237;0.14477;0.14777;0.15116;0.15517;0.15976;0.16499;0.17097;0.17769;0.18539;
+10000;0.12446;0.12458;0.12495;0.12555;0.12632;0.1273;0.12846;0.12997;0.13167;0.13351;0.13558;0.13788;0.14071;0.14392;0.14784;0.1521;0.15706;0.16276;0.16915;0.17647;
+10500;0.11849;0.11858;0.11893;0.11949;0.12023;0.12116;0.12227;0.12371;0.12534;0.1271;0.12908;0.13127;0.13394;0.13698;0.1407;0.14484;0.14955;0.15488;0.16096;0.1679;
+11000;0.11271;0.11282;0.11315;0.11369;0.11439;0.11528;0.11633;0.11771;0.11927;0.12097;0.12286;0.12495;0.12746;0.13042;0.13376;0.13778;0.14225;0.14732;0.1531;0.15969;
+11500;0.10964;0.10974;0.11007;0.11059;0.11127;0.11214;0.11316;0.11451;0.11603;0.11768;0.11952;0.12155;0.12399;0.12688;0.13021;0.13402;0.13836;0.14328;0.14889;0.15531;
+12000;0.10665;0.10676;0.10707;0.10758;0.10824;0.10909;0.11009;0.1114;0.11288;0.11447;0.11627;0.11825;0.12062;0.12343;0.12667;0.13038;0.1346;0.13938;0.14483;0.15105;
+12500;0.10374;0.10386;0.10417;0.10466;0.10531;0.10613;0.10711;0.10838;0.10981;0.11136;0.11311;0.11503;0.11735;0.12009;0.12324;0.12685;0.13095;0.1356;0.14091;0.14696;
+13000;0.10094;0.10104;0.10134;0.10182;0.10245;0.10325;0.1042;0.10544;0.10683;0.10834;0.11004;0.11191;0.11417;0.11683;0.1199;0.12341;0.12741;0.13193;0.13709;0.14298;
+13500;0.098222;0.098233;0.098603;0.099066;0.099682;0.10046;0.10139;0.10259;0.10394;0.10541;0.10706;0.10888;0.11108;0.11367;0.11666;0.12008;0.12396;0.12837;0.13339;0.13912;
+14000;0.095577;0.095588;0.09594;0.09639;0.096989;0.097746;0.098646;0.09981;0.10112;0.10255;0.10417;0.10594;0.10808;0.1106;0.11351;0.11683;0.12062;0.1249;0.12978;0.13536;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.25962;0.25986;0.26059;0.26173;0.26326;0.26508;0.26724;0.26965;0.27293;0.2771;0.28186;0.2875;0.29337;0.30025;0.30851;0.31757;0.32747;0.33839;0.35054;0.36425;
+500;0.24845;0.24882;0.24952;0.25061;0.25205;0.25376;0.2558;0.25808;0.26119;0.2651;0.26957;0.27494;0.28055;0.28709;0.29491;0.30351;0.31302;0.32348;0.33514;0.34832;
+1000;0.23795;0.23818;0.23883;0.23987;0.24125;0.24289;0.24484;0.24701;0.24993;0.2536;0.25782;0.26299;0.2683;0.27448;0.28184;0.28999;0.29913;0.30915;0.32033;0.33298;
+1500;0.22786;0.22797;0.22859;0.22957;0.23087;0.23242;0.23428;0.23637;0.23893;0.24239;0.24659;0.25145;0.25654;0.26241;0.26938;0.27707;0.2858;0.29538;0.3061;0.31823;
+2000;0.21783;0.21803;0.21863;0.21958;0.22084;0.22235;0.22414;0.22616;0.2286;0.23184;0.2358;0.2404;0.24527;0.25081;0.2574;0.2647;0.27308;0.2822;0.29242;0.30405;
+2500;0.20822;0.20847;0.20904;0.20995;0.21116;0.21259;0.21431;0.21624;0.21859;0.22167;0.22545;0.2298;0.23443;0.2397;0.24594;0.25283;0.26085;0.26957;0.27935;0.29045;
+3000;0.19908;0.19927;0.19981;0.20068;0.20183;0.2032;0.20484;0.2067;0.20894;0.21184;0.21539;0.21958;0.22406;0.22902;0.23495;0.24147;0.24911;0.25744;0.2668;0.27742;
+3500;0.19054;0.1906;0.1911;0.19191;0.19297;0.19424;0.19576;0.19752;0.19965;0.20238;0.2057;0.20969;0.21398;0.21874;0.22425;0.2306;0.23785;0.24574;0.25474;0.26491;
+4000;0.18212;0.18227;0.18276;0.18353;0.18454;0.18575;0.18721;0.18885;0.19082;0.19333;0.19658;0.20019;0.20432;0.20881;0.21411;0.22019;0.22707;0.23459;0.24316;0.25288;
+4500;0.17405;0.17425;0.17472;0.17545;0.17641;0.17757;0.17896;0.18054;0.18242;0.18479;0.18783;0.19118;0.19504;0.1993;0.20434;0.21009;0.2167;0.2239;0.2321;0.24134;
+5000;0.16637;0.16652;0.16696;0.16766;0.16858;0.16969;0.17102;0.17254;0.17434;0.17658;0.17944;0.18262;0.18631;0.19035;0.19502;0.20038;0.20665;0.21363;0.22147;0.23029;
+5500;0.15902;0.15908;0.1595;0.16017;0.16105;0.1621;0.16338;0.16485;0.16657;0.16868;0.17139;0.17439;0.17791;0.18179;0.18624;0.19143;0.1971;0.2037;0.21125;0.21968;
+6000;0.15178;0.15192;0.15232;0.15296;0.1538;0.15481;0.15604;0.15744;0.15909;0.16108;0.16364;0.16649;0.16985;0.17356;0.1778;0.18272;0.1881;0.19435;0.20126;0.20949;
+6500;0.14488;0.14503;0.14541;0.14602;0.14683;0.1478;0.14898;0.15032;0.1519;0.15377;0.15619;0.15889;0.1621;0.16566;0.1697;0.17436;0.17946;0.18541;0.192;0.19973;
+7000;0.13828;0.13841;0.13877;0.13936;0.14013;0.14105;0.14218;0.14348;0.14499;0.14675;0.14904;0.1516;0.15466;0.15805;0.16191;0.1662;0.17116;0.17681;0.18311;0.19049;
+7500;0.13196;0.13199;0.1324;0.13295;0.13368;0.13457;0.13566;0.1369;0.13835;0.14;0.14218;0.1446;0.14752;0.15076;0.15443;0.15854;0.16323;0.16858;0.17473;0.18163;
+8000;0.12581;0.12592;0.12625;0.12679;0.12749;0.12834;0.12939;0.13059;0.13197;0.13354;0.13549;0.13788;0.14065;0.14375;0.14724;0.15117;0.15562;0.16068;0.16656;0.17313;
+8500;0.11994;0.12005;0.12037;0.12088;0.12155;0.12236;0.12336;0.12452;0.12584;0.12733;0.12917;0.13143;0.13406;0.13701;0.14034;0.14409;0.14832;0.15312;0.15859;0.16498;
+9000;0.11433;0.11441;0.11471;0.1152;0.11584;0.11662;0.11757;0.11868;0.11995;0.12137;0.12311;0.12523;0.12773;0.13055;0.13371;0.13729;0.1413;0.14587;0.1512;0.15715;
+9500;0.1089;0.109;0.10929;0.10975;0.11036;0.11111;0.11202;0.11308;0.11429;0.11564;0.11728;0.11928;0.12165;0.12434;0.12736;0.13076;0.13457;0.13893;0.14399;0.14965;
+10000;0.10371;0.1038;0.10408;0.10452;0.1051;0.10582;0.10669;0.10771;0.10887;0.11017;0.11171;0.11366;0.11582;0.11838;0.12126;0.1245;0.12812;0.13226;0.13706;0.14245;
+10500;0.098724;0.098814;0.099078;0.099502;0.10006;0.10074;0.10158;0.10256;0.10367;0.10491;0.10636;0.1082;0.11024;0.11267;0.11541;0.11848;0.12194;0.12587;0.13043;0.13555;
+11000;0.093963;0.094027;0.094279;0.094682;0.095212;0.095862;0.096666;0.097607;0.098672;0.099861;0.10124;0.10297;0.1049;0.1072;0.10982;0.11274;0.11602;0.11974;0.12407;0.12894;
+11500;0.091347;0.091432;0.091677;0.092069;0.092585;0.093216;0.093998;0.094911;0.095946;0.097102;0.098442;0.10012;0.102;0.10424;0.10678;0.10963;0.11282;0.11643;0.12063;0.12535;
+12000;0.088804;0.088909;0.089148;0.089529;0.09003;0.090644;0.091404;0.092292;0.093299;0.094422;0.095723;0.097357;0.099182;0.10136;0.10383;0.1066;0.10971;0.11322;0.11731;0.12189;
+12500;0.086382;0.08646;0.086692;0.087062;0.087548;0.088145;0.088884;0.089748;0.090727;0.091817;0.093083;0.094673;0.096449;0.098571;0.10097;0.10367;0.10669;0.1101;0.11408;0.11853;
+13000;0.084026;0.08408;0.084305;0.084665;0.085138;0.085716;0.086437;0.087276;0.088227;0.089288;0.090516;0.092065;0.093793;0.095858;0.098195;0.10081;0.10375;0.10707;0.11094;0.11527;
+13500;0.081694;0.081768;0.081987;0.082336;0.082795;0.083358;0.084059;0.084874;0.085798;0.086828;0.088023;0.089531;0.091212;0.093222;0.095495;0.09804;0.10089;0.10412;0.10789;0.1121;
+14000;0.079426;0.079521;0.079734;0.080073;0.08052;0.081066;0.081748;0.08254;0.083438;0.084439;0.0856;0.087069;0.088706;0.090661;0.092873;0.095347;0.098121;0.10134;0.10492;0.10902;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.21282;0.21315;0.21374;0.21466;0.21591;0.21738;0.21906;0.22107;0.22421;0.22786;0.23176;0.2359;0.24065;0.24645;0.2528;0.25936;0.2662;0.27327;0.28054;0.28815;
+500;0.20401;0.20421;0.20477;0.20564;0.20681;0.2082;0.20978;0.21166;0.21461;0.21805;0.2218;0.22577;0.23033;0.23582;0.24189;0.24814;0.25471;0.26156;0.26868;0.27619;
+1000;0.19554;0.19557;0.19614;0.19695;0.19805;0.19936;0.20086;0.20265;0.2054;0.20861;0.21221;0.21598;0.2203;0.22552;0.23141;0.23741;0.2437;0.2503;0.25723;0.26462;
+1500;0.18714;0.18731;0.18781;0.18859;0.18964;0.19087;0.19229;0.19397;0.19655;0.19957;0.20301;0.20656;0.21065;0.21573;0.22122;0.22705;0.23312;0.2395;0.24623;0.25343;
+2000;0.17907;0.17933;0.1798;0.18054;0.18152;0.1827;0.18405;0.18565;0.18806;0.19089;0.19416;0.19753;0.20139;0.20617;0.21139;0.21697;0.22289;0.22909;0.23563;0.24267;
+2500;0.17133;0.17163;0.17208;0.17278;0.17371;0.17482;0.17611;0.17762;0.1799;0.18256;0.18568;0.18887;0.19251;0.197;0.20197;0.20727;0.21294;0.21898;0.22539;0.23227;
+3000;0.16408;0.16435;0.16477;0.16541;0.16628;0.1673;0.16847;0.1699;0.17203;0.17454;0.17752;0.18054;0.18398;0.18822;0.19293;0.19797;0.20338;0.20918;0.21543;0.22222;
+3500;0.15721;0.15735;0.15775;0.15836;0.15918;0.16014;0.16127;0.16259;0.16455;0.16685;0.16965;0.17252;0.17577;0.17978;0.18426;0.18905;0.19421;0.19976;0.2058;0.21242;
+4000;0.15061;0.15059;0.15097;0.15155;0.15233;0.15324;0.15431;0.15557;0.15741;0.15957;0.16225;0.16491;0.16789;0.17167;0.1759;0.18047;0.1854;0.19072;0.19652;0.20293;
+4500;0.14395;0.14407;0.14443;0.14498;0.14573;0.14659;0.14761;0.14881;0.15053;0.15257;0.15511;0.15766;0.16058;0.16403;0.16794;0.17224;0.17693;0.18203;0.18761;0.19379;
+5000;0.13767;0.13779;0.13813;0.13866;0.13936;0.14018;0.14116;0.14229;0.14391;0.14582;0.14822;0.15068;0.15346;0.1567;0.16039;0.1645;0.16887;0.17367;0.17902;0.18499;
+5500;0.13167;0.13173;0.13205;0.13255;0.13322;0.13401;0.13493;0.13602;0.13754;0.13933;0.1416;0.14395;0.14659;0.14966;0.15314;0.15707;0.16125;0.1658;0.17081;0.17651;
+6000;0.12591;0.12593;0.12621;0.12668;0.12731;0.12806;0.12894;0.12998;0.1314;0.13309;0.13523;0.13747;0.13998;0.14276;0.14617;0.14993;0.15392;0.15828;0.16308;0.16846;
+6500;0.12039;0.12027;0.12056;0.12101;0.12162;0.12233;0.12317;0.12416;0.1255;0.12718;0.1291;0.13125;0.13351;0.13626;0.13947;0.14307;0.14688;0.15105;0.15566;0.16082;
+7000;0.11476;0.11485;0.11513;0.11556;0.11614;0.11682;0.11762;0.11855;0.11981;0.1214;0.1232;0.12527;0.12743;0.13003;0.13305;0.13648;0.14011;0.1441;0.14852;0.15348;
+7500;0.10955;0.10964;0.1099;0.11031;0.11086;0.11149;0.11227;0.11315;0.11434;0.11583;0.11754;0.11951;0.12158;0.12403;0.12688;0.13015;0.13361;0.13742;0.14165;0.14641;
+8000;0.10457;0.10462;0.10487;0.10525;0.10577;0.10638;0.10712;0.10796;0.10908;0.11048;0.1121;0.11398;0.11596;0.11827;0.12094;0.12407;0.12736;0.13101;0.13505;0.13962;
+8500;0.099716;0.099797;0.10003;0.1004;0.10089;0.10147;0.10217;0.10297;0.10402;0.10534;0.10687;0.10866;0.11054;0.11274;0.11535;0.11821;0.12137;0.12484;0.12872;0.13309;
+9000;0.095074;0.095161;0.095386;0.095739;0.096206;0.096758;0.097426;0.098186;0.099173;0.10041;0.10185;0.10358;0.10535;0.10743;0.10989;0.11259;0.11561;0.11893;0.12263;0.12681;
+9500;0.090634;0.090648;0.090919;0.091252;0.091697;0.092224;0.092865;0.093587;0.094518;0.095619;0.097034;0.098675;0.10037;0.10233;0.10465;0.10719;0.1101;0.11326;0.11679;0.12078;
+10000;0.086322;0.086392;0.086598;0.086923;0.087351;0.087858;0.088478;0.089169;0.089983;0.091087;0.092411;0.093963;0.0956;0.097456;0.099649;0.10204;0.10481;0.10779;0.11118;0.115;
+10500;0.082185;0.082236;0.082431;0.082741;0.083149;0.083633;0.084226;0.08489;0.085678;0.086719;0.087971;0.089441;0.091017;0.092776;0.094851;0.097113;0.099753;0.10259;0.10581;0.10945;
+11000;0.07818;0.078244;0.078431;0.078726;0.079115;0.079576;0.080144;0.080779;0.081532;0.082504;0.083736;0.085083;0.08661;0.088277;0.090175;0.092381;0.094885;0.09759;0.10068;0.10414;
+11500;0.076009;0.076074;0.076255;0.076542;0.07692;0.077368;0.077919;0.078536;0.079266;0.080212;0.081411;0.08272;0.084201;0.085823;0.087669;0.089815;0.09225;0.094875;0.097868;0.10123;
+12000;0.073898;0.073966;0.074143;0.074421;0.074788;0.075223;0.075758;0.076358;0.077066;0.077986;0.079152;0.080426;0.081859;0.083436;0.085234;0.087319;0.089688;0.092235;0.095138;0.0984;
+12500;0.071846;0.07192;0.072091;0.072362;0.072717;0.073139;0.07366;0.074243;0.074928;0.075822;0.076959;0.078198;0.079586;0.081118;0.082867;0.084897;0.087198;0.08967;0.092487;0.095652;
+13000;0.06985;0.069932;0.070098;0.070361;0.070707;0.071116;0.071621;0.072188;0.072854;0.073725;0.07483;0.076034;0.077377;0.078869;0.080568;0.082546;0.084781;0.08718;0.089912;0.092983;
+13500;0.06791;0.068002;0.068163;0.068419;0.068754;0.069151;0.069642;0.070192;0.070839;0.071686;0.072761;0.073927;0.075232;0.076684;0.078334;0.080261;0.082434;0.084759;0.087412;0.090391;
+14000;0.066074;0.066127;0.066284;0.066532;0.066858;0.067243;0.06772;0.068253;0.06888;0.069707;0.070752;0.071882;0.073148;0.074563;0.076231;0.078043;0.080154;0.082432;0.084984;0.087875;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.17248;0.17281;0.17336;0.17417;0.1753;0.17652;0.17801;0.18008;0.18283;0.18581;0.1888;0.1923;0.19662;0.20114;0.20558;0.20973;0.21318;0.21532;0.21529;0.21146;
+500;0.16861;0.16568;0.16618;0.16696;0.168;0.16914;0.17054;0.17247;0.17507;0.17791;0.18075;0.18407;0.18814;0.19247;0.19674;0.20077;0.20423;0.20658;0.20711;0.20456;
+1000;0.15867;0.15881;0.15929;0.16001;0.16099;0.16206;0.16338;0.16519;0.16762;0.17031;0.17299;0.17615;0.17998;0.18413;0.18822;0.19214;0.19558;0.1981;0.19912;0.19779;
+1500;0.15209;0.1522;0.15265;0.15333;0.15426;0.15526;0.1565;0.15819;0.16049;0.16303;0.16556;0.16854;0.17224;0.1761;0.18003;0.18382;0.18722;0.18988;0.1913;0.19083;
+2000;0.14568;0.14582;0.14625;0.14689;0.14776;0.14871;0.14988;0.15147;0.15363;0.15605;0.15843;0.16125;0.16471;0.16838;0.17214;0.17581;0.17917;0.18191;0.18366;0.18389;
+2500;0.13966;0.13977;0.14016;0.14075;0.14156;0.14243;0.1435;0.14499;0.14703;0.14933;0.15159;0.15425;0.15751;0.16099;0.16456;0.16809;0.17139;0.1742;0.1762;0.17701;
+3000;0.13391;0.13396;0.13433;0.13488;0.13564;0.13646;0.13747;0.13885;0.14074;0.14288;0.14499;0.14746;0.15059;0.15389;0.1573;0.1607;0.16391;0.16675;0.16895;0.17021;
+3500;0.12823;0.12835;0.1287;0.12922;0.12994;0.13071;0.13166;0.13296;0.13475;0.13678;0.13877;0.14102;0.14397;0.14709;0.15034;0.15358;0.15671;0.15953;0.16189;0.16351;
+4000;0.1228;0.12294;0.12327;0.12376;0.12444;0.12517;0.12607;0.12728;0.12897;0.13093;0.13279;0.135;0.1377;0.14064;0.14369;0.14674;0.14976;0.15257;0.15499;0.15693;
+4500;0.11762;0.11772;0.11803;0.11849;0.11913;0.11982;0.12067;0.12181;0.12341;0.12525;0.12703;0.12912;0.13166;0.13447;0.13737;0.14029;0.14313;0.14583;0.14832;0.15042;
+5000;0.11264;0.11269;0.11298;0.11342;0.11402;0.11467;0.11547;0.11654;0.11804;0.11978;0.12148;0.12346;0.12585;0.12852;0.13129;0.13409;0.13685;0.13946;0.14186;0.1441;
+5500;0.10775;0.10784;0.10811;0.10852;0.10909;0.1097;0.11046;0.11147;0.11288;0.11451;0.11613;0.11801;0.12025;0.12279;0.12543;0.12813;0.13079;0.13337;0.13579;0.13804;
+6000;0.10305;0.10316;0.10342;0.1038;0.10434;0.10492;0.10563;0.10658;0.10791;0.10944;0.111;0.11276;0.11488;0.11729;0.1198;0.12238;0.12497;0.1275;0.12993;0.13223;
+6500;0.098565;0.098648;0.098889;0.099253;0.099755;0.10034;0.10098;0.10186;0.10312;0.10456;0.10605;0.10772;0.1097;0.112;0.1144;0.11687;0.11937;0.12184;0.12425;0.1266;
+7000;0.094254;0.094293;0.09452;0.094866;0.095341;0.09589;0.096495;0.097325;0.098507;0.099866;0.1013;0.10287;0.10474;0.10692;0.1092;0.11157;0.11397;0.11638;0.11876;0.12114;
+7500;0.09;0.090075;0.090289;0.090615;0.091062;0.091582;0.092161;0.09289;0.094078;0.095375;0.096733;0.098147;0.09997;0.10201;0.1042;0.10646;0.10877;0.11111;0.11346;0.11584;
+8000;0.085925;0.086016;0.08622;0.086529;0.086953;0.087445;0.087999;0.08868;0.089791;0.091024;0.09233;0.093682;0.095311;0.097302;0.099392;0.10155;0.10377;0.10604;0.10834;0.11072;
+8500;0.082047;0.082113;0.082304;0.082596;0.082996;0.083459;0.083984;0.084626;0.085665;0.08683;0.088071;0.089366;0.090906;0.092776;0.094769;0.096823;0.098958;0.10115;0.10341;0.10576;
+9000;0.078328;0.078353;0.078533;0.078808;0.079185;0.079621;0.080118;0.080724;0.081695;0.082795;0.083972;0.085205;0.086649;0.088405;0.090332;0.09229;0.094333;0.096447;0.098652;0.10098;
+9500;0.07467;0.07473;0.0749;0.075161;0.075516;0.075927;0.076399;0.076971;0.077876;0.07891;0.08003;0.081203;0.082559;0.084198;0.086035;0.087918;0.089895;0.091936;0.094075;0.096353;
+10000;0.07117;0.071243;0.071404;0.07165;0.071984;0.072372;0.072819;0.073359;0.074202;0.075171;0.07624;0.077357;0.078629;0.080217;0.08191;0.083701;0.085594;0.087587;0.089677;0.091909;
+10500;0.067834;0.067886;0.068037;0.06827;0.068585;0.06895;0.069375;0.069885;0.070671;0.071574;0.072598;0.073663;0.074856;0.076345;0.077952;0.079655;0.081462;0.083379;0.085419;0.087623;
+11000;0.064607;0.064656;0.0648;0.065021;0.065317;0.065662;0.066066;0.066548;0.067278;0.06812;0.069099;0.070102;0.071234;0.072629;0.074154;0.075772;0.077495;0.079334;0.081309;0.083457;
+11500;0.062787;0.062842;0.062981;0.063195;0.063483;0.063818;0.06421;0.064678;0.06539;0.066209;0.067158;0.068133;0.069235;0.07059;0.072107;0.073637;0.075305;0.077082;0.078992;0.081066;
+12000;0.061018;0.061079;0.061214;0.061423;0.061702;0.062027;0.062407;0.062862;0.063556;0.064353;0.065273;0.066227;0.067292;0.068608;0.070043;0.071563;0.073178;0.074897;0.076742;0.078744;
+12500;0.0593;0.059367;0.059497;0.0597;0.059972;0.060289;0.060656;0.061098;0.061774;0.06255;0.063442;0.064368;0.065403;0.066684;0.068076;0.069549;0.071112;0.072774;0.074555;0.076488;
+13000;0.05766;0.057703;0.05783;0.058027;0.05829;0.058599;0.058956;0.059385;0.060043;0.060798;0.061664;0.062563;0.063569;0.064814;0.066165;0.067593;0.069106;0.070713;0.072431;0.074298;
+13500;0.056065;0.056072;0.056214;0.056402;0.056658;0.056956;0.057304;0.057721;0.058362;0.059097;0.059936;0.060809;0.061787;0.062998;0.064308;0.065692;0.067158;0.068711;0.07037;0.072171;
+14000;0.054477;0.054518;0.054638;0.054824;0.055072;0.055362;0.055698;0.056104;0.056728;0.057444;0.058258;0.059105;0.060057;0.061234;0.062505;0.063846;0.065265;0.066767;0.068368;0.070103;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.15835;0.15853;0.15906;0.15986;0.16096;0.16215;0.16357;0.1657;0.16834;0.171;0.17378;0.1773;0.18119;0.1851;0.18877;0.19173;0.19322;0.19194;0.185;0.16735;
+500;0.15636;0.15203;0.15253;0.15328;0.15431;0.15541;0.15675;0.15873;0.16122;0.16376;0.16643;0.16972;0.17343;0.17718;0.18072;0.18367;0.18536;0.1847;0.17932;0.16541;
+1000;0.14565;0.14577;0.14625;0.14695;0.14792;0.14895;0.1502;0.15206;0.15433;0.1568;0.15934;0.16242;0.16596;0.16954;0.17297;0.17588;0.17773;0.17759;0.17353;0.16262;
+1500;0.1396;0.13975;0.1402;0.14086;0.14177;0.14274;0.14392;0.14566;0.14779;0.15014;0.15253;0.1554;0.1588;0.16219;0.1655;0.16838;0.17035;0.17063;0.16766;0.15935;
+2000;0.1338;0.13394;0.13435;0.13497;0.13584;0.13675;0.13787;0.1395;0.14151;0.14374;0.14598;0.14868;0.15187;0.15512;0.15831;0.16114;0.1632;0.16383;0.16177;0.15532;
+2500;0.12837;0.12845;0.12883;0.1294;0.1302;0.13104;0.13207;0.13358;0.13546;0.13759;0.1397;0.14217;0.14527;0.14835;0.1514;0.15416;0.15628;0.1572;0.156;0.15101;
+3000;0.12301;0.12314;0.1235;0.12404;0.12479;0.12558;0.12655;0.12797;0.12974;0.13173;0.13369;0.13599;0.13891;0.14186;0.14476;0.14745;0.14959;0.15074;0.15014;0.14648;
+3500;0.11788;0.11802;0.11836;0.11887;0.11958;0.12032;0.12124;0.12256;0.12423;0.12613;0.12799;0.13016;0.13287;0.13564;0.13839;0.14097;0.14313;0.14442;0.14435;0.14179;
+4000;0.11297;0.11308;0.1134;0.11388;0.11455;0.11525;0.11611;0.11736;0.11898;0.12073;0.12249;0.12455;0.12709;0.12975;0.13235;0.13479;0.13686;0.13829;0.13857;0.13696;
+4500;0.10826;0.10832;0.10862;0.10907;0.10969;0.11035;0.11116;0.11233;0.11387;0.11553;0.11719;0.11915;0.12154;0.12407;0.12657;0.12892;0.13094;0.13235;0.13291;0.13201;
+5000;0.10362;0.10372;0.104;0.10442;0.10501;0.10564;0.1064;0.10749;0.10894;0.11052;0.1121;0.11395;0.11618;0.1186;0.12099;0.12326;0.12526;0.12675;0.12744;0.12701;
+5500;0.099175;0.099283;0.099549;0.099946;0.1005;0.10109;0.1018;0.10283;0.10419;0.10569;0.10718;0.10893;0.11103;0.11333;0.11561;0.11781;0.11978;0.12133;0.12222;0.12214;
+6000;0.094895;0.094981;0.095233;0.095607;0.096134;0.096689;0.097368;0.098328;0.099611;0.10103;0.10244;0.10409;0.10613;0.10827;0.11044;0.11256;0.11449;0.11608;0.11713;0.1174;
+6500;0.090777;0.090813;0.091048;0.091401;0.091894;0.092417;0.093057;0.093966;0.095188;0.096551;0.097877;0.099435;0.10136;0.10339;0.10547;0.1075;0.1094;0.11101;0.11219;0.11275;
+7000;0.086733;0.08681;0.08703;0.087359;0.08782;0.088309;0.08891;0.089755;0.090905;0.092199;0.093468;0.094933;0.096767;0.0987;0.10069;0.10264;0.10449;0.10611;0.10738;0.10818;
+7500;0.08286;0.082953;0.083159;0.083468;0.083901;0.08436;0.084928;0.085716;0.086794;0.088015;0.089211;0.090555;0.092333;0.094191;0.096082;0.097966;0.099759;0.10138;0.10273;0.1037;
+8000;0.079171;0.079238;0.079431;0.079721;0.080128;0.08056;0.081093;0.08183;0.082843;0.084008;0.085129;0.086446;0.088059;0.089823;0.091642;0.093464;0.095207;0.096816;0.098214;0.099349;
+8500;0.075635;0.07566;0.075841;0.076114;0.076495;0.076902;0.077403;0.078091;0.079042;0.080135;0.081204;0.082448;0.083957;0.085631;0.087361;0.089112;0.090819;0.092416;0.093851;0.09511;
+9000;0.072156;0.072215;0.072385;0.072641;0.072998;0.073381;0.073853;0.074496;0.075388;0.076414;0.077432;0.078606;0.080017;0.081604;0.083249;0.084924;0.086579;0.088162;0.089644;0.09099;
+9500;0.068826;0.068898;0.069057;0.069298;0.069633;0.069994;0.070439;0.071039;0.071875;0.072838;0.073807;0.074913;0.076233;0.077738;0.0793;0.0809;0.082501;0.084069;0.085565;0.086976;
+10000;0.065653;0.065704;0.065854;0.066081;0.066395;0.066757;0.067153;0.067714;0.068499;0.0694;0.070329;0.071366;0.072602;0.074036;0.075509;0.077043;0.078596;0.080131;0.081622;0.083076;
+10500;0.062615;0.06263;0.062771;0.062984;0.063279;0.063619;0.063994;0.064517;0.065252;0.0661;0.066986;0.067959;0.069121;0.070461;0.071883;0.073348;0.074841;0.076338;0.077817;0.079297;
+11000;0.059624;0.059671;0.059803;0.060003;0.060281;0.0606;0.060956;0.061444;0.062133;0.062933;0.063781;0.064654;0.065788;0.06705;0.068404;0.0698;0.071232;0.072689;0.07415;0.07564;
+11500;0.057943;0.057993;0.058121;0.058316;0.058585;0.058894;0.059239;0.059714;0.060384;0.06116;0.061977;0.062824;0.063926;0.065148;0.066462;0.067813;0.069197;0.070602;0.072008;0.073435;
+12000;0.056308;0.056363;0.056488;0.056677;0.056938;0.057238;0.057572;0.058034;0.058685;0.059439;0.06023;0.061052;0.062117;0.063304;0.064576;0.065883;0.06722;0.068575;0.069927;0.071293;
+12500;0.05474;0.054781;0.054902;0.055086;0.055339;0.05563;0.055953;0.056403;0.057036;0.057767;0.058535;0.059374;0.060368;0.061521;0.062744;0.064009;0.065301;0.066606;0.067907;0.069214;
+13000;0.053217;0.053245;0.053362;0.05354;0.053785;0.054068;0.054381;0.054819;0.055434;0.056143;0.056888;0.057703;0.05867;0.059792;0.060973;0.062192;0.063437;0.064694;0.065946;0.067197;
+13500;0.051736;0.051739;0.05187;0.052039;0.052276;0.052551;0.052855;0.05328;0.053878;0.054567;0.055289;0.056081;0.05702;0.058112;0.059254;0.060432;0.061631;0.062838;0.064039;0.065239;
+14000;0.050266;0.050304;0.050414;0.050582;0.050812;0.051077;0.051371;0.051786;0.052367;0.053035;0.053736;0.054506;0.055418;0.05648;0.057584;0.058725;0.059882;0.061038;0.062189;0.063335;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.14509;0.14529;0.14583;0.1466;0.14769;0.14887;0.15025;0.15244;0.15496;0.1573;0.16006;0.16337;0.1668;0.17012;0.17285;0.17423;0.17277;0.16461;0.13999;-9999;
+500;0.1392;0.13935;0.13987;0.1406;0.14162;0.14271;0.144;0.14604;0.14843;0.15066;0.15327;0.15642;0.1597;0.16289;0.16559;0.16711;0.16618;0.15964;0.14007;-9999;
+1000;0.13348;0.13366;0.13413;0.13482;0.13578;0.1368;0.13801;0.13993;0.14217;0.14427;0.14673;0.14971;0.15286;0.15594;0.15859;0.16021;0.15973;0.15454;0.13889;-9999;
+1500;0.12799;0.12818;0.1286;0.12925;0.13016;0.13112;0.13226;0.13406;0.13617;0.13817;0.14047;0.14326;0.14627;0.14923;0.15183;0.15354;0.15343;0.14937;0.13677;-9999;
+2000;0.12277;0.1229;0.12331;0.12391;0.12475;0.12565;0.12672;0.12841;0.13041;0.13232;0.13448;0.13711;0.13995;0.14277;0.1453;0.14708;0.14726;0.14417;0.13424;-9999;
+2500;0.11783;0.11788;0.11827;0.11884;0.11963;0.12046;0.12145;0.12302;0.12488;0.12668;0.12872;0.13119;0.1339;0.13658;0.13903;0.14082;0.14127;0.13898;0.13112;-9999;
+3000;0.11292;0.11305;0.11341;0.11394;0.11469;0.11547;0.1164;0.11787;0.11963;0.12134;0.12323;0.12553;0.12807;0.13063;0.13297;0.13478;0.13544;0.13391;0.12772;-9999;
+3500;0.10823;0.10839;0.10872;0.10922;0.10992;0.11065;0.11153;0.11291;0.11457;0.11619;0.11798;0.12015;0.12256;0.12496;0.12717;0.12894;0.12976;0.12872;0.12396;0.11289;
+4000;0.10377;0.10387;0.10419;0.10466;0.10532;0.106;0.10683;0.10812;0.10968;0.11124;0.11286;0.11495;0.11725;0.11955;0.12168;0.12339;0.12424;0.12361;0.11985;0.11054;
+4500;0.099486;0.099506;0.099811;0.10025;0.10088;0.10152;0.10229;0.1035;0.10498;0.10646;0.10801;0.10996;0.11214;0.11433;0.11639;0.11809;0.11904;0.11864;0.11568;0.10825;
+5000;0.095166;0.095265;0.095549;0.095965;0.096557;0.097165;0.097905;0.09905;0.10042;0.10186;0.10333;0.10515;0.10722;0.10931;0.1113;0.11297;0.114;0.11388;0.11158;0.1056;
+5500;0.091032;0.091176;0.091438;0.091829;0.092385;0.092956;0.093652;0.094724;0.096024;0.097409;0.098822;0.10052;0.10249;0.10448;0.10639;0.10803;0.10912;0.10924;0.10754;0.10289;
+6000;0.087144;0.087227;0.087475;0.087842;0.088363;0.088898;0.089552;0.090556;0.091782;0.093095;0.094445;0.096053;0.097951;0.099834;0.10166;0.10326;0.10441;0.10471;0.1036;0.099887;
+6500;0.083354;0.083434;0.083666;0.084008;0.084496;0.084994;0.085605;0.086542;0.087693;0.088944;0.090207;0.09173;0.093525;0.095351;0.097112;0.098679;0.099851;0.10032;0.099599;0.096777;
+7000;0.079723;0.079779;0.079996;0.080317;0.080774;0.081241;0.081815;0.08269;0.083765;0.084957;0.086143;0.087572;0.08926;0.091006;0.09271;0.094254;0.09545;0.096046;0.095656;0.093563;
+7500;0.076243;0.076257;0.07646;0.076761;0.07719;0.077629;0.078169;0.078984;0.079988;0.081126;0.082242;0.083549;0.085172;0.086831;0.088459;0.089959;0.091176;0.091886;0.091771;0.090265;
+8000;0.0728;0.072865;0.073055;0.073337;0.073738;0.07415;0.074657;0.075417;0.076354;0.07744;0.078491;0.07973;0.081245;0.082825;0.084381;0.08583;0.087043;0.087838;0.087954;0.086946;
+8500;0.069503;0.069598;0.069775;0.070039;0.070415;0.070801;0.071277;0.071985;0.072902;0.073894;0.074884;0.076053;0.077472;0.078976;0.080461;0.081865;0.083073;0.08393;0.084227;0.083675;
+9000;0.066348;0.066451;0.066617;0.066864;0.067215;0.067579;0.068024;0.068684;0.069545;0.070484;0.071417;0.072515;0.07385;0.075278;0.076694;0.07805;0.079247;0.080158;0.080613;0.080388;
+9500;0.063328;0.063421;0.063576;0.063807;0.064136;0.064477;0.064896;0.06551;0.066317;0.067206;0.068084;0.069117;0.070364;0.071724;0.073075;0.074383;0.075565;0.076513;0.077087;0.077128;
+10000;0.060436;0.060503;0.060648;0.060865;0.061173;0.061493;0.061886;0.062457;0.063215;0.064055;0.064882;0.065852;0.067053;0.068312;0.069599;0.070857;0.07202;0.07299;0.073659;0.073916;
+10500;0.057649;0.057695;0.057831;0.058034;0.058321;0.058622;0.058991;0.059523;0.060232;0.061027;0.061806;0.062713;0.063843;0.065039;0.066263;0.067472;0.068608;0.069587;0.070335;0.070764;
+11000;0.054981;0.054994;0.055121;0.055311;0.055579;0.055861;0.056208;0.056702;0.057367;0.058118;0.058853;0.059681;0.060764;0.061897;0.063061;0.064218;0.065321;0.066307;0.067115;0.067681;
+11500;0.053394;0.05344;0.053563;0.053747;0.054008;0.054281;0.054617;0.055098;0.055744;0.056472;0.057185;0.057993;0.05904;0.060138;0.061265;0.062383;0.063447;0.064392;0.065154;0.065668;
+12000;0.051853;0.051931;0.052051;0.052229;0.052482;0.052747;0.053073;0.053541;0.054169;0.054875;0.055566;0.056356;0.057367;0.05843;0.059521;0.060601;0.061628;0.062532;0.063251;0.063716;
+12500;0.050427;0.050467;0.050583;0.050756;0.051001;0.051257;0.051572;0.052029;0.052639;0.053324;0.053994;0.054765;0.055742;0.056772;0.057828;0.058871;0.059859;0.060728;0.061403;0.06182;
+13000;0.049041;0.049045;0.049156;0.049325;0.049564;0.04981;0.050116;0.05056;0.051153;0.051818;0.052468;0.053222;0.054166;0.055164;0.056184;0.057191;0.058141;0.058975;0.05961;0.059979;
+13500;0.047626;0.047663;0.047772;0.047934;0.048166;0.048406;0.048703;0.049135;0.04971;0.050355;0.050986;0.051722;0.052635;0.053601;0.05459;0.055562;0.056474;0.057269;0.057869;0.058192;
+14000;0.046252;0.046322;0.046428;0.046585;0.046809;0.047042;0.04733;0.04775;0.048309;0.048934;0.049547;0.050265;0.051148;0.052085;0.053041;0.05398;0.054856;0.055614;0.056178;0.056457;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.13285;0.13308;0.13358;0.13441;0.1355;0.13667;0.13817;0.14022;0.14256;0.14476;0.14737;0.15038;0.15337;0.15596;0.15744;0.15642;0.14882;0.12072;-9999;-9999;
+500;0.12744;0.12763;0.12811;0.12884;0.1299;0.13102;0.13243;0.13435;0.13658;0.13868;0.14115;0.14403;0.14689;0.14943;0.15098;0.15036;0.14417;0.12138;-9999;-9999;
+1000;0.12228;0.12247;0.12297;0.12363;0.12459;0.12562;0.12694;0.12875;0.13085;0.13281;0.13512;0.13789;0.14065;0.14312;0.14472;0.14444;0.13946;0.12146;-9999;-9999;
+1500;0.11729;0.11746;0.11793;0.11855;0.11946;0.12043;0.12166;0.12337;0.12536;0.12721;0.12938;0.13199;0.13462;0.13702;0.13868;0.13869;0.1347;0.12024;-9999;-9999;
+2000;0.11258;0.1127;0.11312;0.1137;0.11455;0.11543;0.11658;0.11819;0.12007;0.12182;0.12383;0.12634;0.12883;0.13114;0.13283;0.13304;0.12995;0.1183;-9999;-9999;
+2500;0.10796;0.10811;0.1085;0.10906;0.10985;0.11068;0.11176;0.11326;0.11502;0.11665;0.11858;0.12091;0.12328;0.12549;0.12717;0.12759;0.12522;0.11596;-9999;-9999;
+3000;0.10354;0.10368;0.10405;0.10457;0.10532;0.1061;0.10711;0.10852;0.11019;0.11173;0.11356;0.11574;0.11797;0.12007;0.12172;0.12228;0.12058;0.11309;-9999;-9999;
+3500;0.09927;0.099377;0.099718;0.10022;0.10093;0.10167;0.10262;0.10396;0.10553;0.10699;0.10872;0.1108;0.11292;0.11493;0.11652;0.11715;0.11586;0.10992;0.09353;-9999;
+4000;0.09516;0.095185;0.095505;0.096004;0.096676;0.097367;0.098259;0.099535;0.10105;0.10243;0.10406;0.10603;0.10805;0.10999;0.11155;0.11228;0.11127;0.10639;0.091917;-9999;
+4500;0.091086;0.091197;0.091499;0.091938;0.092573;0.093218;0.094053;0.095254;0.096683;0.098008;0.099568;0.10144;0.10336;0.10522;0.10676;0.10756;0.10688;0.10287;0.091102;-9999;
+5000;0.08718;0.087324;0.087608;0.08802;0.088615;0.08922;0.09;0.09113;0.092481;0.093735;0.095204;0.096987;0.098848;0.10063;0.10214;0.10301;0.10259;0.099366;0.089935;-9999;
+5500;0.083436;0.083589;0.083856;0.084242;0.084801;0.085365;0.086095;0.087159;0.088434;0.089619;0.091005;0.092685;0.094459;0.096189;0.097677;0.098596;0.098407;0.09583;0.088092;-9999;
+6000;0.079913;0.08;0.080249;0.080609;0.081132;0.081658;0.082338;0.083333;0.084536;0.085663;0.086966;0.088547;0.090236;0.091892;0.093341;0.094305;0.094307;0.092282;0.086118;-9999;
+6500;0.076533;0.076547;0.076787;0.07711;0.0776;0.078092;0.07868;0.079658;0.08079;0.081861;0.083081;0.084566;0.086173;0.087755;0.089162;0.090151;0.090298;0.088755;0.083818;-9999;
+7000;0.073132;0.073207;0.073425;0.07374;0.074199;0.074658;0.07521;0.076123;0.077187;0.078207;0.079353;0.080745;0.082269;0.083777;0.085138;0.086141;0.086422;0.08533;0.081396;-9999;
+7500;0.069876;0.069995;0.070199;0.070494;0.070923;0.071352;0.071868;0.072721;0.073721;0.074692;0.075767;0.077074;0.07852;0.07996;0.081273;0.082276;0.082665;0.081892;0.078776;-9999;
+8000;0.066834;0.0669;0.06709;0.067366;0.067769;0.068169;0.068654;0.069448;0.070387;0.07131;0.072276;0.073543;0.074916;0.076287;0.077556;0.078559;0.079038;0.078531;0.076103;0.070164;
+8500;0.063921;0.063929;0.064104;0.064353;0.06473;0.065104;0.06556;0.066299;0.067173;0.06806;0.068976;0.070151;0.071452;0.072757;0.07398;0.07498;0.075526;0.075244;0.073388;0.06879;
+9000;0.060988;0.061045;0.06121;0.061452;0.061804;0.062154;0.062583;0.06327;0.064088;0.064932;0.065804;0.066892;0.068125;0.069366;0.070544;0.07153;0.072127;0.072036;0.070652;0.067087;
+9500;0.058184;0.058278;0.058432;0.058658;0.058988;0.059315;0.059717;0.060356;0.061125;0.061925;0.062753;0.063764;0.064948;0.066109;0.067236;0.068203;0.068844;0.068909;0.067915;0.065224;
+10000;0.055502;0.055613;0.055758;0.055969;0.056276;0.056583;0.05696;0.057556;0.058276;0.059037;0.059825;0.060758;0.061867;0.062975;0.064052;0.065002;0.065676;0.065866;0.06524;0.063158;
+10500;0.052937;0.05305;0.053184;0.053382;0.053669;0.053957;0.054311;0.054864;0.055535;0.05626;0.056989;0.057868;0.058906;0.059964;0.060994;0.061922;0.062619;0.062914;0.062538;0.061009;
+11000;0.050485;0.050584;0.05071;0.050895;0.051163;0.051431;0.05176;0.052272;0.052895;0.053587;0.054271;0.055069;0.056069;0.057074;0.058057;0.058958;0.059666;0.060051;0.059882;0.058803;
+11500;0.049101;0.049147;0.049269;0.049448;0.049709;0.049969;0.050289;0.050788;0.051395;0.052064;0.052727;0.053501;0.054473;0.055446;0.056396;0.057264;0.057939;0.05829;0.058085;0.056957;
+12000;0.047755;0.047752;0.04787;0.048043;0.048296;0.048549;0.048859;0.049347;0.049937;0.050585;0.051229;0.051979;0.052924;0.053865;0.054784;0.055619;0.056273;0.056581;0.056341;0.055166;
+12500;0.04636;0.046399;0.046513;0.046681;0.046926;0.04717;0.047469;0.047945;0.048521;0.049147;0.049774;0.050503;0.05142;0.052331;0.053219;0.054022;0.054639;0.054922;0.054648;0.053428;
+13000;0.045006;0.045085;0.045196;0.045358;0.045597;0.045832;0.046122;0.046585;0.047144;0.04775;0.048359;0.049092;0.049959;0.050841;0.0517;0.052472;0.053058;0.053312;0.053005;0.05174;
+13500;0.043772;0.043809;0.043916;0.044074;0.044306;0.044533;0.044813;0.045265;0.045809;0.046394;0.046985;0.047697;0.04854;0.049395;0.050226;0.050967;0.051524;0.051751;0.051411;0.050102;
+14000;0.042573;0.04257;0.042674;0.042826;0.043051;0.043271;0.043545;0.043983;0.044512;0.045078;0.045651;0.046343;0.047161;0.047989;0.048794;0.049507;0.050035;0.050233;0.049863;0.048513;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.12222;0.12246;0.12299;0.12384;0.12494;0.12615;0.12769;0.1297;0.13186;0.13394;0.13638;0.139;0.14137;0.14287;0.14233;0.136;0.10946;-9999;-9999;-9999;
+500;0.11724;0.11729;0.11792;0.11873;0.11976;0.12088;0.12232;0.12419;0.12624;0.12821;0.13053;0.13305;0.13535;0.13689;0.13666;0.13148;0.11017;-9999;-9999;-9999;
+1000;0.1124;0.1126;0.11306;0.1138;0.11477;0.11582;0.11717;0.11893;0.12086;0.1227;0.12489;0.12731;0.12954;0.13112;0.13115;0.12695;0.10982;-9999;-9999;-9999;
+1500;0.10776;0.10793;0.10836;0.10906;0.10998;0.11096;0.11222;0.11388;0.11572;0.11745;0.11951;0.12179;0.12395;0.12555;0.1258;0.12258;0.1086;-9999;-9999;-9999;
+2000;0.10334;0.10351;0.10391;0.10456;0.10542;0.10632;0.10749;0.10904;0.11077;0.11241;0.11436;0.11653;0.11859;0.12017;0.12054;0.11813;0.10684;-9999;-9999;-9999;
+2500;0.099082;0.099117;0.099584;0.1002;0.10101;0.10187;0.10297;0.10446;0.10608;0.10761;0.10943;0.11148;0.11346;0.11501;0.1155;0.1137;0.10464;-9999;-9999;-9999;
+3000;0.094932;0.095084;0.095494;0.095993;0.096763;0.097562;0.098601;0.1;0.10157;0.10303;0.10475;0.1067;0.10858;0.11006;0.11066;0.10927;0.10196;-9999;-9999;-9999;
+3500;0.090948;0.091097;0.09147;0.091945;0.092669;0.093417;0.09439;0.09571;0.097193;0.098575;0.10022;0.10211;0.10391;0.10538;0.10608;0.10498;0.099014;-9999;-9999;-9999;
+4000;0.087121;0.087254;0.087594;0.088044;0.088725;0.089425;0.090336;0.091581;0.092986;0.094291;0.095848;0.097646;0.099415;0.10092;0.10168;0.10086;0.095846;0.077499;-9999;-9999;
+4500;0.083447;0.083473;0.083818;0.084289;0.084926;0.085581;0.086434;0.087606;0.088941;0.090185;0.091672;0.093397;0.095095;0.09656;0.097381;0.096818;0.092685;0.077967;-9999;-9999;
+5000;0.079857;0.079993;0.080271;0.080687;0.081286;0.081903;0.082707;0.083817;0.085084;0.086262;0.087662;0.089302;0.090926;0.09235;0.093217;0.092871;0.089488;0.077518;-9999;-9999;
+5500;0.076487;0.076587;0.076853;0.077237;0.077803;0.078377;0.079127;0.08017;0.081368;0.082481;0.083789;0.08536;0.086912;0.088293;0.089188;0.089025;0.086278;0.076633;-9999;-9999;
+6000;0.073214;0.07331;0.073559;0.073918;0.074449;0.074985;0.075686;0.076667;0.077797;0.078845;0.080077;0.081565;0.083047;0.084383;0.085298;0.08529;0.083074;0.075293;-9999;-9999;
+6500;0.070072;0.070149;0.070383;0.070719;0.071217;0.071717;0.072373;0.073295;0.074362;0.07535;0.076505;0.077921;0.07933;0.080618;0.081541;0.081663;0.079966;0.073657;-9999;-9999;
+7000;0.067058;0.067075;0.067303;0.067638;0.068103;0.06857;0.069181;0.070048;0.071056;0.071988;0.073093;0.074417;0.075759;0.077001;0.077924;0.078129;0.076827;0.071718;-9999;-9999;
+7500;0.064094;0.064169;0.064374;0.064668;0.065105;0.065539;0.066109;0.066924;0.067875;0.068753;0.069794;0.071047;0.072322;0.073519;0.074437;0.074732;0.073744;0.069716;-9999;-9999;
+8000;0.061255;0.061341;0.061533;0.061808;0.062217;0.062621;0.063153;0.063917;0.064813;0.065641;0.066621;0.067807;0.069018;0.070168;0.071072;0.071444;0.070718;0.067471;0.058943;-9999;
+8500;0.058534;0.058618;0.058797;0.059055;0.059436;0.059813;0.060308;0.061025;0.061869;0.06265;0.063571;0.064689;0.065836;0.066938;0.067831;0.068264;0.067762;0.065166;0.057624;-9999;
+9000;0.055928;0.055996;0.056163;0.056403;0.05676;0.057111;0.057571;0.058243;0.059037;0.059771;0.060636;0.061687;0.062777;0.063832;0.064709;0.065189;0.064876;0.062823;0.056854;-9999;
+9500;0.053432;0.05347;0.053626;0.05385;0.054183;0.054508;0.054936;0.055564;0.056311;0.057003;0.057814;0.058801;0.059837;0.060845;0.061703;0.06222;0.062064;0.060461;0.055768;-9999;
+10000;0.051042;0.051051;0.051188;0.05139;0.051701;0.052004;0.052401;0.052989;0.053692;0.054344;0.055104;0.056028;0.057011;0.057973;0.05881;0.059354;0.059328;0.058098;0.054443;-9999;
+10500;0.048647;0.048694;0.048829;0.049024;0.049313;0.049595;0.049964;0.050513;0.051172;0.051792;0.052502;0.053365;0.054297;0.055213;0.056026;0.05659;0.056662;0.055751;0.052956;-9999;
+11000;0.046359;0.04644;0.046565;0.046747;0.047017;0.047279;0.047622;0.048133;0.04875;0.049339;0.050002;0.050809;0.051692;0.052563;0.053349;0.053925;0.054085;0.053463;0.051238;-9999;
+11500;0.045071;0.045115;0.045238;0.045414;0.045676;0.04593;0.046235;0.04676;0.04736;0.04793;0.048573;0.049358;0.050213;0.051057;0.051814;0.052363;0.052497;0.051851;0.049592;-9999;
+12000;0.043789;0.043831;0.043949;0.044119;0.044375;0.044621;0.044917;0.045427;0.04601;0.046562;0.047187;0.047949;0.048778;0.049595;0.050325;0.050846;0.050957;0.050287;0.047995;-9999;
+12500;0.042545;0.042583;0.042697;0.042862;0.043111;0.043349;0.043637;0.044133;0.0447;0.045233;0.045841;0.046582;0.047386;0.048176;0.048879;0.049375;0.049461;0.048731;0.046447;-9999;
+13000;0.041333;0.041371;0.041482;0.041642;0.041884;0.042115;0.042395;0.042877;0.043428;0.043944;0.044534;0.045254;0.046034;0.046798;0.047475;0.047946;0.048009;0.047256;0.044943;-9999;
+13500;0.040157;0.040195;0.040303;0.040459;0.040693;0.040917;0.041189;0.041657;0.042193;0.042692;0.043266;0.043966;0.044721;0.045461;0.046113;0.046559;0.046601;0.045825;0.043433;-9999;
+14000;0.039016;0.039053;0.039157;0.039308;0.039538;0.039753;0.040019;0.040473;0.040994;0.041477;0.042034;0.042715;0.043447;0.044163;0.04479;0.045213;0.045234;0.044436;0.042009;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.11265;0.11291;0.11349;0.11427;0.11555;0.11678;0.11838;0.12037;0.12232;0.12433;0.12658;0.12872;0.13026;0.13021;0.12549;0.10346;-9999;-9999;-9999;-9999;
+500;0.10808;0.10813;0.10879;0.10952;0.11071;0.11186;0.11335;0.11521;0.11707;0.11897;0.12112;0.1232;0.12475;0.12481;0.12107;0.10326;-9999;-9999;-9999;-9999;
+1000;0.10367;0.10374;0.10424;0.10494;0.10606;0.10715;0.10854;0.1103;0.11205;0.11382;0.11585;0.11787;0.11944;0.1197;0.11668;0.10225;-9999;-9999;-9999;-9999;
+1500;0.099218;0.099411;0.099876;0.10052;0.10156;0.10257;0.10389;0.10558;0.10725;0.10892;0.11084;0.11276;0.11431;0.11474;0.11243;0.10056;-9999;-9999;-9999;-9999;
+2000;0.095025;0.095302;0.095732;0.096344;0.097307;0.098251;0.099469;0.10104;0.10262;0.10421;0.10604;0.10789;0.1094;0.10993;0.10814;0.098457;-9999;-9999;-9999;-9999;
+2500;0.09117;0.091339;0.091739;0.092315;0.093215;0.094102;0.095237;0.096724;0.098227;0.09972;0.10145;0.10321;0.10469;0.10531;0.10389;0.096034;-9999;-9999;-9999;-9999;
+3000;0.087463;0.087519;0.087891;0.088485;0.089276;0.09011;0.091164;0.092572;0.094005;0.095411;0.097054;0.098748;0.10019;0.10086;0.099731;0.093286;-9999;-9999;-9999;-9999;
+3500;0.083691;0.08384;0.084183;0.084738;0.085482;0.08626;0.087245;0.088575;0.08994;0.091268;0.092825;0.094449;0.095859;0.096587;0.095743;0.090318;-9999;-9999;-9999;-9999;
+4000;0.080154;0.080293;0.080611;0.081129;0.081829;0.082555;0.083477;0.084731;0.086028;0.087281;0.088758;0.090314;0.091685;0.092461;0.091867;0.087355;-9999;-9999;-9999;-9999;
+4500;0.076758;0.076875;0.07717;0.077653;0.078311;0.078988;0.079846;0.081032;0.082263;0.083446;0.084845;0.086336;0.087668;0.088479;0.088093;0.084358;0.068931;-9999;-9999;-9999;
+5000;0.073478;0.073599;0.073869;0.074319;0.074927;0.075561;0.076356;0.077474;0.078641;0.079758;0.08108;0.08251;0.0838;0.084636;0.084417;0.081347;0.068971;-9999;-9999;-9999;
+5500;0.070328;0.070443;0.070692;0.071111;0.071688;0.072273;0.073012;0.074066;0.075168;0.076217;0.077464;0.07883;0.080078;0.080928;0.080808;0.078353;0.068396;-9999;-9999;-9999;
+6000;0.067304;0.067401;0.067676;0.06802;0.068563;0.069108;0.069795;0.070791;0.071836;0.072824;0.074002;0.075301;0.076502;0.07735;0.077358;0.075396;0.067373;-9999;-9999;-9999;
+6500;0.064401;0.064472;0.064721;0.065047;0.065556;0.066064;0.066702;0.067641;0.068631;0.069562;0.070674;0.071912;0.073068;0.073915;0.074029;0.072539;0.065983;-9999;-9999;-9999;
+7000;0.061558;0.061649;0.061876;0.062184;0.062661;0.063134;0.063761;0.064613;0.065549;0.066424;0.067471;0.06865;0.069762;0.070608;0.070813;0.069662;0.064377;-9999;-9999;-9999;
+7500;0.058832;0.058926;0.059136;0.059427;0.059873;0.060313;0.060898;0.061697;0.062582;0.063406;0.064392;0.065513;0.066582;0.067423;0.067699;0.06684;0.062552;-9999;-9999;-9999;
+8000;0.056228;0.056306;0.056499;0.056773;0.05719;0.057599;0.058144;0.058894;0.05973;0.060505;0.061434;0.062499;0.063524;0.064354;0.064713;0.064078;0.060606;-9999;-9999;-9999;
+8500;0.053732;0.053785;0.053964;0.054219;0.05461;0.05499;0.055497;0.0562;0.056989;0.057718;0.058591;0.059603;0.060583;0.061413;0.061847;0.061383;0.058611;0.048553;-9999;-9999;
+9000;0.051294;0.051357;0.051525;0.051763;0.052128;0.052481;0.052952;0.053612;0.054356;0.055041;0.055861;0.05683;0.057778;0.058598;0.059059;0.058755;0.05652;0.048825;-9999;-9999;
+9500;0.048958;0.049021;0.049179;0.049401;0.049741;0.050069;0.050507;0.051128;0.051832;0.052483;0.053254;0.054182;0.055088;0.055882;0.056369;0.056197;0.05441;0.048224;-9999;-9999;
+10000;0.046721;0.046776;0.046923;0.04713;0.047453;0.047764;0.048177;0.04876;0.049426;0.050039;0.050761;0.051637;0.052499;0.053268;0.053773;0.053691;0.052298;0.047404;-9999;-9999;
+10500;0.04458;0.044636;0.044774;0.044969;0.045267;0.045555;0.045939;0.046484;0.047111;0.047687;0.048365;0.049191;0.050011;0.050753;0.051269;0.051283;0.050196;0.04636;-9999;-9999;
+11000;0.042531;0.042576;0.042704;0.042886;0.043164;0.043431;0.043788;0.044297;0.044886;0.045427;0.04605;0.046842;0.04762;0.048335;0.048856;0.04895;0.048117;0.045073;-9999;-9999;
+11500;0.041313;0.041357;0.041482;0.041658;0.041928;0.042188;0.042534;0.04303;0.043602;0.044126;0.044735;0.0455;0.046254;0.046944;0.047441;0.047514;0.046664;0.043593;-9999;-9999;
+12000;0.04013;0.040174;0.040295;0.040466;0.04073;0.04098;0.041294;0.041797;0.042355;0.042864;0.043459;0.044197;0.044928;0.045594;0.046068;0.046121;0.045253;0.042156;-9999;-9999;
+12500;0.038982;0.039027;0.039143;0.03931;0.039566;0.039809;0.040115;0.040603;0.041144;0.041638;0.04222;0.042933;0.043641;0.044284;0.044736;0.044768;0.043885;0.04076;-9999;-9999;
+13000;0.037867;0.03792;0.038031;0.038189;0.038437;0.03867;0.038962;0.039444;0.03997;0.040449;0.041015;0.041707;0.042393;0.043013;0.043443;0.043455;0.042557;0.039404;-9999;-9999;
+13500;0.036784;0.03685;0.036957;0.03711;0.037352;0.037574;0.037859;0.03832;0.038829;0.039295;0.039844;0.040516;0.041181;0.041779;0.042188;0.042182;0.041268;0.038087;-9999;-9999;
+14000;0.035733;0.035812;0.035915;0.036064;0.036299;0.036514;0.036792;0.037236;0.037727;0.038173;0.038699;0.03936;0.040005;0.040582;0.04097;0.040946;0.040018;0.036769;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10833;0.10857;0.10919;0.10998;0.11132;0.11258;0.11424;0.1162;0.11804;0.11997;0.1221;0.12394;0.12488;0.12354;0.11484;-9999;-9999;-9999;-9999;-9999;
+500;0.10386;0.10391;0.1046;0.10536;0.10661;0.10781;0.10935;0.11119;0.11294;0.11477;0.11681;0.11862;0.11965;0.11868;0.11148;-9999;-9999;-9999;-9999;-9999;
+1000;0.09956;0.099664;0.1002;0.10091;0.10208;0.1032;0.10465;0.10641;0.10807;0.1098;0.11172;0.1135;0.11459;0.11395;0.10804;0.10919;-9999;-9999;-9999;-9999;
+1500;0.095307;0.095505;0.095997;0.096657;0.097733;0.098768;0.10012;0.10179;0.10339;0.10505;0.10688;0.10857;0.1097;0.10934;0.10447;-9999;-9999;-9999;-9999;-9999;
+2000;0.091283;0.091543;0.091999;0.092621;0.093624;0.094596;0.095851;0.097409;0.098903;0.10046;0.10221;0.10387;0.10501;0.10485;0.10085;0.08258;-9999;-9999;-9999;-9999;
+2500;0.08755;0.087725;0.088148;0.088806;0.08967;0.09058;0.091754;0.093228;0.094651;0.096132;0.097771;0.099342;0.10047;0.10048;0.097158;0.082298;-9999;-9999;-9999;-9999;
+3000;0.083883;0.084047;0.084438;0.085052;0.085863;0.086715;0.087814;0.089207;0.090561;0.09195;0.093522;0.095042;0.096175;0.096213;0.093512;0.081372;-9999;-9999;-9999;-9999;
+3500;0.080366;0.080503;0.080865;0.081439;0.082199;0.082997;0.084024;0.085339;0.086628;0.087941;0.089437;0.090902;0.092033;0.092202;0.090057;0.07988;-9999;-9999;-9999;-9999;
+4000;0.076991;0.07702;0.07742;0.07796;0.078672;0.079419;0.080378;0.08162;0.082845;0.084085;0.085508;0.08692;0.088041;0.088321;0.086584;0.078129;-9999;-9999;-9999;-9999;
+4500;0.073675;0.073809;0.074116;0.074612;0.075283;0.075979;0.076869;0.078043;0.07921;0.080377;0.081729;0.083087;0.084192;0.084563;0.083179;0.076205;-9999;-9999;-9999;-9999;
+5000;0.070492;0.070659;0.070943;0.071405;0.072035;0.07268;0.073502;0.074608;0.075714;0.076813;0.078095;0.079401;0.08049;0.080924;0.079845;0.074089;-9999;-9999;-9999;-9999;
+5500;0.067507;0.067624;0.067887;0.068317;0.068905;0.069509;0.070275;0.07132;0.072371;0.073401;0.07461;0.075854;0.076916;0.077411;0.076591;0.071843;-9999;-9999;-9999;-9999;
+6000;0.06459;0.0647;0.064942;0.065343;0.065898;0.066458;0.067175;0.068157;0.069154;0.070124;0.071266;0.072459;0.073491;0.074026;0.073421;0.069563;-9999;-9999;-9999;-9999;
+6500;0.06179;0.061883;0.062106;0.06248;0.063;0.06352;0.064188;0.065111;0.066057;0.066971;0.068052;0.069195;0.070198;0.07077;0.070352;0.067172;-9999;-9999;-9999;-9999;
+7000;0.059102;0.059122;0.05937;0.059721;0.060208;0.060692;0.061316;0.062184;0.06308;0.063941;0.064962;0.066056;0.06703;0.067627;0.067368;0.064762;0.054306;-9999;-9999;-9999;
+7500;0.056465;0.056554;0.056781;0.057066;0.057523;0.057973;0.058555;0.05937;0.060219;0.061029;0.061993;0.063038;0.063982;0.064596;0.064426;0.062349;0.054067;-9999;-9999;-9999;
+8000;0.053937;0.054038;0.054243;0.054512;0.05494;0.055358;0.0559;0.056665;0.057469;0.058231;0.05914;0.060137;0.06105;0.061674;0.061619;0.060016;0.053343;-9999;-9999;-9999;
+8500;0.051513;0.051614;0.051801;0.052056;0.052456;0.052844;0.053346;0.054066;0.054827;0.055542;0.056398;0.057348;0.058229;0.058859;0.0589;0.057581;0.05225;-9999;-9999;-9999;
+9000;0.049189;0.049282;0.049453;0.049694;0.050068;0.050428;0.050892;0.051569;0.052288;0.05296;0.053765;0.054669;0.055516;0.056149;0.056267;0.055287;0.050998;-9999;-9999;-9999;
+9500;0.046975;0.047038;0.047198;0.047422;0.047771;0.048105;0.048534;0.049171;0.049849;0.05048;0.051237;0.052095;0.052909;0.05354;0.053721;0.052987;0.049539;-9999;-9999;-9999;
+10000;0.044852;0.04488;0.045029;0.045238;0.045563;0.045873;0.04627;0.046867;0.047508;0.0481;0.04881;0.049624;0.050404;0.051028;0.051262;0.050735;0.047969;-9999;-9999;-9999;
+10500;0.042753;0.042805;0.042944;0.043138;0.043441;0.043728;0.044095;0.044655;0.045259;0.045814;0.046481;0.047252;0.047997;0.04861;0.048904;0.048536;0.046348;0.038351;-9999;-9999;
+11000;0.040744;0.040811;0.04094;0.041121;0.041402;0.041669;0.042007;0.042531;0.0431;0.043621;0.044245;0.044976;0.045686;0.046298;0.046643;0.046393;0.044644;0.038525;-9999;-9999;
+11500;0.039606;0.039654;0.039779;0.039954;0.040229;0.040486;0.040817;0.041326;0.041878;0.042383;0.04299;0.043699;0.044387;0.044963;0.045278;0.045019;0.043258;0.03707;-9999;-9999;
+12000;0.0385;0.038532;0.038652;0.038823;0.039089;0.039339;0.039663;0.040156;0.040692;0.041182;0.041772;0.04246;0.043125;0.04368;0.043962;0.043686;0.041912;-9999;-9999;-9999;
+12500;0.037399;0.03744;0.037559;0.037724;0.037985;0.038227;0.038542;0.039021;0.039541;0.040017;0.04059;0.041258;0.041902;0.042435;0.042683;0.042393;0.040606;0.034575;-9999;-9999;
+13000;0.036329;0.036382;0.036499;0.036658;0.036913;0.037147;0.037455;0.03792;0.038425;0.038887;0.039443;0.040091;0.040715;0.041226;0.041455;0.041138;0.039339;-9999;-9999;-9999;
+13500;0.03529;0.035356;0.03547;0.035624;0.035873;0.036099;0.0364;0.036852;0.037341;0.03779;0.038331;0.038959;0.039563;0.040054;0.040264;0.039921;0.038109;0.031034;-9999;-9999;
+14000;0.034322;0.034362;0.034471;0.034621;0.034863;0.035083;0.035376;0.035814;0.03629;0.036725;0.037251;0.037861;0.038445;0.038917;0.039108;0.038739;0.036917;0.03015;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10423;0.10429;0.10516;0.10599;0.10741;0.10874;0.11045;0.1124;0.11415;0.11605;0.11791;0.11937;0.11964;0.11628;0.10012;-9999;-9999;-9999;-9999;-9999;
+500;0.099921;0.099981;0.10071;0.10149;0.1028;0.10404;0.10566;0.1075;0.10917;0.11098;0.11278;0.11425;0.11457;0.11196;0.098575;-9999;-9999;-9999;-9999;-9999;
+1000;0.095787;0.095843;0.096444;0.097174;0.098399;0.09956;0.10106;0.10281;0.10439;0.10612;0.10785;0.10931;0.10978;0.10771;0.096658;-9999;-9999;-9999;-9999;-9999;
+1500;0.091666;0.091872;0.092395;0.093068;0.094197;0.095269;0.096662;0.098312;0.099818;0.10146;0.10312;0.10456;0.10514;0.10352;0.094356;-9999;-9999;-9999;-9999;-9999;
+2000;0.087752;0.088042;0.088526;0.08916;0.090212;0.091219;0.092521;0.094061;0.09547;0.097001;0.098587;0.099997;0.10065;0.099383;0.091881;-9999;-9999;-9999;-9999;-9999;
+2500;0.084169;0.084352;0.084801;0.085398;0.086379;0.087321;0.088537;0.089997;0.091336;0.092788;0.094306;0.095652;0.096331;0.095365;0.089111;-9999;-9999;-9999;-9999;-9999;
+3000;0.080738;0.080799;0.081215;0.081777;0.082691;0.083573;0.084709;0.086091;0.087363;0.088693;0.090197;0.091514;0.092244;0.0915;0.086236;-9999;-9999;-9999;-9999;-9999;
+3500;0.07722;0.077378;0.077763;0.078356;0.079144;0.079968;0.081031;0.082336;0.083549;0.084812;0.086247;0.087528;0.088299;0.087776;0.083409;-9999;-9999;-9999;-9999;-9999;
+4000;0.073935;0.074084;0.07444;0.074994;0.075731;0.076501;0.077493;0.078728;0.079883;0.081086;0.082448;0.083692;0.084491;0.084158;0.080517;-9999;-9999;-9999;-9999;-9999;
+4500;0.07079;0.070928;0.071255;0.071771;0.072454;0.073171;0.074093;0.075259;0.076358;0.077503;0.078797;0.079999;0.080812;0.080641;0.077619;0.064165;-9999;-9999;-9999;-9999;
+5000;0.067772;0.067894;0.068196;0.068675;0.069316;0.069985;0.070845;0.071938;0.072977;0.074058;0.07528;0.07644;0.077268;0.07717;0.074739;0.06375;-9999;-9999;-9999;-9999;
+5500;0.064876;0.064967;0.065246;0.065692;0.066293;0.066917;0.067719;0.06875;0.069738;0.070764;0.071915;0.073027;0.073854;0.073876;0.07189;0.063017;-9999;-9999;-9999;-9999;
+6000;0.062036;0.062149;0.062406;0.062822;0.063395;0.063968;0.064713;0.065686;0.066626;0.067598;0.068686;0.069758;0.070584;0.070703;0.069143;0.061749;-9999;-9999;-9999;-9999;
+6500;0.059311;0.059435;0.059673;0.060058;0.060595;0.06113;0.061821;0.06274;0.063635;0.064537;0.06558;0.066614;0.067434;0.067637;0.066387;0.060364;-9999;-9999;-9999;-9999;
+7000;0.056724;0.056823;0.057041;0.0574;0.057901;0.058401;0.059042;0.059909;0.06076;0.061608;0.062597;0.06359;0.0644;0.064671;0.063689;0.058773;-9999;-9999;-9999;-9999;
+7500;0.054216;0.054308;0.054509;0.054843;0.055312;0.055775;0.056373;0.057188;0.057997;0.058794;0.05973;0.060683;0.061479;0.061806;0.061051;0.057031;-9999;-9999;-9999;-9999;
+8000;0.051811;0.051888;0.052073;0.052383;0.052822;0.053252;0.053808;0.054574;0.055341;0.056091;0.056975;0.057889;0.058668;0.059039;0.058477;0.055193;-9999;-9999;-9999;-9999;
+8500;0.049503;0.04952;0.049727;0.050017;0.050427;0.050826;0.051344;0.052063;0.052789;0.053494;0.054329;0.055204;0.055963;0.056369;0.05597;0.053321;-9999;-9999;-9999;-9999;
+9000;0.047294;0.047319;0.047505;0.04774;0.048125;0.048495;0.048976;0.049651;0.050339;0.051001;0.051788;0.052624;0.053362;0.053793;0.053532;0.051375;0.0426;-9999;-9999;-9999;
+9500;0.045094;0.045163;0.04533;0.045553;0.045912;0.046255;0.046702;0.047335;0.047985;0.048606;0.049347;0.050147;0.050862;0.051311;0.051165;0.04942;0.042535;-9999;-9999;-9999;
+10000;0.043024;0.043087;0.04324;0.04345;0.043785;0.044103;0.044518;0.04511;0.045725;0.046308;0.047005;0.047766;0.048459;0.048919;0.048838;0.047469;0.042054;-9999;-9999;-9999;
+10500;0.041042;0.041092;0.041233;0.04143;0.041741;0.042036;0.042421;0.042975;0.043555;0.044101;0.044757;0.045481;0.046149;0.046616;0.046617;0.045531;0.041249;-9999;-9999;-9999;
+11000;0.039143;0.039155;0.03929;0.03949;0.039778;0.040051;0.040409;0.040925;0.041473;0.041985;0.042599;0.043288;0.04393;0.044401;0.044468;0.043656;0.040257;-9999;-9999;-9999;
+11500;0.03801;0.038061;0.038193;0.03837;0.038653;0.038917;0.039265;0.039768;0.0403;0.040796;0.041394;0.042061;0.042682;0.043132;0.043181;0.042349;0.038923;-9999;-9999;-9999;
+12000;0.03694;0.036989;0.037114;0.037286;0.037562;0.037817;0.038155;0.038646;0.039161;0.039644;0.040224;0.040872;0.041472;0.041901;0.041932;0.041086;0.037604;-9999;-9999;-9999;
+12500;0.035901;0.035952;0.036066;0.036233;0.036503;0.03675;0.037078;0.037557;0.038057;0.038525;0.03909;0.039718;0.040297;0.040707;0.040721;0.039827;0.036345;-9999;-9999;-9999;
+13000;0.034893;0.034932;0.03505;0.035212;0.035475;0.035715;0.036034;0.036499;0.036985;0.03744;0.037988;0.038597;0.039158;0.039548;0.039545;0.038636;0.03512;-9999;-9999;-9999;
+13500;0.033912;0.033946;0.034064;0.034221;0.034478;0.03471;0.03502;0.035474;0.035944;0.036386;0.03692;0.03751;0.038052;0.038424;0.038405;0.037481;0.03393;-9999;-9999;-9999;
+14000;0.032953;0.032996;0.033107;0.033259;0.03351;0.033735;0.034036;0.034478;0.034935;0.035364;0.035883;0.036456;0.036979;0.037332;0.037297;0.03636;0.032777;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10047;0.1008;0.10162;0.10235;0.10385;0.10524;0.10694;0.10895;0.11065;0.11241;0.11401;0.11496;0.11415;0.1077;0.10029;-9999;-9999;-9999;-9999;-9999;
+500;0.096317;0.09638;0.097169;0.097966;0.099356;0.10065;0.10224;0.10412;0.10575;0.10745;0.10903;0.11004;0.10952;0.1041;0.098521;-9999;-9999;-9999;-9999;-9999;
+1000;0.092329;0.092388;0.093015;0.093763;0.095056;0.096264;0.097755;0.099537;0.10106;0.10268;0.10421;0.10529;0.10502;0.10047;0.09682;-9999;-9999;-9999;-9999;-9999;
+1500;0.088313;0.08853;0.08909;0.089781;0.090973;0.092089;0.093539;0.095148;0.096589;0.098135;0.099614;0.10069;0.10061;0.096973;0.079753;-9999;-9999;-9999;-9999;-9999;
+2000;0.084484;0.084814;0.08533;0.085981;0.087091;0.088138;0.089496;0.091016;0.092359;0.09381;0.095212;0.096296;0.096367;0.093346;0.079223;-9999;-9999;-9999;-9999;-9999;
+2500;0.081043;0.081235;0.081714;0.082327;0.083361;0.084341;0.085609;0.087051;0.088329;0.089715;0.09107;0.092128;0.0922;0.089777;0.07817;-9999;-9999;-9999;-9999;-9999;
+3000;0.07775;0.077792;0.078236;0.078812;0.079775;0.080692;0.081877;0.083242;0.084456;0.085778;0.087088;0.088144;0.088329;0.086325;0.076548;-9999;-9999;-9999;-9999;-9999;
+3500;0.074314;0.07448;0.07489;0.075431;0.076328;0.077185;0.078293;0.079583;0.080738;0.081997;0.083258;0.084302;0.084584;0.082966;0.074838;-9999;-9999;-9999;-9999;-9999;
+4000;0.071139;0.071294;0.071671;0.072179;0.073014;0.073814;0.074847;0.076068;0.077162;0.078359;0.079571;0.080603;0.080968;0.07968;0.072878;-9999;-9999;-9999;-9999;-9999;
+4500;0.068092;0.068244;0.068593;0.069127;0.06984;0.070582;0.071537;0.072687;0.073726;0.074861;0.076029;0.077043;0.077476;0.076466;0.07079;-9999;-9999;-9999;-9999;-9999;
+5000;0.065172;0.065307;0.06563;0.066128;0.066795;0.067487;0.068379;0.069464;0.070441;0.071509;0.072625;0.073617;0.074105;0.073337;0.068629;-9999;-9999;-9999;-9999;-9999;
+5500;0.062369;0.062481;0.062779;0.063242;0.063866;0.064512;0.065344;0.066368;0.067294;0.068306;0.069378;0.070339;0.070863;0.070296;0.06639;0.066197;-9999;-9999;-9999;-9999;
+6000;0.059642;0.05976;0.060035;0.060466;0.061049;0.061652;0.062427;0.063394;0.064275;0.065228;0.066256;0.067191;0.067748;0.067355;0.064139;0.065416;-9999;-9999;-9999;-9999;
+6500;0.057032;0.057142;0.057395;0.057796;0.058341;0.058903;0.059625;0.060537;0.061375;0.062246;0.063254;0.064163;0.064743;0.064499;0.061835;-9999;-9999;-9999;-9999;-9999;
+7000;0.054529;0.054551;0.054852;0.055229;0.055737;0.056261;0.056933;0.057792;0.058589;0.059415;0.060371;0.06125;0.061847;0.061727;0.059533;0.049745;-9999;-9999;-9999;-9999;
+7500;0.05213;0.05215;0.052409;0.052759;0.053247;0.053723;0.054347;0.055155;0.055914;0.056698;0.057601;0.058449;0.059055;0.058992;0.057245;0.049465;-9999;-9999;-9999;-9999;
+8000;0.049835;0.049865;0.050063;0.050385;0.050841;0.051283;0.051862;0.052623;0.053344;0.054088;0.054938;0.055756;0.056367;0.056394;0.055027;0.04874;-9999;-9999;-9999;-9999;
+8500;0.047539;0.047622;0.047803;0.048101;0.048526;0.048938;0.049474;0.050192;0.050877;0.051582;0.052381;0.053168;0.053779;0.053882;0.052789;0.047656;-9999;-9999;-9999;-9999;
+9000;0.045387;0.045464;0.04563;0.045906;0.046303;0.046685;0.047181;0.047857;0.048508;0.049163;0.049925;0.050682;0.051287;0.051453;0.050593;0.046452;-9999;-9999;-9999;-9999;
+9500;0.043324;0.043389;0.043541;0.043797;0.044167;0.044521;0.044981;0.045615;0.046233;0.046847;0.047568;0.048294;0.048891;0.049107;0.048444;0.045089;-9999;-9999;-9999;-9999;
+10000;0.041347;0.041361;0.04153;0.041769;0.042114;0.042442;0.042869;0.043464;0.044049;0.044625;0.045304;0.046001;0.046586;0.046843;0.046347;0.043628;-9999;-9999;-9999;-9999;
+10500;0.039413;0.039475;0.039626;0.03982;0.040143;0.040446;0.040842;0.041399;0.041953;0.042493;0.043133;0.043799;0.04437;0.044658;0.044302;0.042101;-9999;-9999;-9999;-9999;
+11000;0.037558;0.037626;0.037764;0.037949;0.03825;0.03853;0.038898;0.039418;0.039941;0.040447;0.041049;0.041686;0.042241;0.042553;0.042313;0.040552;0.033432;-9999;-9999;-9999;
+11500;0.036511;0.036564;0.036698;0.036878;0.037171;0.037443;0.037801;0.038307;0.038815;0.039306;0.039891;0.040508;0.041044;0.041337;0.041082;0.039308;0.032169;-9999;-9999;-9999;
+12000;0.035494;0.035506;0.035646;0.03584;0.036125;0.036388;0.036736;0.03723;0.037722;0.038199;0.038768;0.039366;0.039882;0.040157;0.039887;0.038101;-9999;-9999;-9999;-9999;
+12500;0.034506;0.034517;0.034643;0.034831;0.035109;0.035365;0.035703;0.036184;0.036661;0.037125;0.037678;0.038257;0.038755;0.039011;0.038728;0.036929;-9999;-9999;-9999;-9999;
+13000;0.033515;0.033566;0.033686;0.03385;0.034124;0.034371;0.0347;0.035169;0.035632;0.036082;0.036621;0.037182;0.037661;0.0379;0.037603;0.035792;-9999;-9999;-9999;-9999;
+13500;0.032552;0.032626;0.032741;0.032901;0.033169;0.033408;0.033727;0.034184;0.034633;0.035071;0.035595;0.03614;0.036602;0.036823;0.036511;0.034672;-9999;-9999;-9999;-9999;
+14000;0.031665;0.03171;0.031824;0.031979;0.03224;0.032473;0.032783;0.033229;0.033665;0.034092;0.034601;0.035129;0.035573;0.035779;0.035452;0.0336;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.09708;0.0975;0.098369;0.099131;0.10073;0.10219;0.10391;0.10593;0.10757;0.10913;0.11032;0.11049;0.10801;0.096121;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.093079;0.093143;0.094126;0.094828;0.096304;0.097664;0.099268;0.10117;0.10275;0.10428;0.10551;0.10584;0.10383;0.093874;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.089236;0.089291;0.090047;0.09071;0.092082;0.093351;0.094862;0.096643;0.098131;0.09961;0.10086;0.10131;0.099742;0.091411;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.085283;0.085337;0.086105;0.086826;0.088094;0.089266;0.090671;0.092323;0.093728;0.095152;0.096383;0.096946;0.095736;0.088802;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.081499;0.081888;0.082443;0.083114;0.084293;0.08539;0.086716;0.088278;0.089585;0.090927;0.092109;0.09272;0.091838;0.086047;0.07882;-9999;-9999;-9999;-9999;-9999;
+2500;0.078198;0.078401;0.078916;0.079547;0.080645;0.081671;0.082919;0.084394;0.08563;0.086919;0.088077;0.08872;0.088042;0.08316;0.077907;-9999;-9999;-9999;-9999;-9999;
+3000;0.074857;0.075046;0.075523;0.076117;0.077139;0.078099;0.079273;0.080666;0.081834;0.083065;0.084199;0.084884;0.084419;0.080278;0.076323;-9999;-9999;-9999;-9999;-9999;
+3500;0.071651;0.071692;0.072254;0.072817;0.073769;0.074665;0.075825;0.077086;0.07819;0.079365;0.080468;0.081191;0.080906;0.077429;0.074849;-9999;-9999;-9999;-9999;-9999;
+4000;0.068575;0.068727;0.069132;0.069652;0.07053;0.071367;0.072448;0.073646;0.07469;0.075817;0.076887;0.077636;0.077499;0.07467;0.061528;-9999;-9999;-9999;-9999;-9999;
+4500;0.065615;0.065768;0.066143;0.06663;0.067446;0.068221;0.069222;0.070351;0.071335;0.07241;0.073448;0.07421;0.074202;0.071848;0.061023;-9999;-9999;-9999;-9999;-9999;
+5000;0.062774;0.062921;0.063267;0.063787;0.064485;0.065207;0.066141;0.067211;0.068141;0.069158;0.070152;0.070915;0.070937;0.069077;0.060168;-9999;-9999;-9999;-9999;-9999;
+5500;0.060048;0.060182;0.060502;0.060986;0.061638;0.062311;0.06318;0.064193;0.065076;0.066046;0.067005;0.067769;0.067882;0.066366;0.058994;-9999;-9999;-9999;-9999;-9999;
+6000;0.057423;0.057547;0.057842;0.058293;0.058902;0.05953;0.060339;0.061296;0.062134;0.063056;0.06398;0.064741;0.064933;0.063714;0.057645;-9999;-9999;-9999;-9999;-9999;
+6500;0.054906;0.054931;0.055281;0.055704;0.056272;0.056857;0.057611;0.058514;0.059309;0.060185;0.061074;0.061826;0.062084;0.061119;0.05609;-9999;-9999;-9999;-9999;-9999;
+7000;0.052491;0.052514;0.052823;0.053215;0.053746;0.05429;0.054991;0.055844;0.056596;0.057426;0.058282;0.059022;0.059333;0.058586;0.054436;-9999;-9999;-9999;-9999;-9999;
+7500;0.050132;0.050232;0.050462;0.050823;0.051318;0.051825;0.052477;0.05328;0.053993;0.054778;0.0556;0.056324;0.056678;0.056116;0.052692;-9999;-9999;-9999;-9999;-9999;
+8000;0.047871;0.047978;0.048189;0.048524;0.048985;0.049457;0.050063;0.05082;0.051495;0.052235;0.053024;0.05373;0.054118;0.053713;0.050891;0.051105;-9999;-9999;-9999;-9999;
+8500;0.045705;0.04581;0.046004;0.046315;0.046759;0.047185;0.047746;0.048458;0.049099;0.049796;0.050551;0.051237;0.051649;0.051378;0.049069;0.050219;-9999;-9999;-9999;-9999;
+9000;0.04363;0.043727;0.043905;0.044193;0.044608;0.045001;0.045522;0.046192;0.046801;0.047432;0.048174;0.04884;0.049271;0.049112;0.047216;0.038722;-9999;-9999;-9999;-9999;
+9500;0.041643;0.041724;0.041887;0.042154;0.042541;0.042905;0.043388;0.044018;0.044596;0.045192;0.045895;0.046538;0.04698;0.046915;0.045371;0.038791;-9999;-9999;-9999;-9999;
+10000;0.039741;0.039755;0.039946;0.040196;0.040555;0.040893;0.04134;0.041932;0.042481;0.043045;0.043707;0.044326;0.044776;0.044752;0.043578;0.03825;-9999;-9999;-9999;-9999;
+10500;0.03788;0.037946;0.038083;0.038312;0.038648;0.038962;0.039374;0.039931;0.040453;0.040986;0.041607;0.042203;0.042654;0.042697;0.041759;0.037516;-9999;-9999;-9999;-9999;
+11000;0.036093;0.036159;0.036284;0.036496;0.036809;0.037101;0.037484;0.03801;0.038507;0.03901;0.039592;0.040165;0.040615;0.040712;0.039975;0.03657;-9999;-9999;-9999;-9999;
+11500;0.035097;0.035141;0.035264;0.03547;0.035777;0.03606;0.036432;0.036945;0.037425;0.037913;0.03848;0.039035;0.039465;0.039547;0.038799;0.035364;-9999;-9999;-9999;-9999;
+12000;0.034128;0.03414;0.034275;0.034475;0.034775;0.035049;0.035412;0.03591;0.036375;0.036849;0.037402;0.03794;0.038353;0.038416;0.037658;0.034198;-9999;-9999;-9999;-9999;
+12500;0.033146;0.033202;0.03334;0.033508;0.033802;0.034069;0.034422;0.034906;0.035358;0.035816;0.036358;0.036878;0.037274;0.037319;0.036551;0.033065;-9999;-9999;-9999;-9999;
+13000;0.03222;0.032274;0.032408;0.032571;0.032859;0.033117;0.033461;0.033933;0.034372;0.034815;0.035344;0.035847;0.036227;0.036257;0.035477;0.031964;-9999;-9999;-9999;-9999;
+13500;0.031319;0.031374;0.031502;0.031661;0.031944;0.032193;0.032528;0.03299;0.033415;0.033844;0.03436;0.034847;0.035211;0.035227;0.034436;0.030895;-9999;-9999;-9999;-9999;
+14000;0.030444;0.0305;0.030625;0.030779;0.031057;0.031299;0.031639;0.032075;0.032487;0.032901;0.033405;0.033877;0.034225;0.034227;0.033425;0.029857;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.094116;0.094184;0.095393;0.096163;0.097885;0.099432;0.10114;0.10312;0.10467;0.10596;0.1067;0.10598;0.10086;0.088804;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.090133;0.090197;0.091121;0.091976;0.093564;0.095003;0.096605;0.09847;0.099945;0.1012;0.10201;0.10155;0.097231;0.079202;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.086227;0.086285;0.087176;0.087977;0.089442;0.090789;0.092298;0.094058;0.095452;0.096669;0.097494;0.097247;0.093654;0.078591;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.082551;0.082845;0.083593;0.084224;0.085569;0.086817;0.088225;0.089866;0.091168;0.092357;0.093197;0.093106;0.090116;0.077563;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.079061;0.079113;0.07989;0.080597;0.08186;0.083035;0.084362;0.085918;0.087155;0.088285;0.089109;0.089017;0.086648;0.076105;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.075701;0.075874;0.076431;0.077088;0.078263;0.079359;0.080628;0.082114;0.0833;0.084401;0.085239;0.085276;0.08328;0.0743;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.072381;0.072427;0.073092;0.073716;0.074809;0.075827;0.077023;0.07843;0.079571;0.08067;0.081516;0.081667;0.080038;0.072445;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.069198;0.069426;0.069902;0.070481;0.071496;0.072443;0.073568;0.074893;0.075974;0.077042;0.077927;0.07818;0.07687;0.070459;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.066239;0.066278;0.066845;0.067389;0.068324;0.069201;0.070255;0.071506;0.072529;0.073559;0.074437;0.074789;0.073777;0.068352;0.061689;-9999;-9999;-9999;-9999;-9999;
+4500;0.063397;0.063527;0.063932;0.064438;0.065306;0.066122;0.067104;0.068271;0.069229;0.070218;0.071086;0.071498;0.070734;0.066207;0.060794;-9999;-9999;-9999;-9999;-9999;
+5000;0.060602;0.060754;0.061128;0.061602;0.062409;0.06317;0.064091;0.065192;0.066098;0.067042;0.067886;0.068337;0.067771;0.063978;0.060014;-9999;-9999;-9999;-9999;-9999;
+5500;0.057922;0.058088;0.058433;0.058878;0.059628;0.060337;0.061255;0.062241;0.063095;0.064;0.064828;0.065316;0.064916;0.061738;0.05879;-9999;-9999;-9999;-9999;-9999;
+6000;0.055394;0.055526;0.055844;0.056318;0.056958;0.057617;0.058471;0.059407;0.060214;0.06108;0.061889;0.062405;0.062148;0.0595;0.057664;-9999;-9999;-9999;-9999;-9999;
+6500;0.052969;0.053063;0.053357;0.053796;0.054394;0.055007;0.0558;0.056688;0.057452;0.05828;0.059065;0.059602;0.059466;0.057326;0.047395;-9999;-9999;-9999;-9999;-9999;
+7000;0.050583;0.050697;0.050966;0.051375;0.051932;0.052503;0.053239;0.05408;0.054803;0.055592;0.056353;0.056904;0.056803;0.055108;0.047006;-9999;-9999;-9999;-9999;-9999;
+7500;0.048295;0.048422;0.04867;0.049049;0.049568;0.050099;0.050783;0.051578;0.052262;0.053013;0.053749;0.054307;0.054298;0.052916;0.046355;-9999;-9999;-9999;-9999;-9999;
+8000;0.046137;0.046235;0.046463;0.046815;0.047299;0.047792;0.048427;0.049178;0.049824;0.050539;0.051249;0.051809;0.051878;0.050763;0.04536;-9999;-9999;-9999;-9999;-9999;
+8500;0.044068;0.044135;0.044344;0.04467;0.04512;0.045579;0.046168;0.046876;0.047487;0.048166;0.048848;0.049406;0.04954;0.048653;0.044222;-9999;-9999;-9999;-9999;-9999;
+9000;0.042032;0.042117;0.042309;0.04261;0.043029;0.043455;0.044002;0.044668;0.045246;0.045889;0.046544;0.047097;0.047283;0.046588;0.04297;-9999;-9999;-9999;-9999;-9999;
+9500;0.040083;0.040179;0.040354;0.040633;0.041023;0.041417;0.041924;0.042551;0.043098;0.043705;0.044333;0.044877;0.045105;0.044574;0.041615;-9999;-9999;-9999;-9999;-9999;
+10000;0.038237;0.038311;0.038472;0.038733;0.039113;0.039464;0.039932;0.040521;0.041038;0.041611;0.042213;0.042743;0.043006;0.042612;0.040193;-9999;-9999;-9999;-9999;-9999;
+10500;0.036466;0.036513;0.036661;0.036901;0.037255;0.037582;0.038018;0.038575;0.039064;0.039602;0.04018;0.040696;0.040982;0.040705;0.038738;0.039519;-9999;-9999;-9999;-9999;
+11000;0.034724;0.034786;0.034922;0.035144;0.035473;0.035774;0.036178;0.0367;0.037166;0.037674;0.038229;0.038728;0.039032;0.038815;0.037254;0.038351;-9999;-9999;-9999;-9999;
+11500;0.033761;0.033814;0.033945;0.034161;0.034483;0.034776;0.035169;0.035679;0.036131;0.036626;0.037164;0.037648;0.037934;0.037741;0.03613;0.03718;-9999;-9999;-9999;-9999;
+12000;0.032826;0.032838;0.032996;0.033207;0.033523;0.033806;0.034191;0.03469;0.035127;0.03561;0.03613;0.036598;0.03687;0.03666;0.03504;0.03604;-9999;-9999;-9999;-9999;
+12500;0.031916;0.031956;0.032078;0.032282;0.032593;0.032867;0.033242;0.03373;0.034153;0.034622;0.035126;0.035579;0.035837;0.035612;0.033982;0.034903;-9999;-9999;-9999;-9999;
+13000;0.03101;0.031068;0.031186;0.031385;0.03169;0.031957;0.032322;0.032798;0.033209;0.033663;0.034152;0.03459;0.034833;0.034595;0.032955;-9999;-9999;-9999;-9999;-9999;
+13500;0.030129;0.030206;0.03032;0.030514;0.030814;0.031074;0.031429;0.031893;0.032292;0.032733;0.033207;0.03363;0.033859;0.033609;0.031959;0.032571;-9999;-9999;-9999;-9999;
+14000;0.029315;0.029371;0.029483;0.029671;0.029965;0.030217;0.030563;0.031015;0.031401;0.03183;0.032289;0.032698;0.032914;0.032654;0.030993;0.031651;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.091235;0.091835;0.092878;0.093701;0.095553;0.097207;0.098894;0.10083;0.10226;0.10319;0.10327;0.10109;0.091673;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.087504;0.087568;0.088782;0.089536;0.091249;0.092786;0.094374;0.096203;0.097573;0.098492;0.098713;0.09696;0.088969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.083662;0.08372;0.08487;0.08557;0.087151;0.088581;0.09008;0.09181;0.093097;0.094021;0.094324;0.092935;0.086207;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.080027;0.080346;0.081177;0.08185;0.083322;0.084648;0.086045;0.087661;0.088863;0.089767;0.090148;0.089059;0.083383;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.076621;0.076672;0.077664;0.078281;0.079649;0.080886;0.082209;0.083743;0.084895;0.085787;0.086196;0.085322;0.080607;0.069439;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.073348;0.073551;0.074262;0.074856;0.076129;0.077284;0.078534;0.079986;0.081088;0.081977;0.082444;0.08179;0.077764;0.068546;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.070138;0.070183;0.070912;0.07157;0.072754;0.073832;0.075013;0.076386;0.07744;0.07832;0.078834;0.078375;0.074952;0.060943;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.067057;0.067294;0.067906;0.068418;0.069518;0.070523;0.071639;0.072937;0.073945;0.074811;0.075362;0.075067;0.072176;0.060442;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.064194;0.064234;0.064847;0.065419;0.066433;0.067357;0.068405;0.069632;0.070594;0.071444;0.072023;0.071867;0.069435;0.059516;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.061434;0.061556;0.061996;0.062527;0.063474;0.064355;0.065338;0.066485;0.067391;0.068213;0.068812;0.068776;0.066753;0.058363;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.058674;0.058709;0.059237;0.059739;0.060619;0.061436;0.062372;0.063472;0.064348;0.065149;0.065752;0.06581;0.06414;0.057115;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.056028;0.056227;0.056601;0.057064;0.05788;0.058641;0.059522;0.06056;0.061394;0.062197;0.062821;0.06296;0.06159;0.055663;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.053578;0.053609;0.05406;0.054499;0.055254;0.055962;0.056791;0.057769;0.058558;0.059335;0.059976;0.060146;0.059101;0.054129;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.051228;0.051313;0.051631;0.052038;0.052736;0.053394;0.054174;0.055094;0.05584;0.05659;0.057228;0.057464;0.056664;0.052518;0.047502;-9999;-9999;-9999;-9999;-9999;
+7000;0.048881;0.049002;0.049296;0.049729;0.050321;0.050933;0.051665;0.052531;0.053236;0.053958;0.054589;0.054874;0.054259;0.050794;0.046952;-9999;-9999;-9999;-9999;-9999;
+7500;0.046632;0.046784;0.047053;0.047455;0.048006;0.048574;0.049261;0.050075;0.05074;0.051433;0.052055;0.052379;0.051922;0.049034;0.046073;-9999;-9999;-9999;-9999;-9999;
+8000;0.044549;0.044654;0.044902;0.045273;0.045785;0.046313;0.046992;0.047724;0.048349;0.049013;0.049623;0.049977;0.049654;0.047257;0.045192;-9999;-9999;-9999;-9999;-9999;
+8500;0.042552;0.042609;0.042837;0.04318;0.043656;0.044145;0.044775;0.045469;0.046057;0.046692;0.047288;0.047665;0.047458;0.045475;0.04429;-9999;-9999;-9999;-9999;-9999;
+9000;0.040557;0.040647;0.040855;0.041172;0.041615;0.042069;0.042651;0.043309;0.043863;0.044469;0.045047;0.045442;0.045329;0.043738;0.036544;-9999;-9999;-9999;-9999;-9999;
+9500;0.038641;0.038758;0.038949;0.039245;0.039658;0.040078;0.040617;0.04124;0.041763;0.042339;0.042898;0.043302;0.043269;0.041969;0.036146;-9999;-9999;-9999;-9999;-9999;
+10000;0.03686;0.036938;0.037114;0.037388;0.037771;0.038163;0.038665;0.039257;0.03975;0.040297;0.040835;0.041243;0.04124;0.040229;0.035495;-9999;-9999;-9999;-9999;-9999;
+10500;0.035156;0.035193;0.035354;0.035606;0.035962;0.036324;0.036788;0.037347;0.037815;0.038337;0.038856;0.039266;0.039322;0.038516;0.034699;-9999;-9999;-9999;-9999;-9999;
+11000;0.03345;0.033517;0.033663;0.033897;0.034245;0.034562;0.034989;0.035513;0.035956;0.03645;0.03695;0.037362;0.037468;0.036833;0.033738;-9999;-9999;-9999;-9999;-9999;
+11500;0.032507;0.032587;0.032729;0.032957;0.0333;0.033608;0.034024;0.034536;0.034965;0.035445;0.03593;0.036326;0.036418;0.035769;0.03266;-9999;-9999;-9999;-9999;-9999;
+12000;0.031591;0.031686;0.031822;0.032045;0.032383;0.032682;0.033088;0.033587;0.034002;0.034469;0.034939;0.03532;0.035399;0.034738;0.031612;-9999;-9999;-9999;-9999;-9999;
+12500;0.030748;0.030811;0.030945;0.031162;0.031494;0.031784;0.032179;0.032665;0.033069;0.033522;0.033978;0.034344;0.03441;0.033738;0.030594;-9999;-9999;-9999;-9999;-9999;
+13000;0.029928;0.02994;0.030093;0.030304;0.030629;0.030911;0.031296;0.03177;0.032161;0.032602;0.033045;0.033397;0.033449;0.032767;0.029615;-9999;-9999;-9999;-9999;-9999;
+13500;0.029084;0.029141;0.029267;0.029471;0.02979;0.030063;0.030438;0.0309;0.03128;0.031708;0.032139;0.032476;0.032517;0.031825;0.028655;-9999;-9999;-9999;-9999;-9999;
+14000;0.028263;0.028342;0.028464;0.028662;0.028976;0.02924;0.029605;0.030056;0.030424;0.030841;0.031259;0.031583;0.031612;0.030912;0.027723;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.089431;0.089855;0.091004;0.09186;0.093881;0.095694;0.097345;0.099224;0.10046;0.10075;0.099311;0.093024;0.077926;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.085478;0.085539;0.086686;0.087651;0.089515;0.091201;0.09275;0.094519;0.095721;0.096183;0.095534;0.090201;0.076873;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.081637;0.081694;0.082793;0.083691;0.085403;0.086957;0.088411;0.090083;0.09123;0.091743;0.091434;0.088258;0.075652;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.077989;0.078365;0.079279;0.079973;0.081565;0.083002;0.084387;0.085942;0.087017;0.087536;0.087363;0.08471;0.074701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.074622;0.074672;0.075618;0.076408;0.077886;0.07922;0.080541;0.082019;0.083062;0.083711;0.083473;0.081281;0.072687;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.071401;0.071598;0.072269;0.072996;0.074369;0.075608;0.076857;0.078263;0.079275;0.079944;0.079831;0.078017;0.070594;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.06818;0.068225;0.069033;0.069729;0.071005;0.072161;0.073333;0.07467;0.075651;0.076264;0.076324;0.074844;0.068498;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.065094;0.065136;0.065947;0.066601;0.067789;0.068864;0.069969;0.071237;0.072171;0.072805;0.072954;0.071756;0.066344;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.062311;0.06235;0.063034;0.063636;0.064725;0.065716;0.066755;0.067957;0.06885;0.069496;0.069714;0.068762;0.064161;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.059636;0.059766;0.060253;0.060809;0.06182;0.062743;0.063718;0.064843;0.065684;0.066323;0.066598;0.06586;0.061974;0.053195;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.056942;0.056977;0.057565;0.058095;0.059034;0.059895;0.060816;0.061882;0.062686;0.063324;0.063641;0.063082;0.059797;0.052574;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.05436;0.054393;0.054994;0.055491;0.056363;0.057165;0.058035;0.059045;0.059812;0.060446;0.0608;0.060397;0.05768;0.05182;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.051996;0.052027;0.052529;0.052994;0.053802;0.054548;0.055369;0.056323;0.057056;0.057682;0.058066;0.057797;0.055509;0.046143;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.049722;0.049807;0.050163;0.050597;0.051346;0.05204;0.052814;0.053715;0.054413;0.055029;0.055438;0.055281;0.053366;0.045566;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.047399;0.047426;0.047854;0.048266;0.048965;0.049619;0.050358;0.051215;0.05188;0.052483;0.05291;0.052849;0.051258;0.044715;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.045176;0.045201;0.045646;0.046032;0.046679;0.047286;0.04798;0.048794;0.049441;0.050039;0.05048;0.0505;0.049187;0.043756;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.043148;0.043171;0.043533;0.04394;0.044491;0.045054;0.045704;0.04647;0.047082;0.04767;0.048138;0.048229;0.047159;0.042614;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.041203;0.041258;0.041511;0.041884;0.042395;0.042916;0.043526;0.044246;0.044824;0.045393;0.045862;0.045978;0.045182;0.041401;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.039234;0.039334;0.039566;0.039912;0.040389;0.040871;0.041442;0.042118;0.042662;0.04321;0.043675;0.04384;0.043226;0.040115;0.036642;-9999;-9999;-9999;-9999;-9999;
+9500;0.037345;0.037364;0.037688;0.038011;0.038456;0.038907;0.039446;0.04008;0.040592;0.041118;0.041579;0.041783;0.041318;0.038739;0.036052;-9999;-9999;-9999;-9999;-9999;
+10000;0.035616;0.035701;0.035895;0.03619;0.036603;0.037019;0.037554;0.038124;0.038607;0.039115;0.039569;0.039804;0.039464;0.037328;0.035064;-9999;-9999;-9999;-9999;-9999;
+10500;0.03396;0.033996;0.034175;0.034446;0.034828;0.035213;0.035707;0.036247;0.036701;0.037187;0.037636;0.037896;0.037662;0.035904;0.03461;-9999;-9999;-9999;-9999;-9999;
+11000;0.032292;0.032365;0.032527;0.032776;0.03313;0.033486;0.033941;0.034452;0.034878;0.035341;0.035779;0.036058;0.035912;0.034478;0.033861;-9999;-9999;-9999;-9999;-9999;
+11500;0.031393;0.031478;0.031635;0.031877;0.032224;0.03257;0.033014;0.033511;0.033925;0.034375;0.034798;0.035063;0.034907;0.033462;0.032796;-9999;-9999;-9999;-9999;-9999;
+12000;0.030548;0.030619;0.030769;0.031005;0.031343;0.031681;0.032114;0.032598;0.033;0.033437;0.033846;0.034098;0.033931;0.032477;0.031759;-9999;-9999;-9999;-9999;-9999;
+12500;0.029726;0.029781;0.029929;0.030158;0.030489;0.030818;0.03124;0.031711;0.032102;0.032526;0.032922;0.033161;0.032983;0.031522;0.030753;-9999;-9999;-9999;-9999;-9999;
+13000;0.028929;0.02897;0.029113;0.029335;0.029685;0.029982;0.030391;0.03085;0.03123;0.031642;0.032025;0.032251;0.032064;0.030594;0.029776;-9999;-9999;-9999;-9999;-9999;
+13500;0.028117;0.028183;0.028321;0.028537;0.02888;0.029169;0.029567;0.030014;0.030384;0.030783;0.031154;0.031368;0.031171;0.029695;0.02885;-9999;-9999;-9999;-9999;-9999;
+14000;0.027329;0.027341;0.02755;0.027762;0.028099;0.028379;0.028767;0.029203;0.029562;0.02995;0.030309;0.030513;0.030304;0.028821;0.027903;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.087406;0.087468;0.089061;0.089935;0.091879;0.093685;0.095032;0.096384;0.096746;0.095827;0.092068;0.081661;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.083675;0.083733;0.084971;0.08603;0.087811;0.089537;0.090834;0.092159;0.092603;0.091941;0.088831;0.079859;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.080154;0.080207;0.081381;0.082475;0.084001;0.085636;0.086871;0.088139;0.088657;0.088202;0.085659;0.077896;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.076608;0.076659;0.077807;0.078724;0.080487;0.081973;0.083172;0.084407;0.084948;0.084641;0.082528;0.075847;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.073204;0.073252;0.074251;0.075113;0.076737;0.078203;0.079473;0.080817;0.081417;0.081272;0.079559;0.073713;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.069951;0.07013;0.070868;0.07166;0.073166;0.07453;0.075734;0.077109;0.077963;0.077938;0.076671;0.071568;0.059731;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.066675;0.066718;0.06761;0.068362;0.069762;0.071028;0.072173;0.073471;0.074311;0.074564;0.073809;0.069439;0.05889;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.063542;0.06391;0.064534;0.065213;0.066513;0.067692;0.068773;0.070005;0.070818;0.071128;0.070764;0.067274;0.05795;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.060819;0.060857;0.061602;0.062247;0.063428;0.064513;0.065533;0.066695;0.067491;0.067841;0.067617;0.065359;0.056925;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.058202;0.058306;0.058838;0.059426;0.060517;0.061532;0.062488;0.063569;0.064324;0.064697;0.064589;0.062712;0.055714;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.055485;0.055519;0.056162;0.056725;0.057737;0.058678;0.059588;0.060612;0.061338;0.061739;0.061723;0.060164;0.054167;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.052885;0.052917;0.053605;0.054137;0.055077;0.055946;0.056814;0.057783;0.058481;0.058902;0.058967;0.057702;0.052595;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.050587;0.050618;0.051165;0.051658;0.05253;0.053332;0.054155;0.055076;0.05575;0.056184;0.056314;0.055282;0.05095;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.048381;0.048444;0.04883;0.049283;0.050091;0.050838;0.051609;0.052484;0.053134;0.053584;0.053721;0.052933;0.049269;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.046084;0.04611;0.046576;0.047008;0.047756;0.04845;0.049175;0.050006;0.050626;0.051087;0.051269;0.050652;0.047562;0.040699;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.043886;0.043911;0.044422;0.044828;0.045521;0.046165;0.046848;0.047635;0.048226;0.048692;0.048908;0.048441;0.045842;0.0403;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.041941;0.041964;0.042361;0.042738;0.043379;0.043977;0.04462;0.045364;0.045928;0.046391;0.046638;0.046299;0.044173;0.039727;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.040073;0.04011;0.040388;0.040786;0.041328;0.041881;0.042487;0.043189;0.043726;0.044183;0.044457;0.044226;0.042452;0.035194;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.038103;0.038124;0.038461;0.038839;0.03935;0.039876;0.040445;0.041107;0.041617;0.042067;0.042361;0.042223;0.040754;0.034735;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.03622;0.036239;0.03661;0.03696;0.037435;0.037919;0.038465;0.039103;0.039598;0.040039;0.040348;0.040289;0.03908;0.034106;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.034541;0.034633;0.034848;0.035163;0.035604;0.036051;0.036562;0.03716;0.037633;0.038078;0.038412;0.038417;0.037427;0.033338;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.032934;0.032959;0.033155;0.033445;0.033854;0.034267;0.034744;0.035305;0.035752;0.036182;0.036525;0.036564;0.035813;0.032423;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.031281;0.031358;0.031535;0.031803;0.032182;0.032562;0.033008;0.033534;0.033953;0.034368;0.034712;0.034798;0.03422;0.031441;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.030452;0.030467;0.030679;0.03094;0.03131;0.031682;0.032116;0.032628;0.033036;0.033438;0.03377;0.033845;0.033259;0.03047;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.029646;0.02966;0.029848;0.030102;0.030464;0.030827;0.03125;0.031748;0.032146;0.032536;0.032857;0.032949;0.032325;0.029527;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.028808;0.028881;0.029042;0.029288;0.029643;0.029997;0.030409;0.030894;0.031278;0.031655;0.031965;0.032049;0.031419;0.028612;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.027994;0.028103;0.028259;0.028497;0.028845;0.02919;0.029593;0.030062;0.030433;0.030798;0.031096;0.031177;0.030539;0.027723;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.027276;0.027346;0.027499;0.02773;0.02807;0.028407;0.028797;0.029252;0.029613;0.029966;0.030253;0.030297;0.029677;0.026861;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.026578;0.02659;0.026759;0.026984;0.027352;0.027647;0.028023;0.028466;0.028817;0.02916;0.029435;0.029469;0.028848;0.026023;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.084654;0.085235;0.086693;0.087657;0.08974;0.091442;0.09248;0.093433;0.093064;0.090397;0.083402;0.068276;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.081077;0.08151;0.082851;0.083562;0.085688;0.087305;0.088328;0.089289;0.089105;0.086888;0.080908;0.067399;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.077648;0.0777;0.079141;0.079968;0.081944;0.083457;0.084455;0.085384;0.085312;0.083485;0.078393;0.066396;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.074354;0.074774;0.075888;0.076555;0.078389;0.079827;0.080822;0.081756;0.081792;0.080252;0.07585;0.065233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.071189;0.071605;0.072636;0.073283;0.074981;0.076341;0.077329;0.078264;0.078413;0.077169;0.073416;0.063947;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.068226;0.068269;0.06932;0.070146;0.071655;0.072998;0.073972;0.074903;0.075041;0.074162;0.07099;0.062576;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.065323;0.065363;0.066334;0.067157;0.068477;0.069789;0.070739;0.071669;0.071897;0.071231;0.068563;0.061219;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.062534;0.062572;0.063459;0.064264;0.065463;0.066706;0.067631;0.068553;0.068858;0.068379;0.066164;0.059769;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.059792;0.059828;0.060682;0.061391;0.062581;0.063749;0.064645;0.065552;0.065925;0.065605;0.063799;0.058303;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.057043;0.057077;0.057869;0.058524;0.059735;0.060841;0.061775;0.062688;0.063104;0.062917;0.061465;0.056701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.054414;0.054446;0.055316;0.055792;0.056909;0.057936;0.058822;0.059831;0.060421;0.060358;0.059198;0.055109;0.045573;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.051893;0.051924;0.052605;0.053178;0.054213;0.055167;0.056007;0.05696;0.057555;0.057698;0.056972;0.053476;0.045002;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.049479;0.049695;0.050159;0.050683;0.051639;0.052525;0.053321;0.054221;0.054803;0.054991;0.054624;0.05181;0.044345;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.047166;0.047382;0.047805;0.048295;0.04918;0.050002;0.050756;0.051608;0.052173;0.052395;0.052147;0.05033;0.043583;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.044952;0.045169;0.045558;0.046009;0.04683;0.047591;0.048305;0.04911;0.04966;0.049911;0.049764;0.048248;0.042566;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.042899;0.042923;0.043399;0.043831;0.044585;0.045291;0.045965;0.046727;0.047258;0.047532;0.04747;0.04622;0.041421;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.040931;0.041022;0.041353;0.041747;0.04244;0.043095;0.043732;0.044451;0.044963;0.045255;0.045264;0.044244;0.040202;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.038945;0.038966;0.039372;0.03975;0.040393;0.040998;0.041601;0.042279;0.042769;0.043076;0.043104;0.042319;0.038926;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.037046;0.037209;0.037489;0.037887;0.038429;0.038988;0.039561;0.040204;0.040673;0.040991;0.041072;0.040449;0.037599;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.035314;0.035333;0.035674;0.036048;0.036551;0.037065;0.037604;0.038211;0.038666;0.038991;0.039114;0.03863;0.036245;0.031053;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.033656;0.033714;0.03395;0.034287;0.034755;0.035231;0.035732;0.036305;0.036739;0.037072;0.037226;0.036862;0.034878;0.030765;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.031985;0.032001;0.032288;0.032605;0.033037;0.033478;0.033947;0.034487;0.034896;0.035233;0.035415;0.035154;0.033554;0.030289;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.03039;0.030405;0.0307;0.030999;0.031397;0.031804;0.032244;0.032752;0.03314;0.033474;0.033677;0.033507;0.032184;0.026724;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.029628;0.029643;0.02988;0.030169;0.030559;0.030954;0.031382;0.031875;0.032253;0.032575;0.032767;0.032594;0.031241;0.025818;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.028887;0.028901;0.029083;0.029363;0.029744;0.030128;0.030545;0.031025;0.031392;0.031704;0.031885;0.031707;0.03035;0.024916;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.02805;0.02813;0.02831;0.028579;0.028951;0.029326;0.029732;0.0302;0.03056;0.030858;0.03103;0.030842;0.029487;0.024042;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.027238;0.027383;0.027557;0.027817;0.02818;0.028547;0.028945;0.029402;0.029751;0.030037;0.030199;0.030003;0.028649;0.023194;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.02658;0.026592;0.02682;0.027059;0.027432;0.027792;0.028183;0.028628;0.028966;0.029241;0.029394;0.029189;0.027836;0.025318;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.025874;0.025948;0.02611;0.026342;0.026705;0.027058;0.027442;0.027876;0.028204;0.028469;0.028612;0.028398;0.027046;0.02451;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.082812;0.083435;0.084934;0.086456;0.088427;0.089943;0.090681;0.091065;0.089388;0.084103;0.072401;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.079153;0.079206;0.081137;0.082404;0.084289;0.085762;0.08668;0.086942;0.085603;0.08116;0.070881;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.075691;0.07627;0.077504;0.078705;0.080515;0.081937;0.08261;0.083092;0.081975;0.078193;0.069295;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.072502;0.072548;0.074072;0.075173;0.076908;0.078274;0.07897;0.079508;0.078635;0.075365;0.067562;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.069437;0.069788;0.071015;0.071628;0.073461;0.074775;0.07548;0.076066;0.075406;0.072639;0.065848;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.066366;0.066408;0.067705;0.06843;0.070166;0.071421;0.072132;0.072757;0.072283;0.069956;0.064072;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.06342;0.06385;0.064889;0.065424;0.067014;0.068212;0.068933;0.069578;0.069264;0.067324;0.062243;0.0513;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.060724;0.060761;0.061875;0.062505;0.063999;0.065141;0.06586;0.066523;0.066346;0.064746;0.060378;0.050583;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.058138;0.058173;0.05915;0.05983;0.061115;0.062198;0.062914;0.063588;0.063529;0.062224;0.058497;0.049791;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.055652;0.055684;0.056554;0.05724;0.058401;0.059443;0.060134;0.060796;0.060824;0.059787;0.05665;0.048895;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.053262;0.053293;0.054088;0.054714;0.05581;0.056811;0.057494;0.058157;0.058265;0.057446;0.054788;0.047953;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.050958;0.050986;0.051715;0.052349;0.053316;0.05428;0.054954;0.055616;0.055713;0.055164;0.052944;0.046963;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.048744;0.048955;0.04944;0.050047;0.050932;0.051848;0.052511;0.053164;0.053328;0.052929;0.051083;0.045897;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.046544;0.046569;0.047219;0.047828;0.048642;0.049509;0.050161;0.050803;0.051022;0.050752;0.049234;0.044754;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.044305;0.044328;0.044925;0.045442;0.046347;0.047185;0.0479;0.04853;0.048794;0.048632;0.0474;0.043562;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.042164;0.042187;0.042738;0.043219;0.04406;0.044829;0.045497;0.046227;0.046641;0.046569;0.04559;0.042319;0.034616;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.040113;0.040134;0.040655;0.041101;0.041876;0.042595;0.043218;0.04391;0.044327;0.044456;0.043807;0.041032;0.034249;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.038146;0.038309;0.038664;0.039068;0.039788;0.040464;0.041046;0.041702;0.042115;0.042237;0.041907;0.039708;0.033786;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.036303;0.036322;0.036747;0.037193;0.037791;0.038416;0.038972;0.039601;0.040008;0.04016;0.039923;0.038472;0.033166;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.034539;0.034645;0.034933;0.035328;0.03589;0.036466;0.036998;0.037589;0.037988;0.038167;0.038008;0.03681;0.032326;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.032853;0.032936;0.033195;0.03356;0.034079;0.034608;0.03511;0.035671;0.036058;0.036256;0.036168;0.03519;0.031452;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.031204;0.03122;0.031536;0.031879;0.032353;0.03284;0.033311;0.033841;0.034215;0.034424;0.034403;0.033623;0.030504;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.029655;0.02967;0.02996;0.030274;0.030707;0.031157;0.0316;0.032098;0.032456;0.032676;0.032708;0.032087;0.02951;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.028895;0.028909;0.02917;0.029474;0.029903;0.030344;0.030776;0.031262;0.03161;0.031824;0.03184;0.031212;0.028626;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.028113;0.028127;0.028401;0.028699;0.029122;0.029554;0.029977;0.030446;0.030783;0.030989;0.030969;0.030364;0.027779;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.027354;0.027464;0.027662;0.027945;0.028365;0.028789;0.029197;0.029652;0.029977;0.030175;0.030155;0.02954;0.026957;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.026615;0.026748;0.026941;0.027203;0.027632;0.028043;0.02844;0.02888;0.029196;0.029384;0.029357;0.02874;0.02616;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.025965;0.025977;0.026237;0.0265;0.026917;0.027316;0.027702;0.028131;0.028438;0.028618;0.028582;0.027964;0.025386;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.025333;0.025344;0.025562;0.025817;0.026217;0.026609;0.026986;0.027405;0.027702;0.027874;0.027831;0.027212;0.024633;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.082871;0.082918;0.084789;0.086561;0.088454;0.090114;0.090308;0.089728;0.085719;0.076256;0.059342;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.078908;0.078952;0.080865;0.082396;0.084193;0.085773;0.085735;0.085536;0.082127;0.073975;0.058639;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.075154;0.075361;0.077075;0.078676;0.080284;0.08174;0.082022;0.081676;0.078719;0.071676;0.058029;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.071652;0.071694;0.073417;0.074862;0.07652;0.077943;0.078262;0.07805;0.075563;0.069431;0.057149;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.068306;0.068346;0.070033;0.071308;0.07289;0.07422;0.074694;0.074501;0.072473;0.067218;0.056151;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.065106;0.065624;0.066774;0.06795;0.069454;0.070569;0.07122;0.071158;0.06952;0.065002;0.055124;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.062049;0.062594;0.063709;0.06476;0.066192;0.067329;0.067923;0.067946;0.066672;0.06277;0.054119;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.05943;0.059464;0.060772;0.061721;0.063088;0.064183;0.064776;0.064912;0.063883;0.060559;0.053034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.056913;0.057172;0.058046;0.058854;0.060144;0.061178;0.061675;0.061995;0.061189;0.05837;0.05187;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.054355;0.054385;0.055463;0.056198;0.057413;0.058367;0.05886;0.05922;0.058609;0.056258;0.050625;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.051898;0.052268;0.053114;0.05365;0.05482;0.055737;0.056232;0.056633;0.05617;0.054213;0.049314;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.049692;0.049719;0.050636;0.051112;0.052334;0.053211;0.053709;0.054139;0.053806;0.052167;0.047947;0.038892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.047573;0.047734;0.048432;0.048822;0.049946;0.050781;0.051284;0.051731;0.051517;0.050156;0.046537;0.038427;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.045376;0.0454;0.046144;0.046617;0.047683;0.048448;0.048954;0.049416;0.049301;0.048182;0.045095;0.037876;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.043271;0.043294;0.044014;0.044504;0.045441;0.046209;0.046717;0.047188;0.047157;0.04625;0.043666;0.037259;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.04139;0.041411;0.042004;0.042506;0.0433;0.044064;0.044569;0.045045;0.045085;0.044362;0.042191;0.036562;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.039575;0.039674;0.040079;0.040555;0.041283;0.042008;0.042506;0.042983;0.043082;0.042519;0.040709;0.035851;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.037692;0.03771;0.038192;0.038667;0.039345;0.040033;0.040524;0.040999;0.041095;0.040725;0.03922;0.035044;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.035889;0.036052;0.036403;0.036817;0.037483;0.038131;0.038611;0.039085;0.039229;0.038968;0.03774;0.034168;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.034072;0.034088;0.034525;0.03492;0.035592;0.036229;0.036737;0.037242;0.037424;0.037257;0.036273;0.033236;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.032339;0.032467;0.032767;0.033121;0.03373;0.03432;0.034804;0.03535;0.035649;0.035596;0.034826;0.032257;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.030684;0.030699;0.03107;0.03141;0.031967;0.032506;0.032973;0.033481;0.033775;0.033848;0.033397;0.031235;0.025969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.029106;0.029224;0.029474;0.029826;0.030296;0.030787;0.031227;0.031706;0.031999;0.03207;0.031817;0.030483;0.025622;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.02839;0.028403;0.028715;0.029062;0.02952;0.030003;0.030436;0.030901;0.031183;0.031277;0.030983;0.029627;0.024817;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.027649;0.027662;0.027977;0.028316;0.028767;0.029245;0.029666;0.030119;0.030393;0.030477;0.030175;0.02882;0.024046;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.026929;0.027048;0.027272;0.027561;0.028036;0.028511;0.028915;0.02936;0.029624;0.029702;0.029391;0.028036;0.023274;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.026229;0.02636;0.026578;0.026863;0.027333;0.027797;0.02819;0.028624;0.028879;0.028945;0.028631;0.027276;0.022543;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.025592;0.025603;0.025896;0.026185;0.026649;0.027101;0.027487;0.02791;0.028157;0.028181;0.027895;0.026538;0.021834;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.024973;0.02504;0.02525;0.025528;0.025982;0.026425;0.026805;0.027218;0.027458;0.027473;0.027181;0.025821;0.021144;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/temperature_limit.csv b/engine/test/stubs/V2527-A5/temperature_limit.csv
new file mode 100644
index 00000000..b5f2fe89
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/temperature_limit.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;837.02;837.3;837.61;838.16;839.06;840.36;842.21;844.6;847.53;851.1;855.55;860.5;866.12;872.4;879.32;886.85;894.89;903.24;911.64;920;
+500;832.79;833.2;833.52;834.09;834.95;836.21;837.91;840.04;842.78;846.17;850.18;854.86;860.22;866.26;872.97;880.33;888.3;896.74;905.4;914.05;
+1000;828.65;829.04;829.39;830.01;830.95;832.27;833.95;836;838.5;841.54;845.15;849.5;854.52;860.28;866.74;873.88;881.69;890.08;898.9;907.81;
+1500;824.51;824.65;825.06;825.77;826.82;828.24;829.97;832.05;834.53;837.4;840.88;844.64;849.13;854.51;860.67;867.55;875.12;883.37;892.16;901.3;
+2000;819.83;819.99;820.46;821.26;822.44;823.97;825.83;828.03;830.59;833.39;836.74;840.33;844.37;849.11;854.82;861.37;868.68;876.69;885.35;894.52;
+2500;814.83;815.02;815.55;816.46;817.76;819.4;821.4;823.76;826.48;829.38;832.49;836.17;840.04;844.37;849.43;855.42;862.38;870.12;878.55;887.62;
+3000;809.46;809.67;810.26;811.27;812.68;814.48;816.65;819.19;822.06;825.13;828.4;832.1;835.86;839.99;844.61;850.02;856.41;863.69;871.85;880.7;
+3500;803.86;804.08;804.71;805.77;807.25;809.15;811.48;814.25;817.3;820.57;824.03;827.92;831.73;835.78;840.17;845.1;850.88;857.67;865.29;873.85;
+4000;797.97;798.21;798.89;800.02;801.56;803.55;805.99;808.89;812.14;815.65;819.34;823.46;827.48;831.59;835.92;840.57;845.81;851.98;859.19;867.21;
+4500;791.99;792.57;793.24;794.35;795.9;797.89;800.32;803.24;806.6;810.29;814.5;818.66;822.93;827.28;831.68;836.27;841.18;846.75;853.35;860.97;
+5000;786.21;786.74;787.44;788.59;790.2;792.27;794.82;797.82;801.14;804.73;808.99;813.45;818.02;822.64;827.3;831.97;836.8;842;847.91;854.95;
+5500;780.4;780.65;781.37;782.57;784.24;786.39;789.03;792.12;795.59;799.4;803.68;808.04;812.68;817.64;822.6;827.53;832.45;837.52;843;849.31;
+6000;774.83;774.6;775.05;776.28;778.01;780.24;782.98;786.16;789.73;793.68;798.19;802.75;807.5;812.44;817.52;822.78;827.97;833.13;838.42;844.2;
+6500;768.84;769.04;769.61;770.25;771.86;773.95;776.63;779.91;783.6;787.86;792.33;797.11;802.11;807.25;812.54;817.85;823.17;828.59;833.97;839.49;
+7000;764.36;764.55;765.13;766.07;767.42;769.16;771.03;774.07;777.52;781.57;786.18;791.12;796.34;801.76;807.26;812.88;818.47;823.88;829.4;834.96;
+7500;759.91;760.09;760.66;761.6;762.93;764.67;766.83;769.36;771.97;776.07;780.4;785.02;790.23;795.87;801.68;807.52;813.45;819.3;824.91;830.35;
+8000;755.56;755.37;756.19;757.14;758.47;760.2;762.32;764.81;767.71;770.97;774.8;779.58;784.64;789.91;795.69;801.86;808.03;814.24;820.31;826.09;
+8500;751.15;750.98;751.73;752.62;753.95;755.69;757.81;760.31;763.13;766.36;770.1;773.84;779.07;784.55;790.21;796.01;802.29;808.75;815.22;821.49;
+9000;746.71;746.77;747.31;748.22;749.52;751.21;753.27;755.71;758.55;761.79;765.44;769.41;773.77;778.86;784.74;790.76;796.9;803.01;809.69;816.39;
+9500;742.33;742.25;742.92;743.8;745.09;746.74;748.78;751.19;753.99;757.15;760.81;764.7;768.99;773.66;778.94;785.2;791.57;798.02;804.37;810.81;
+10000;738.12;738.28;738.79;739.64;740.84;742.34;744.26;746.94;749.7;752.82;756.29;760.11;764.29;768.83;773.8;779.29;785.91;792.61;799.35;805.91;
+10500;733.92;734.28;734.79;735.63;736.81;738.32;740.17;742.35;745.23;748.32;751.76;755.54;759.68;764.15;768.98;774.19;779.9;786.86;793.87;800.86;
+11000;730.14;730.32;730.82;731.65;732.81;734.3;736.11;738.26;740.74;743.78;747.22;750.98;755.07;759.49;764.26;769.36;774.84;780.75;788.04;795.34;
+11500;733.16;733.42;733.92;734.76;735.92;737.41;739.24;741.39;743.88;746.69;750.38;754.15;758.26;762.7;767.48;772.61;778.11;784.03;791.25;798.49;
+12000;736.17;736.55;737.05;737.89;739.06;740.55;742.38;744.55;747.05;749.87;753.56;757.34;761.47;765.93;770.73;775.88;781.4;787.35;794.61;801.84;
+12500;739.53;739.7;740.21;741.05;742.22;743.73;745.57;747.74;750.25;753.08;756.77;760.57;764.72;769.19;774.01;779.17;784.72;790.7;798;805.19;
+13000;742.88;742.73;743.4;744.24;745.42;746.93;748.77;750.95;753.46;756.32;760;763.83;767.98;772.48;777.32;782.5;788.08;794.07;801.38;808.56;
+13500;745.95;746.12;746.62;747.46;748.64;750.15;752;754.19;756.72;759.58;763.27;767.11;771.28;775.8;780.66;785.86;791.46;797.49;804.76;811.97;
+14000;749.33;749.52;750.03;750.87;752.03;753.53;755.36;757.53;760.02;762.86;766.56;770.42;774.61;779.15;784.03;789.25;794.87;800.91;808.16;815.4;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;804.1;804.18;804.59;805.27;806.32;807.8;809.77;812.3;815.53;819.5;824.28;829.33;834.69;840.38;846.51;853.06;860.06;867.68;876.09;885.24;
+500;798.2;798.08;798.5;799.2;800.21;801.64;803.55;806.06;809.37;813.62;818.29;823.52;829.06;834.82;840.9;847.41;854.32;861.71;869.78;878.66;
+1000;791.86;792.02;792.42;793.11;794.11;795.56;797.53;800.12;803.38;807.35;812.2;817.47;823.16;829.12;835.27;841.73;848.6;855.87;863.65;872.18;
+1500;785.54;786.13;786.52;787.18;788.16;789.58;791.52;794.11;797.46;801.65;806.26;811.41;817.05;823.17;829.52;836.02;842.84;850.07;857.69;865.88;
+2000;780.34;780.46;780.84;781.48;782.42;783.78;785.69;788.24;791.54;795.7;800.35;805.46;811.05;817.04;823.5;830.21;837.06;844.24;851.81;859.78;
+2500;775.12;775.09;775.46;776.06;776.95;778.24;780.08;782.58;785.77;789.81;794.36;799.48;805.03;811.03;817.43;824.15;831.2;838.36;845.88;853.78;
+3000;769.78;770.13;770.49;771.03;771.85;773.05;774.79;777.19;780.21;783.86;788.47;793.43;798.97;804.93;811.35;818.13;825.21;832.45;839.93;847.78;
+3500;765.46;765.6;765.89;766.4;767.17;768.29;769.89;772.12;774.92;778.38;782.76;787.51;792.86;798.8;805.17;811.98;819.13;826.53;833.94;841.75;
+4000;761.33;761.42;761.68;762.13;762.8;763.9;765.44;767.47;770.03;773.21;777.29;781.78;786.89;792.62;798.96;805.72;812.9;820.41;828.09;835.73;
+4500;757.07;757.69;757.95;758.43;759.15;760.19;761.61;763.38;765.56;768.46;772.16;776.31;781.12;786.59;792.7;799.43;806.56;814.11;821.94;829.88;
+5000;753.78;753.88;754.18;754.7;755.49;756.62;758.08;759.85;761.96;764.5;767.44;771.21;775.64;780.77;786.59;793.08;800.19;807.68;815.57;823.71;
+5500;749.69;749.82;750.17;750.77;751.68;752.93;754.47;756.31;758.47;760.94;763.69;767.05;770.78;775.25;780.7;786.88;793.74;801.21;809.07;817.28;
+6000;745.37;745.51;745.91;746.6;747.62;748.97;750.62;752.59;754.88;757.41;760.12;763.29;766.72;770.68;775.37;780.9;787.43;794.67;802.49;810.69;
+6500;741.35;741.83;742.23;742.92;743.93;745.21;746.76;748.63;751.05;753.69;756.52;759.51;762.96;766.61;770.81;775.76;781.54;788.25;795.86;804.01;
+7000;737.78;737.94;738.38;739.15;740.24;741.64;743.35;745.38;747.64;750.06;752.68;756.05;759.33;762.83;766.7;771.14;776.38;782.48;789.38;797.29;
+7500;733.62;733.79;734.28;735.11;736.27;737.76;739.59;741.77;744.22;746.85;749.6;752.71;755.73;759.17;762.9;766.99;771.67;777.21;783.64;790.89;
+8000;729.21;729.39;729.93;730.81;732.03;733.61;735.55;737.84;740.42;743.23;746.23;749.55;752.76;756.06;759.34;763.14;767.45;772.39;778.23;785.01;
+8500;724.84;724.77;725.32;726.24;727.51;729.17;731.22;733.64;736.32;739.27;742.44;746.03;749.51;753.01;756.57;760.06;763.63;768.08;773.28;779.45;
+9000;719.73;719.96;720.54;721.5;722.84;724.57;726.68;729.16;731.94;735.02;738.55;742.12;745.85;749.66;753.43;757.24;760.93;764.67;768.88;774.35;
+9500;714.89;714.7;715.47;716.48;717.88;719.68;721.9;724.48;727.37;730.55;734.2;737.9;741.83;745.88;750;754.04;758.07;761.94;765.85;770.18;
+10000;710.28;710.44;710.95;711.79;712.99;714.5;716.8;719.48;722.5;725.99;729.63;733.5;737.56;741.77;746.11;750.53;754.82;759.05;763.09;767.16;
+10500;705.66;706.16;706.67;707.51;708.7;710.24;712.17;714.2;717.3;720.93;724.72;728.77;733.02;737.44;741.97;746.57;751.22;755.75;760.17;764.35;
+11000;701.72;701.89;702.4;703.24;704.42;705.96;707.87;710.1;712.69;715.41;719.49;723.7;728.15;732.77;737.53;742.38;747.26;752.11;756.84;761.41;
+11500;704.63;704.87;705.37;706.21;707.4;708.96;710.86;713.11;715.71;718.45;722.55;726.78;731.25;735.89;740.67;745.54;750.43;755.3;759.96;764.46;
+12000;707.55;707.86;708.37;709.22;710.4;711.96;713.89;716.15;718.76;721.5;725.63;729.88;734.37;739.03;743.83;748.71;753.62;758.51;763.19;767.69;
+12500;710.71;710.89;711.4;712.25;713.45;715.01;716.94;719.21;721.82;724.59;728.74;733.02;737.52;742.21;747.02;751.93;756.85;761.75;766.44;770.95;
+13000;713.9;713.94;714.45;715.31;716.51;718.08;720.02;722.29;724.93;727.71;731.88;736.18;740.7;745.41;750.24;755.16;760.1;765.02;769.73;774.24;
+13500;716.9;717.08;717.58;718.43;719.62;721.17;723.12;725.42;728.07;730.85;735.05;739.37;743.91;748.64;753.49;758.43;763.39;768.32;773.05;777.56;
+14000;720.18;720.36;720.87;721.72;722.92;724.48;726.41;728.69;731.3;734.23;738.25;742.59;747.16;751.89;756.77;761.73;766.7;771.66;776.38;780.91;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;777.18;777.29;777.5;777.87;778.48;779.35;780.54;782.14;784.21;787.31;791.33;796.17;801.81;808.02;814.77;822.02;829.76;838;846.76;856;
+500;771.64;771.81;772.03;772.41;772.99;773.81;774.93;776.45;778.5;781.68;785.41;790.11;795.69;801.92;808.59;815.76;823.42;831.57;840.21;849.37;
+1000;766.19;766.3;766.53;766.94;767.54;768.4;769.56;771.11;773.1;775.84;779.68;784.26;789.61;795.74;802.41;809.5;817.07;825.14;833.67;842.72;
+1500;760.63;760.72;760.97;761.41;762.06;762.96;764.18;765.79;767.85;770.55;774.33;778.67;783.74;789.61;796.17;803.24;810.73;818.7;827.15;836.07;
+2000;754.89;755;755.28;755.77;756.48;757.45;758.74;760.43;762.59;765.31;769.13;773.4;778.28;783.74;789.95;796.93;804.38;812.26;820.61;829.43;
+2500;749.34;749.15;749.35;749.89;750.69;751.78;753.2;755;757.29;760.12;763.97;768.21;772.99;778.3;784.13;790.61;798;805.82;814.08;822.81;
+3000;742.77;742.89;743.23;743.81;744.67;745.85;747.41;749.4;751.86;754.88;758.78;763.03;767.77;772.95;778.61;784.81;791.68;799.37;807.54;816.16;
+3500;736.33;736.64;737;737.61;738.51;739.76;741.41;743.53;746.2;749.48;753.5;757.81;762.55;767.66;773.19;779.2;785.77;793.05;801;809.52;
+4000;730.71;730.83;731.16;731.73;732.58;733.78;735.39;737.5;740.31;743.91;748.02;752.49;757.27;762.38;767.83;773.7;780.06;787;794.69;802.95;
+4500;725.14;724.95;725.41;725.98;726.84;728.04;729.68;731.84;734.63;738.09;742.28;746.93;751.88;757.03;762.48;768.27;774.47;781.18;788.5;796.59;
+5000;719.34;719.45;719.77;720.33;721.17;722.37;724.01;726.2;729.03;732.55;736.8;741.37;746.25;751.56;757.07;762.85;768.96;775.49;782.54;790.25;
+5500;713.61;714.02;714.32;714.86;715.67;716.84;718.46;720.64;723.49;726.97;731.25;735.85;740.83;746.09;751.56;757.36;763.46;769.88;776.74;784.14;
+6000;709.31;709.4;709.63;710.03;710.68;711.64;713.11;715.25;718.09;721.46;725.68;730.24;735.23;740.58;746.22;752.02;757.91;764.31;771.03;778.21;
+6500;705.48;705.54;705.74;706.1;706.69;707.58;708.87;710.7;713.14;716.12;720.18;724.62;729.54;734.9;740.62;746.61;752.72;758.88;765.37;772.39;
+7000;702.13;702.19;702.35;702.65;703.15;703.93;705.12;706.86;709.1;711.87;715.46;719.39;723.87;729.14;734.86;740.93;747.25;753.65;760.07;766.71;
+7500;698.63;699.2;699.36;699.64;700.1;700.81;701.89;703.44;705.44;707.98;711.29;714.95;719.14;723.85;729.04;735.09;741.49;748.13;754.78;761.45;
+8000;696.33;696.39;696.55;696.85;697.32;698.04;699.11;700.52;702.27;704.51;707.48;710.82;714.71;719.17;724.16;729.67;735.6;742.3;749.22;756.1;
+8500;693.69;693.65;693.84;694.18;694.7;695.47;696.53;697.89;699.57;701.59;703.98;707.08;710.6;714.72;719.44;724.73;730.54;736.77;743.31;750.51;
+9000;690.65;690.74;690.98;691.4;692.04;692.95;694.1;695.47;697.09;699;701.17;703.88;706.94;710.64;714.97;719.95;725.52;731.63;738.15;744.93;
+9500;687.47;687.57;687.86;688.36;689.09;690.14;691.44;692.96;694.71;696.63;698.71;701;703.83;707.02;710.89;715.44;720.68;726.53;732.92;739.73;
+10000;683.93;684.06;684.41;685.02;685.91;687.05;688.42;690.11;692.05;694.13;696.3;698.59;701.27;704.05;707.31;711.34;716.11;721.61;727.74;734.42;
+10500;680.1;680.24;680.64;681.32;682.3;683.57;685.12;686.96;689.01;691.26;693.65;696.11;698.85;701.52;704.45;707.85;711.99;716.97;722.72;729.13;
+11000;676.02;676.17;676.61;677.36;678.42;679.76;681.43;683.41;685.66;688.08;690.86;693.56;696.32;699.09;701.93;705;708.55;712.87;718.02;724.01;
+11500;678.91;679.13;679.57;680.32;681.37;682.73;684.4;686.39;688.65;691.07;693.87;696.57;699.33;702.06;704.88;707.96;711.53;715.88;721.07;727.01;
+12000;681.79;682.11;682.55;683.31;684.37;685.73;687.4;689.4;691.66;694.09;696.9;699.61;702.32;705.03;707.86;710.95;714.55;718.94;724.14;730.13;
+12500;684.97;685.11;685.56;686.32;687.38;688.75;690.43;692.44;694.71;697.15;699.96;702.62;705.32;708.03;710.86;713.98;717.6;722.02;727.26;733.29;
+13000;688.14;688.14;688.6;689.36;690.43;691.8;693.49;695.5;697.78;700.22;702.97;705.64;708.34;711.06;713.91;717.04;720.68;725.12;730.41;736.49;
+13500;691.16;691.32;691.76;692.52;693.57;694.92;696.58;698.59;700.86;703.25;706.02;708.69;711.39;714.13;716.99;720.14;723.79;728.27;733.6;739.72;
+14000;694.48;694.62;695.07;695.83;696.88;698.24;699.9;701.84;704.03;706.38;709.13;711.77;714.49;717.24;720.11;723.26;726.94;731.45;736.82;742.98;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;751.97;752.07;752.28;752.66;753.3;754.21;755.43;757.13;759.26;761.91;765.16;769.38;774.35;780.35;787.17;794.66;802.62;810.95;819.75;828.97;
+500;745.97;746;746.21;746.58;747.16;747.99;749.09;750.74;752.9;755.59;758.89;763.08;768.04;774.01;780.78;788.18;796.11;804.45;813.19;822.35;
+1000;740;739.97;740.17;740.54;741.11;741.92;743;744.66;746.76;749.37;752.64;756.84;761.81;767.72;774.4;781.71;789.54;797.89;806.58;815.71;
+1500;733.9;733.97;734.17;734.54;735.09;735.9;736.96;738.62;740.76;743.39;746.63;750.73;755.63;761.5;768.05;775.24;782.97;791.22;799.97;809;
+2000;727.85;728.01;728.22;728.58;729.12;729.92;730.95;732.6;734.76;737.43;740.85;744.86;749.72;755.37;761.77;768.81;776.42;784.55;793.2;802.29;
+2500;722.1;722.17;722.36;722.7;723.22;723.99;725.01;726.63;728.81;731.48;734.97;739.03;743.91;749.51;755.72;762.44;769.89;777.9;786.43;795.47;
+3000;716.42;716.47;716.65;716.96;717.46;718.18;719.16;720.72;722.91;725.59;729.09;733.2;738.12;743.67;749.8;756.41;763.52;771.27;779.67;788.59;
+3500;711.1;711.15;711.3;711.56;711.98;712.6;713.47;714.92;717.06;719.74;723.26;727.39;732.33;737.85;743.9;750.42;757.4;764.88;772.93;781.72;
+4000;705.71;706.1;706.25;706.51;706.92;707.52;708.35;709.6;711.54;713.99;717.45;721.61;726.54;732.03;738.02;744.44;751.32;758.67;766.52;774.93;
+4500;701.06;701.12;701.27;701.54;701.95;702.57;703.41;704.59;706.47;708.84;712.06;715.98;720.76;726.2;732.13;738.47;745.26;752.5;760.2;768.41;
+5000;696.37;696.21;696.23;696.52;696.96;697.61;698.51;699.68;701.51;703.87;707.01;710.83;715.34;720.51;726.23;732.52;739.2;746.34;753.93;761.97;
+5500;691.73;691.69;691.83;692.07;692.44;692.98;693.75;694.78;696.58;699;701.98;705.86;710.19;715.15;720.67;726.64;733.17;740.2;747.67;755.59;
+6000;687.18;687.24;687.41;687.69;688.12;688.73;689.58;690.69;692.27;694.46;697.22;701.03;705.23;709.97;715.25;721.1;727.4;734.11;741.43;749.24;
+6500;682.47;682.54;682.75;683.1;683.62;684.34;685.3;686.55;688.19;690.43;693.27;696.79;700.63;704.98;710.02;715.61;721.79;728.4;735.41;742.9;
+7000;677.92;677.75;677.85;678.24;678.84;679.67;680.79;682.24;684.03;686.38;689.48;692.85;696.65;700.8;705.27;710.31;716.21;722.71;729.63;736.93;
+7500;672.47;672.56;672.81;673.23;673.88;674.78;676.01;677.62;679.67;682.22;685.48;688.91;692.7;696.79;701.2;705.93;711.13;717.04;723.85;731.07;
+8000;667.45;667.53;667.77;668.19;668.84;669.77;671.07;672.79;675.01;677.79;681.27;684.87;688.72;692.8;697.15;701.81;706.8;712.26;718.3;725.2;
+8500;662.53;662.61;662.85;663.28;663.94;664.88;666.2;667.94;670.24;673.14;676.73;680.57;684.6;688.76;693.11;697.73;702.62;707.86;713.59;719.92;
+9000;657.67;657.85;658.09;658.5;659.14;660.07;661.38;663.16;665.53;668.49;672.11;676.01;680.17;684.56;689.02;693.64;698.51;703.62;709.11;715.1;
+9500;652.8;653.37;653.59;653.97;654.58;655.47;656.74;658.52;661.04;663.8;667.45;671.36;675.61;680.11;684.76;689.49;694.37;699.47;704.8;710.53;
+10000;649.23;649.3;649.48;649.82;650.37;651.2;652.4;654.11;656.41;659.21;662.79;666.64;670.87;675.45;680.29;685.25;690.19;695.28;700.6;706.14;
+10500;645.73;645.77;645.92;646.19;646.64;647.36;648.46;650.07;652.21;654.85;658.26;661.96;666.1;670.64;675.53;680.68;685.94;691.15;696.39;701.87;
+11000;642.73;642.77;642.89;643.13;643.52;644.14;645.1;646.53;648.42;650.81;653.99;657.44;661.39;665.8;670.64;675.83;681.28;686.83;692.28;697.73;
+11500;645.51;645.58;645.7;645.93;646.33;646.95;647.92;649.36;651.26;653.67;656.87;660.35;664.32;668.76;673.62;678.84;684.32;689.89;695.36;700.81;
+12000;648.28;648.41;648.54;648.77;649.17;649.8;650.78;652.22;654.14;656.57;659.79;663.29;667.29;671.75;676.64;681.88;687.39;692.98;698.46;703.87;
+12500;651.24;651.28;651.41;651.64;652.04;652.68;653.66;655.11;657.04;659.49;662.73;666.27;670.29;674.77;679.68;684.96;690.48;696.09;701.56;706.95;
+13000;654.2;654.07;654.3;654.54;654.94;655.58;656.57;658.04;659.99;662.45;665.71;669.27;673.31;677.82;682.76;688.06;693.61;699.24;704.65;710.06;
+13500;657.26;657.31;657.42;657.65;658.03;658.65;659.62;661.06;662.96;665.64;668.73;672.3;676.37;680.9;685.87;691.19;696.77;702.36;707.77;713.2;
+14000;660.48;660.51;660.63;660.86;661.25;661.87;662.85;664.3;666.23;668.9;671.95;675.49;679.5;684.01;689;694.36;699.95;705.49;710.92;716.37;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;731.61;731.69;731.9;732.3;732.97;734.12;734.95;736.28;737.93;740.19;742.82;746.43;750.56;755.41;761.24;768.08;775.6;783.6;791.99;800.81;
+500;725.3;725.38;725.6;725.99;726.6;727.64;728.46;729.72;731.41;733.7;736.34;739.98;744.19;749.1;755;761.86;769.38;777.35;785.72;794.46;
+1000;719.04;719.12;719.33;719.72;720.32;721.31;722.18;723.46;725.08;726.99;729.9;733.55;737.79;742.79;748.74;755.63;763.11;771.06;779.4;788.12;
+1500;712.8;712.92;713.13;713.51;714.1;715.05;715.93;717.23;718.87;720.82;723.65;727.21;731.39;736.47;742.48;749.35;756.81;764.72;773.03;781.72;
+2000;706.67;706.75;706.96;707.33;707.9;708.8;709.72;711.02;712.69;714.7;717.67;721.08;725.22;730.21;736.22;743.04;750.47;758.32;766.6;775.27;
+2500;700.56;700.63;700.83;701.19;701.74;702.6;703.54;704.85;706.53;708.58;711.54;714.97;719.13;724.15;730.1;736.73;744.09;751.91;760.12;768.76;
+3000;694.46;694.52;694.7;695.03;695.53;696.34;697.34;698.68;700.4;702.49;705.43;708.87;713.07;718.11;724.07;730.66;737.79;745.44;753.62;762.19;
+3500;688.6;688.67;688.85;689.16;689.65;690.37;691.32;692.58;694.21;696.36;699.34;702.81;707.02;712.09;718.04;724.6;731.64;739.12;747.06;755.59;
+4000;682.8;682.87;683.04;683.34;683.81;684.49;685.48;686.75;688.4;690.47;693.29;696.7;701;706.1;712.01;718.51;725.49;732.89;740.73;749;
+4500;677.36;677.4;677.52;677.75;678.1;678.66;679.67;680.98;682.65;684.77;687.54;690.9;695.07;700.14;705.99;712.43;719.33;726.65;734.4;742.58;
+5000;672.34;672.38;672.5;672.72;673.07;673.56;674.44;675.6;677.09;679.08;681.87;685.23;689.36;694.4;700.14;706.34;713.15;720.41;728.08;736.16;
+5500;667.31;667.41;667.53;667.74;668.08;668.55;669.45;670.64;672.17;674.11;676.54;679.76;683.75;688.73;694.38;700.59;707.1;714.15;721.74;729.73;
+6000;662.28;662.52;662.63;662.83;663.16;663.62;664.49;665.73;667.28;669.28;671.76;674.97;678.8;683.39;688.68;694.77;701.3;708.14;715.43;723.3;
+6500;657.69;657.72;657.82;658.02;658.33;658.77;659.61;660.86;662.43;664.46;667.02;670.26;674.11;678.64;683.72;689.26;695.42;702.25;709.42;717.02;
+7000;653.01;653.11;653.2;653.36;653.63;654.03;654.81;656.06;657.63;659.68;662.42;665.59;669.48;673.96;678.94;684.35;690.2;696.52;703.44;710.92;
+7500;649.3;648.83;648.89;649.01;649.23;649.56;650.18;651.37;652.91;654.96;657.74;660.98;664.89;669.33;674.23;679.53;685.23;691.37;697.99;704.93;
+8000;644.76;644.78;644.84;644.96;645.17;645.49;646.02;647.1;648.5;650.4;653.1;656.38;660.32;664.72;669.56;674.76;680.34;686.32;692.75;699.66;
+8500;640.25;640.79;640.86;640.99;641.2;641.55;642.03;643.04;644.41;646.23;648.82;652;655.81;660.14;664.91;670.03;675.51;681.37;687.63;694.34;
+9000;636.76;636.8;636.88;637.03;637.27;637.65;638.16;639.11;640.47;642.25;644.77;647.85;651.55;655.78;660.36;665.32;670.72;676.47;682.59;689.12;
+9500;632.7;632.73;632.83;633.02;633.31;633.73;634.32;635.24;636.61;638.4;640.75;643.9;647.44;651.49;656.01;660.87;666.05;671.62;677.63;684.01;
+10000;628.8;628.67;628.62;628.86;629.2;629.71;630.4;631.36;632.77;634.62;637;640.1;643.52;647.39;651.69;656.46;661.59;667.03;672.81;678.96;
+10500;623.85;623.91;624.09;624.4;624.85;625.48;626.32;627.38;628.88;630.84;633.32;636.4;639.74;643.46;647.56;652.1;657.12;662.49;668.19;674.21;
+11000;619.08;619.08;619.28;619.63;620.16;620.9;621.9;623.19;624.86;626.97;629.73;632.71;636.04;639.66;643.6;647.93;652.7;657.96;663.58;669.52;
+11500;621.74;621.86;622.06;622.41;622.94;623.68;624.69;625.98;627.65;629.79;632.55;635.55;638.89;642.52;646.48;650.82;655.61;660.89;666.51;672.46;
+12000;624.4;624.66;624.86;625.22;625.75;626.49;627.5;628.81;630.49;632.64;635.41;638.41;641.76;645.41;649.38;653.74;658.54;663.84;669.47;675.43;
+12500;627.42;627.49;627.69;628.05;628.58;629.34;630.35;631.65;633.35;635.5;638.29;641.3;644.66;648.32;652.31;656.69;661.5;666.81;672.46;678.43;
+13000;630.45;630.52;630.72;631.06;631.58;632.31;633.28;634.55;636.23;638.39;641.2;644.22;647.59;651.26;655.27;659.65;664.48;669.81;675.48;681.46;
+13500;633.64;633.7;633.9;634.25;634.77;635.5;636.49;637.77;639.43;641.55;644.32;647.27;650.57;654.23;658.25;662.65;667.49;672.84;678.52;684.52;
+14000;636.78;636.93;637.14;637.48;638.01;638.75;639.76;641.05;642.73;644.87;647.65;650.63;653.95;657.56;661.48;665.76;670.53;675.89;681.58;687.59;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;714.42;714.32;714.5;714.85;715.64;716.36;716.78;717.57;718.76;720.21;722.31;724.59;727.36;730.53;734.6;739.59;745.73;752.75;760.31;768.45;
+500;707.94;707.94;708.11;708.48;709.24;709.89;710.29;711.07;712.29;713.79;715.91;718.34;721.21;724.53;728.69;733.8;740.06;747.11;754.66;762.6;
+1000;701.57;701.57;701.75;702.12;702.9;703.51;703.97;704.78;705.96;707.41;709.53;712.08;715.04;718.49;722.75;727.99;734.34;741.42;748.96;756.83;
+1500;695.11;695.11;695.3;695.67;696.48;697.07;697.58;698.45;699.7;701.21;703.32;706.1;708.84;712.41;716.77;722.17;728.58;735.68;743.2;751.05;
+2000;688.55;688.62;688.81;689.19;690;690.56;691.12;692.02;693.3;694.88;697.07;699.95;702.81;706.35;710.75;716.29;722.78;729.88;737.39;745.22;
+2500;682.02;682.14;682.33;682.72;683.52;684.05;684.66;685.59;686.56;688.52;690.76;693.65;696.76;700.45;704.89;710.37;716.94;724.03;731.51;739.34;
+3000;675.91;675.97;676.16;676.51;677.26;677.71;678.3;679.18;680.21;682.16;684.44;687.34;690.65;694.39;699.07;704.61;711.09;718.14;725.58;733.39;
+3500;669.82;669.89;670.04;670.37;671.1;671.54;672.16;673.08;674.09;675.94;678.13;681.04;684.5;688.34;693.1;698.86;705.33;712.31;719.62;727.38;
+4000;664.38;664.43;664.57;664.85;665.46;665.81;666.32;667.09;668.06;669.9;672.12;674.91;678.4;682.25;687.11;692.97;699.52;706.48;713.78;721.38;
+4500;658.94;658.98;659.13;659.4;659.98;660.36;660.9;661.69;662.63;664.21;666.28;669.09;672.5;676.36;681.16;687.02;693.59;700.6;707.88;715.48;
+5000;653.55;653.59;653.73;654;654.54;654.95;655.51;656.35;657.35;658.88;661;663.72;666.83;670.57;675.45;681.23;687.61;694.61;701.92;709.51;
+5500;648.17;648.27;648.41;648.67;649.17;649.6;650.18;651.03;652.08;653.84;655.75;658.5;661.65;665.45;670.08;675.53;681.89;688.66;695.86;703.48;
+6000;642.96;643.01;643.15;643.4;643.86;644.29;644.9;645.77;646.86;648.6;650.53;653.31;656.52;660.38;665.08;670.51;676.46;682.86;689.94;697.37;
+6500;637.83;637.86;637.97;638.2;638.62;639.07;639.68;640.55;641.68;643.41;645.36;648.15;651.42;655.35;660.09;665.5;671.4;677.68;684.29;691.44;
+7000;633.64;633.04;633.14;633.34;633.69;634.1;634.66;635.47;636.56;638.28;640.24;643.03;646.32;650.32;655.11;660.5;666.35;672.55;679.12;686;
+7500;628.23;628.27;628.37;628.55;628.87;629.3;629.89;630.71;631.79;633.42;635.26;637.98;641.28;645.31;650.14;655.5;661.29;667.43;673.92;680.76;
+8000;622.84;623.52;623.62;623.8;624.09;624.54;625.16;626;627.11;628.49;630.74;633.29;636.47;640.38;645.16;650.49;656.23;662.31;668.72;675.48;
+8500;618.77;618.82;618.91;619.08;619.35;619.82;620.48;621.35;622.5;623.94;626.12;628.68;631.87;635.81;640.43;645.56;651.16;657.17;663.52;670.2;
+9000;614.68;614.16;614.25;614.41;614.66;615.13;615.82;616.74;617.93;619.43;621.59;624.13;627.32;631.28;635.85;640.91;646.35;652.11;658.32;664.94;
+9500;609.5;609.53;609.61;609.77;610.01;610.46;611.2;612.15;613.39;614.97;617.13;619.69;622.87;626.8;631.31;636.28;641.63;647.35;653.37;659.7;
+10000;604.34;604.95;605.04;605.2;605.42;605.86;606.63;607.6;608.88;610.52;612.58;615.31;618.52;622.41;626.82;631.69;636.94;642.56;648.53;654.82;
+10500;600.41;600.46;600.54;600.68;600.9;601.31;602.09;603.08;604.4;606.1;608.23;610.98;614.24;618.1;622.42;627.15;632.28;637.79;643.67;649.91;
+11000;596.32;596.05;596.1;596.22;596.42;596.77;597.57;598.59;599.96;601.68;604.01;606.69;609.99;613.83;618.09;622.7;627.68;633.06;638.83;644.96;
+11500;598.7;598.74;598.8;598.92;599.11;599.48;600.27;601.28;602.63;604.36;606.69;609.37;612.69;616.53;620.8;625.42;630.41;635.81;641.59;647.75;
+12000;601.06;601.42;601.48;601.6;601.79;602.16;602.95;603.95;605.31;607.05;609.39;612.08;615.41;619.26;623.53;628.16;633.17;638.57;644.39;650.56;
+12500;604.29;604.32;604.36;604.46;604.62;604.95;605.7;606.64;608.01;609.77;612;614.81;618.14;622;626.28;630.93;635.94;641.38;647.21;653.4;
+13000;607.42;607.43;607.49;607.59;607.75;608.1;608.86;609.82;611.12;612.81;615.09;617.69;620.9;624.77;629.06;633.72;638.74;644.2;650.05;656.27;
+13500;610.52;610.61;610.66;610.77;610.95;611.3;612.07;613.04;614.37;616.07;618.36;620.98;624.21;627.95;632.11;636.62;641.58;647.06;652.92;659.16;
+14000;613.58;613.83;613.89;614;614.17;614.54;615.32;616.31;617.64;619.36;621.67;624.32;627.57;631.34;635.53;640.06;644.97;650.27;655.94;662.09;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;697.83;697.92;698.02;698.22;698.82;698.72;698.89;698.8;699.58;700.42;701.25;702.13;703.34;704.87;707.14;710.57;715.14;721.07;728.29;736.26;
+500;691.14;691.39;691.51;691.73;691.93;692.21;692.35;692.28;693.09;693.99;695.03;695.96;697.3;699.03;701.16;704.84;709.43;715.42;722.62;730.5;
+1000;684.84;684.9;685.02;685.26;685.47;685.77;685.97;685.94;686.73;687.62;688.48;689.76;691.16;693.07;695.45;699.12;703.76;709.79;716.96;724.76;
+1500;678.58;678.43;678.55;678.82;679.03;679.35;679.57;679.6;680.43;681.38;682.31;683.59;685.04;687.09;689.64;693.3;698.08;704.19;711.29;719.02;
+2000;671.93;671.96;672.09;672.39;672.6;672.94;673.2;673.28;674.15;675.15;676.19;677.55;679.06;681.13;683.81;687.49;692.38;698.58;705.64;713.27;
+2500;665.61;665.66;665.79;666.09;666.26;666.57;666.83;666.97;667.88;668.92;670.08;671.54;673.12;675.28;678.04;681.68;686.7;692.89;700.01;707.52;
+3000;659.91;659.94;660.04;660.3;660.8;660.62;660.76;660.83;661.7;662.71;663.97;665.5;667.2;669.42;672.37;676.04;681.05;687.24;694.28;701.8;
+3500;654.28;654.34;654.44;654.73;655.23;655.08;655.26;655.29;656.01;656.89;658.01;659.53;661.28;663.55;666.69;670.51;675.51;681.71;688.55;696.01;
+4000;648.7;648.76;648.88;649.18;649.67;649.54;649.75;649.86;650.61;651.54;652.7;654.06;655.61;657.76;660.99;664.97;669.97;676.22;683.01;690.22;
+4500;643.15;643.2;643.33;643.65;644.13;644.03;644.26;644.43;645.18;646.19;647.67;648.89;650.55;652.6;655.58;659.46;664.52;670.7;677.48;684.59;
+5000;637.64;637.68;637.8;638.14;638.6;638.53;638.8;639.01;639.74;640.84;642.36;643.73;645.49;647.65;650.69;654.54;659.3;665.16;671.9;678.98;
+5500;632.15;632.18;632.31;632.65;633.09;633.05;633.35;633.63;634.32;635.5;637.04;638.61;640.44;642.75;645.92;649.82;654.71;660.29;666.36;673.33;
+6000;626.89;626.92;627.03;627.34;627.71;627.64;627.92;628.24;628.92;630.16;631.73;633.5;635.37;637.82;641.08;645.09;650.08;655.69;661.69;668.03;
+6500;621.78;621.81;621.92;622.25;622.6;622.57;622.85;623.15;623.71;624.88;626.42;628.38;630.29;632.87;636.23;640.36;645.42;651.05;657.02;663.27;
+7000;616.7;616.71;616.83;617.15;617.49;617.5;617.81;618.17;618.73;619.99;621.45;623.41;625.22;627.9;631.35;635.63;640.73;646.36;652.32;658.54;
+7500;611.66;611.63;611.74;612.06;612.39;612.45;612.79;613.22;614.08;615.08;616.57;618.67;620.56;623.16;626.49;630.85;636.02;641.64;647.57;653.78;
+8000;606.65;606.51;606.66;606.98;607.3;607.4;607.78;608.25;609.15;610.19;611.73;613.83;615.92;618.64;622.05;626.33;631.3;636.88;642.8;648.97;
+8500;601.45;601.49;601.61;601.91;602.22;602.38;602.79;603.33;604.25;605.32;606.9;608.98;611.27;614.14;617.64;621.95;626.96;632.35;637.98;644.13;
+9000;596.19;596.38;596.51;596.8;597.11;597.32;597.77;598.36;599.33;600.46;602.08;604.17;606.65;609.58;613.2;617.6;622.57;627.96;633.6;639.46;
+9500;591.24;591.28;591.4;591.68;591.98;592.22;592.7;593.33;594.33;595.5;597.2;599.36;602;605.02;608.73;613.22;618.18;623.51;629.15;635.02;
+10000;586.32;586.18;586.34;586.6;586.89;587.17;587.67;588.33;589.1;590.56;592.29;594.63;597.27;600.46;604.26;608.78;613.76;619.05;624.64;630.5;
+10500;581.18;581.23;581.33;581.56;581.85;582.16;582.68;583.37;584.2;585.62;587.41;589.79;592.51;595.81;599.8;604.33;609.3;614.57;620.09;625.93;
+11000;576.07;576.28;576.38;576.59;576.87;577.21;577.74;578.45;579.33;580.7;582.57;584.97;587.77;591.14;595.23;599.87;604.8;610.03;615.54;621.29;
+11500;578.81;578.82;578.93;579.14;579.42;579.76;580.29;581.01;581.89;583.31;585.14;587.57;590.38;593.77;597.86;602.45;607.38;612.63;618.15;623.91;
+12000;581.64;581.67;581.76;581.95;582.18;582.47;582.93;583.58;584.48;585.9;587.76;590.2;593.01;596.42;600.51;605.05;610;615.26;620.78;626.56;
+12500;584.8;584.83;584.92;585.11;585.35;585.65;586.13;586.78;587.58;588.92;590.83;593;595.67;599.08;603.13;607.68;612.64;617.91;623.44;629.23;
+13000;587.98;588.05;588.14;588.34;588.58;588.88;589.37;590.03;590.85;592.21;594.15;596.34;599.04;602.26;606.1;610.46;615.31;620.58;626.12;631.93;
+13500;591.15;591.3;591.39;591.59;591.84;592.16;592.66;593.34;594.17;595.56;597.52;599.74;602.42;605.64;609.51;613.9;618.67;623.71;629;634.67;
+14000;594.57;594.6;594.7;594.91;595.16;595.49;596.01;596.7;597.55;598.97;600.93;603.13;605.82;609.07;612.99;617.4;622.19;627.27;632.59;638.15;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;681.88;681.89;681.88;681.88;681.94;681.6;681.17;680.85;680.7;680.49;680.15;679.92;679.67;680.75;682.42;684.94;688.43;693.05;699.03;706.41;
+500;675.2;675.46;675.45;675.47;675.49;675.15;674.71;674.36;674.29;674.19;673.9;673.77;673.65;674.66;676.37;678.93;682.47;687.17;693.22;700.74;
+1000;669.03;669.03;669.03;669.07;669.09;668.77;668.36;668.05;667.99;667.92;667.65;667.63;667.65;668.58;670.32;672.93;676.53;681.28;687.42;694.94;
+1500;662.59;662.6;662.61;662.66;662.69;662.4;662.03;661.75;661.75;661.78;661.53;661.53;661.6;662.51;664.3;666.96;670.6;675.41;681.64;689.13;
+2000;656.16;656.45;656.43;656.43;656.37;656.02;655.69;655.45;655.5;655.35;655.47;655.54;655.67;656.48;658.29;661;664.69;669.55;675.83;683.32;
+2500;650.96;650.75;650.74;650.77;650.69;650.32;649.87;649.47;649.4;649.19;649.39;649.54;649.76;650.6;652.41;655.08;658.82;663.73;670.05;677.5;
+3000;645.06;645.06;645.06;645.11;645.05;644.72;644.29;643.93;643.9;643.66;643.67;643.64;643.89;644.75;646.6;649.32;653.01;657.93;664.29;671.66;
+3500;639.19;639.36;639.37;639.46;639.4;639.1;638.73;638.38;638.44;638.32;638.4;638.43;638.56;638.81;640.83;643.28;647.3;652.23;658.53;665.85;
+4000;633.7;633.69;633.7;633.82;633.77;633.5;633.17;632.86;633.02;633;633.14;633.24;633.49;633.9;635.65;638.07;641.63;646.58;652.9;660.06;
+4500;628.24;628.04;628.08;628.24;628.18;627.93;627.66;627.37;627.61;627.94;627.88;628.06;628.43;629.01;630.67;633.11;636.54;641.13;647.28;654.38;
+5000;622.42;622.48;622.5;622.7;622.64;622.43;622.18;621.9;622.21;622.61;622.64;622.91;623.39;624.13;625.74;628.2;631.68;636.28;642.09;648.72;
+5500;617.34;617.33;617.36;617.55;617.42;617.16;616.86;616.47;616.81;617.28;617.41;617.76;618.35;619.24;620.84;623.33;626.84;631.52;637.31;643.73;
+6000;612.29;612.2;612.23;612.46;612.33;612.09;611.84;611.47;611.8;612.18;612.26;612.63;613.31;614.33;615.97;618.53;622.06;626.78;632.54;638.88;
+6500;607.27;607.14;607.1;607.37;607.24;607.04;606.84;606.49;606.88;607.33;607.52;607.86;608.39;609.44;610.92;613.78;617.33;622.07;627.8;634.06;
+7000;601.94;601.96;602.02;602.31;602.17;602;601.84;601.51;601.98;602.48;602.8;603.23;603.86;604.99;606.44;609.04;612.65;617.42;623.06;629.24;
+7500;596.56;596.78;596.85;597.18;597.03;596.88;596.78;596.81;597.02;597.56;598.09;598.57;599.31;600.59;602.25;604.79;608.21;612.82;618.38;624.43;
+8000;591.54;591.57;591.65;592.01;591.85;591.74;591.68;591.76;592.01;592.61;593.31;593.84;594.69;596.11;597.94;600.6;604.14;608.68;613.9;619.67;
+8500;586.56;586.43;586.43;586.83;586.67;586.6;586.59;586.72;587.01;587.66;588.53;589.11;590.08;591.58;593.61;596.18;600.08;604.63;609.81;615.34;
+9000;581.11;581.14;581.25;581.65;581.49;581.46;581.5;581.68;582.02;582.72;583.45;584.41;585.47;587.02;589.24;592.04;595.93;600.63;605.72;611.18;
+9500;575.7;575.93;576.05;576.44;576.31;576.32;576.4;576.63;577.03;577.77;578.64;579.69;580.9;582.67;584.86;587.82;591.77;596.55;601.68;607.03;
+10000;570.7;570.73;570.86;571.23;571.13;571.17;571.3;571.27;572.02;572.83;574.11;574.96;576.31;578.18;580.5;583.69;587.65;592.4;597.59;602.92;
+10500;565.73;565.6;565.67;566.03;565.95;566.04;566.2;566.25;567.02;567.89;569.2;570.23;571.7;573.68;576.23;579.47;583.56;588.23;593.39;598.8;
+11000;560.33;560.37;560.52;560.84;560.79;560.91;561.12;561.25;562.03;562.95;564.28;565.5;567.08;569.03;571.86;575.23;579.44;584.14;589.16;594.54;
+11500;563.17;563.18;563.31;563.58;563.46;563.53;563.67;563.7;564.47;565.39;566.74;567.94;569.52;571.62;574.32;577.69;581.89;586.6;591.63;597.02;
+12000;566.26;566.28;566.43;566.69;566.58;566.67;566.81;566.86;567.54;568.37;569.59;570.63;572.03;574.09;576.8;580.17;584.37;589.09;594.12;599.54;
+12500;569.33;569.46;569.6;569.86;569.76;569.85;570.01;570.06;570.79;571.64;572.89;573.95;575.37;577.28;579.76;582.89;586.88;591.6;596.64;602.04;
+13000;572.37;572.7;572.85;573.1;573.01;573.12;573.29;573.36;574.11;574.97;576.25;577.33;578.76;580.69;583.18;586.33;590.26;594.69;599.42;604.54;
+13500;575.98;576.01;576.17;576.43;576.33;576.46;576.64;576.71;577.49;578.37;579.67;580.75;582.21;584.15;586.66;589.83;593.78;598.22;602.91;607.91;
+14000;579.57;579.39;579.55;579.81;579.72;579.86;580.05;580.13;580.93;581.82;583.14;584.23;585.7;587.67;590.2;593.39;597.36;601.77;606.44;611.46;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;666.05;666.04;665.93;665.75;665.44;664.84;663.87;663.18;662.26;661.14;660.02;658.85;658.76;659.18;660.14;661.71;663.85;666.96;671.07;676.61;
+500;659.72;659.68;659.59;659.42;659.1;658.49;657.53;656.85;656;654.95;653.88;652.78;652.64;653.1;654.12;655.75;657.99;661.21;665.4;671.02;
+1000;653.4;653.38;653.26;653.09;652.78;652.2;651.28;650.65;649.82;648.78;647.73;646.72;646.52;647.03;648.1;649.75;652.12;655.43;659.73;665.43;
+1500;647.12;647.51;647.39;647.21;646.85;646.2;645.21;644.5;643.67;642.69;641.68;640.69;640.76;640.93;642.06;643.82;646.26;649.65;654.03;659.85;
+2000;642.01;641.76;641.65;641.47;641.09;640.44;639.44;638.79;637.95;636.87;635.75;634.74;634.74;634.89;636.02;637.84;640.39;643.86;648.34;654.24;
+2500;636.1;636.07;635.96;635.8;635.43;634.82;633.84;633.21;632.38;631.3;630.24;629.2;628.98;628.95;630.06;631.89;634.52;638.06;642.63;648.63;
+3000;630.23;630.37;630.27;630.13;629.78;629.2;628.27;627.67;626.91;625.89;624.87;623.84;623.51;623.5;624.43;626.28;628.65;632.26;636.92;643.01;
+3500;624.7;624.68;624.59;624.47;624.12;623.58;622.7;622.14;621.45;620.5;619.54;618.57;618.21;618.16;619.36;620.96;623.29;626.52;631.19;637.38;
+4000;619.2;618.99;618.91;618.82;618.47;617.97;617.12;616.62;615.98;615.1;614.23;613.31;612.92;612.9;613.87;615.73;618.05;621.35;625.79;631.76;
+4500;613.54;613.51;613.41;613.29;612.87;612.36;611.55;611.09;610.52;609.71;608.9;608.05;607.65;607.65;608.95;610.58;612.97;616.25;620.71;626.63;
+5000;608.37;608.32;608.23;608.12;607.71;607.18;606.3;605.78;605.13;604.32;603.58;602.8;602.39;602.43;603.78;605.45;607.91;611.25;615.75;621.61;
+5500;603.23;603.16;603.07;602.99;602.57;602.07;601.23;600.75;600.17;599.33;598.46;597.55;597.1;597.17;598.58;600.33;602.85;606.27;610.84;616.73;
+6000;598.06;597.95;597.88;597.81;597.39;596.89;596.08;595.63;595.1;594.35;593.56;592.71;591.72;591.97;593.04;595.13;597.74;601.29;605.92;611.84;
+6500;592.7;592.68;592.61;592.56;592.15;591.68;590.9;590.5;590.03;589.36;588.64;587.89;587.05;587.59;588.5;590.09;592.63;596.27;601.03;606.94;
+7000;587.38;587.42;587.35;587.34;586.92;586.49;585.74;585.38;584.96;584.37;583.76;583.12;582.44;582.89;583.84;585.47;587.92;591.34;596.09;602.06;
+7500;582.09;582.15;582.11;582.11;581.71;581.3;580.6;580.27;579.93;579.45;578.91;578.38;577.83;578.21;579.19;580.88;583.38;586.85;591.49;597.15;
+8000;576.85;576.89;576.86;576.88;576.5;576.12;575.48;575.2;574.92;574.56;574.05;573.65;573.24;573.56;574.57;576.31;578.86;582.39;587.1;592.75;
+8500;571.64;571.65;571.64;571.67;571.32;570.99;570.39;570.15;569.93;569.68;569.22;568.92;568.62;568.93;569.99;571.77;574.36;577.95;582.72;588.35;
+9000;566.48;566.45;566.46;566.49;566.16;565.85;565.3;565.11;564.93;564.8;564.39;564.18;564;564.31;565.43;567.26;569.9;573.53;578.35;583.93;
+9500;561.24;561.24;561.27;561.32;561;560.73;560.22;560.08;559.94;559.95;559.58;559.44;559.39;559.72;560.89;562.78;565.47;569.16;573.99;579.53;
+10000;556.04;556.05;556.11;556.15;555.85;555.61;555.15;555.05;554.97;554.82;554.8;554.72;554.8;554.98;556.39;558.31;561.08;564.82;569.66;575.13;
+10500;550.87;550.89;550.96;551;550.72;550.51;550.09;550.03;550.03;549.96;550.03;550.03;550.24;550.63;551.97;553.64;556.72;560.53;565.36;570.75;
+11000;546.22;546.22;546.29;546.3;545.98;545.72;545.27;545.09;545.05;545.11;545.26;545.36;545.69;546.27;547.58;549.56;552.41;556.27;561.08;566.4;
+11500;549.29;549.29;549.37;549.38;549.07;548.82;548.37;548.22;548.17;548.09;548.05;547.95;548.07;548.46;549.84;551.82;554.68;558.54;563.36;568.7;
+12000;552.34;552.43;552.51;552.51;552.21;551.97;551.53;551.42;551.39;551.3;551.27;551.16;551.27;551.59;552.68;554.41;556.99;560.85;565.67;571.02;
+12500;555.36;555.66;555.74;555.74;555.45;555.22;554.78;554.68;554.65;554.57;554.54;554.42;554.53;554.85;555.94;557.68;560.27;563.84;568.35;573.36;
+13000;558.97;558.97;559.06;559.06;558.76;558.53;558.09;558.01;557.97;557.9;557.88;557.77;557.87;558.17;559.26;561.01;563.6;567.18;571.7;576.74;
+13500;562.58;562.46;562.43;562.43;562.14;561.92;561.47;561.4;561.37;561.29;561.26;561.15;561.26;561.54;562.65;564.38;566.98;570.57;575.12;580.18;
+14000;565.79;565.8;565.89;565.88;565.59;565.36;564.92;564.85;564.82;564.74;564.72;564.6;564.71;564.97;566.08;567.81;570.42;574.03;578.6;583.67;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;649.87;649.9;649.67;649.24;648.59;647.62;646.36;645;643.45;641.93;640.44;639.68;639.32;638.92;638.87;639.09;640.16;642;644.4;648.03;
+500;644.14;643.94;643.68;643.22;642.51;641.49;640.15;638.81;637.33;635.45;634.37;633.59;633.25;632.96;632.97;633.3;634.36;636.22;638.78;642.51;
+1000;638.43;638.13;637.88;637.46;636.79;635.79;634.47;633.07;631.47;629.51;628.31;627.51;627.18;626.98;627.02;627.5;628.57;630.46;633.16;636.98;
+1500;632.46;632.37;632.14;631.72;631.06;630.09;628.82;627.48;625.9;624.01;622.7;621.68;621.15;621.01;621.1;621.7;622.97;624.82;627.54;631.46;
+2000;626.81;626.75;626.53;626.13;625.47;624.5;623.23;621.91;620.36;618.55;617.21;616.18;615.66;615.38;615.31;615.91;617.21;619.13;621.93;625.93;
+2500;621.19;621.12;620.91;620.53;619.9;618.97;617.72;616.46;614.96;613.17;611.78;611;610.19;609.98;609.98;610.45;611.59;613.44;616.33;620.41;
+3000;615.59;615.5;615.3;614.94;614.33;613.43;612.22;611.01;609.56;607.84;606.45;605.64;604.82;604.57;604.68;605.22;606.13;608.11;610.82;614.89;
+3500;610.01;609.91;609.72;609.36;608.76;607.89;606.71;605.57;604.17;602.53;601.13;600.3;599.48;599.31;599.44;599.97;600.99;602.98;605.7;609.66;
+4000;604.69;604.63;604.41;604.04;603.39;602.46;601.23;600.13;598.75;597.14;595.74;594.87;594.05;593.93;594.14;594.75;595.84;597.83;600.68;604.65;
+4500;599.57;599.5;599.3;598.94;598.29;597.37;596.11;594.93;593.45;591.74;590.34;589.43;588.63;588.56;588.83;589.52;590.71;592.75;595.6;599.7;
+5000;594.36;594.28;594.08;593.75;593.12;592.23;591;589.89;588.45;586.81;585.27;584.15;583.21;583.19;583.53;584.28;585.56;587.67;590.6;594.74;
+5500;589.17;589.08;588.87;588.54;587.93;587.07;585.88;584.83;583.46;581.9;580.37;579.23;578.26;578.06;578.19;579.05;580.4;582.58;585.59;589.82;
+6000;583.84;583.79;583.61;583.33;582.73;581.91;580.75;579.76;578.48;576.96;575.47;574.32;573.36;573.2;573.45;574.12;575.21;577.49;580.58;584.89;
+6500;578.59;578.55;578.38;578.12;577.55;576.75;575.62;574.7;573.48;572.04;570.58;569.41;568.49;568.34;568.67;569.44;570.65;572.7;575.57;579.96;
+7000;573.4;573.31;573.15;572.91;572.35;571.59;570.5;569.64;568.49;567.11;565.7;564.52;563.6;563.52;563.89;564.73;566.04;568.17;571.11;575.23;
+7500;568.24;568.07;567.92;567.7;567.16;566.43;565.37;564.58;563.5;562.18;560.82;559.63;559.08;558.68;559.11;560.03;561.42;563.65;566.68;570.9;
+8000;563.11;563.02;562.71;562.49;561.97;561.27;560.24;559.51;558.52;557.25;555.95;554.45;553.89;553.88;554.34;555.33;556.82;559.14;562.26;566.56;
+8500;557.63;557.59;557.47;557.28;556.78;556.11;555.12;554.45;553.53;552.33;551.09;549.68;549.4;549.07;549.58;550.63;552.25;554.63;557.84;562.24;
+9000;552.17;552.36;552.25;552.07;551.59;550.96;549.99;549.38;548.56;547.4;546.23;544.93;544.58;544.28;544.83;545.93;547.68;550.12;553.43;557.93;
+9500;547.16;547.13;547.04;546.86;546.4;545.8;544.86;544.31;543.57;542.48;541.4;540.18;539.78;539.51;540.1;541.23;543.09;545.64;549.02;553.61;
+10000;542.35;542.3;542.18;541.95;541.44;540.77;539.75;539.25;538.58;537.56;536.57;535.46;535;534.76;535.69;536.62;538.51;541.18;544.65;549.3;
+10500;537.56;537.68;537.57;537.35;536.86;536.22;535.24;534.69;533.94;532.83;531.74;530.74;530.27;530.05;531.03;532.25;534.11;536.72;540.29;545;
+11000;533.1;533.05;532.97;532.76;532.3;531.7;530.74;530.26;529.6;528.59;527.58;526.45;525.75;525.69;526.1;527.64;529.58;532.26;535.92;540.7;
+11500;536.22;536.16;536.07;535.86;535.4;534.81;533.88;533.4;532.73;531.7;530.67;529.51;528.82;528.75;529.19;530.2;531.85;534.39;538.05;542.83;
+12000;539.32;539.33;539.25;539.04;538.58;538;537.07;536.59;535.92;534.86;533.81;532.64;531.94;531.86;532.3;533.31;534.97;537.36;540.71;545.14;
+12500;542.41;542.58;542.5;542.29;541.84;541.25;540.31;539.83;539.14;538.08;537.02;535.81;535.11;535.03;535.47;536.48;538.14;540.54;543.89;548.35;
+13000;545.92;545.89;545.82;545.6;545.15;544.55;543.61;543.12;542.43;541.34;540.27;539.05;538.34;538.24;538.68;539.69;541.36;543.76;547.12;551.59;
+13500;549.43;549.33;549.19;548.97;548.52;547.91;546.96;546.46;545.76;544.66;543.58;542.34;541.62;541.51;541.95;542.96;544.63;547.03;550.4;554.88;
+14000;552.93;552.83;552.63;552.4;551.94;551.33;550.38;549.87;549.15;548.04;546.94;545.68;544.96;544.85;545.28;546.29;547.95;550.36;553.73;558.22;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;635.05;634.79;634.41;633.73;632.77;631.43;629.81;627.75;626.03;624.62;623.2;622.12;620.85;619.81;619.22;618.82;618.61;618.72;619.37;620.84;
+500;629.03;628.96;628.59;627.92;626.97;625.63;624.03;621.97;620.27;618.76;617.2;616.07;614.84;613.84;613.3;613.11;612.85;613.07;613.84;615.45;
+1000;623.27;623.15;622.79;622.14;621.21;619.9;618.33;616.29;614.58;613.05;611.51;610.66;609.14;608.02;607.37;607.17;607.08;607.4;608.3;610.05;
+1500;617.48;617.45;617.09;616.44;615.51;614.21;612.64;610.66;608.61;607.11;605.88;604.96;603.54;602.47;601.84;601.45;601.32;601.74;602.75;604.64;
+2000;611.87;611.77;611.42;610.79;609.88;608.59;607.06;605.11;603.06;601.52;600.26;599.33;598.01;596.9;596.27;595.88;595.89;596.22;597.14;599.2;
+2500;606.32;606.09;605.75;605.15;604.26;603;601.49;599.57;597.54;595.94;594.62;593.67;592.42;591.34;590.73;590.29;590.43;590.86;591.89;593.83;
+3000;600.54;600.43;600.1;599.5;598.62;597.35;595.85;593.94;591.96;590.33;589.03;588.11;586.96;585.79;585.25;584.83;585.02;585.52;586.67;588.72;
+3500;595.46;595.11;594.76;594.12;593.18;591.83;590.23;588.33;586.41;584.8;583.45;582.58;581.51;580.32;579.65;579.46;579.9;580.42;581.46;583.62;
+4000;589.97;589.88;589.53;588.91;587.99;586.68;585.15;583.22;581.18;579.39;578.24;577.05;576.09;574.9;574.34;574.15;574.6;575.19;576.3;578.54;
+4500;584.52;584.65;584.31;583.72;582.85;581.57;580.08;578.21;576.23;574.42;573.2;571.82;570.71;569.53;569.06;568.85;569.3;570.01;571.23;573.51;
+5000;579.56;579.46;579.14;578.58;577.72;576.48;575.02;573.21;571.28;569.46;568.24;566.86;565.81;564.6;563.91;563.53;564.02;564.86;566.17;568.55;
+5500;574.62;574.29;573.98;573.44;572.6;571.4;569.98;568.22;566.34;564.53;563.29;561.91;560.93;559.84;559.18;558.93;558.93;559.78;561.13;563.59;
+6000;569.22;569.12;568.83;568.31;567.49;566.32;564.95;563.24;561.41;559.58;558.34;556.97;556.07;555.07;554.46;554.23;554.25;555.1;556.26;558.65;
+6500;563.85;563.95;563.67;563.17;562.38;561.24;559.9;558.26;556.48;554.61;553.4;552.04;551.21;550.3;549.74;549.56;549.61;550.52;551.79;554.02;
+7000;558.88;558.8;558.53;558.05;557.28;556.16;554.87;553.28;551.56;549.67;548.47;547.12;546.35;545.53;545.02;544.64;544.98;545.91;547.32;549.67;
+7500;553.94;553.9;553.41;552.93;552.18;551.1;549.85;548.32;546.64;544.76;543.56;542.22;541.49;540.77;540.3;540.04;540.38;541.33;542.86;545.33;
+8000;548.57;548.49;548.24;547.81;547.08;546.03;544.83;543.35;541.73;539.85;538.33;537.32;536.62;535.99;535.56;535.44;535.81;536.78;538.45;541.01;
+8500;543.42;543.34;543.1;542.69;541.98;540.96;539.8;538.39;536.82;534.95;533.47;532.44;531.75;531.23;530.86;530.83;531.24;532.25;534.06;536.69;
+9000;538.29;538.41;538.14;537.68;536.92;535.88;534.78;533.43;531.91;530.08;528.61;527.56;526.9;526.44;526.16;526.23;526.63;527.75;529.64;532.38;
+9500;533.96;533.88;533.63;533.19;532.45;531.39;530.19;528.76;527.17;525.21;523.78;522.68;522.04;521.65;521.47;521.61;522.05;523.27;525.25;528.08;
+10000;529.67;529.36;529.12;528.7;527.98;526.96;525.8;524.42;522.84;521.01;519.36;518.34;517.21;516.87;516.79;517;517.54;518.8;520.87;523.79;
+10500;524.91;524.84;524.61;524.21;523.52;522.53;521.41;520.1;518.57;516.81;515.17;514.12;513.01;512.51;512.28;512.33;513.04;514.34;516.49;519.5;
+11000;520.18;520.33;520.12;519.73;519.07;518.11;517.04;515.77;514.31;512.63;511;509.91;508.79;508.35;508.2;508.34;508.84;509.9;512.12;515.23;
+11500;523.41;523.34;523.13;522.74;522.07;521.11;520.02;518.75;517.27;515.55;513.91;512.82;511.71;511.25;511.09;511.23;511.74;512.8;514.73;517.5;
+12000;526.64;526.4;526.19;525.8;525.12;524.14;523.06;521.78;520.27;518.53;516.88;515.78;514.65;514.19;514.03;514.15;514.65;515.73;517.66;520.42;
+12500;529.59;529.52;529.31;528.91;528.23;527.24;526.14;524.84;523.33;521.56;519.88;518.79;517.63;517.18;517;517.11;517.59;518.69;520.61;523.38;
+13000;532.6;532.7;532.48;532.07;531.38;530.38;529.27;527.97;526.45;524.66;522.94;521.84;520.67;520.19;520.01;520.11;520.59;521.67;523.61;526.38;
+13500;535.99;535.91;535.7;535.29;534.59;533.57;532.46;531.14;529.58;527.79;526.09;524.95;523.76;523.27;523.07;523.16;523.63;524.69;526.65;529.41;
+14000;539.37;539.18;538.97;538.55;537.85;536.83;535.7;534.36;532.79;530.97;529.22;528.11;526.91;526.4;526.19;526.26;526.71;527.91;529.73;532.49;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;620.48;620.6;620.17;619.39;618.35;616.92;615.11;613.03;611.66;610.2;608.54;606.78;604.98;603.6;602.44;600.92;599.2;597.31;595.4;593.73;
+500;614.82;614.74;614.31;613.54;612.5;611.09;609.28;607.2;605.81;604.34;602.76;601.07;599.27;597.83;596.62;595.01;593.32;591.62;589.92;588.53;
+1000;609.16;609.1;608.51;607.71;606.68;605.27;603.49;601.46;600.03;598.48;596.92;595.19;593.48;592.01;590.88;589.38;587.73;586.01;584.44;583.3;
+1500;603.29;603.15;602.74;601.98;600.95;599.53;597.71;595.64;594.16;592.6;591.09;589.35;587.67;586.48;585.15;583.75;582.23;580.68;579.22;578.11;
+2000;597.38;597.37;596.94;596.18;595.13;593.71;591.92;589.91;588.38;586.78;585.31;583.58;581.94;580.71;579.44;578.12;576.73;575.32;574.07;573.21;
+2500;591.44;591.53;591.11;590.36;589.33;587.92;586.16;584.16;582.63;581.03;579.62;577.9;576.27;575.02;573.77;572.51;571.23;569.99;568.94;568.3;
+3000;586.27;586.18;585.74;584.93;583.84;582.33;580.44;578.43;576.91;575.29;573.94;572.27;570.68;569.43;568.21;566.98;565.77;564.65;563.79;563.37;
+3500;581.07;580.92;580.48;579.68;578.6;577.11;575.27;573.2;571.52;569.73;568.3;566.66;565.06;563.86;562.83;561.52;560.38;559.33;558.62;558.43;
+4000;575.87;575.68;575.23;574.45;573.39;571.91;570.11;568.06;566.37;564.57;563.28;561.37;559.48;558.31;557.27;556.09;555.05;554.12;553.49;553.45;
+4500;570.59;570.44;570.01;569.24;568.23;566.73;564.97;562.93;561.23;559.42;558.14;556.31;554.63;553.2;551.91;550.7;549.73;548.91;548.42;548.5;
+5000;565.35;565.22;564.8;564.04;563.01;561.56;559.81;557.81;556.07;554.29;553.02;551.25;549.64;548.22;546.95;545.79;544.63;543.7;543.34;543.59;
+5500;560.13;559.99;559.57;558.83;557.82;556.4;554.68;552.69;550.97;549.17;547.9;546.22;544.66;543.27;542;540.97;539.89;538.98;538.39;538.67;
+6000;554.98;554.92;554.39;553.64;552.64;551.23;549.54;547.6;545.86;544.06;542.81;541.22;539.71;538.07;537.08;536.16;535.17;534.36;533.9;534.07;
+6500;549.5;549.55;549.16;548.45;547.47;546.08;544.42;542.49;540.77;539.26;537.75;536.26;534.49;533.2;532.18;531.34;530.44;529.74;529.4;529.71;
+7000;544.48;544.35;543.96;543.27;542.31;540.96;539.32;537.42;535.71;534.21;532.69;531.28;529.6;528.32;527.29;526.54;525.71;525.12;524.9;525.35;
+7500;539.27;539.15;538.78;538.11;537.18;535.83;534.25;532.35;530.66;529.16;527.65;526.31;524.73;523.46;522.42;521.75;521;520.5;520.41;520.99;
+8000;534.08;534.02;533.63;532.97;532.05;530.73;529.18;527.33;525.62;524.13;522.61;521.35;519.85;518.62;517.51;517.13;516.31;515.91;515.94;516.64;
+8500;529.64;529.51;529.11;528.42;527.43;526.02;524.38;522.4;520.6;519.11;517.59;516.41;514.98;513.77;512.95;512.3;511.81;511.32;511.47;512.3;
+9000;525.21;525;524.61;523.94;522.97;521.58;519.98;518.03;516.2;514.55;512.84;511.73;510.12;508.96;508.13;507.47;507.12;506.74;507;507.96;
+9500;520.82;520.76;520.15;519.47;518.52;517.16;515.59;513.66;511.85;509.91;508.5;507.37;505.8;504.43;503.41;502.66;502.51;502.19;502.54;503.63;
+10000;516.14;516.03;515.66;515.02;514.09;512.75;511.22;509.32;507.21;505.62;504.17;503.04;501.58;500.28;499.26;498.35;497.83;497.71;498.07;499.29;
+10500;511.49;511.56;511.2;510.58;509.67;508.36;506.87;504.99;502.95;501.32;499.83;498.69;497.33;496.04;495.07;494.18;493.77;493.71;493.83;494.88;
+11000;507.21;507.1;506.76;506.16;505.27;503.98;502.53;500.7;498.69;496.99;495.74;494.31;493.05;491.74;490.7;490.04;489.88;489.71;489.98;491.11;
+11500;510.12;510.01;509.67;509.06;508.16;506.85;505.38;503.54;501.52;499.83;498.58;497.13;495.84;494.53;493.47;492.83;492.65;492.45;492.7;493.81;
+12000;513.03;512.97;512.62;512.01;511.09;509.77;508.29;506.42;504.37;502.67;501.43;499.99;498.68;497.35;496.26;495.64;495.45;495.22;495.45;496.54;
+12500;515.94;515.97;515.62;515;514.07;512.73;511.24;509.35;507.27;505.54;504.29;502.83;501.53;500.22;499.09;498.47;498.29;498.02;498.23;499.29;
+13000;518.84;519.02;518.66;518.03;517.1;515.74;514.22;512.32;510.21;508.48;507.2;505.72;504.38;503.06;501.93;501.3;501.14;500.84;501.02;502.04;
+13500;522.67;522.12;521.75;521.12;520.17;518.8;517.27;515.34;513.2;511.45;510.16;508.65;507.27;505.95;504.78;504.14;503.96;503.65;503.8;504.8;
+14000;525.38;525.25;524.89;524.25;523.29;521.9;520.36;518.41;516.24;514.47;513.16;511.63;510.22;508.88;507.95;507.03;506.62;506.37;506.62;507.6;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;607.3;606.81;606.4;605.61;604.56;603.04;601.33;599.78;598.32;596.65;594.72;592.64;590.89;588.99;586.39;583.15;578.91;573.38;566.86;557.02;
+500;604.99;600.82;600.58;599.8;598.74;597.17;595.43;593.83;592.39;590.77;588.87;586.84;585.09;583.29;580.79;577.68;573.7;568.54;562.38;553.43;
+1000;595.44;595.12;594.71;593.91;592.85;591.27;589.55;587.95;586.51;584.9;583.01;581.04;579.27;577.6;575.2;572.23;568.47;563.65;557.95;550.35;
+1500;589.64;589.28;588.88;588.08;587.03;585.47;583.74;582.14;580.69;579.09;577.21;575.28;573.77;571.89;569.61;566.77;563.22;558.72;553.01;546.64;
+2000;583.59;583.45;583.04;582.25;581.22;579.67;577.97;576.36;574.93;573.36;571.49;569.59;568.05;566.2;564.01;561.31;557.96;553.75;548.5;542.75;
+2500;578.3;578.04;577.59;576.74;575.65;574.02;572.2;570.59;569.18;567.64;565.8;563.95;562.42;560.6;558.45;555.85;552.67;548.75;543.92;538.74;
+3000;572.98;572.76;572.31;571.47;570.39;568.78;566.98;565.25;563.71;562.05;560.12;558.21;556.81;555.04;552.97;550.45;547.39;543.72;539.29;534.62;
+3500;567.64;567.49;567.05;566.21;565.14;563.54;561.76;560.04;558.51;556.88;554.92;552.74;551.28;549.47;547.49;545.06;542.16;538.69;534.61;530.4;
+4000;562.33;562.22;561.79;560.96;559.91;558.32;556.56;554.81;553.3;551.75;549.77;547.88;546.19;544.32;542.2;539.69;536.91;533.66;529.87;525.65;
+4500;557.09;556.96;556.52;555.7;554.65;553.07;551.33;549.6;548.1;546.54;544.61;542.76;541.08;539.28;537.23;534.78;531.86;528.6;525.11;521.25;
+5000;551.87;551.7;551.26;550.44;549.41;547.84;546.12;544.38;542.89;541.33;539.46;537.65;535.97;534.23;532.27;529.93;527.16;523.97;520.36;516.78;
+5500;546.59;546.44;546.01;545.2;544.18;542.62;540.91;539.18;537.7;536.14;534.31;532.54;530.88;529.19;527.3;525.08;522.45;519.42;516.06;512.53;
+6000;541.33;541.19;540.76;539.97;538.95;537.4;535.71;533.98;532.52;530.94;529.18;527.42;525.79;524.16;522.33;520.22;517.71;514.83;511.72;508.51;
+6500;536.09;535.96;535.53;534.74;533.73;532.36;530.5;528.79;527.34;525.77;524.07;522.32;520.68;519.16;517.33;515.31;512.94;510.26;507.38;504.45;
+7000;530.87;530.78;530.32;529.49;528.53;527.16;525.33;523.62;522.16;520.63;518.93;517.19;515.56;514.02;512.33;510.4;508.18;505.69;503;500.36;
+7500;526.35;526.18;525.72;524.88;523.8;522.33;520.39;518.23;516.95;515.45;513.78;511.83;510.45;508.9;507.34;505.52;503.43;501.07;498.58;496.17;
+8000;521.85;521.57;521.11;520.26;519.19;517.7;515.79;513.68;512.34;510.69;508.89;506.83;505.06;503.83;502.36;500.63;498.65;496.42;494.1;491.94;
+8500;517.09;516.95;516.49;515.66;514.59;513.11;511.23;509.13;507.78;506.16;504.4;502.4;500.5;498.98;497.39;495.65;493.8;491.74;489.62;487.69;
+9000;512.36;512.35;511.89;511.06;510.01;508.53;506.67;504.64;503.23;501.64;499.92;497.97;496.04;494.44;492.95;491.11;489.12;487.06;485.14;483.43;
+9500;507.91;507.75;507.3;506.49;505.45;503.97;502.14;500.09;498.68;497.08;495.38;493.5;491.57;489.93;488.52;486.75;484.88;482.9;480.91;479.17;
+10000;503.56;503.17;502.74;501.94;500.9;499.43;497.59;495.54;494.1;492.49;490.85;489.05;487.12;485.71;484.1;482.41;480.63;478.81;477.02;475.48;
+10500;498.75;498.62;498.18;497.38;496.33;494.84;493.03;491;489.53;487.89;486.31;484.58;482.67;481.26;479.7;478.08;476.39;474.72;473.12;471.81;
+11000;494.17;494.02;493.58;492.79;491.75;490.27;488.48;486.47;484.97;483.3;481.79;480.02;478.25;476.82;475.33;473.77;472.17;470.62;469.21;468.11;
+11500;496.98;496.85;496.4;495.61;494.55;493.05;491.24;489.2;487.69;486.01;484.47;482.68;480.88;479.44;478.13;476.33;474.7;473.1;471.66;470.52;
+12000;499.79;499.73;499.28;498.48;497.4;495.89;494.05;491.98;490.46;488.75;487.19;485.45;483.53;482.1;480.55;478.92;477.25;475.61;474.13;472.95;
+12500;502.55;502.61;502.15;501.36;500.29;498.77;496.9;494.8;493.27;491.54;489.95;488.17;486.23;484.78;483.2;481.54;479.83;478.14;476.61;475.39;
+13000;505.67;505.52;505.07;504.27;503.18;501.66;499.77;497.67;496.12;494.37;492.74;490.93;488.96;487.5;485.89;484.2;482.44;480.7;479.11;477.85;
+13500;508.87;508.81;508.04;507.21;506.11;504.58;502.69;500.56;499.01;497.24;495.58;493.72;491.73;490.26;488.62;486.88;485.08;483.29;481.64;480.33;
+14000;511.65;511.49;511.02;510.21;509.09;507.53;505.61;503.5;501.92;500.17;498.46;496.56;494.54;493.04;491.37;489.6;487.75;485.91;484.19;482.82;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;601.67;601.54;601.13;600.34;599.28;597.75;595.95;594.58;593.12;591.3;589.17;587.5;585.48;583.02;579.85;575.61;569.71;561.88;548.93;528.85;
+500;599.73;595.64;595.22;594.42;593.35;591.82;590.02;588.63;587.19;585.41;583.4;581.67;579.73;577.35;574.31;570.28;564.73;557.42;545.66;527.72;
+1000;590.15;589.73;589.33;588.54;587.48;585.94;584.15;582.76;581.1;579.56;577.61;575.85;573.97;571.69;568.77;564.93;559.69;552.89;542.2;526.51;
+1500;584.01;583.9;583.5;582.71;581.65;580.13;578.36;576.95;575.28;573.76;571.86;570.03;568.22;566.02;563.22;559.56;554.62;548.28;538.56;524.52;
+2000;578.25;578.1;577.67;576.87;575.85;574.33;572.59;571.17;569.5;568.04;566.14;564.32;562.46;560.35;557.66;554.17;549.53;543.17;534.75;522.13;
+2500;573.21;572.81;572.38;571.53;570.44;568.84;567;565.47;563.75;562.32;560.43;558.35;556.79;554.76;552.13;548.78;544.4;538.5;531.18;519.55;
+3000;567.67;567.52;567.09;566.25;565.18;563.57;561.74;560.22;558.44;556.91;554.88;552.7;551.13;549.21;546.65;543.44;539.27;533.78;527.05;516.7;
+3500;562.14;562.22;561.79;560.97;559.9;558.31;556.5;554.97;553.2;551.72;549.73;547.56;545.76;543.74;541.2;538.1;534.17;529;522.81;513.61;
+4000;557.06;556.93;556.5;555.67;554.63;553.05;551.26;549.73;548.23;546.52;544.56;542.45;540.64;538.71;536.12;532.91;529.01;524.18;518.43;510.26;
+4500;552.01;551.65;551.22;550.4;549.37;547.79;546.03;544.49;543.02;541.34;539.41;537.35;535.52;533.68;531.2;528.1;524.24;519.4;513.98;506.97;
+5000;546.52;546.37;545.95;545.11;544.11;542.56;540.8;539.27;537.81;536.17;534.26;532.27;530.41;528.65;526.26;523.28;519.62;515.03;509.29;503.14;
+5500;541.04;541.1;540.69;539.87;538.87;537.32;535.59;534.05;532.6;530.99;529.11;527.17;525.32;523.63;521.32;518.47;514.99;510.65;505.32;499.52;
+6000;535.98;535.85;535.43;534.61;533.63;532.09;530.37;528.82;527.39;525.81;523.95;522.05;520.5;518.6;516.4;513.65;510.31;506.24;501.3;495.93;
+6500;530.93;530.58;530.16;529.36;528.38;526.86;525.15;523.61;522.19;520.64;518.8;516.96;515.41;513.57;511.45;508.83;505.66;501.82;497.19;492.23;
+7000;526.09;525.93;525.47;524.61;523.54;521.92;520.11;518.43;516.99;515.47;513.65;511.77;510.32;508.54;506.5;504.01;500.99;497.33;492.99;488.47;
+7500;521.28;521.3;520.84;519.98;518.92;517.32;515.52;513.84;512.29;510.62;508.67;506.51;505.24;503.51;501.56;499.18;496.25;492.78;488.75;484.63;
+8000;516.83;516.68;516.22;515.37;514.32;512.72;510.94;509.25;507.71;506.12;504.14;502.25;500.54;498.64;496.56;494.27;491.47;488.22;484.48;480.35;
+8500;512.46;512.08;511.62;510.78;509.73;508.14;506.37;504.67;503.14;501.54;499.61;497.71;495.96;494.13;492.07;489.69;486.81;483.64;480.19;476.41;
+9000;507.64;507.48;507.03;506.19;505.15;503.57;501.81;500.11;498.56;496.92;495.01;493.14;491.4;489.62;487.63;485.34;482.64;479.5;476.04;472.42;
+9500;502.85;502.9;502.46;501.62;500.59;498.99;497.22;495.47;493.92;492.27;490.43;488.59;486.85;485.12;483.19;480.99;478.46;475.49;472.23;468.89;
+10000;498.45;498.32;497.86;497.01;495.96;494.51;492.59;490.85;489.31;487.65;485.88;484.05;482.32;480.65;478.76;476.64;474.23;471.47;468.42;465.38;
+10500;494.02;493.68;493.22;492.38;491.34;489.89;488;486.25;484.73;483.07;481.35;479.52;477.79;476.12;474.31;472.27;469.99;467.44;464.62;461.83;
+11000;489.21;489.06;488.61;487.79;486.75;485.31;483.44;481.68;480.16;478.53;476.81;474.74;473.25;471.54;469.87;467.91;465.75;463.39;460.8;458.26;
+11500;491.92;491.83;491.37;490.54;489.49;488.03;486.13;484.35;482.81;481.15;479.43;477.35;475.83;474.11;472.4;470.4;468.18;465.78;463.15;460.52;
+12000;494.63;494.64;494.18;493.34;492.28;490.79;488.86;487.07;485.5;483.81;482.07;479.94;478.45;476.71;474.95;472.91;470.65;468.18;465.51;462.81;
+12500;497.66;497.51;497.03;496.19;495.11;493.6;491.64;489.82;488.24;486.52;484.75;482.86;481.08;479.31;477.54;475.45;473.13;470.6;467.88;465.12;
+13000;500.68;500.41;499.94;499.08;497.98;496.45;494.46;492.62;491.01;489.26;487.47;485.55;483.74;481.96;480.14;478.02;475.65;473.06;470.28;467.44;
+13500;503.65;503.6;502.85;501.97;500.88;499.35;497.32;495.47;493.83;492.05;490.22;488.28;486.44;484.64;482.77;480.6;478.19;475.53;472.69;469.78;
+14000;506.4;506.24;505.75;504.9;503.79;502.24;500.23;498.36;496.7;494.88;493.02;491.05;489.18;487.35;485.43;483.22;480.75;478.03;475.11;472.13;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;596.49;596.4;596.01;595.18;594.1;592.62;590.77;589.63;588.1;586.15;584.23;582.25;579.86;576.89;572.87;567.1;559.02;544.67;517.45;-9999;
+500;590.51;590.4;590.04;589.24;588.16;586.68;584.84;583.67;582.19;580.24;578.37;576.47;574.16;571.3;567.44;561.98;554.39;541.25;517.85;-9999;
+1000;584.62;584.54;584.13;583.34;582.28;580.79;578.96;577.79;576.32;574.36;572.51;570.65;568.43;565.68;562;556.82;549.69;537.67;517.03;-9999;
+1500;578.74;578.7;578.26;577.48;576.43;574.96;573.15;571.96;570.49;568.56;566.69;564.84;562.7;560.06;556.54;551.64;544.95;533.91;515.34;-9999;
+2000;573.16;573.01;572.57;571.73;570.63;569.11;567.31;566.14;564.7;562.82;560.96;559.12;557.01;554.43;551.07;546.43;539.71;529.99;513.51;-9999;
+2500;567.46;567.66;567.25;566.41;565.34;563.77;561.87;560.58;559.02;557.08;555.25;553.44;551.4;548.88;545.63;541.2;534.96;525.95;511.24;-9999;
+3000;562.49;562.37;561.95;561.11;560.05;558.49;556.61;555.31;553.78;551.84;549.86;547.91;545.79;543.37;540.22;536;530.14;522.12;508.44;-9999;
+3500;557.52;557.1;556.65;555.82;554.77;553.22;551.36;550.06;548.54;546.64;544.68;542.76;540.66;538.12;534.86;530.8;525.17;517.75;505.5;487.45;
+4000;551.94;551.78;551.36;550.54;549.5;547.96;546.11;544.81;543.31;541.45;539.28;537.61;535.57;533.11;529.97;525.87;520.25;513.31;502.11;485.08;
+4500;546.37;546.48;546.08;545.26;544.24;542.7;540.88;539.56;538.08;536.27;534.18;532.46;530.48;528.12;525.08;521.13;515.82;508.96;498.54;483.25;
+5000;541.33;541.21;540.8;539.98;538.98;537.45;535.65;534.33;532.71;531.09;529.08;527.33;525.39;523.1;520.18;516.39;511.36;504.94;495.11;481.16;
+5500;536.3;535.94;535.52;534.71;533.72;532.2;530.43;529.09;527.48;525.91;523.96;522.18;520.31;518.09;515.28;511.65;506.87;500.84;491.75;478.98;
+6000;530.78;530.64;530.24;529.43;528.45;526.94;525.19;523.86;522.26;520.73;518.83;517.04;515.23;513.08;510.38;506.89;502.37;496.26;488.64;476.73;
+6500;526.09;525.93;525.48;524.61;523.55;521.94;520.07;518.62;517.04;515.55;513.71;511.92;510.1;508.07;505.48;502.15;497.8;492.05;484.98;474.27;
+7000;521.41;521.27;520.82;519.95;518.9;517.3;515.44;513.98;512.23;510.64;508.66;506.8;504.98;503.06;500.58;497.32;493.16;487.74;481.21;471.58;
+7500;516.75;516.61;516.16;515.3;514.26;512.67;510.84;509.35;507.6;506.06;504.09;501.95;500.17;498.12;495.59;492.47;488.51;483.42;477.36;468.7;
+8000;512.12;511.97;511.53;510.67;509.64;508.05;506.23;504.74;502.98;501.48;499.52;497.4;495.55;493.6;491.06;487.87;483.88;479.07;473.44;465.66;
+8500;507.52;507.34;506.9;506.05;505.02;503.44;501.64;500.14;498.59;496.85;494.88;492.82;490.95;489.09;486.62;483.58;479.77;475.07;469.66;462.82;
+9000;502.94;502.72;502.28;501.43;500.42;498.81;496.99;495.45;493.91;492.22;490.27;488.24;486.37;484.58;482.19;479.29;475.67;471.21;465.79;459.97;
+9500;498.35;498.08;497.63;496.77;495.74;494.13;492.33;490.78;489.26;487.6;485.67;483.67;481.77;480.06;477.76;474.99;471.55;467.32;462.3;456.96;
+10000;493.73;493.4;492.95;492.1;491.07;489.47;487.68;486.12;484.62;482.99;481.07;479.1;477.5;475.55;473.33;470.66;467.41;463.42;458.77;453.87;
+10500;488.88;488.74;488.28;487.44;486.42;484.84;483.06;481.49;480;478.39;476.49;474.54;472.94;471.04;468.88;466.32;463.26;459.54;455.2;450.7;
+11000;484.06;484.1;483.65;482.81;481.8;480.23;478.46;476.87;475.39;473.8;471.91;469.82;468.38;466.53;464.44;461.99;459.1;455.62;451.61;447.48;
+11500;486.87;486.81;486.36;485.51;484.49;482.89;481.09;479.49;477.99;476.38;474.47;472.39;470.89;469.01;466.88;464.38;461.42;457.9;453.76;449.5;
+12000;489.69;489.57;489.12;488.26;487.22;485.6;483.77;482.15;480.63;478.99;477.05;474.97;473.43;471.52;469.35;466.79;463.77;460.19;455.92;451.54;
+12500;492.53;492.38;491.92;491.04;489.99;488.35;486.49;484.85;483.3;481.64;479.67;477.58;476;474.06;471.85;469.24;466.15;462.51;458.13;453.6;
+13000;495.38;495.24;494.76;493.87;492.81;491.14;489.25;487.6;486.02;484.33;482.33;480.22;478.6;476.63;474.38;471.72;468.57;464.83;460.36;455.66;
+13500;498.3;498.13;497.65;496.75;495.67;493.98;492.05;490.39;488.79;487.06;485.02;482.93;481.24;479.22;476.93;474.22;471.01;467.19;462.61;457.75;
+14000;501.2;501.04;500.57;499.67;498.58;496.85;494.89;493.22;491.59;489.84;487.76;485.66;483.91;481.85;479.51;476.75;473.47;469.56;464.87;459.85;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;591.93;591.7;591.21;590.53;589.37;587.95;586.42;584.92;583.16;581.11;579.08;576.92;574.21;570.47;564.9;557.29;543.04;512.65;-9999;-9999;
+500;586.04;585.82;584.97;584.08;582.97;581.71;580.21;578.8;577.19;575.18;573.23;571.15;568.54;564.96;559.68;552.47;539.35;512.28;-9999;-9999;
+1000;579.54;579.48;579.18;578.33;577.25;575.83;574.32;572.92;571.33;569.32;567.35;565.36;562.85;559.44;554.44;547.59;535.51;511.89;-9999;-9999;
+1500;573.7;573.62;573.28;572.45;571.4;569.99;568.49;567.1;565.53;563.54;561.56;559.58;557.16;553.9;549.16;542.7;531.54;510.5;-9999;-9999;
+2000;567.7;568.13;567.74;566.88;565.77;564.26;562.67;561.3;559.76;557.8;555.74;553.91;551.51;548.36;543.86;537.32;527.41;508.48;-9999;-9999;
+2500;562.89;562.8;562.39;561.55;560.47;558.96;557.38;555.92;554.28;552.2;550.22;548.27;545.95;542.89;538.61;532.34;523.19;506.26;-9999;-9999;
+3000;557.55;557.46;557.05;556.22;555.17;553.67;552.09;550.65;549.03;546.99;545.03;542.95;540.53;537.44;533.3;527.38;519.13;503.58;-9999;-9999;
+3500;552.24;552.13;551.71;550.9;549.86;548.37;546.8;545.38;543.8;541.8;539.86;537.84;535.47;532.43;528.24;522.41;514.62;500.54;475.26;-9999;
+4000;546.93;546.9;546.29;545.59;544.56;543.08;541.51;540.11;538.56;536.58;534.7;532.72;530.43;527.49;523.48;517.84;510.17;497.07;473.26;-9999;
+4500;541.59;541.48;541.08;540.27;539.28;537.79;536.23;534.85;533.32;531.37;529.53;527.62;525.37;522.54;518.7;513.32;506.08;493.73;472.32;-9999;
+5000;536.28;536.16;535.77;534.97;533.98;532.51;530.95;529.59;528.09;526.16;524.34;522.48;520.32;517.59;513.91;508.78;501.94;490.46;471.62;-9999;
+5500;530.99;530.86;530.47;529.67;528.7;527.22;525.67;524.33;522.86;520.93;519.15;517.34;515.25;512.63;509.1;504.2;497.71;487.06;469.71;-9999;
+6000;526.26;526.12;525.69;524.81;523.76;522.19;520.51;519.06;517.63;515.75;513.97;512.2;510.18;507.65;504.28;499.59;493.38;483.52;467.94;-9999;
+6500;521.55;521.52;521.04;520.12;519.08;517.5;515.59;514.36;512.79;510.8;508.86;507.07;505.1;502.67;499.43;494.89;488.6;479.85;465.79;-9999;
+7000;516.88;516.74;516.31;515.44;514.41;512.83;510.94;509.7;508.13;506.2;504.27;502.38;500.28;497.7;494.49;490.16;484.22;476.42;463.32;-9999;
+7500;512.23;512.07;511.64;510.78;509.76;508.18;506.29;505.05;503.49;501.62;499.69;497.77;495.69;493.19;489.96;485.65;479.82;472.54;460.63;-9999;
+8000;507.55;507.41;506.98;506.13;505.12;503.53;501.67;500.41;498.86;496.98;494.76;493.13;491.09;488.67;485.58;481.46;475.91;468.97;458.08;442.14;
+8500;502.89;502.86;502.39;501.48;500.49;498.88;497.01;495.7;494.06;492.34;490.17;488.49;486.5;484.15;481.19;477.24;471.97;465.46;455.5;441.18;
+9000;498.24;498.09;497.65;496.8;495.78;494.16;492.32;490.99;489.36;487.69;485.59;483.86;481.92;479.62;476.76;473.02;468.02;461.9;452.77;440.09;
+9500;493.56;493.36;492.93;492.07;491.07;489.47;487.63;486.32;484.7;483.06;481.03;479.23;477.32;475.08;472.33;468.79;464.06;457.91;449.9;438.36;
+10000;488.9;488.65;488.22;487.36;486.39;484.82;482.99;481.65;480.02;478.42;476.44;474.6;472.69;470.56;467.9;464.54;460.12;454.24;447.27;436.59;
+10500;484.26;483.98;483.55;482.71;481.73;480.15;478.33;476.98;475.33;473.79;471.86;470.01;468.08;466.05;463.47;460.29;456.07;450.59;444.12;434.55;
+11000;479.65;479.32;478.89;478.05;477.07;475.5;473.69;472.32;470.66;469.17;467.26;465.16;463.49;461.54;459.06;455.98;452.01;446.88;440.89;432.31;
+11500;481.99;482;481.56;480.7;479.72;478.12;476.28;474.9;473.22;471.69;469.75;467.62;465.93;463.95;461.41;458.3;454.26;449;442.83;433.95;
+12000;484.33;484.72;484.28;483.41;482.41;480.79;478.9;477.51;475.82;474.25;472.28;470.11;468.41;466.38;463.81;460.62;456.62;451.16;444.79;435.58;
+12500;487.62;487.47;487.02;486.14;485.13;483.49;481.58;480.17;478.45;476.85;474.85;472.64;470.92;468.85;466.23;462.98;458.86;453.32;446.76;437.22;
+13000;490.91;490.26;489.8;488.91;487.89;486.22;484.28;482.87;481.13;479.49;477.46;475.49;473.46;471.35;468.68;465.37;461.17;455.52;448.75;438.86;
+13500;493.25;493.1;492.63;491.72;490.69;489;487.02;485.59;483.84;482.16;480.1;478.1;476.04;473.89;471.17;467.79;463.46;457.78;450.74;440.49;
+14000;495.6;495.98;495.51;494.59;493.54;491.81;489.79;488.37;486.59;484.87;482.77;480.75;478.69;476.46;473.68;470.23;465.81;460;452.75;442.13;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;584.97;584.81;584.36;583.72;582.55;581.1;579.64;578.4;576.83;574.88;572.8;570.34;567.12;562.4;555.48;543.28;513.49;-9999;-9999;-9999;
+500;579.36;579.34;578.69;578.05;576.9;575.46;574;572.69;571.16;569.24;567.22;564.85;561.75;557.22;550.57;539.3;512.18;-9999;-9999;-9999;
+1000;573.64;573.52;573.07;572.41;571.28;569.85;568.39;567.05;565.53;563.61;561.6;559.32;556.34;552.05;545.65;535.25;511.15;-9999;-9999;-9999;
+1500;567.93;567.9;567.43;566.77;565.67;564.24;562.81;561.45;559.95;558.05;556.06;553.79;550.91;546.79;540.67;530.73;509.3;-9999;-9999;-9999;
+2000;562.88;562.76;562.26;561.54;560.4;558.9;557.36;555.9;554.38;552.51;550.56;548.35;545.52;541.53;535.36;526.41;507.1;-9999;-9999;-9999;
+2500;557.89;557.87;557.09;556.39;555.27;553.77;552.26;550.81;549.26;547.27;545.2;542.92;540.18;536.34;530.43;521.9;504.48;-9999;-9999;-9999;
+3000;552.54;552.44;552.11;551.2;550.13;548.62;547.12;545.71;544.18;542.22;540.2;537.95;535.12;531.22;525.45;517.32;501.53;-9999;-9999;-9999;
+3500;547.2;547.26;546.91;546.03;544.97;543.46;541.98;540.59;539.1;537.17;535.18;533;530.26;526.43;520.75;512.73;498.24;-9999;-9999;-9999;
+4000;542.17;542.08;541.7;540.84;539.81;538.29;536.82;535.47;534.01;532.1;530.16;527.99;525.29;521.54;516.15;508.54;494.83;465.88;-9999;-9999;
+4500;537.16;537.14;536.35;535.66;534.64;533.12;531.65;530.34;528.87;526.95;525;522.9;520.28;516.74;511.56;504.31;491.56;465.54;-9999;-9999;
+5000;531.8;531.15;531.1;529.96;529.26;527.8;526.37;525.08;523.64;521.74;519.83;517.79;515.26;511.87;506.95;500.04;488.15;464.93;-9999;-9999;
+5500;526.75;526.64;526.21;525.35;524.32;522.76;521.21;519.81;518.4;516.53;514.55;512.68;510.24;506.98;502.3;495.64;484.59;463.79;-9999;-9999;
+6000;522.01;521.9;521.47;520.62;519.6;518.04;516.49;515.11;513.54;511.55;509.42;507.57;505.21;502.09;497.58;491.21;480.9;462.24;-9999;-9999;
+6500;517.29;517.16;516.74;515.89;514.89;513.33;511.8;510.44;508.88;506.91;504.78;502.87;500.4;497.15;492.79;486.74;477.46;460.21;-9999;-9999;
+7000;512.58;512.55;511.91;511.19;510.18;508.65;507.13;505.77;504.23;502.28;500.33;498.28;495.85;492.7;488.37;482.05;473.66;458.16;-9999;-9999;
+7500;507.84;507.72;507.31;506.47;505.49;503.99;502.46;501.11;499.57;497.6;495.64;493.64;491.27;488.24;484.1;478.12;470.15;456.17;-9999;-9999;
+8000;503.12;503.01;502.62;501.77;500.81;499.31;497.75;496.37;494.84;492.89;490.96;488.98;486.67;483.76;479.81;474.2;466.58;453.74;433.02;-9999;
+8500;498.38;498.28;497.89;497.03;496.08;494.58;493.01;491.63;490.11;488.17;486.26;484.34;482.07;479.28;475.5;470.2;462.96;451.15;430.97;-9999;
+9000;493.6;493.52;493.13;492.3;491.36;489.84;488.26;486.89;485.38;483.46;481.57;479.69;477.48;474.78;471.2;466.11;459.3;448.41;430.43;-9999;
+9500;488.84;488.8;488.4;487.57;486.63;485.12;483.53;482.16;480.67;478.75;476.87;475.03;472.88;470.29;466.83;462.03;455.59;445.53;429.57;-9999;
+10000;484.09;484.06;483.75;482.86;481.93;480.41;478.81;477.44;475.97;474.06;472.2;470.36;468.28;465.75;462.47;457.92;451.83;442.53;428.18;-9999;
+10500;479.54;479.41;479.01;478.17;477.23;475.71;474.1;472.72;471.27;469.39;467.53;465.71;463.68;461.23;458.08;453.78;447.67;439.41;426.49;-9999;
+11000;475.01;474.73;474.33;473.49;472.57;471.02;469.41;468.04;466.58;464.73;462.87;461.07;459.08;456.71;453.69;449.62;443.89;436.5;424.49;-9999;
+11500;477.26;477.35;476.94;476.08;475.14;473.58;471.71;470.55;469.08;467.2;465.32;463.49;461.47;459.07;455.99;451.86;446.01;438.4;425.99;-9999;
+12000;480.14;480.01;479.59;478.72;477.77;476.19;474.26;473.11;471.62;469.72;467.79;465.94;463.89;461.45;458.32;454.11;448.15;440.31;427.48;-9999;
+12500;483.02;482.71;482.27;481.39;480.43;478.83;476.88;475.7;474.19;472.23;470.29;468.42;466.34;463.86;460.67;456.39;450.3;441.86;428.94;-9999;
+13000;485.59;485.44;485;484.1;483.13;481.5;479.53;478.34;476.79;474.8;472.85;470.93;468.83;466.3;463.06;458.69;452.46;443.77;430.43;-9999;
+13500;488.15;488.2;487.77;486.86;485.88;484.22;482.23;481.01;479.44;477.41;475.42;473.49;471.34;468.78;465.47;461.01;454.66;445.68;431.99;-9999;
+14000;491.17;491.02;490.58;489.65;488.66;486.98;484.96;483.72;482.12;480.05;478.03;476.07;473.88;471.27;467.93;463.36;456.87;447.61;433.45;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;576.92;576.79;576.27;575.63;574.97;573.8;572.47;571.38;569.61;567.64;565.32;562.45;558.42;552.35;541.75;517.47;-9999;-9999;-9999;-9999;
+500;571.52;571.51;570.8;570.13;569.45;568.28;566.94;565.84;564.11;562.16;559.92;557.14;553.28;547.16;537.45;515.63;-9999;-9999;-9999;-9999;
+1000;565.87;565.86;565.35;564.66;563.97;562.8;561.45;560.37;558.65;556.7;554.49;551.81;548.1;542.29;533.09;513.53;-9999;-9999;-9999;-9999;
+1500;560.66;560.55;560.02;559.26;558.49;557.32;555.98;554.92;553.24;551.31;549.13;546.47;542.9;537.39;529.12;510.75;-9999;-9999;-9999;-9999;
+2000;555.31;555.56;555.02;554.28;553.51;552.27;550.83;549.68;547.93;545.93;543.8;541.22;537.74;532.43;524.52;507.52;-9999;-9999;-9999;-9999;
+2500;550.65;550.55;550.01;549.29;548.52;547.28;545.83;544.72;542.99;540.98;538.75;536.08;532.61;527.53;519.86;504.77;-9999;-9999;-9999;-9999;
+3000;546.01;545.51;544.98;544.51;543.48;542.29;540.86;539.74;538.05;536.07;533.89;531.29;527.87;522.82;515.19;501.61;-9999;-9999;-9999;-9999;
+3500;540.56;540.49;539.94;539.46;538.47;537.27;535.85;534.74;533.1;531.14;529.02;526.49;523.18;518.33;510.89;498.05;-9999;-9999;-9999;-9999;
+4000;535.53;535.43;534.88;534.4;533.45;532.25;530.83;529.74;528.13;526.2;524.12;521.67;518.48;513.82;506.61;494.69;-9999;-9999;-9999;-9999;
+4500;530.51;530.37;529.81;529.33;528.41;527.2;525.77;524.71;523.14;521.24;519.21;516.83;513.75;509.3;502.47;491.21;463.28;-9999;-9999;-9999;
+5000;525.89;525.78;525.22;524.61;523.63;522.34;520.76;519.68;518.14;516.27;514.28;511.98;509;504.73;498.21;487.58;462.9;-9999;-9999;-9999;
+5500;521.28;521.22;520.71;520.09;519.15;517.83;516.24;515.09;513.43;511.44;509.34;507.1;504.23;500.14;493.6;483.35;461.62;-9999;-9999;-9999;
+6000;516.69;516.66;516.38;515.55;514.64;513.32;511.71;510.6;508.96;506.98;504.91;502.55;499.59;495.48;489.23;479.5;460.12;-9999;-9999;-9999;
+6500;512.11;512.14;511.84;511.03;510.13;508.8;507.18;506.08;504.48;502.52;500.49;498.17;495.25;491.25;485.28;476.2;458.4;-9999;-9999;-9999;
+7000;507.68;507.62;507.29;506.49;505.61;504.27;502.88;501.57;499.99;498.02;495.98;493.71;490.88;487.04;481.34;472.61;456.34;-9999;-9999;-9999;
+7500;503.26;503.08;502.74;501.96;501.09;499.74;498.32;496.99;495.41;493.46;491.45;489.24;486.5;482.83;477.32;468.96;454.15;-9999;-9999;-9999;
+8000;498.59;498.52;498.16;497.37;496.49;495.11;493.69;492.37;490.82;488.88;486.91;484.75;482.12;478.54;473.2;465.27;451.7;-9999;-9999;-9999;
+8500;493.87;493.9;493.52;492.74;491.86;490.48;489.06;487.75;486.21;484.3;482.35;480.25;477.69;474.15;468.89;461.52;448.98;423.68;-9999;-9999;
+9000;489.35;489.25;488.89;488.1;487.24;485.85;484.42;483.12;481.6;479.7;477.78;475.64;473.12;469.72;464.87;457.75;446.14;424.41;-9999;-9999;
+9500;484.91;484.61;484.26;483.47;482.61;481.21;479.78;478.42;476.9;475;472.91;470.99;468.53;465.29;460.69;454;443.15;423.72;-9999;-9999;
+10000;480.1;479.99;479.62;478.81;477.87;476.44;474.98;473.66;472.15;470.24;468.21;466.34;463.95;460.85;456.48;449.85;440.03;422.57;-9999;-9999;
+10500;475.3;475.2;474.83;474.01;473.14;471.69;470.21;468.9;467.4;465.51;463.51;461.68;459.37;456.38;452.23;446.02;436.83;421.03;-9999;-9999;
+11000;470.57;470.45;470.08;469.26;468.39;466.93;465.45;464.14;462.66;460.78;458.72;457.02;454.77;451.91;447.96;442.13;433.53;419.34;-9999;-9999;
+11500;473.18;473.01;472.63;471.8;470.92;469.44;467.93;466.6;465.11;463.2;461.14;459.39;457.11;454.2;450.19;444.24;435.38;420.72;-9999;-9999;
+12000;475.79;475.61;475.22;474.37;473.49;471.98;470.2;469.09;467.58;465.65;463.6;461.78;459.47;456.52;452.45;446.38;437.25;422.09;-9999;-9999;
+12500;478.41;478.24;477.82;476.92;476.08;474.56;472.76;471.62;470.08;468.13;466.08;464.21;461.86;458.86;454.72;448.54;439.12;423.45;-9999;-9999;
+13000;481.03;480.9;480.49;479.64;478.76;477.17;475.43;474.18;472.62;470.63;468.55;466.65;464.27;461.23;457.02;450.72;441;424.78;-9999;-9999;
+13500;483.67;483.49;483.08;482.21;481.32;479.8;478.02;476.77;475.19;473.14;471.04;469.12;466.71;463.62;459.33;452.91;442.9;426.1;-9999;-9999;
+14000;486.32;486.1;485.68;484.8;483.91;482.36;480.57;479.37;477.79;475.74;473.7;471.65;469.17;466.02;461.67;455.13;444.8;427.46;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;572.87;572.42;572.17;571.58;570.95;569.83;568.55;567.41;565.56;563.34;561.09;557.95;553.38;546.17;532.6;-9999;-9999;-9999;-9999;-9999;
+500;567.08;567.08;566.74;566.16;565.52;564.39;563.1;561.98;560.15;558.01;555.79;552.76;548.38;541.52;528.96;-9999;-9999;-9999;-9999;-9999;
+1000;561.29;561.61;561.35;560.77;560.12;559;557.7;556.59;554.78;552.67;550.46;547.54;543.35;536.85;525;518.3;-9999;-9999;-9999;-9999;
+1500;556.51;556.45;556.15;555.52;554.81;553.61;552.31;551.22;549.45;547.39;545.2;542.32;538.28;532.12;521;-9999;-9999;-9999;-9999;-9999;
+2000;551.62;551.53;551.23;550.61;549.89;548.7;547.31;546.14;544.29;542.1;539.96;537.18;533.25;527.33;516.9;492.78;-9999;-9999;-9999;-9999;
+2500;546.7;546.61;546.31;545.86;544.97;543.78;542.39;541.25;539.43;537.33;535.06;532.19;528.24;522.57;512.66;491.31;-9999;-9999;-9999;-9999;
+3000;541.74;541.68;541.36;540.9;540.03;538.85;537.46;536.34;534.56;532.57;530.28;527.48;523.67;517.75;508.36;489.15;-9999;-9999;-9999;-9999;
+3500;536.79;536.73;536.41;535.94;535.08;533.9;532.52;531.42;529.68;527.71;525.48;522.77;519.08;513.44;504.88;486.27;-9999;-9999;-9999;-9999;
+4000;531.84;531.84;531.44;530.97;530.12;528.94;527.56;526.48;524.78;522.84;520.67;518.03;514.49;509.09;500.8;483.35;-9999;-9999;-9999;-9999;
+4500;527.1;527.01;526.63;526.06;525.12;523.97;522.6;521.53;519.86;517.95;515.83;513.27;509.84;504.72;496.62;480.61;-9999;-9999;-9999;-9999;
+5000;522.37;522.58;522.19;521.62;520.67;519.4;517.89;516.69;514.95;513.05;510.98;508.5;505.21;500.31;492.38;477.99;-9999;-9999;-9999;-9999;
+5500;518.22;518.14;517.74;517.15;516.21;514.95;513.43;512.26;510.51;508.5;506.31;503.73;500.55;495.8;488.21;475.06;-9999;-9999;-9999;-9999;
+6000;513.76;513.69;513.28;512.67;511.77;510.49;508.98;507.81;506.1;504.12;501.98;499.45;496.16;491.45;484.16;471.99;-9999;-9999;-9999;-9999;
+6500;509.3;509.24;508.81;508.2;507.31;506.03;504.53;503.37;501.69;499.72;497.58;495.08;491.89;487.4;480.46;469.02;-9999;-9999;-9999;-9999;
+7000;504.86;504.85;504.33;503.72;502.84;501.55;500.05;498.88;497.2;495.23;493.12;490.69;487.62;483.25;476.72;465.9;441.55;-9999;-9999;-9999;
+7500;500.36;500.31;500.04;499.2;498.33;497.01;495.48;494.31;492.67;490.71;488.65;486.28;483.3;479.12;472.62;462.65;441.16;-9999;-9999;-9999;
+8000;495.79;495.73;495.42;494.61;493.74;492.42;490.91;489.74;488.12;486.19;484.16;481.86;478.97;474.96;468.81;459.46;440.01;-9999;-9999;-9999;
+8500;491.32;491.14;490.8;490.01;489.15;487.82;486.28;485.15;483.56;481.65;479.66;477.42;474.63;470.78;464.94;455.59;438.21;-9999;-9999;-9999;
+9000;486.88;486.53;486.17;485.4;484.55;483.22;481.67;480.55;478.99;477.1;475.15;472.97;470.26;466.57;461.03;452.39;436.27;-9999;-9999;-9999;
+9500;481.99;481.92;481.56;480.79;479.95;478.61;477.05;475.95;474.42;472.54;470.62;468.5;465.88;462.34;457.08;448.78;434.19;-9999;-9999;-9999;
+10000;477.12;477.31;476.95;476.17;475.34;474;472.42;471.34;469.83;467.97;466.08;464.01;461.48;458.08;453.08;445.17;431.82;-9999;-9999;-9999;
+10500;472.78;472.7;472.34;471.56;470.73;469.38;467.79;466.72;465.24;463.4;461.53;459.51;457.06;453.8;448.93;441.56;429.12;404.25;-9999;-9999;
+11000;468.47;468.09;467.74;466.95;466.13;464.76;463.16;462.1;460.64;458.81;456.96;455;452.62;449.37;444.71;437.87;426.34;405;-9999;-9999;
+11500;470.65;470.52;470.15;469.35;468.52;467.13;465.52;464.44;462.96;461.11;459.24;457.25;454.85;451.68;446.94;439.91;427.99;405.8;-9999;-9999;
+12000;472.84;472.96;472.58;471.77;470.93;469.53;467.91;466.8;465.29;463.43;461.54;459.53;457.1;453.89;449.15;441.97;429.65;-9999;-9999;-9999;
+12500;475.52;475.4;475.03;474.21;473.37;471.94;470.32;469.18;467.65;465.76;463.85;461.82;459.36;456.11;451.42;444.04;431.31;408.11;-9999;-9999;
+13000;478.2;477.86;477.5;476.66;475.83;474.38;472.75;471.58;470.03;468.11;466.18;464.13;461.63;458.34;453.59;446.13;432.98;-9999;-9999;-9999;
+13500;480.9;480.35;479.99;479.14;478.3;476.83;475.2;474;472.42;470.48;468.53;466.45;463.92;460.59;455.78;448.24;434.64;406.85;-9999;-9999;
+14000;482.99;482.87;482.5;481.63;480.79;479.3;477.66;476.44;474.84;472.87;470.9;468.79;466.24;462.86;457.97;450.36;436.31;408.99;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;568.15;568.15;567.75;567.18;566.58;565.5;564.3;563.08;561.2;559.11;556.45;553;548.05;538.92;520.25;-9999;-9999;-9999;-9999;-9999;
+500;562.75;562.75;562.42;561.86;561.24;560.17;558.95;557.75;555.89;553.84;551.26;547.93;542.91;534.6;517.03;-9999;-9999;-9999;-9999;-9999;
+1000;557.35;557.35;557.12;556.56;555.94;554.86;553.64;552.46;550.61;548.59;546.05;542.84;538.04;530.2;513.91;-9999;-9999;-9999;-9999;-9999;
+1500;552.42;552.37;552.09;551.48;550.79;549.64;548.33;547.19;545.37;543.38;540.89;537.74;533.13;525.73;510.98;-9999;-9999;-9999;-9999;-9999;
+2000;547.43;547.53;547.25;546.65;545.96;544.81;543.48;542.27;540.35;538.28;535.75;532.7;528.26;521.19;507.78;-9999;-9999;-9999;-9999;-9999;
+2500;542.74;542.68;542.4;541.8;541.1;539.96;538.63;537.45;535.56;533.53;531.02;527.9;523.43;516.66;504.19;-9999;-9999;-9999;-9999;-9999;
+3000;537.81;537.82;537.53;536.93;536.24;535.1;533.77;532.62;530.75;528.53;526.33;523.3;519;512.39;500.42;-9999;-9999;-9999;-9999;-9999;
+3500;533;532.94;532.65;532.21;531.36;530.23;528.91;527.77;525.94;523.77;521.61;518.68;514.53;508.24;496.8;-9999;-9999;-9999;-9999;-9999;
+4000;528.12;528.06;527.75;527.29;526.48;525.34;524.01;522.91;521.12;519.01;516.88;514.03;510.06;504.06;493.12;-9999;-9999;-9999;-9999;-9999;
+4500;523.66;523.58;523.22;522.68;521.76;520.52;519.1;518.03;516.28;514.22;512.13;509.38;505.57;499.81;489.32;466.35;-9999;-9999;-9999;-9999;
+5000;519.21;519.2;518.84;518.29;517.38;516.14;514.66;513.46;511.59;509.44;507.38;504.71;501.03;495.26;485.45;464.95;-9999;-9999;-9999;-9999;
+5500;514.77;514.82;514.45;513.9;513;511.76;510.3;509.11;507.28;505.18;502.97;500.21;496.48;490.81;481.51;463.41;-9999;-9999;-9999;-9999;
+6000;510.53;510.45;510.07;509.5;508.59;507.37;505.9;504.73;502.94;500.89;498.68;495.95;492.3;486.84;478.21;460.87;-9999;-9999;-9999;-9999;
+6500;506.29;506.05;505.66;505.08;504.2;502.96;501.5;500.34;498.56;496.55;494.31;491.64;488.12;482.91;474.51;458.53;-9999;-9999;-9999;-9999;
+7000;501.71;501.64;501.24;500.65;499.77;498.52;497.03;495.86;494.1;492.12;489.93;487.33;483.93;478.95;471.01;456.54;-9999;-9999;-9999;-9999;
+7500;497.23;497.16;496.74;496.13;495.26;493.99;492.51;491.35;489.63;487.67;485.53;483;479.72;474.95;467.45;454.15;-9999;-9999;-9999;-9999;
+8000;492.74;492.64;492.21;491.59;490.73;489.46;487.97;486.83;485.14;483.21;481.12;478.65;475.48;470.91;463.84;451.48;-9999;-9999;-9999;-9999;
+8500;488.26;488.25;487.65;487.04;486.19;484.91;483.43;482.3;480.64;478.73;476.68;474.29;471.22;466.85;460.18;448.51;-9999;-9999;-9999;-9999;
+9000;483.54;483.56;483.28;482.47;481.64;480.36;478.88;477.76;476.13;474.24;472.23;469.9;466.94;462.75;456.45;445.44;421.1;-9999;-9999;-9999;
+9500;479.06;479;478.68;477.89;477.08;475.79;474.31;473.2;471.61;469.74;467.77;465.5;462.64;458.63;452.66;442.24;420.78;-9999;-9999;-9999;
+10000;474.48;474.43;474.08;473.31;472.51;471.22;469.74;468.63;467.07;465.22;463.29;461.08;458.32;454.48;448.56;438.92;419.81;-9999;-9999;-9999;
+10500;469.93;469.85;469.5;468.73;467.94;466.63;465.16;464.06;462.52;460.69;458.79;456.65;453.98;450.3;444.7;435.51;418.27;-9999;-9999;-9999;
+11000;465.39;465.37;464.81;464.16;463.36;462.04;460.57;459.47;457.96;456.14;454.27;452.19;449.61;446.09;440.79;432.36;416.48;-9999;-9999;-9999;
+11500;467.4;467.56;467.24;466.46;465.67;464.33;462.84;461.73;460.21;458.37;456.48;454.38;451.77;448.21;442.83;434.29;417.83;-9999;-9999;-9999;
+12000;470.02;469.94;469.59;468.79;467.99;466.64;465.13;464.01;462.46;460.61;458.71;456.58;453.95;450.35;444.89;436.19;419.21;-9999;-9999;-9999;
+12500;472.65;472.35;471.94;471.13;470.34;468.97;467.43;466.31;464.74;462.87;460.94;458.8;456.13;452.49;446.96;437.8;420.54;-9999;-9999;-9999;
+13000;474.82;474.68;474.32;473.49;472.7;471.31;469.76;468.62;467.03;465.14;463.2;461.03;458.34;454.65;449.04;439.71;421.85;-9999;-9999;-9999;
+13500;477;477.04;476.71;475.87;475.08;473.67;472.1;470.95;469.33;467.43;465.47;463.27;460.55;456.83;451.14;441.62;423.15;-9999;-9999;-9999;
+14000;479.57;479.48;479.11;478.26;477.47;476.04;474.45;473.29;471.65;469.73;467.75;465.53;462.78;459.01;453.24;443.54;424.45;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;563.34;563.17;563.15;562.38;561.78;560.75;559.59;558.27;556.39;554.19;551.37;547.59;541.81;530.37;519.2;-9999;-9999;-9999;-9999;-9999;
+500;558.04;558.04;557.72;557.17;556.56;555.53;554.37;553.07;551.2;549.04;546.3;542.64;537.14;526.28;516.13;-9999;-9999;-9999;-9999;-9999;
+1000;552.73;552.73;552.52;551.97;551.37;550.34;549.2;547.91;546.04;543.9;541.21;537.66;532.43;522.09;512.87;-9999;-9999;-9999;-9999;-9999;
+1500;547.97;547.91;547.65;547.06;546.39;545.29;544.05;542.76;540.91;538.82;536.17;532.69;527.67;518.28;498.28;-9999;-9999;-9999;-9999;-9999;
+2000;543.17;543.16;542.89;542.3;541.64;540.54;539.3;538.01;536.07;533.89;531.17;527.78;522.94;514;495.48;-9999;-9999;-9999;-9999;-9999;
+2500;538.45;538.39;538.12;537.53;536.87;535.78;534.53;533.28;531.37;529.24;526.58;523.16;518.04;509.77;492.4;-9999;-9999;-9999;-9999;-9999;
+3000;533.49;533.61;533.34;532.75;532.09;531;529.74;528.53;526.65;524.57;521.98;518.66;513.77;505.8;488.75;-9999;-9999;-9999;-9999;-9999;
+3500;528.87;528.82;528.54;527.96;527.29;526.21;524.97;523.77;521.92;519.89;517.36;514.17;509.47;501.9;486.13;-9999;-9999;-9999;-9999;-9999;
+4000;524.17;524.09;523.76;523.15;522.49;521.41;520.15;518.99;517.17;515.19;512.73;509.64;505.14;497.9;483.38;-9999;-9999;-9999;-9999;-9999;
+4500;520.24;519.81;519.47;518.96;518.05;516.85;515.46;514.22;512.42;510.48;508.08;505.09;500.81;493.81;480.32;-9999;-9999;-9999;-9999;-9999;
+5000;515.59;515.51;515.17;514.64;513.74;512.54;511.13;509.89;507.97;505.92;503.43;500.54;496.29;489.66;477.16;-9999;-9999;-9999;-9999;-9999;
+5500;510.95;511.19;510.84;510.31;509.42;508.23;506.82;505.59;503.69;501.68;499.23;496.21;491.99;485.61;473.98;465.67;-9999;-9999;-9999;-9999;
+6000;506.93;506.86;506.5;505.96;505.08;503.89;502.48;501.28;499.4;497.38;494.96;492.02;487.96;481.86;470.69;465.52;-9999;-9999;-9999;-9999;
+6500;502.59;502.51;502.15;501.61;500.74;499.54;498.1;496.9;495.03;492.81;490.67;487.81;483.9;478.08;467.41;-9999;-9999;-9999;-9999;-9999;
+7000;498.22;498.22;497.74;497.18;496.31;495.1;493.65;492.48;490.64;488.49;486.36;483.59;479.81;474.26;464.04;443.38;-9999;-9999;-9999;-9999;
+7500;493.82;493.81;493.28;492.72;491.85;490.65;489.2;488.04;486.25;484.15;482.04;479.34;475.7;470.13;460.58;442.11;-9999;-9999;-9999;-9999;
+8000;489.17;489.21;488.83;488.24;487.39;486.18;484.73;483.6;481.83;479.8;477.71;475.08;471.57;466.27;457.53;440.22;-9999;-9999;-9999;-9999;
+8500;484.81;484.74;484.35;483.75;482.92;481.7;480.26;479.13;477.41;475.43;473.35;470.79;467.41;462.36;454.15;437.86;-9999;-9999;-9999;-9999;
+9000;480.32;480.26;479.85;479.25;478.43;477.2;475.77;474.66;472.96;471.07;468.98;466.49;463.22;458.41;450.69;435.96;-9999;-9999;-9999;-9999;
+9500;475.84;475.77;475.34;474.74;473.93;472.69;471.26;470.16;468.49;466.63;464.59;462.17;459.02;454.42;447.17;433.68;-9999;-9999;-9999;-9999;
+10000;471.38;471.37;470.81;470.21;469.42;468.17;466.74;465.65;464.02;462.18;460.18;457.83;454.79;450.4;443.58;431.09;-9999;-9999;-9999;-9999;
+10500;466.79;466.75;466.45;465.66;464.89;463.64;462.21;461.13;459.53;457.71;455.75;453.46;450.53;446.34;439.92;428.26;-9999;-9999;-9999;-9999;
+11000;462.23;462.21;461.89;461.12;460.36;459.1;457.67;456.6;455.03;453.22;451.31;449.08;446.26;442.25;436.2;425.14;401.05;-9999;-9999;-9999;
+11500;464.51;464.44;464.12;463.34;462.58;461.3;459.85;458.78;457.19;455.37;453.44;451.19;448.34;444.28;438.15;426.75;402.11;-9999;-9999;-9999;
+12000;466.79;466.78;466.23;465.58;464.81;463.52;462.05;460.97;459.36;457.53;455.58;453.32;450.44;446.34;440.11;428.36;-9999;-9999;-9999;-9999;
+12500;469.09;469.08;468.49;467.83;467.06;465.75;464.27;463.17;461.55;459.71;457.74;455.46;452.56;448.41;442.09;429.97;-9999;-9999;-9999;-9999;
+13000;471.29;471.23;470.88;470.08;469.32;467.99;466.49;465.39;463.75;461.89;459.91;457.61;454.68;450.5;444.07;431.58;-9999;-9999;-9999;-9999;
+13500;473.5;473.53;473.17;472.35;471.6;470.25;468.74;467.62;465.96;464.08;462.07;459.74;456.79;452.59;446.06;433.29;-9999;-9999;-9999;-9999;
+14000;475.9;475.82;475.46;474.63;473.88;472.52;470.98;469.87;468.16;466.26;464.24;461.89;458.91;454.67;448.06;434.91;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;558;557.86;557.81;557.07;556.47;555.49;554.24;552.76;550.82;548.5;545.55;541.62;535.02;520.48;-9999;-9999;-9999;-9999;-9999;-9999;
+500;552.85;552.85;552.72;551.99;551.39;550.4;549.23;547.73;545.78;543.49;540.63;536.81;530.49;517.04;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;547.7;547.7;547.67;546.92;546.32;545.34;544.18;542.77;540.82;538.53;535.67;531.98;525.94;513.41;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;543.07;543.08;542.76;542.18;541.53;540.48;539.25;537.85;535.89;533.64;530.82;527.11;521.33;509.61;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;538.43;538.36;538.11;537.53;536.88;535.83;534.62;533.24;531.26;528.95;526.05;522.37;516.76;505.63;494.17;-9999;-9999;-9999;-9999;-9999;
+2500;533.75;533.69;533.43;532.86;532.21;531.17;529.98;528.62;526.68;524.44;521.62;517.97;512.36;501.44;490.89;-9999;-9999;-9999;-9999;-9999;
+3000;529.07;529.01;528.75;528.18;527.53;526.49;525.31;523.98;522.1;519.92;517.18;513.63;508.22;497.59;487.73;-9999;-9999;-9999;-9999;-9999;
+3500;524.38;524.39;524.05;523.49;522.85;521.81;520.65;519.35;517.5;515.38;512.7;509.28;504.06;493.89;484.81;-9999;-9999;-9999;-9999;-9999;
+4000;519.7;519.85;519.53;518.9;518.15;517.11;515.93;514.69;512.86;510.79;508.21;504.83;499.85;490.49;470.81;-9999;-9999;-9999;-9999;-9999;
+4500;515.71;515.63;515.31;514.67;513.91;512.76;511.43;510.09;508.21;506.17;503.64;500.38;495.52;486.69;468.1;-9999;-9999;-9999;-9999;-9999;
+5000;511.81;511.39;511.07;510.58;509.68;508.53;507.19;505.9;503.96;501.83;499.2;495.85;490.95;482.85;465.54;-9999;-9999;-9999;-9999;-9999;
+5500;507.22;507.15;506.82;506.32;505.44;504.29;502.94;501.68;499.76;497.63;495.03;491.76;486.99;479.3;462.97;-9999;-9999;-9999;-9999;-9999;
+6000;502.97;502.89;502.56;502.04;501.18;500.03;498.66;497.39;495.47;493.38;490.84;487.67;483.08;475.78;461.01;-9999;-9999;-9999;-9999;-9999;
+6500;498.68;498.69;498.23;497.71;496.84;495.68;494.3;493.06;491.17;489.12;486.63;483.55;479.15;472.21;458.57;-9999;-9999;-9999;-9999;-9999;
+7000;494.35;494.35;493.86;493.33;492.47;491.31;489.93;488.72;486.84;484.84;482.41;479.42;475.19;468.59;455.89;-9999;-9999;-9999;-9999;-9999;
+7500;489.91;489.83;489.48;488.93;488.08;486.92;485.54;484.36;482.51;480.54;478.16;475.27;471.2;464.92;452.97;-9999;-9999;-9999;-9999;-9999;
+8000;485.47;485.43;485.08;484.52;483.68;482.53;481.14;479.98;478.15;476.22;473.9;471.1;467.18;461.21;449.89;442.82;-9999;-9999;-9999;-9999;
+8500;481.04;481.02;480.66;480.09;479.28;478.12;476.73;475.59;473.79;471.89;469.63;466.9;463.14;457.46;446.55;441.76;-9999;-9999;-9999;-9999;
+9000;476.63;476.6;476.23;475.66;474.86;473.69;472.3;471.19;469.42;467.33;465.34;462.69;459.07;453.66;443.24;422.04;-9999;-9999;-9999;-9999;
+9500;472.22;472.18;471.79;471.21;470.43;469.25;467.85;466.76;465.03;463;461.03;458.45;454.96;449.83;440.15;421.32;-9999;-9999;-9999;-9999;
+10000;467.83;467.82;467.33;466.76;465.99;464.8;463.41;462.33;460.63;458.65;456.7;454.19;450.83;445.72;437.23;419.43;-9999;-9999;-9999;-9999;
+10500;463.34;463.29;462.88;462.29;461.53;460.33;458.95;457.88;456.21;454.29;452.36;449.92;446.68;441.81;433.87;417.47;-9999;-9999;-9999;-9999;
+11000;458.88;458.82;458.41;457.8;457.06;455.85;454.48;453.41;451.78;449.92;447.99;445.62;442.5;437.88;430.45;415.5;-9999;-9999;-9999;-9999;
+11500;460.86;460.95;460.54;459.92;459.18;457.96;456.58;455.5;453.85;451.97;450.04;447.66;444.52;439.84;432.29;416.93;-9999;-9999;-9999;-9999;
+12000;462.86;462.85;462.68;462.05;461.32;460.08;458.68;457.61;455.95;454.02;452.09;449.67;446.51;441.83;434.14;418.25;-9999;-9999;-9999;-9999;
+12500;465.33;465.28;465.01;464.19;463.46;462.21;460.8;459.72;458.01;456.07;454.12;451.69;448.51;443.8;435.99;419.57;-9999;-9999;-9999;-9999;
+13000;467.5;467.45;467.17;466.34;465.62;464.36;462.91;461.81;460.08;458.11;456.16;453.71;450.51;445.77;437.85;420.86;-9999;-9999;-9999;-9999;
+13500;469.68;469.63;469.34;468.5;467.78;466.51;465.02;463.89;462.14;460.15;458.2;455.73;452.51;447.73;439.72;422.14;-9999;-9999;-9999;-9999;
+14000;471.88;471.82;471.51;470.66;469.93;468.63;467.32;465.97;464.21;462.19;460.24;457.76;454.52;449.69;441.59;423.41;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;552.34;552.35;552.14;551.47;550.64;549.54;548.21;546.66;544.71;542.3;539.26;535.22;527.35;514.67;-9999;-9999;-9999;-9999;-9999;-9999;
+500;547.3;547.31;546.97;546.47;545.72;544.62;543.3;541.77;539.85;537.48;534.5;530.59;523.11;507.3;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;542.31;542.32;541.97;541.45;540.8;539.71;538.4;536.9;534.99;532.64;529.71;525.92;518.8;502.97;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;537.92;537.64;537.56;536.81;536.18;535.04;533.69;532.13;530.15;527.85;524.96;521.26;514.42;498.71;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;533.13;533.14;532.8;532.24;531.59;530.5;529.16;527.64;525.68;523.32;520.36;516.41;510.04;495.07;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;528.34;528.52;528.27;527.7;527.06;525.98;524.63;523.09;521.2;518.89;515.99;512.14;505.82;491.65;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;524.01;524.02;523.68;523.14;522.5;521.47;520.16;518.65;516.71;514.45;511.6;507.83;501.81;488.45;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;519.75;519.36;519.11;518.56;517.93;516.94;515.66;514.18;512.26;510.01;507.2;503.53;497.71;485.15;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;515.19;515.2;514.79;514.18;513.42;512.37;511.13;509.67;507.79;505.58;502.83;499.19;493.53;481.62;470.22;-9999;-9999;-9999;-9999;-9999;
+4500;510.64;510.97;510.66;510.04;509.29;508.2;506.89;505.32;503.33;501.13;498.41;494.83;489.37;478.04;466.92;-9999;-9999;-9999;-9999;-9999;
+5000;506.89;506.81;506.5;505.89;505.14;504.05;502.79;501.24;499.26;496.96;494.16;490.57;485.29;474.46;464.5;-9999;-9999;-9999;-9999;-9999;
+5500;503.14;502.65;502.33;501.72;500.98;499.89;498.57;497.09;495.11;492.85;490.11;486.62;481.53;471.32;461.93;-9999;-9999;-9999;-9999;-9999;
+6000;498.52;498.44;498.12;497.62;496.75;495.63;494.32;492.89;490.93;488.72;486.04;482.65;477.75;468.19;459.5;-9999;-9999;-9999;-9999;-9999;
+6500;493.85;494.17;493.84;493.34;492.48;491.36;490.06;488.68;486.74;484.58;481.95;478.65;473.94;465.21;446.69;-9999;-9999;-9999;-9999;-9999;
+7000;489.95;489.88;489.56;489.04;488.19;487.08;485.78;484.45;482.53;480.41;477.84;474.64;470;461.89;444.03;-9999;-9999;-9999;-9999;-9999;
+7500;486.06;485.57;485.24;484.73;483.89;482.78;481.48;480.21;478.3;476.22;473.71;470.6;466.14;458.47;441.74;-9999;-9999;-9999;-9999;-9999;
+8000;481.33;481.25;480.92;480.39;479.57;478.46;477.16;475.94;474.05;472.01;469.56;466.54;462.25;455;439.55;-9999;-9999;-9999;-9999;-9999;
+8500;476.6;476.92;476.58;476.04;475.23;474.13;472.82;471.64;469.78;467.78;465.38;462.45;458.32;451.48;437.42;-9999;-9999;-9999;-9999;-9999;
+9000;472.64;472.57;472.23;471.68;470.88;469.78;468.47;467.31;465.49;463.53;461.18;458.34;454.37;447.9;434.88;-9999;-9999;-9999;-9999;-9999;
+9500;468.69;468.21;467.86;467.31;466.52;465.42;464.1;462.97;461.18;459.26;456.97;454.2;450.38;444.27;432.07;-9999;-9999;-9999;-9999;-9999;
+10000;463.91;463.84;463.48;462.92;462.17;461.04;459.72;458.61;456.85;454.97;452.73;450.04;446.37;440.6;429.07;-9999;-9999;-9999;-9999;-9999;
+10500;459.14;459.45;459.09;458.52;457.78;456.65;455.32;454.24;452.5;450.67;448.48;445.87;442.33;436.87;425.8;421;-9999;-9999;-9999;-9999;
+11000;455.12;455.06;454.68;454.11;453.38;452.24;450.91;449.85;448.14;446.34;444.21;441.68;438.26;432.99;422.87;419.25;-9999;-9999;-9999;-9999;
+11500;457.2;457.09;456.71;456.13;455.41;454.26;452.9;451.82;450.07;448.26;446.12;443.57;440.13;434.95;424.55;420.81;-9999;-9999;-9999;-9999;
+12000;459.3;459.31;458.74;458.15;457.44;456.28;454.88;453.76;452.01;450.18;448.03;445.47;442;436.82;426.24;422.5;-9999;-9999;-9999;-9999;
+12500;461.42;461.19;460.8;460.18;459.45;458.28;456.86;455.71;453.94;452.11;449.95;447.38;443.88;438.68;427.92;423.95;-9999;-9999;-9999;-9999;
+13000;463.31;463.25;462.86;462.2;461.46;460.24;458.81;457.66;455.89;454.04;451.87;449.29;445.77;440.56;429.61;-9999;-9999;-9999;-9999;-9999;
+13500;465.21;465.29;464.9;464.21;463.45;462.21;460.76;459.61;457.83;455.98;453.8;451.2;447.66;442.42;431.29;426.25;-9999;-9999;-9999;-9999;
+14000;467.4;467.33;466.88;466.19;465.43;464.17;462.72;461.56;459.78;457.92;455.73;453.11;449.55;444.26;432.97;428.55;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;546.35;545.69;545.44;544.65;543.74;542.65;541.31;539.71;537.79;535.31;532.2;527.92;517.69;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;541.1;541.11;540.66;539.91;539.03;537.94;536.61;535.03;533.13;530.71;527.66;523.48;513.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;536.44;536.46;536;535.24;534.33;533.24;531.93;530.37;528.47;526.09;523.08;519;509.98;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;532.42;531.9;531.64;530.86;529.97;528.85;527.49;525.89;523.91;521.48;518.54;514.53;506.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;527.57;527.58;527.19;526.46;525.59;524.49;523.15;521.56;519.63;517.19;514.15;510.08;502.17;490.27;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;522.8;522.98;522.78;522.03;521.18;520.09;518.77;517.21;515.29;512.91;509.92;505.96;498.36;486.1;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;518.56;518.57;518.19;517.57;516.74;515.66;514.36;512.84;510.94;508.6;505.67;501.82;494.5;478.92;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;514.32;513.93;513.81;513.09;512.27;511.21;509.93;508.44;506.57;504.27;501.4;497.59;490.58;474.92;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;509.89;509.9;509.49;508.85;507.93;506.76;505.46;504;502.16;499.91;497.04;493.31;486.6;471.17;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;505.48;505.73;505.44;504.79;503.86;502.69;501.33;499.75;497.78;495.44;492.63;489;482.61;467.9;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;501.76;501.77;501.37;500.77;499.86;498.66;497.24;495.63;493.69;491.37;488.51;484.91;478.86;465.37;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;498.01;497.57;497.26;496.67;495.76;494.57;493.17;491.58;489.62;487.3;484.5;480.99;475.2;462.55;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;493.49;493.49;493.08;492.5;491.63;490.45;489.07;487.51;485.57;483.3;480.51;476.86;471.53;459.6;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;488.97;489.22;488.91;488.32;487.49;486.31;484.96;483.42;481.5;479.27;476.55;472.99;467.82;456.48;446.16;-9999;-9999;-9999;-9999;-9999;
+7000;485.11;485.03;484.72;484.22;483.32;482.16;480.82;479.31;477.41;475.23;472.56;469.11;464.15;453.24;442.77;-9999;-9999;-9999;-9999;-9999;
+7500;481.25;480.82;480.51;480;479.14;477.98;476.66;475.17;473.3;471.16;468.55;465.2;460.44;450.27;440.29;-9999;-9999;-9999;-9999;-9999;
+8000;476.67;476.6;476.28;475.77;474.94;473.78;472.44;471.02;469.17;467.07;464.52;461.27;456.7;447.22;437.9;-9999;-9999;-9999;-9999;-9999;
+8500;472.1;472.35;472.03;471.52;470.71;469.57;468.23;466.84;465.01;462.95;460.46;457.31;452.92;444.08;435.68;-9999;-9999;-9999;-9999;-9999;
+9000;468.17;468.09;467.77;467.25;466.47;465.33;463.99;462.65;460.83;458.81;456.38;453.32;449.1;441.08;422.71;-9999;-9999;-9999;-9999;-9999;
+9500;464.24;463.82;463.49;462.97;462.2;461.07;459.73;458.43;456.64;454.66;452.28;449.31;445.25;437.71;420.49;-9999;-9999;-9999;-9999;-9999;
+10000;459.6;459.53;459.2;458.67;457.91;456.79;455.45;454.2;452.42;450.48;448.16;445.29;441.18;434.31;418.12;-9999;-9999;-9999;-9999;-9999;
+10500;454.97;455.22;454.89;454.35;453.6;452.5;451.16;449.95;448.19;446.29;444.01;441.23;437.34;430.81;416.32;-9999;-9999;-9999;-9999;-9999;
+11000;450.97;450.9;450.56;450.02;449.28;448.19;446.85;445.67;443.94;442.07;439.85;437.15;433.38;427.27;413.92;-9999;-9999;-9999;-9999;-9999;
+11500;453;452.82;452.49;451.89;451.15;450.02;448.67;447.49;445.75;443.88;441.65;438.93;435.15;429.01;415.28;-9999;-9999;-9999;-9999;-9999;
+12000;455.03;454.73;454.41;453.78;453;451.85;450.49;449.31;447.56;445.69;443.45;440.71;436.91;430.76;416.63;-9999;-9999;-9999;-9999;-9999;
+12500;456.73;456.66;456.26;455.62;454.84;453.68;452.32;451.13;449.38;447.49;445.25;442.5;438.64;432.51;417.97;-9999;-9999;-9999;-9999;-9999;
+13000;458.44;458.44;458.1;457.45;456.68;455.51;454.14;452.95;451.19;449.3;447.05;444.29;440.4;434.26;419.38;-9999;-9999;-9999;-9999;-9999;
+13500;460.46;460.36;459.95;459.28;458.53;457.34;455.97;454.77;453.01;451.12;448.86;446.09;442.17;436.01;420.7;-9999;-9999;-9999;-9999;-9999;
+14000;462.51;462.2;461.79;461.11;460.37;459.17;457.8;456.59;454.83;452.93;450.67;447.88;443.94;437.74;422.01;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;538.13;537.96;537.62;536.84;535.92;535.18;534.09;532.78;530.92;528.14;524.26;518.82;508.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;533.63;533.65;533.03;532.37;531.43;530.52;529.42;528.12;526.28;523.62;520.1;514.86;503.56;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;529.27;529.29;528.68;528;527.03;526;524.84;523.47;521.64;518.99;515.92;511.41;499.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;524.82;524.92;524.61;523.82;522.87;521.82;520.56;519.08;517.16;514.45;511.51;507.06;496.34;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;520.81;520.83;520.26;519.6;518.67;517.6;516.32;514.76;512.89;510.43;507.08;502.84;492.32;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;516.62;516.41;516.01;515.35;514.45;513.37;512.09;510.5;508.65;506.33;503.03;498.85;488.52;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;512.23;512.24;511.7;511.07;510.19;509.13;507.83;506.28;504.38;501.94;498.96;494.78;485.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;507.83;507.85;507.39;506.76;505.9;504.85;503.56;502.03;500.18;497.76;494.79;490.68;481.77;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;503.98;503.99;503.4;502.71;501.75;500.59;499.26;497.73;495.86;493.51;490.56;486.55;478.19;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;500.12;499.86;499.44;498.74;497.78;496.62;495.23;493.58;491.62;489.22;486.31;482.4;474.71;463.92;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;495.92;495.94;495.38;494.69;493.75;492.61;491.24;489.62;487.68;485.31;482.39;478.56;471.37;459.85;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;491.72;491.74;491.3;490.62;489.7;488.57;487.22;485.63;483.72;481.39;478.51;474.77;468.17;457.01;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;487.72;487.73;487.2;486.53;485.63;484.51;483.18;481.62;479.73;477.44;474.61;470.96;464.67;449.85;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;483.72;483.47;483.07;482.42;481.53;480.42;479.11;477.58;475.72;473.47;470.7;467.13;461.13;446.22;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;479.54;479.55;479.01;478.35;477.45;476.33;475;473.52;471.68;469.48;466.76;463.28;457.57;443.36;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;475.35;475.36;474.94;474.28;473.4;472.28;470.97;469.46;467.61;465.46;462.8;459.4;453.97;440.84;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;471.36;471.37;470.85;470.26;469.33;468.21;466.92;465.43;463.61;461.45;458.8;455.52;450.32;438.01;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;467.38;467.13;466.75;466.16;465.23;464.12;462.84;461.38;459.58;457.47;454.88;451.48;446.62;435.03;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;463.11;463;462.62;462.02;461.12;460.02;458.75;457.31;455.53;453.46;450.94;447.64;442.92;432.06;422.12;-9999;-9999;-9999;-9999;-9999;
+9500;458.84;458.85;458.46;457.87;456.99;455.9;454.64;453.23;451.47;449.44;446.97;443.79;439.23;429.21;419.28;-9999;-9999;-9999;-9999;-9999;
+10000;454.77;454.67;454.29;453.69;452.83;451.75;450.49;449.12;447.37;445.38;442.97;439.91;435.5;426.24;416.42;-9999;-9999;-9999;-9999;-9999;
+10500;450.7;450.47;450.09;449.49;448.65;447.57;446.3;444.99;443.26;441.31;438.95;435.95;431.75;423.17;414.16;-9999;-9999;-9999;-9999;-9999;
+11000;446.35;446.24;445.87;445.27;444.45;443.37;442.1;440.82;439.12;437.2;434.9;432;427.95;420;412.51;-9999;-9999;-9999;-9999;-9999;
+11500;447.93;447.95;447.58;446.96;446.15;445.08;443.81;442.52;440.81;438.89;436.58;433.66;429.6;421.61;413.91;-9999;-9999;-9999;-9999;-9999;
+12000;449.77;449.67;449.29;448.66;447.85;446.77;445.5;444.22;442.51;440.58;438.26;435.33;431.25;423.21;415.29;-9999;-9999;-9999;-9999;-9999;
+12500;451.63;451.37;451;450.36;449.56;448.47;447.2;445.91;444.2;442.27;439.95;437;432.89;424.82;416.65;-9999;-9999;-9999;-9999;-9999;
+13000;453.3;453.07;452.7;452.06;451.3;450.18;448.9;447.6;445.89;443.96;441.64;438.68;434.54;426.42;418;-9999;-9999;-9999;-9999;-9999;
+13500;454.88;454.78;454.4;453.75;453.01;451.87;450.6;449.3;447.59;445.66;443.32;440.37;436.19;428.03;419.39;-9999;-9999;-9999;-9999;-9999;
+14000;456.48;456.48;456.09;455.43;454.71;453.57;452.29;450.99;449.27;447.33;444.98;441.96;437.83;429.62;420.63;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;529.33;529.36;528.87;528.5;527.91;527.11;525.94;524.42;522.19;519.21;514.92;508.12;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;524.98;525.02;524.61;524.2;523.61;522.82;521.67;520.18;518.03;515.1;510.78;504.68;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;521.01;521.05;520.53;520.03;519.47;518.66;517.49;515.96;513.87;510.98;506.75;500.94;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;517;517.03;516.45;515.99;515.47;514.7;513.56;512.06;509.92;506.99;502.71;497.03;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;513.04;513.06;512.4;511.85;511.3;510.61;509.53;508.15;506.07;503.23;498.96;493.26;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;508.9;508.76;508.33;507.73;507.08;506.42;505.36;504.03;502.17;499.31;495.36;489.69;480.01;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;504.81;504.83;504.24;503.63;502.83;502.2;501.15;499.85;497.99;495.27;491.58;486.01;475.19;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;500.71;500.54;500.14;499.49;498.62;497.92;496.86;495.56;493.71;491.06;487.64;482.31;471.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;496.87;496.89;496.23;495.53;494.53;493.59;492.51;491.22;489.42;486.82;483.5;478.86;468.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;493.02;492.84;492.39;491.69;490.68;489.67;488.49;487.08;485.2;482.56;479.4;474.97;465.39;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;489.09;489.1;488.49;487.81;486.82;485.75;484.6;483.16;481.29;478.71;475.66;471.35;462.19;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;485.15;485.17;484.58;483.91;482.94;481.86;480.67;479.22;477.38;474.85;471.93;467.89;459.44;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;481.2;481.22;480.64;479.98;479.04;477.94;476.69;475.25;473.45;470.97;468.16;464.2;456.32;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;477.25;477.09;476.68;476.02;475.1;474.02;472.72;471.25;469.5;467.1;464.09;460.47;453.12;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;473.2;473.22;472.68;472.04;471.14;470.06;468.78;467.24;465.51;463.19;460.31;456.75;449.84;439.11;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;469.15;469.16;468.66;468.03;467.15;466.09;464.82;463.31;461.55;459.27;456.51;453;446.5;435.62;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;465.12;465.13;464.62;464;463.14;462.08;460.83;459.35;457.57;455.35;452.69;449.24;443.28;432.82;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;461.09;460.94;460.57;460.01;459.11;458.06;456.83;455.38;453.59;451.46;448.85;445.45;439.8;425.12;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;457;457.01;456.51;455.94;455.03;454.01;452.8;451.37;449.64;447.55;444.97;441.65;436.24;421.45;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;452.98;452.99;452.5;451.92;451.04;449.99;448.77;447.33;445.63;443.59;441.06;437.83;432.61;419.01;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;448.95;448.84;448.47;447.88;447.02;445.97;444.76;443.35;441.63;439.59;437.14;433.99;428.96;416.49;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;444.93;444.77;444.4;443.81;442.97;441.93;440.73;439.34;437.65;435.65;433.21;429.97;425.3;413.6;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;440.77;440.67;440.3;439.72;438.9;437.87;436.68;435.32;433.64;431.68;429.3;426.16;421.62;410.67;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;442.27;442.28;441.88;441.29;440.47;439.44;438.25;436.89;435.21;433.25;430.84;427.7;423.14;412.07;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;443.78;443.79;443.45;442.85;442.05;441.01;439.82;438.46;436.74;434.78;432.36;429.43;424.66;413.47;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;445.5;445.4;445.03;444.41;443.62;442.59;441.4;440.03;438.42;436.48;434.03;431.03;426.19;414.86;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;447.24;446.96;446.59;445.97;445.18;444.15;442.97;441.73;440.15;438.23;435.77;432.57;427.77;416.24;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;448.63;448.53;448.16;447.53;446.75;445.72;444.64;443.49;441.91;439.98;437.51;433.98;429.1;417.61;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;450.04;450.04;449.71;449.08;448.37;447.35;446.38;445.25;443.67;441.74;439.26;435.68;430.6;418.97;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;520.17;520.08;519.75;519.23;518.66;517.86;516.61;514.97;512.72;509.34;505.46;504.44;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;516.01;515.95;515.64;515.12;514.54;513.76;512.55;510.94;508.73;505.44;501.43;497.81;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;512.19;512.23;511.87;511.34;510.67;509.86;508.64;506.98;504.73;501.51;497.36;492.33;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;508.37;508.23;508.06;507.52;506.88;506.07;504.9;503.27;501.03;497.71;493.29;487.46;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;504.55;504.33;504.22;503.68;503.01;502.24;501.12;499.53;497.3;494.04;489.56;483.15;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;500.5;500.54;500.17;499.79;499.15;498.35;497.26;495.69;493.39;490.36;485.84;479.22;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;496.48;496.52;496.2;495.82;495.21;494.41;493.35;491.83;489.6;486.64;482.05;475.8;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;492.46;492.49;492.19;491.81;491.23;490.45;489.4;487.92;485.77;482.9;478.35;472.45;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;488.68;488.71;488.37;487.91;487.28;486.47;485.43;484;481.92;479.14;474.77;469.24;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;484.89;484.91;484.6;484.14;483.53;482.75;481.66;480.19;478.11;475.39;471.26;466.07;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;481.19;481.22;480.82;480.33;479.75;478.98;477.87;476.49;474.63;471.97;468;462.77;454.91;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;477.49;477.52;476.98;476.52;475.94;475.18;474.08;472.72;470.89;468.28;464.73;459.42;449.94;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;473.79;473.53;473.12;472.66;472.1;471.35;470.27;468.92;467.11;464.56;461.29;456.06;446.38;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;470.09;469.74;469.3;468.79;468.22;467.49;466.42;465.1;463.31;460.81;457.63;452.96;443.09;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;466.38;465.92;465.5;464.88;464.32;463.6;462.55;461.25;459.49;457.04;453.93;449.26;440.15;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;462.21;462.23;461.65;461.03;460.39;459.68;458.65;457.38;455.65;453.24;450.22;445.67;437.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;458.1;458.2;457.8;457.17;456.44;455.73;454.72;453.47;451.78;449.4;446.48;442.07;434.37;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;454.41;454.43;453.89;453.29;452.47;451.75;450.78;449.54;447.86;445.54;442.57;438.44;431.47;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;450.72;450.35;449.97;449.41;448.51;447.75;446.79;445.57;443.93;441.68;438.8;434.8;428.27;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;446.51;446.52;446.01;445.46;444.59;443.74;442.78;441.58;439.99;437.8;435.01;431.14;425.01;414.24;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;442.3;442.4;442.04;441.48;440.64;439.72;438.73;437.57;436.01;433.9;431.18;427.44;421.65;411.36;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;438.49;438.5;438.02;437.48;436.66;435.68;434.7;433.54;431.99;429.97;427.32;423.72;418.35;408.17;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;434.7;434.71;433.99;433.46;432.65;431.68;430.65;429.5;427.97;426.01;423.44;420.13;414.79;400.18;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;435.82;435.83;435.43;434.9;434.09;433.21;432.25;431.13;429.6;427.63;425.06;421.55;415.97;401.57;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;436.95;436.96;436.87;436.33;435.58;434.81;433.87;432.75;431.23;429.26;426.68;422.95;417.42;402.79;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;438.76;438.67;438.31;437.79;437.18;436.43;435.5;434.38;432.88;430.89;428.3;424.55;418.81;404.03;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;440.6;440.09;439.72;439.32;438.79;438.06;437.13;436.02;434.52;432.51;429.92;426.15;420.19;405.26;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;441.65;441.66;441.29;440.9;440.4;439.68;438.78;437.67;436.16;434.13;431.55;427.75;421.56;411.81;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;443.15;443.12;442.89;442.5;442.01;441.29;440.42;439.31;437.79;435.76;433.17;429.35;422.93;412.76;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;509.86;509.68;509.41;508.92;508.37;507.57;506.32;504.59;502.12;498.62;496.68;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;505.94;505.99;505.36;505.11;504.54;503.71;502.51;500.76;498.35;494.91;492.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;502.57;502.32;502.02;501.52;500.97;500.13;498.8;497.03;494.54;491.07;488.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;498.79;498.84;498.39;497.85;497.33;496.48;495.18;493.44;491;487.43;484.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;494.95;494.93;494.58;494.16;493.64;492.79;491.53;489.82;487.44;483.91;480.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;491.26;491.31;490.89;490.42;489.91;489.08;487.87;486.19;483.84;480.37;476.41;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;487.56;487.36;487.04;486.65;486.14;485.35;484.14;482.53;480.22;476.83;472.65;471.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;483.62;483.66;483.29;482.9;482.34;481.58;480.4;478.83;476.58;473.27;468.91;465.57;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;480.08;480.12;479.64;479.06;478.44;477.78;476.63;475.1;472.91;469.69;465.24;460.86;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;476.54;476.59;476.1;475.58;475.02;474.25;473.05;471.48;469.31;466.22;461.89;456.7;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;473.01;473.05;472.59;472.18;471.55;470.79;469.63;468.1;465.98;462.93;458.46;453.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;469.44;469.48;469.06;468.63;468.09;467.3;466.19;464.7;462.49;459.66;455.32;449.88;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;465.88;465.8;465.52;465.06;464.55;463.79;462.72;461.27;459.14;456.37;452.14;446.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;462.22;462.24;461.91;461.5;460.97;460.25;459.24;457.83;455.77;453.07;448.94;443.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;458.49;458.51;458.2;457.8;457.25;456.65;455.74;454.35;452.36;449.74;445.73;440.46;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;454.76;454.78;454.45;454.06;453.52;452.86;451.98;450.72;448.96;446.4;442.52;437.13;429.84;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;451.02;451.05;450.69;450.29;449.77;449.1;448.16;446.93;445.22;442.9;439.29;433.8;424.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;447.29;447.03;446.89;446.49;445.98;445.31;444.36;443.15;441.48;439.06;435.9;430.47;421.39;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;443.27;443.29;443.03;442.71;442.16;441.5;440.55;439.35;437.71;435.33;432.28;427.35;418.36;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;439.25;439.36;439.16;438.79;438.3;437.65;436.7;435.53;433.9;431.59;428.63;423.73;415.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;435.23;435.47;435.25;434.89;434.41;433.76;432.83;431.66;430.07;427.81;424.95;420.23;412.47;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;431.59;431.61;431.33;430.98;430.49;429.83;428.92;427.78;426.21;424.02;421.24;416.8;409.61;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;427.77;427.78;427.39;427.03;426.52;425.88;424.98;423.86;422.33;420.19;417.51;413.21;406.59;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;429.04;429.05;428.85;428.5;428.02;427.39;426.49;425.38;423.84;421.7;419.01;414.67;407.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;430.59;430.61;430.32;429.97;429.53;428.89;428.01;426.91;425.39;423.24;420.29;416.14;409.18;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;432.16;432.02;431.81;431.42;431.02;430.4;429.54;428.46;426.95;424.8;421.81;417.6;410.46;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;433.74;433.49;433.29;432.95;432.52;431.92;431.07;430.01;428.5;426.35;423.36;419.07;411.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;434.99;435.01;434.77;434.44;434.01;433.45;432.62;431.56;430.06;427.91;424.91;420.54;412.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;436.26;436.28;436.25;435.92;435.53;434.98;434.16;433.1;431.6;429.46;426.45;422;414.15;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;498.08;498.15;497.69;497.32;496.86;496.12;494.83;492.9;490;487.91;503.39;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;494.6;494.66;494.04;493.88;493.39;492.62;491.15;489.35;486.48;484.02;494.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;491.03;491.05;490.72;490.45;490.06;489.27;487.93;485.95;483.02;480.2;485.79;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;487.76;487.82;487.41;486.95;486.65;485.96;484.57;482.61;479.75;476.61;479.05;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;484.27;484.33;483.96;483.48;483.08;482.4;481.2;479.15;476.36;473.14;473.41;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;480.75;480.65;480.42;479.99;479.53;478.86;477.62;475.71;473.07;469.64;468.41;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;477.17;477;476.88;476.46;475.99;475.31;474.07;472.17;469.75;466.23;464.12;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;473.56;473.61;473.32;472.87;472.42;471.71;470.5;468.75;466.32;462.72;460.35;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;470.02;470.08;469.82;469.3;468.83;468.1;466.97;465.31;462.87;459.28;456.78;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;466.87;466.92;466.55;466.02;465.51;464.67;463.48;461.82;459.48;456.09;453.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;463.72;463.4;463.09;462.72;462.22;461.42;460.23;458.62;456.32;453.09;449.56;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;460.15;460.19;459.88;459.38;458.91;458.14;456.97;455.41;453.16;449.97;446.06;446.96;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;456.58;456.67;456.4;456.06;455.57;454.83;453.69;452.18;449.97;446.83;442.62;440.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;453.33;453.37;453.07;452.74;452.15;451.48;450.39;448.91;446.76;443.67;439.2;435.67;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;450.09;450.13;449.6;449.36;448.77;448.12;447.05;445.62;443.52;440.5;436.03;431.38;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;446.43;446.48;446.15;445.88;445.37;444.72;443.69;442.3;440.26;437.31;432.92;427.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;442.78;442.91;442.7;442.36;441.95;441.29;440.3;438.95;436.98;434.11;429.8;424.56;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;439.44;439.48;439.19;438.84;438.5;437.84;436.89;435.58;433.56;430.9;426.66;421.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;436.18;435.84;435.66;435.35;435.02;434.37;433.46;432.18;430.24;427.65;423.52;418.23;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;432.2;432.23;431.98;431.66;431.3;430.8;429.97;428.76;426.89;424.37;420.37;414.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;428.23;428.46;428.27;427.95;427.54;427.05;426.21;425.11;423.46;421.07;417.24;411.61;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;424.74;424.77;424.51;424.2;423.78;423.26;422.48;421.35;419.74;417.52;414.13;408.23;400.05;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;421.26;420.92;420.74;420.45;420;419.45;418.67;417.57;416;413.72;410.69;405.73;396.4;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;422.23;422.25;422.08;421.82;421.4;420.86;420.12;419.02;417.44;415.27;412.1;406.85;397.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;423.64;423.66;423.46;423.2;422.79;422.3;421.55;420.49;418.9;416.72;413.51;408.16;398.72;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;425.05;424.99;424.84;424.56;424.18;423.74;423.02;421.98;420.42;418.15;414.94;409.46;399.7;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;426.49;426.36;426.22;425.95;425.62;425.2;424.46;423.49;421.94;419.64;416.36;410.76;400.8;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;427.73;427.76;427.57;427.32;427.05;426.68;425.95;424.99;423.45;420.99;417.78;412.05;401.86;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;429;429.08;428.95;428.69;428.52;428.16;427.44;426.5;424.96;422.51;419.2;413.4;402.93;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/thrust.csv b/engine/test/stubs/V2527-A5/thrust.csv
new file mode 100644
index 00000000..f06540f3
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/thrust.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;144.92;138.88;133.44;128.63;124.4;120.74;117.64;115.11;113.07;111.5;110.43;109.7;109.34;109.32;109.61;110.22;111.12;112.28;113.68;115.24;
+500;138.05;132.38;127.24;122.69;118.72;115.29;112.4;110;108.07;106.6;105.59;104.94;104.63;104.65;104.96;105.56;106.43;107.56;108.93;110.48;
+1000;131.42;126.06;121.21;116.93;113.2;109.99;107.28;105.03;103.22;101.85;100.87;100.3;100.05;100.1;100.43;101.03;101.87;102.97;104.29;105.81;
+1500;125.06;119.91;115.34;111.33;107.83;104.84;102.31;100.21;98.529;97.236;96.373;95.805;95.581;95.665;96.019;96.619;97.454;98.513;99.785;101.25;
+2000;118.75;113.9;109.61;105.85;102.59;99.807;97.459;95.521;93.975;92.771;91.977;91.45;91.235;91.341;91.723;92.331;93.156;94.187;95.414;96.83;
+2500;112.57;108.01;103.99;100.48;97.453;94.872;92.708;90.934;89.527;88.44;87.649;87.24;87.049;87.138;87.518;88.157;88.974;89.986;91.173;92.537;
+3000;106.53;102.24;98.473;95.201;92.394;90.018;88.038;86.431;85.164;84.197;83.509;83.157;83.004;83.097;83.446;84.055;84.9;85.902;87.06;88.373;
+3500;100.66;96.627;93.1;90.048;87.437;85.24;83.433;81.994;80.871;80.032;79.452;79.18;79.078;79.197;79.532;80.1;80.907;81.914;83.067;84.339;
+4000;94.952;91.175;87.879;85.032;82.607;80.578;78.923;77.623;76.634;75.927;75.462;75.286;75.252;75.411;75.761;76.301;77.051;78.019;79.157;80.419;
+4500;89.413;85.904;82.823;80.171;77.92;76.048;74.532;73.353;72.476;71.875;71.588;71.455;71.505;71.722;72.1;72.643;73.352;74.254;75.353;76.591;
+5000;84.112;80.793;77.921;75.455;73.372;71.651;70.272;69.209;68.432;67.918;67.709;67.674;67.816;68.106;68.532;69.092;69.792;70.644;71.668;72.869;
+5500;78.938;75.847;73.17;70.881;68.958;67.38;66.129;65.176;64.498;64.071;63.934;63.958;64.173;64.546;65.037;65.635;66.343;67.17;68.137;69.261;
+6000;74.004;71.041;68.574;66.452;64.68;63.237;62.105;61.256;60.67;60.323;60.257;60.343;60.61;61.038;61.596;62.25;62.987;63.816;64.742;65.799;
+6500;69.269;66.565;64.214;62.19;60.553;59.229;58.203;57.452;56.95;56.725;56.676;56.819;57.135;57.607;58.213;58.925;59.705;60.551;61.472;62.478;
+7000;65.014;62.491;60.297;58.412;56.821;55.511;54.469;53.791;53.356;53.186;53.195;53.389;53.749;54.259;54.899;55.653;56.489;57.367;58.294;59.282;
+7500;60.977;58.622;56.576;54.819;53.337;52.119;51.151;50.419;49.912;49.792;49.84;50.062;50.455;50.998;51.667;52.446;53.318;54.25;55.204;56.185;
+8000;57.155;54.913;53.044;51.409;50.03;48.898;47.997;47.317;46.848;46.578;46.605;46.869;47.285;47.836;48.52;49.319;50.209;51.173;52.176;53.183;
+8500;53.514;51.431;49.695;48.169;46.888;45.838;45.003;44.374;43.938;43.691;43.66;43.775;44.22;44.798;45.491;46.285;47.18;48.156;49.188;50.24;
+9000;50.077;48.166;46.516;45.1;43.91;42.933;42.157;41.574;41.175;40.953;40.924;41.038;41.309;41.851;42.561;43.369;44.26;45.22;46.257;47.338;
+9500;46.83;45.028;43.505;42.19;41.085;40.178;39.459;38.919;38.55;38.346;38.33;38.438;38.695;39.095;39.721;40.538;41.437;42.404;43.423;44.488;
+10000;43.741;42.1;40.675;39.453;38.424;37.572;36.899;36.431;36.095;35.912;35.874;35.978;36.218;36.592;37.097;37.796;38.697;39.666;40.689;41.75;
+10500;40.823;39.33;38.008;36.875;35.919;35.133;34.508;34.035;33.743;33.576;33.546;33.646;33.874;34.224;34.696;35.286;36.045;37.011;38.032;39.093;
+11000;38.124;36.714;35.489;34.439;33.554;32.825;32.246;31.807;31.506;31.364;31.34;31.438;31.654;31.983;32.424;32.974;33.632;34.441;35.455;36.511;
+11500;35.233;33.942;32.811;31.842;31.025;30.353;29.818;29.414;29.137;28.979;28.987;29.078;29.28;29.586;29.995;30.506;31.117;31.867;32.804;33.781;
+12000;32.559;31.38;30.336;29.441;28.687;28.067;27.574;27.202;26.947;26.803;26.81;26.896;27.084;27.369;27.749;28.223;28.79;29.486;30.354;31.26;
+12500;30.122;29.011;28.047;27.221;26.525;25.953;25.499;25.156;24.921;24.79;24.797;24.879;25.054;25.318;25.672;26.112;26.638;27.283;28.089;28.929;
+13000;27.865;26.82;25.932;25.169;24.527;23.999;23.58;23.265;23.048;22.928;22.936;23.013;23.176;23.422;23.75;24.159;24.646;25.245;25.992;26.772;
+13500;25.744;24.798;23.976;23.272;22.68;22.193;21.806;21.515;21.317;21.207;21.215;21.287;21.439;21.668;21.973;22.352;22.805;23.36;24.053;24.776;
+14000;23.803;22.93;22.171;21.521;20.974;20.524;20.167;19.898;19.714;19.613;19.623;19.69;19.832;20.045;20.328;20.681;21.101;21.616;22.259;22.929;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;130.83;124.96;119.73;115.06;110.93;107.31;104.18;101.52;99.337;97.624;96.401;95.517;94.964;94.719;94.773;95.094;95.67;96.513;97.629;99;
+500;124.83;119.22;114.27;109.85;105.95;102.54;99.6;97.115;95.061;93.502;92.316;91.51;91.025;90.829;90.902;91.233;91.798;92.591;93.628;94.914;
+1000;118.9;113.66;108.97;104.8;101.11;97.898;95.13;92.799;90.891;89.417;88.358;87.603;87.171;87.026;87.129;87.468;88.029;88.795;89.766;90.962;
+1500;113.15;108.26;103.83;99.895;96.421;93.393;90.792;88.607;86.839;85.503;84.49;83.806;83.415;83.305;83.444;83.796;84.358;85.109;86.037;87.153;
+2000;107.71;103.03;98.849;95.139;91.868;89.02;86.582;84.542;82.903;81.662;80.727;80.096;79.75;79.672;79.839;80.215;80.774;81.518;82.423;83.48;
+2500;102.41;97.953;94.017;90.524;87.45;84.776;82.496;80.597;79.078;77.932;77.07;76.493;76.186;76.129;76.309;76.713;77.284;78.013;78.899;79.926;
+3000;97.227;93.065;89.355;86.061;83.168;80.661;78.533;76.776;75.363;74.264;73.517;72.994;72.724;72.689;72.876;73.271;73.867;74.605;75.471;76.469;
+3500;92.305;88.38;84.878;81.776;79.053;76.696;74.697;73.064;71.755;70.744;70.065;69.595;69.362;69.35;69.546;69.938;70.515;71.264;72.133;73.107;
+4000;87.568;83.868;80.571;77.654;75.096;72.887;71.019;69.485;68.258;67.326;66.71;66.292;66.096;66.108;66.314;66.705;67.267;67.992;68.862;69.829;
+4500;82.944;79.526;76.425;73.687;71.293;69.23;67.492;66.055;64.898;64.023;63.45;63.083;62.923;62.959;63.177;63.568;64.119;64.821;65.665;66.627;
+5000;78.599;75.327;72.42;69.854;67.616;65.698;64.088;62.753;61.68;60.863;60.277;59.969;59.843;59.902;60.133;60.524;61.066;61.748;62.563;63.5;
+5500;74.315;71.249;68.529;66.136;64.055;62.277;60.785;59.554;58.573;57.817;57.276;56.984;56.862;56.935;57.178;57.572;58.106;58.771;59.559;60.46;
+6000;70.149;67.277;64.739;62.514;60.59;58.952;57.575;56.445;55.553;54.872;54.382;54.118;54.006;54.074;54.318;54.709;55.236;55.885;56.65;57.519;
+6500;66.073;63.43;61.064;59.001;57.227;55.717;54.453;53.421;52.614;52.002;51.577;51.316;51.26;51.329;51.557;51.944;52.459;53.091;53.832;54.672;
+7000;62.198;59.692;57.491;55.58;53.943;52.561;51.415;50.493;49.77;49.223;48.843;48.671;48.61;48.69;48.91;49.272;49.776;50.393;51.107;51.918;
+7500;58.409;56.073;54.028;52.26;50.75;49.482;48.441;47.617;46.985;46.523;46.212;46.076;46.043;46.143;46.365;46.711;47.184;47.783;48.479;49.259;
+8000;54.746;52.57;50.675;49.04;47.65;46.49;45.548;44.809;44.254;43.866;43.629;43.558;43.569;43.691;43.915;44.251;44.7;45.262;45.936;46.693;
+8500;51.217;49.187;47.431;45.921;44.644;43.587;42.736;42.079;41.594;41.268;41.09;41.082;41.151;41.312;41.564;41.9;42.319;42.847;43.48;44.212;
+9000;47.794;45.923;44.299;42.908;41.739;40.777;40.01;39.426;39.006;38.74;38.647;38.651;38.77;38.983;39.268;39.628;40.055;40.55;41.13;41.816;
+9500;44.542;42.762;41.274;39.997;38.928;38.056;37.371;36.857;36.499;36.285;36.238;36.284;36.438;36.689;37.021;37.409;37.856;38.354;38.909;39.534;
+10000;41.479;39.862;38.456;37.247;36.227;35.429;34.817;34.368;34.067;33.932;33.9;33.983;34.17;34.448;34.808;35.237;35.707;36.221;36.774;37.373;
+10500;38.655;37.188;35.885;34.766;33.82;33.043;32.425;31.967;31.714;31.624;31.633;31.75;31.966;32.27;32.651;33.099;33.604;34.139;34.704;35.297;
+11000;36.048;34.661;33.455;32.419;31.546;30.828;30.259;29.827;29.529;29.372;29.436;29.585;29.827;30.152;30.553;31.018;31.538;32.1;32.684;33.285;
+11500;33.314;32.04;30.927;29.971;29.165;28.504;27.978;27.58;27.306;27.163;27.224;27.363;27.588;27.891;28.264;28.695;29.178;29.7;30.239;30.795;
+12000;30.786;29.618;28.59;27.708;26.964;26.354;25.87;25.503;25.251;25.12;25.178;25.308;25.518;25.8;26.146;26.547;26.995;27.48;27.98;28.496;
+12500;28.472;27.38;26.43;25.616;24.93;24.367;23.92;23.583;23.351;23.231;23.287;23.408;23.604;23.866;24.187;24.56;24.976;25.426;25.891;26.37;
+13000;26.332;25.31;24.434;23.683;23.05;22.53;22.118;21.807;21.594;21.485;21.538;21.651;21.834;22.077;22.376;22.722;23.108;23.526;23.957;24.402;
+13500;24.33;23.399;22.589;21.896;21.311;20.832;20.452;20.166;19.97;19.87;19.92;20.027;20.197;20.423;20.701;21.022;21.38;21.768;22.169;22.581;
+14000;22.493;21.633;20.886;20.246;19.706;19.263;18.913;18.649;18.468;18.391;18.424;18.524;18.683;18.893;19.151;19.449;19.782;20.143;20.514;20.897;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;116.37;110.84;105.86;101.4;97.436;93.924;90.842;88.165;85.853;84.027;82.619;81.593;80.98;80.698;80.713;81.006;81.559;82.347;83.348;84.538;
+500;111.15;105.89;101.17;96.951;93.197;89.878;86.968;84.448;82.268;80.562;79.192;78.226;77.646;77.388;77.41;77.695;78.226;78.983;79.943;81.09;
+1000;106.12;101.1;96.625;92.63;89.078;85.939;83.19;80.813;78.784;77.134;75.889;74.98;74.418;74.173;74.2;74.48;74.989;75.713;76.635;77.731;
+1500;101.17;96.444;92.213;88.435;85.078;82.115;79.523;77.285;75.392;73.834;72.677;71.841;71.308;71.06;71.085;71.357;71.847;72.539;73.418;74.47;
+2000;96.393;91.928;87.928;84.359;81.191;78.397;75.958;73.861;72.096;70.635;69.564;68.787;68.291;68.056;68.068;68.325;68.796;69.459;70.299;71.301;
+2500;91.829;87.498;83.767;80.396;77.41;74.781;72.49;70.53;68.886;67.535;66.548;65.827;65.366;65.144;65.153;65.389;65.837;66.471;67.272;68.23;
+3000;87.299;83.313;79.744;76.561;73.74;71.263;69.114;67.285;65.756;64.519;63.615;62.952;62.53;62.325;62.334;62.545;62.964;63.573;64.34;65.25;
+3500;82.971;79.228;75.86;72.857;70.197;67.862;65.842;64.127;62.707;61.575;60.757;60.155;59.775;59.594;59.608;59.808;60.189;60.757;61.495;62.366;
+4000;78.836;75.29;72.114;69.283;66.777;64.579;62.682;61.073;59.746;58.715;57.965;57.429;57.093;56.942;56.968;57.161;57.519;58.039;58.731;59.568;
+4500;74.852;71.426;68.494;65.83;63.473;61.411;59.632;58.126;56.891;55.927;55.243;54.764;54.478;54.36;54.404;54.599;54.941;55.429;56.063;56.852;
+5000;70.953;67.808;64.995;62.491;60.279;58.347;56.682;55.278;54.129;53.242;52.613;52.172;51.92;51.842;51.908;52.111;52.446;52.91;53.503;54.23;
+5500;67.194;64.255;61.613;59.263;57.192;55.384;53.831;52.524;51.464;50.644;50.069;49.665;49.44;49.384;49.475;49.692;50.027;50.475;51.036;51.713;
+6000;63.611;60.837;58.356;56.154;54.213;52.521;51.072;49.861;48.891;48.132;47.606;47.239;47.039;46.998;47.105;47.339;47.675;48.116;48.654;49.293;
+6500;60.15;57.545;55.222;53.162;51.35;49.774;48.426;47.302;46.402;45.699;45.222;44.889;44.714;44.688;44.8;45.042;45.393;45.829;46.351;46.959;
+7000;56.836;54.395;52.218;50.287;48.591;47.122;45.872;44.841;44.013;43.367;42.929;42.622;42.465;42.453;42.57;42.809;43.164;43.607;44.121;44.705;
+7500;53.621;51.382;49.345;47.539;45.954;44.583;43.42;42.465;41.701;41.113;40.717;40.444;40.309;40.301;40.414;40.651;40.995;41.439;41.955;42.528;
+8000;50.627;48.491;46.589;44.905;43.429;42.154;41.077;40.191;39.477;38.934;38.575;38.335;38.223;38.232;38.352;38.577;38.9;39.328;39.843;40.413;
+8500;47.675;45.71;43.936;42.37;41.001;39.822;38.83;38.01;37.353;36.849;36.486;36.294;36.206;36.229;36.357;36.583;36.9;37.302;37.784;38.353;
+9000;44.88;43.025;41.375;39.923;38.658;37.575;36.665;35.912;35.309;34.849;34.516;34.334;34.255;34.292;34.428;34.655;34.966;35.358;35.822;36.355;
+9500;42.152;40.424;38.893;37.55;36.385;35.397;34.566;33.883;33.339;32.923;32.624;32.436;32.386;32.422;32.563;32.791;33.098;33.479;33.928;34.44;
+10000;39.498;37.893;36.479;35.243;34.18;33.277;32.521;31.908;31.426;31.058;30.798;30.639;30.6;30.635;30.765;30.99;31.293;31.665;32.1;32.593;
+10500;36.93;35.442;34.135;32.999;32.027;31.207;30.529;29.983;29.558;29.241;29.025;28.898;28.882;28.926;29.051;29.259;29.552;29.914;30.335;30.811;
+11000;34.454;33.077;31.872;30.83;29.942;29.196;28.585;28.102;27.734;27.469;27.318;27.232;27.221;27.28;27.41;27.609;27.881;28.227;28.634;29.093;
+11500;31.839;30.574;29.462;28.5;27.68;26.993;26.429;25.984;25.645;25.401;25.263;25.185;25.176;25.233;25.355;25.54;25.793;26.116;26.494;26.919;
+12000;29.42;28.261;27.234;26.347;25.59;24.956;24.436;24.025;23.714;23.489;23.364;23.292;23.286;23.339;23.453;23.627;23.862;24.163;24.515;24.91;
+12500;27.208;26.124;25.175;24.356;23.658;23.073;22.594;22.215;21.928;21.722;21.607;21.542;21.537;21.588;21.695;21.857;22.076;22.356;22.683;23.051;
+13000;25.161;24.148;23.272;22.516;21.872;21.332;20.89;20.542;20.277;20.088;19.983;19.924;19.92;19.969;20.069;20.22;20.425;20.685;20.99;21.332;
+13500;23.247;22.323;21.515;20.817;20.222;19.723;19.315;18.994;18.751;18.576;18.481;18.427;18.425;18.471;18.565;18.706;18.897;19.139;19.423;19.74;
+14000;21.492;20.638;19.892;19.247;18.698;18.238;17.862;17.565;17.34;17.179;17.092;17.043;17.043;17.087;17.174;17.306;17.483;17.709;17.973;18.269;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;102.4;97.182;92.5;88.323;84.607;81.319;78.42;75.915;73.763;71.955;70.479;69.359;68.566;68.133;68.046;68.234;68.656;69.302;70.147;71.158;
+500;97.844;92.859;88.416;84.451;80.926;77.807;75.051;72.684;70.644;68.934;67.548;66.499;65.763;65.378;65.31;65.496;65.903;66.523;67.334;68.307;
+1000;93.437;88.676;84.463;80.703;77.358;74.399;71.78;69.536;67.614;66.004;64.705;63.728;63.045;62.698;62.646;62.832;63.225;63.82;64.594;65.533;
+1500;89.088;84.629;80.638;77.075;73.905;71.099;68.613;66.487;64.673;63.152;61.936;61.039;60.412;60.1;60.054;60.238;60.622;61.192;61.932;62.826;
+2000;84.892;80.715;76.938;73.564;70.561;67.904;65.549;63.535;61.821;60.39;59.268;58.418;57.848;57.577;57.541;57.716;58.089;58.638;59.345;60.199;
+2500;80.929;76.942;73.366;70.171;67.327;64.813;62.585;60.677;59.062;57.712;56.669;55.878;55.363;55.118;55.096;55.27;55.625;56.155;56.832;57.647;
+3000;77.081;73.308;69.927;66.903;64.212;61.83;59.721;57.913;56.393;55.125;54.151;53.417;52.953;52.732;52.719;52.886;53.233;53.74;54.391;55.169;
+3500;73.372;69.81;66.615;63.757;61.213;58.96;56.966;55.247;53.812;52.623;51.713;51.033;50.614;50.417;50.412;50.578;50.909;51.393;52.019;52.765;
+4000;69.758;66.438;63.423;60.726;58.324;56.196;54.319;52.687;51.329;50.207;49.353;48.726;48.346;48.171;48.175;48.339;48.659;49.117;49.711;50.428;
+4500;66.354;63.185;60.342;57.8;55.536;53.531;51.766;50.225;48.944;47.89;47.082;46.495;46.149;45.992;46.004;46.168;46.476;46.916;47.478;48.156;
+5000;63.067;60.009;57.366;54.972;52.841;50.957;49.302;47.849;46.645;45.658;44.902;44.356;44.026;43.884;43.899;44.064;44.362;44.783;45.319;45.96;
+5500;59.829;57.019;54.5;52.248;50.244;48.472;46.919;45.56;44.429;43.508;42.785;42.299;41.985;41.847;41.865;42.024;42.313;42.717;43.228;43.839;
+6000;56.734;54.095;51.728;49.614;47.734;46.075;44.622;43.36;42.298;41.438;40.764;40.317;40.023;39.887;39.899;40.055;40.331;40.718;41.206;41.787;
+6500;53.746;51.266;49.044;47.061;45.301;43.749;42.394;41.228;40.24;39.445;38.831;38.416;38.138;38.004;38.01;38.15;38.416;38.787;39.252;39.802;
+7000;50.904;48.522;46.456;44.595;42.944;41.493;40.232;39.156;38.246;37.513;36.978;36.584;36.331;36.205;36.201;36.32;36.563;36.918;37.364;37.889;
+7500;48.104;45.922;43.966;42.222;40.676;39.318;38.141;37.141;36.308;35.64;35.162;34.807;34.581;34.47;34.472;34.58;34.792;35.112;35.538;36.041;
+8000;45.448;43.403;41.572;39.939;38.493;37.223;36.128;35.197;34.429;33.819;33.394;33.08;32.883;32.791;32.801;32.906;33.105;33.396;33.779;34.253;
+8500;42.894;40.981;39.268;37.742;36.392;35.21;34.19;33.326;32.616;32.062;31.675;31.398;31.232;31.162;31.184;31.291;31.481;31.753;32.106;32.541;
+9000;40.436;38.649;37.05;35.627;34.369;33.271;32.324;31.525;30.873;30.368;30.015;29.765;29.621;29.577;29.614;29.728;29.915;30.173;30.503;30.903;
+9500;38.06;36.405;34.914;33.589;32.421;31.402;30.526;29.791;29.204;28.734;28.415;28.19;28.065;28.033;28.086;28.211;28.399;28.65;28.963;29.336;
+10000;35.8;34.246;32.859;31.628;30.545;29.602;28.794;28.12;27.579;27.158;26.871;26.669;26.56;26.54;26.601;26.736;26.93;27.178;27.479;27.832;
+10500;33.628;32.181;30.89;29.746;28.739;27.868;27.126;26.51;26.019;25.638;25.382;25.202;25.11;25.099;25.165;25.302;25.503;25.753;26.046;26.384;
+11000;31.561;30.215;29.016;27.953;27.02;26.212;25.526;24.963;24.515;24.17;23.944;23.786;23.71;23.709;23.779;23.916;24.115;24.369;24.662;24.99;
+11500;29.166;27.928;26.82;25.839;24.977;24.232;23.6;23.08;22.668;22.35;22.142;21.998;21.929;21.93;21.997;22.125;22.311;22.548;22.821;23.126;
+12000;26.952;25.814;24.791;23.885;23.09;22.402;21.819;21.34;20.96;20.668;20.477;20.345;20.283;20.285;20.348;20.469;20.642;20.863;21.117;21.402;
+12500;24.919;23.859;22.915;22.079;21.345;20.71;20.172;19.731;19.381;19.112;18.937;18.816;18.76;18.764;18.824;18.937;19.099;19.304;19.541;19.806;
+13000;23.038;22.043;21.182;20.41;19.733;19.147;18.65;18.244;17.921;17.674;17.513;17.403;17.352;17.357;17.413;17.52;17.671;17.862;18.083;18.329;
+13500;21.288;20.387;19.582;18.869;18.244;17.702;17.244;16.868;16.57;16.356;16.196;16.095;16.05;16.055;16.109;16.209;16.35;16.528;16.733;16.963;
+14000;19.68;18.846;18.103;17.445;16.868;16.369;15.946;15.6;15.325;15.128;14.981;14.888;14.846;14.851;14.903;14.996;15.128;15.294;15.486;15.699;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;89.555;84.653;80.285;76.402;72.956;69.982;67.238;64.865;62.788;60.99;59.471;58.279;57.353;56.724;56.416;56.45;56.751;57.252;57.918;58.754;
+500;85.532;80.881;76.737;73.051;69.783;66.95;64.361;62.115;60.154;58.456;57.015;55.892;55.034;54.452;54.18;54.235;54.538;55.026;55.673;56.464;
+1000;81.676;77.236;73.306;69.809;66.708;64.01;61.563;59.439;57.592;55.952;54.642;53.58;52.777;52.248;52.003;52.079;52.375;52.851;53.479;54.244;
+1500;77.947;73.716;69.992;66.677;63.736;61.171;58.856;56.846;55.103;53.564;52.323;51.336;50.59;50.109;49.893;49.977;50.268;50.727;51.336;52.074;
+2000;74.271;70.318;66.789;63.648;60.86;58.421;56.234;54.335;52.692;51.251;50.097;49.152;48.461;48.03;47.852;47.933;48.216;48.654;49.244;49.957;
+2500;70.731;67.04;63.699;60.724;58.082;55.764;53.698;51.903;50.353;49.007;47.919;47.034;46.396;46;45.862;45.95;46.216;46.639;47.203;47.892;
+3000;67.418;63.879;60.719;57.902;55.4;53.198;51.246;49.548;48.086;46.829;45.806;44.982;44.393;44.032;43.922;44.013;44.274;44.677;45.219;45.877;
+3500;64.175;60.834;57.846;55.182;52.814;50.723;48.88;47.275;45.894;44.718;43.758;42.994;42.451;42.125;42.036;42.135;42.382;42.769;43.289;43.918;
+4000;61.053;57.898;55.075;52.557;50.319;48.336;46.597;45.082;43.779;42.678;41.773;41.065;40.567;40.276;40.207;40.307;40.549;40.916;41.409;42.013;
+4500;58.05;55.072;52.408;50.029;47.913;46.033;44.394;42.965;41.737;40.706;39.858;39.2;38.741;38.484;38.431;38.532;38.766;39.122;39.587;40.157;
+5000;55.161;52.354;49.842;47.599;45.602;43.823;42.276;40.927;39.767;38.796;38.008;37.399;36.976;36.751;36.709;36.81;37.035;37.378;37.824;38.362;
+5500;52.373;49.736;47.369;45.255;43.372;41.693;40.235;38.967;37.877;36.964;36.218;35.662;35.271;35.072;35.04;35.142;35.358;35.686;36.114;36.626;
+6000;49.681;47.215;44.987;42.996;41.223;39.641;38.266;37.076;36.053;35.198;34.51;33.996;33.636;33.454;33.423;33.524;33.735;34.049;34.454;34.945;
+6500;47.125;44.787;42.692;40.819;39.152;37.664;36.369;35.252;34.292;33.494;32.859;32.386;32.06;31.901;31.874;31.962;32.16;32.463;32.85;33.316;
+7000;44.646;42.459;40.49;38.729;37.16;35.762;34.54;33.493;32.595;31.848;31.273;30.831;30.54;30.398;30.378;30.464;30.65;30.93;31.297;31.741;
+7500;42.304;40.23;38.381;36.726;35.252;33.938;32.785;31.801;30.959;30.263;29.733;29.33;29.07;28.945;28.931;29.015;29.194;29.459;29.805;30.218;
+8000;40.024;38.091;36.357;34.806;33.423;32.194;31.106;30.181;29.389;28.738;28.246;27.878;27.65;27.538;27.531;27.615;27.787;28.039;28.365;28.76;
+8500;37.836;36.036;34.413;32.96;31.665;30.517;29.497;28.629;27.889;27.28;26.819;26.48;26.276;26.18;26.178;26.262;26.428;26.668;26.977;27.35;
+9000;35.752;34.061;32.542;31.183;29.974;28.903;27.953;27.138;26.451;25.884;25.455;25.141;24.952;24.868;24.871;24.954;25.115;25.345;25.638;25.989;
+9500;33.739;32.157;30.738;29.471;28.342;27.344;26.465;25.704;25.067;24.543;24.133;23.859;23.682;23.602;23.609;23.694;23.847;24.066;24.346;24.679;
+10000;31.823;30.316;28.998;27.817;26.766;25.839;25.026;24.321;23.733;23.252;22.877;22.629;22.465;22.388;22.392;22.476;22.627;22.835;23.1;23.415;
+10500;29.928;28.552;27.32;26.22;25.243;24.384;23.634;22.985;22.445;22.006;21.669;21.446;21.296;21.225;21.227;21.302;21.446;21.649;21.901;22.2;
+11000;28.14;26.858;25.709;24.685;23.777;22.979;22.286;21.693;21.199;20.802;20.515;20.305;20.172;20.107;20.111;20.179;20.31;20.503;20.745;21.029;
+11500;26.003;24.824;23.764;22.818;21.98;21.243;20.604;20.057;19.601;19.236;18.972;18.779;18.658;18.6;18.604;18.669;18.792;18.971;19.196;19.461;
+12000;24.026;22.944;21.966;21.093;20.319;19.639;19.049;18.545;18.124;17.788;17.545;17.368;17.257;17.205;17.211;17.272;17.387;17.554;17.764;18.01;
+12500;22.216;21.207;20.303;19.498;18.783;18.156;17.611;17.146;16.759;16.449;16.226;16.063;15.962;15.915;15.921;15.98;16.087;16.243;16.439;16.668;
+13000;20.533;19.603;18.768;18.024;17.365;16.785;16.282;15.853;15.497;15.211;15.006;14.857;14.764;14.722;14.729;14.784;14.885;15.03;15.212;15.426;
+13500;18.981;18.121;17.35;16.664;16.055;15.52;15.056;14.66;14.33;14.067;13.879;13.742;13.656;13.618;13.626;13.678;13.772;13.908;14.078;14.277;
+14000;17.54;16.751;16.04;15.406;14.844;14.351;13.923;13.558;13.254;13.011;12.839;12.713;12.635;12.6;12.608;12.655;12.743;12.87;13.028;13.213;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;77.965;73.332;69.266;65.662;62.534;59.732;57.142;54.879;52.885;51.153;49.699;48.387;47.356;46.479;45.818;45.472;45.44;45.709;46.154;46.764;
+500;74.414;70.046;66.187;62.766;59.799;57.134;54.684;52.547;50.658;49.019;47.642;46.427;45.467;44.668;44.075;43.779;43.789;44.063;44.498;45.06;
+1000;71.016;66.874;63.214;59.969;57.157;54.618;52.301;50.277;48.493;46.949;45.654;44.524;43.629;42.897;42.37;42.125;42.167;42.446;42.871;43.405;
+1500;67.75;63.814;60.346;57.269;54.604;52.187;49.995;48.079;46.394;44.935;43.716;42.738;41.839;41.169;40.703;40.506;40.576;40.857;41.272;41.792;
+2000;64.557;60.864;57.579;54.663;52.138;49.839;47.768;45.957;44.362;42.985;41.835;40.915;40.094;39.485;39.07;38.921;39.018;39.297;39.702;40.208;
+2500;61.493;58.019;54.91;52.149;49.757;47.572;45.617;43.906;42.348;41.098;40.015;39.144;38.401;37.84;37.478;37.37;37.492;37.769;38.162;38.655;
+3000;58.58;55.277;52.336;49.724;47.458;45.387;43.541;41.922;40.458;39.272;38.252;37.43;36.759;36.241;35.923;35.836;35.99;36.273;36.654;37.132;
+3500;55.769;52.635;49.855;47.386;45.241;43.279;41.539;40.013;38.636;37.509;36.545;35.771;35.163;34.671;34.409;34.354;34.511;34.798;35.179;35.641;
+4000;53.042;50.095;47.471;45.137;43.105;41.253;39.612;38.171;36.876;35.808;34.9;34.166;33.613;33.165;32.937;32.91;33.062;33.349;33.724;34.181;
+4500;50.418;47.65;45.173;42.971;41.048;39.302;37.756;36.4;35.186;34.166;33.312;32.629;32.108;31.706;31.506;31.501;31.658;31.928;32.299;32.745;
+5000;47.917;45.296;42.96;40.883;39.063;37.419;35.965;34.692;33.555;32.588;31.79;31.148;30.648;30.291;30.119;30.131;30.288;30.551;30.904;31.342;
+5500;45.506;43.029;40.829;38.871;37.152;35.605;34.237;33.04;31.979;31.09;30.319;29.72;29.251;28.935;28.781;28.8;28.956;29.21;29.549;29.971;
+6000;43.173;40.851;38.779;36.935;35.311;33.856;32.57;31.447;30.458;29.621;28.899;28.341;27.912;27.625;27.492;27.522;27.668;27.907;28.234;28.631;
+6500;40.941;38.756;36.807;35.07;33.538;32.17;30.963;29.908;28.986;28.202;27.527;27.009;26.617;26.359;26.247;26.282;26.424;26.654;26.959;27.338;
+7000;38.834;36.746;34.913;33.279;31.834;30.548;29.414;28.424;27.565;26.831;26.203;25.722;25.363;25.134;25.043;25.082;25.218;25.437;25.732;26.09;
+7500;36.743;34.816;33.094;31.559;30.197;28.989;27.924;26.996;26.193;25.51;24.922;24.479;24.152;23.949;23.877;23.918;24.051;24.258;24.54;24.884;
+8000;34.741;32.963;31.348;29.906;28.625;27.49;26.492;25.621;24.87;24.215;23.703;23.284;22.983;22.801;22.747;22.792;22.918;23.118;23.385;23.712;
+8500;32.879;31.188;29.672;28.32;27.115;26.051;25.115;24.299;23.597;22.992;22.512;22.128;21.855;21.694;21.653;21.702;21.823;22.013;22.268;22.577;
+9000;31.086;29.483;28.064;26.796;25.665;24.667;23.791;23.027;22.371;21.812;21.365;21.012;20.765;20.626;20.595;20.646;20.766;20.946;21.187;21.48;
+9500;29.329;27.846;26.518;25.332;24.272;23.337;22.519;21.805;21.192;20.677;20.263;19.94;19.715;19.595;19.572;19.624;19.74;19.917;20.145;20.42;
+10000;27.647;26.276;25.036;23.927;22.935;22.059;21.297;20.63;20.06;19.582;19.192;18.907;18.704;18.601;18.583;18.636;18.749;18.919;19.139;19.401;
+10500;26.064;24.773;23.614;22.579;21.653;20.833;20.122;19.501;18.97;18.529;18.174;17.913;17.732;17.644;17.63;17.68;17.79;17.954;18.164;18.416;
+11000;24.536;23.337;22.255;21.289;20.425;19.658;18.995;18.417;17.924;17.515;17.201;16.957;16.797;16.721;16.711;16.761;16.865;17.021;17.222;17.462;
+11500;22.681;21.569;20.571;19.678;18.881;18.173;17.561;17.028;16.574;16.196;15.907;15.683;15.536;15.466;15.459;15.506;15.604;15.75;15.937;16.161;
+12000;20.964;19.934;19.013;18.189;17.453;16.8;16.236;15.743;15.325;14.977;14.711;14.504;14.37;14.306;14.301;14.345;14.437;14.573;14.748;14.957;
+12500;19.375;18.426;17.575;16.814;16.134;15.531;15.01;14.555;14.17;13.85;13.597;13.414;13.291;13.234;13.23;13.272;13.358;13.485;13.648;13.842;
+13000;17.909;17.032;16.247;15.544;14.916;14.36;13.879;13.46;13.103;12.808;12.583;12.407;12.293;12.241;12.239;12.279;12.359;12.478;12.63;12.811;
+13500;16.548;15.744;15.019;14.37;13.791;13.278;12.835;12.448;12.119;11.847;11.639;11.478;11.374;11.326;11.324;11.36;11.436;11.547;11.688;11.857;
+14000;15.286;14.554;13.884;13.285;12.751;12.277;11.868;11.512;11.209;10.958;10.767;10.619;10.524;10.481;10.479;10.515;10.585;10.687;10.818;10.975;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;67.545;63.272;59.495;56.153;53.279;50.561;48.175;45.936;44.078;42.388;40.836;39.415;38.145;37.018;36.08;35.403;35.015;34.936;35.199;35.655;
+500;64.371;60.412;56.829;53.658;50.842;48.36;46.099;43.993;42.231;40.634;39.198;37.851;36.666;35.627;34.727;34.137;33.792;33.749;34.022;34.461;
+1000;61.492;57.655;54.257;51.251;48.581;46.227;44.088;42.094;40.433;38.932;37.519;36.336;35.221;34.272;33.468;32.905;32.597;32.583;32.863;33.286;
+1500;58.72;54.996;51.774;48.929;46.397;44.165;42.139;40.256;38.688;37.273;35.957;34.853;33.818;32.948;32.214;31.696;31.431;31.445;31.72;32.129;
+2000;55.872;52.428;49.379;46.689;44.287;42.173;40.255;38.478;36.998;35.665;34.437;33.405;32.445;31.647;30.989;30.515;30.296;30.331;30.597;30.989;
+2500;53.207;49.954;47.07;44.527;42.25;40.248;38.436;36.76;35.362;34.108;32.963;32;31.109;30.365;29.745;29.359;29.185;29.239;29.497;29.869;
+3000;50.652;47.575;44.848;42.445;40.363;38.394;36.679;35.1;33.781;32.601;31.534;30.634;29.811;29.118;28.561;28.207;28.087;28.171;28.42;28.77;
+3500;48.194;45.286;42.708;40.439;38.47;36.61;34.991;33.504;32.256;31.145;30.151;29.309;28.55;27.903;27.408;27.1;27.001;27.115;27.362;27.696;
+4000;45.837;43.082;40.649;38.508;36.645;34.889;33.362;31.964;30.787;29.745;28.819;28.031;27.328;26.723;26.31;26.019;25.935;26.072;26.317;26.64;
+4500;43.576;40.962;38.666;36.648;34.885;33.233;31.791;30.478;29.364;28.391;27.573;26.795;26.148;25.596;25.217;24.964;24.902;25.045;25.292;25.599;
+5000;41.362;38.924;36.759;34.857;33.19;31.633;30.278;29.043;27.988;27.081;26.312;25.598;25.002;24.502;24.158;23.944;23.901;24.031;24.281;24.584;
+5500;39.242;36.966;34.926;33.134;31.559;30.093;28.817;27.663;26.661;25.814;25.093;24.444;23.89;23.443;23.126;22.953;22.938;23.066;23.281;23.585;
+6000;37.248;35.086;33.165;31.478;29.989;28.611;27.41;26.328;25.384;24.592;23.914;23.327;22.809;22.41;22.129;21.985;21.994;22.126;22.334;22.607;
+6500;35.314;33.282;31.475;29.887;28.483;27.188;26.058;25.043;24.151;23.411;22.775;22.244;21.762;21.404;21.158;21.042;21.07;21.205;21.409;21.664;
+7000;33.466;31.551;29.852;28.359;27.035;25.82;24.759;23.809;22.967;22.278;21.678;21.193;20.746;20.423;20.212;20.123;20.165;20.303;20.502;20.751;
+7500;31.7;29.889;28.293;26.89;25.644;24.505;23.509;22.62;21.854;21.184;20.623;20.178;19.767;19.475;19.292;19.225;19.281;19.419;19.614;19.857;
+8000;30.01;28.275;26.797;25.48;24.308;23.241;22.308;21.478;20.758;20.128;19.604;19.188;18.819;18.558;18.398;18.353;18.418;18.555;18.747;18.982;
+8500;28.34;26.765;25.362;24.125;23.024;22.027;21.153;20.379;19.704;19.114;18.624;18.232;17.904;17.669;17.534;17.505;17.579;17.715;17.898;18.128;
+9000;26.745;25.3;23.985;22.825;21.792;20.861;20.044;19.322;18.69;18.138;17.681;17.313;17.022;16.811;16.696;16.683;16.759;16.896;17.076;17.296;
+9500;25.274;23.895;22.665;21.578;20.61;19.74;18.978;18.305;17.716;17.201;16.775;16.431;16.169;15.98;15.884;15.884;15.961;16.095;16.273;16.488;
+10000;23.865;22.536;21.399;20.381;19.475;18.664;17.953;17.327;16.763;16.3;15.903;15.593;15.346;15.18;15.097;15.108;15.186;15.315;15.489;15.7;
+10500;22.463;21.26;20.187;19.234;18.387;17.631;16.968;16.386;15.865;15.431;15.065;14.779;14.556;14.408;14.34;14.356;14.435;14.559;14.724;14.93;
+11000;21.126;20.028;19.026;18.136;17.345;16.641;16.023;15.481;15.002;14.594;14.259;13.996;13.796;13.665;13.611;13.631;13.706;13.826;13.986;14.179;
+11500;19.549;18.511;17.586;16.764;16.033;15.383;14.813;14.313;13.87;13.496;13.186;12.944;12.76;12.64;12.591;12.611;12.681;12.794;12.942;13.123;
+12000;18.066;17.11;16.255;15.496;14.821;14.221;13.694;13.232;12.824;12.48;12.194;11.972;11.802;11.692;11.648;11.667;11.733;11.838;11.977;12.145;
+12500;16.699;15.815;15.026;14.326;13.703;13.149;12.663;12.237;11.859;11.541;11.285;11.073;10.916;10.815;10.775;10.794;10.856;10.954;11.084;11.24;
+13000;15.431;14.619;13.89;13.244;12.669;12.158;11.709;11.317;10.968;10.675;10.439;10.244;10.101;10.007;9.9701;9.9871;10.046;10.137;10.257;10.403;
+13500;14.257;13.513;12.84;12.244;11.713;11.241;10.828;10.466;10.144;9.8748;9.6573;9.4779;9.3462;9.261;9.2273;9.2443;9.2983;9.3825;9.4935;9.6294;
+14000;13.187;12.491;11.87;11.319;10.829;10.394;10.013;9.6787;9.3824;9.1346;8.934;8.7691;8.6481;8.5704;8.5404;8.5571;8.6079;8.687;8.7907;8.9162;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;58.127;54.152;50.655;47.572;44.862;42.364;40.099;38.044;36.195;34.497;32.893;31.407;29.959;28.731;27.63;26.715;26.01;25.576;25.436;25.656;
+500;55.453;51.708;48.39;45.466;42.891;40.523;38.379;36.431;34.689;33.089;31.572;30.179;28.844;27.672;26.648;25.798;25.154;24.776;24.676;24.912;
+1000;52.918;49.35;46.203;43.432;40.985;38.741;36.707;34.862;33.223;31.722;30.289;28.985;27.755;26.638;25.684;24.9;24.312;23.983;23.922;24.168;
+1500;50.452;47.072;44.091;41.466;39.143;37.017;35.092;33.344;31.799;30.39;29.035;27.819;26.675;25.627;24.742;24.02;23.488;23.2;23.175;23.428;
+2000;48.036;44.875;42.052;39.569;37.364;35.351;33.529;31.875;30.415;29.023;27.824;26.677;25.609;24.637;23.82;23.155;22.675;22.427;22.431;22.691;
+2500;45.831;42.758;40.087;37.74;35.652;33.747;32.023;30.457;29.08;27.77;26.645;25.567;24.567;23.662;22.912;22.31;21.88;21.668;21.695;21.96;
+3000;43.574;40.717;38.193;35.974;33.998;32.198;30.571;29.091;27.795;26.565;25.506;24.487;23.556;22.714;22.02;21.468;21.093;20.92;20.974;21.227;
+3500;41.414;38.75;36.364;34.273;32.403;30.703;29.167;27.768;26.552;25.401;24.406;23.458;22.582;21.756;21.153;20.607;20.311;20.174;20.259;20.508;
+4000;39.406;36.855;34.604;32.631;30.863;29.259;27.812;26.489;25.353;24.275;23.341;22.456;21.644;20.895;20.319;19.85;19.548;19.435;19.538;19.792;
+4500;37.479;35.03;32.908;31.052;29.381;27.866;26.502;25.255;24.19;23.236;22.308;21.482;20.735;20.054;19.506;19.08;18.813;18.716;18.827;19.073;
+5000;35.534;33.278;31.276;29.528;27.95;26.526;25.242;24.064;23.068;22.175;21.31;20.541;19.849;19.234;18.716;18.328;18.097;18.024;18.137;18.365;
+5500;33.727;31.594;29.708;28.064;26.574;25.232;24.028;22.915;21.985;21.149;20.345;19.629;18.987;18.428;17.947;17.596;17.395;17.346;17.467;17.685;
+6000;31.998;29.976;28.2;26.655;25.25;23.988;22.857;21.811;20.941;20.158;19.411;18.746;18.15;17.639;17.199;16.886;16.71;16.681;16.808;17.017;
+6500;30.344;28.391;26.749;25.3;23.976;22.79;21.729;20.746;19.934;19.203;18.511;17.895;17.336;16.871;16.463;16.195;16.041;16.028;16.161;16.362;
+7000;28.698;26.927;25.359;23.998;22.751;21.637;20.642;19.719;18.963;18.28;17.642;17.071;16.555;16.13;15.772;15.522;15.39;15.394;15.524;15.718;
+7500;27.129;25.496;24.023;22.748;21.574;20.527;19.596;18.761;18.027;17.387;16.805;16.273;15.797;15.41;15.095;14.869;14.757;14.775;14.901;15.084;
+8000;25.681;24.123;22.741;21.546;20.443;19.462;18.59;17.809;17.123;16.527;15.996;15.499;15.065;14.712;14.428;14.232;14.146;14.175;14.294;14.465;
+8500;24.298;22.787;21.51;20.393;19.357;18.438;17.622;16.892;16.252;15.697;15.214;14.751;14.356;14.032;13.782;13.61;13.547;13.587;13.704;13.865;
+9000;22.914;21.547;20.335;19.288;18.315;17.456;16.692;16.011;15.413;14.897;14.427;14.029;13.668;13.369;13.152;13.013;12.961;13.014;13.126;13.28;
+9500;21.598;20.341;19.208;18.226;17.316;16.513;15.8;15.164;14.606;14.125;13.695;13.329;13.005;12.736;12.54;12.424;12.387;12.452;12.562;12.708;
+10000;20.383;19.189;18.13;17.21;16.359;15.609;14.943;14.331;13.831;13.384;13.015;12.652;12.36;12.119;11.947;11.847;11.828;11.897;12.011;12.15;
+10500;19.225;18.073;17.098;16.237;15.443;14.743;14.122;13.554;13.086;12.671;12.327;12.001;11.735;11.52;11.371;11.291;11.288;11.353;11.466;11.605;
+11000;18.075;17.036;16.115;15.308;14.567;13.915;13.336;12.808;12.371;11.986;11.665;11.372;11.131;10.937;10.813;10.75;10.76;10.827;10.93;11.068;
+11500;16.708;15.746;14.895;14.149;13.465;12.863;12.329;11.841;11.439;11.083;10.788;10.517;10.294;10.119;10.003;9.9442;9.9547;10.018;10.114;10.242;
+12000;15.441;14.554;13.77;13.08;12.448;11.893;11.4;10.95;10.578;10.25;9.9774;9.7256;9.521;9.3601;9.2528;9.1995;9.2098;9.2691;9.3586;9.4789;
+12500;14.266;13.453;12.729;12.092;11.509;10.997;10.542;10.125;9.7829;9.4809;9.2303;8.9986;8.8104;8.6613;8.5617;8.5118;8.5209;8.5764;8.66;8.7727;
+13000;13.175;12.435;11.766;11.178;10.64;10.167;9.7473;9.3638;9.0483;8.77;8.5396;8.3261;8.1532;8.0157;7.9245;7.8794;7.8881;7.9388;8.0155;8.1191;
+13500;12.192;11.494;10.877;10.334;9.8367;9.4009;9.0135;8.6597;8.3691;8.1127;7.9007;7.7038;7.545;7.4184;7.335;7.2941;7.3031;7.3508;7.4232;7.5189;
+14000;11.279;10.625;10.055;9.5537;9.0945;8.6925;8.3351;8.0086;7.7409;7.5047;7.3097;7.1283;6.9821;6.8658;6.7894;6.7527;6.7618;6.8067;6.8748;6.9641;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;49.593;45.921;42.705;39.878;37.364;35.076;32.929;31.034;29.252;27.56;25.939;24.304;22.854;21.502;20.258;19.148;18.17;17.419;16.887;16.659;
+500;47.317;43.837;40.786;38.104;35.718;33.549;31.516;29.725;28.042;26.445;24.916;23.393;22.012;20.744;19.584;18.549;17.647;16.962;16.49;16.304;
+1000;45.123;41.826;38.933;36.39;34.125;32.069;30.142;28.447;26.861;25.359;23.922;22.504;21.189;20.002;18.919;17.951;17.126;16.504;16.086;15.939;
+1500;42.954;39.889;37.149;34.739;32.591;30.641;28.815;27.211;25.714;24.297;22.947;21.634;20.453;19.273;18.265;17.373;16.614;16.045;15.678;15.568;
+2000;41.031;38.022;35.426;33.146;31.109;29.265;27.536;26.021;24.608;23.27;22.001;20.775;19.657;18.561;17.622;16.796;16.104;15.586;15.266;15.189;
+2500;39.016;36.222;33.767;31.609;29.679;27.935;26.298;24.869;23.539;22.276;21.088;19.944;18.883;17.854;16.983;16.231;15.598;15.13;14.851;14.805;
+3000;37.094;34.487;32.166;30.126;28.3;26.652;25.107;23.756;22.503;21.316;20.202;19.139;18.133;17.17;16.356;15.694;15.085;14.674;14.435;14.415;
+3500;35.311;32.817;30.624;28.697;26.969;25.413;23.955;22.68;21.501;20.385;19.342;18.353;17.405;16.504;15.794;15.138;14.598;14.209;14.015;14.024;
+4000;33.604;31.212;29.14;27.322;25.687;24.218;22.844;21.642;20.532;19.483;18.509;17.58;16.694;15.854;15.156;14.592;14.1;13.752;13.585;13.627;
+4500;31.888;29.668;27.713;25.998;24.452;23.067;21.77;20.64;19.595;18.611;17.696;16.83;16.002;15.219;14.614;14.057;13.611;13.301;13.162;13.223;
+5000;30.278;28.184;26.341;24.725;23.263;21.958;20.736;19.673;18.693;17.767;16.911;16.102;15.33;14.603;14.043;13.532;13.128;12.856;12.743;12.819;
+5500;28.739;26.757;25.021;23.5;22.121;20.891;19.741;18.741;17.822;16.955;16.152;15.397;14.676;14.002;13.486;13.017;12.651;12.414;12.326;12.416;
+6000;27.267;25.343;23.752;22.321;21.022;19.862;18.781;17.842;16.98;16.172;15.421;14.716;14.007;13.418;12.91;12.511;12.18;11.975;11.91;12.013;
+6500;25.812;24.069;22.532;21.188;19.964;18.875;17.858;16.976;16.168;15.414;14.712;14.055;13.41;12.888;12.412;12.017;11.718;11.543;11.497;11.609;
+7000;24.425;22.805;21.36;20.098;18.945;17.924;16.968;16.141;15.384;14.678;14.027;13.416;12.83;12.336;11.899;11.539;11.269;11.118;11.09;11.205;
+7500;23.105;21.59;20.234;19.049;17.966;17.007;16.113;15.335;14.625;13.971;13.363;12.8;12.266;11.8;11.399;11.071;10.832;10.703;10.692;10.807;
+8000;21.848;20.424;19.153;18.041;17.025;16.124;15.288;14.559;13.897;13.29;12.721;12.203;11.716;11.278;10.911;10.614;10.403;10.295;10.3;10.417;
+8500;20.649;19.306;18.115;17.072;16.119;15.276;14.495;13.813;13.195;12.633;12.102;11.623;11.176;10.771;10.436;10.168;9.9824;9.8936;9.914;10.032;
+9000;19.507;18.235;17.121;16.144;15.251;14.462;13.732;13.097;12.519;12.001;11.506;11.062;10.653;10.279;9.9743;9.7338;9.5712;9.4997;9.5329;9.6481;
+9500;18.389;17.208;16.168;15.253;14.417;13.679;12.999;12.408;11.869;11.393;10.931;10.519;10.144;9.8013;9.5254;9.3098;9.1693;9.1137;9.1568;9.2692;
+10000;17.328;16.227;15.256;14.4;13.619;12.929;12.295;11.744;11.244;10.781;10.378;9.9956;9.6527;9.3337;9.0901;8.8967;8.7766;8.7352;8.7864;8.8953;
+10500;16.318;15.29;14.384;13.584;12.854;12.21;11.619;11.106;10.644;10.217;9.8448;9.4916;9.1782;8.8976;8.6702;8.4806;8.3937;8.3651;8.4219;8.527;
+11000;15.354;14.394;13.55;12.803;12.123;11.522;10.973;10.492;10.064;9.6732;9.33;9.0063;8.7203;8.471;8.2617;8.1076;8.0209;8.0033;8.0636;8.1649;
+11500;14.19;13.304;12.525;11.835;11.207;10.654;10.146;9.7036;9.3079;8.9466;8.6292;8.3296;8.065;7.8319;7.6415;7.4994;7.4197;7.404;7.4607;7.5553;
+12000;13.11;12.297;11.578;10.941;10.362;9.8496;9.3805;8.9728;8.6089;8.2753;7.9831;7.7067;7.4629;7.2498;7.0707;6.9386;6.864;6.8502;6.9032;6.9914;
+12500;12.105;11.366;10.703;10.114;9.5787;9.1067;8.6739;8.2983;7.9623;7.6545;7.3855;7.1306;6.9061;6.7098;6.5446;6.4232;6.3551;6.3416;6.3894;6.4694;
+13000;11.204;10.506;9.8936;9.3497;8.8557;8.4201;8.0206;7.6747;7.3646;7.0805;6.8329;6.5985;6.3911;6.2099;6.0578;5.9464;5.8842;5.8726;5.9177;5.9928;
+13500;10.367;9.6981;9.1452;8.6433;8.1875;7.7855;7.4167;7.0981;6.8119;6.5498;6.3216;6.1048;5.9148;5.747;5.6076;5.5051;5.4484;5.4383;5.4811;5.5514;
+14000;9.5712;8.9762;8.4544;7.9905;7.5698;7.1989;6.8584;6.5647;6.3009;6.059;5.849;5.6493;5.474;5.3181;5.1907;5.0968;5.0451;5.0366;5.0769;5.1428;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;41.926;38.568;35.628;33.045;30.734;28.624;26.658;24.848;23.132;21.444;19.79;18.252;16.789;15.303;13.898;12.555;11.396;10.417;9.5765;8.9892;
+500;40.01;36.818;34.026;31.573;29.379;27.38;25.518;23.809;22.189;20.522;19.037;17.578;16.197;14.815;13.5;12.249;11.155;10.232;9.4734;8.9437;
+1000;38.153;35.127;32.48;30.152;28.073;26.179;24.413;22.796;21.266;19.711;18.305;16.921;15.617;14.329;13.091;11.94;10.907;10.04;9.3557;8.8809;
+1500;36.367;33.491;30.985;28.782;26.811;25.016;23.345;21.818;20.37;18.914;17.587;16.279;15.051;13.85;12.689;11.629;10.707;9.8849;9.2263;8.8017;
+2000;34.632;31.916;29.544;27.459;25.591;23.893;22.309;20.87;19.505;18.14;16.887;15.647;14.497;13.381;12.295;11.317;10.451;9.6906;9.0857;8.7082;
+2500;32.972;30.399;28.154;26.181;24.413;22.808;21.31;19.952;18.665;17.387;16.206;15.086;13.951;12.909;11.909;11.002;10.194;9.4879;8.9345;8.6002;
+3000;31.385;28.938;26.816;24.95;23.278;21.76;20.344;19.064;17.851;16.657;15.546;14.487;13.42;12.443;11.518;10.672;9.8883;9.2845;8.7778;8.4787;
+3500;29.867;27.481;25.533;23.764;22.183;20.749;19.41;18.206;17.063;15.947;14.901;13.903;12.901;11.993;11.133;10.342;9.6275;9.0688;8.62;8.3532;
+4000;28.343;26.18;24.286;22.622;21.128;19.774;18.511;17.376;16.3;15.256;14.279;13.334;12.394;11.548;10.751;10.02;9.3626;8.8432;8.4389;8.2166;
+4500;26.918;24.878;23.092;21.522;20.111;18.834;17.641;16.574;15.563;14.587;13.674;12.781;11.9;11.112;10.374;9.6966;9.0944;8.6165;8.2506;8.0576;
+5000;25.557;23.627;21.943;20.463;19.133;17.93;16.805;15.803;14.852;13.94;13.081;12.244;11.418;10.685;10.001;9.3762;8.8241;8.3857;8.0575;7.8907;
+5500;24.258;22.377;20.841;19.444;18.19;17.057;15.997;15.057;14.166;13.314;12.508;11.724;10.95;10.267;9.6278;9.0577;8.5508;8.1509;7.8585;7.7174;
+6000;22.971;21.268;19.775;18.464;17.282;16.217;15.219;14.337;13.503;12.707;11.951;11.218;10.495;9.8598;9.2733;8.7438;8.2715;7.9141;7.6549;7.5379;
+6500;21.749;20.158;18.754;17.521;16.409;15.407;14.468;13.641;12.86;12.117;11.411;10.726;10.054;9.4621;8.9216;8.4371;8.0074;7.6791;7.4477;7.3532;
+7000;20.589;19.093;17.773;16.615;15.569;14.628;13.745;12.971;12.241;11.547;10.888;10.248;9.6217;9.075;8.5762;8.1316;7.741;7.4456;7.2434;7.1656;
+7500;19.488;18.071;16.832;15.746;14.762;13.878;13.049;12.325;11.644;10.996;10.381;9.7852;9.2353;8.6959;8.237;7.8302;7.4757;7.2116;7.0365;6.9779;
+8000;18.442;17.067;15.931;14.91;13.987;13.158;12.379;11.702;11.068;10.463;9.8914;9.312;8.7966;8.3284;7.9045;7.5325;7.2127;6.9774;6.8276;6.7867;
+8500;17.393;16.153;15.064;14.108;13.244;12.467;11.737;11.104;10.512;9.9487;9.4176;8.8869;8.4293;7.9681;7.5792;7.2395;6.9545;6.744;6.6171;6.5926;
+9000;16.398;15.256;14.236;13.339;12.53;11.804;11.119;10.529;9.9792;9.4523;8.9593;8.4745;8.0442;7.6186;7.2613;6.9509;6.6984;6.5114;6.4052;6.3956;
+9500;15.481;14.396;13.442;12.603;11.845;11.167;10.525;9.9764;9.4649;8.9741;8.5187;8.0749;7.6707;7.2781;6.9506;6.6658;6.4412;6.2792;6.191;6.1971;
+10000;14.589;13.574;12.683;11.898;11.189;10.555;9.9556;9.4444;8.971;8.5141;8.0924;7.688;7.308;6.9458;6.666;6.3904;6.1865;6.0491;5.9778;5.996;
+10500;13.732;12.791;11.959;11.224;10.562;9.9699;9.4104;8.9354;8.4951;8.0708;7.6789;7.3089;6.957;6.624;6.3692;6.1353;5.948;5.8204;5.7649;5.7937;
+11000;12.924;12.041;11.266;10.58;9.9633;9.4107;8.8882;8.4458;8.0372;7.6462;7.2845;6.942;6.6178;6.3309;6.0636;5.8688;5.7029;5.5938;5.5522;5.5896;
+11500;11.944;11.129;10.414;9.7803;9.2101;8.7;8.2185;7.8108;7.4338;7.0722;6.7385;6.4227;6.1239;5.8591;5.6267;5.4306;5.2761;5.1748;5.1366;5.1719;
+12000;11.033;10.287;9.626;9.0408;8.5141;8.0436;7.5997;7.2235;6.8759;6.5411;6.2338;5.9425;5.6669;5.4227;5.2085;5.0277;4.8856;4.7917;4.7552;4.7861;
+12500;10.189;9.5077;8.8976;8.3573;7.8715;7.4371;7.0276;6.6804;6.3593;6.0504;5.7672;5.4984;5.2442;5.0189;4.8215;4.6553;4.5243;4.438;4.4049;4.4343;
+13000;9.4291;8.7879;8.2248;7.7258;7.2774;6.8765;6.4988;6.1782;5.8815;5.5963;5.3357;5.0878;4.8531;4.6453;4.4635;4.3102;4.1897;4.1106;4.0806;4.1084;
+13500;8.7233;8.1081;7.6032;7.1421;6.7283;6.3581;6.0098;5.7135;5.4395;5.177;4.9365;4.7075;4.4913;4.2996;4.1321;3.9909;3.8801;3.8075;3.7804;3.8067;
+14000;8.0682;7.5;7.0282;6.6026;6.2207;5.879;5.5576;5.2836;5.0312;4.7891;4.5672;4.3562;4.1566;3.98;3.8255;3.6955;3.5934;3.5269;3.5023;3.5273;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;35.09;31.974;29.303;26.958;24.856;22.922;21.137;19.38;17.746;16.162;14.558;13.037;11.449;9.9196;8.4878;7.094;5.7785;4.5649;3.488;2.5884;
+500;33.446;30.521;27.988;25.763;23.768;21.935;20.246;18.585;17.04;15.542;14.018;12.591;11.103;9.66;8.3093;7.022;5.7675;4.634;3.6317;2.8008;
+1000;31.891;29.118;26.716;24.605;22.715;20.977;19.377;17.803;16.346;14.937;13.504;12.214;10.764;9.4018;8.1251;6.9002;5.7434;4.6859;3.7546;2.9879;
+1500;30.37;27.764;25.488;23.488;21.696;20.05;18.535;17.052;15.611;14.28;12.992;11.769;10.428;9.1426;7.9431;6.7767;5.7085;4.7219;3.8581;3.1519;
+2000;28.942;26.458;24.304;22.409;20.713;19.154;17.721;16.323;14.967;13.707;12.488;11.327;10.084;8.8806;7.7576;6.654;5.669;4.7478;3.9427;3.2933;
+2500;27.582;25.2;23.162;21.369;19.764;18.288;16.932;15.614;14.344;13.15;11.995;10.899;9.7428;8.6084;7.5624;6.5276;5.6181;4.7618;4.0164;3.4178;
+3000;26.21;23.989;22.062;20.366;18.847;17.452;16.17;14.928;13.736;12.605;11.515;10.483;9.4065;8.3268;7.3603;6.3867;5.5533;4.763;4.0751;3.5276;
+3500;24.94;22.823;21.002;19.398;17.963;16.644;15.433;14.263;13.145;12.079;11.042;10.076;9.0739;8.0516;7.1132;6.2472;5.4967;4.7633;4.1182;3.6195;
+4000;23.677;21.699;19.98;18.467;17.111;15.865;14.723;13.624;12.573;11.569;10.635;9.677;8.7497;7.7831;6.9192;6.1042;5.3972;4.7219;4.1311;3.6897;
+4500;22.474;20.618;18.996;17.568;16.289;15.114;14.038;13.005;12.021;11.074;10.195;9.292;8.4259;7.5243;6.724;5.9569;5.2895;4.6706;4.1305;3.7294;
+5000;21.335;19.579;18.05;16.703;15.497;14.39;13.376;12.406;11.486;10.595;9.7675;8.9175;8.1098;7.2791;6.5248;5.7983;5.1776;4.6118;4.118;3.7545;
+5500;20.247;18.58;17.139;15.87;14.733;13.691;12.737;11.827;10.966;10.129;9.3506;8.5523;7.8007;7.0355;6.3306;5.6855;5.0648;4.5535;4.0951;3.7671;
+6000;19.175;17.618;16.263;15.068;13.998;13.017;12.12;11.267;10.461;9.6734;8.9453;8.1959;7.4987;6.7914;6.1372;5.5335;4.952;4.4882;4.0649;3.7681;
+6500;18.16;16.695;15.421;14.298;13.291;12.369;11.525;10.726;9.9732;9.2296;8.5515;7.8491;7.2025;6.5488;5.9413;5.3794;4.8383;4.4112;4.0251;3.7606;
+7000;17.184;15.81;14.612;13.557;12.61;11.743;10.951;10.204;9.5008;8.8009;8.1694;7.5119;6.9121;6.3084;5.7432;5.1933;4.7212;4.323;3.9772;3.745;
+7500;16.255;14.925;13.84;12.845;11.956;11.142;10.399;9.7003;9.044;8.3874;7.7986;7.1848;6.6275;6.0711;5.546;5.0458;4.6033;4.2319;3.9296;3.7192;
+8000;15.356;14.147;13.091;12.162;11.327;10.564;9.8683;9.2154;8.6032;7.9883;7.4107;6.866;6.3478;5.8356;5.348;4.8939;4.4846;4.1375;3.8695;3.6846;
+8500;14.499;13.367;12.378;11.506;10.724;10.009;9.3572;8.7476;8.1769;7.6028;7.0681;6.5582;6.0745;5.6044;5.1547;4.7393;4.363;4.0412;3.7968;3.6414;
+9000;13.673;12.621;11.695;10.878;10.146;9.4748;8.8662;8.2978;7.7658;7.2316;6.7355;6.2584;5.8089;5.3762;4.9623;4.5835;4.2342;3.9441;3.73;3.5902;
+9500;12.898;11.907;11.041;10.277;9.5913;8.9652;8.3952;7.865;7.3707;6.8731;6.4144;5.9669;5.5502;5.1517;4.7732;4.4263;4.1049;3.8453;3.6528;3.5318;
+10000;12.162;11.224;10.415;9.7009;9.0599;8.4753;7.9431;7.4498;6.9879;6.5329;6.1043;5.7058;5.2974;4.9319;4.5868;4.2689;3.9783;3.7415;3.5705;3.4667;
+10500;11.435;10.572;9.8164;9.1499;8.551;8.0058;7.5093;7.0504;6.621;6.2021;5.8062;5.4336;5.0554;4.7181;4.402;4.109;3.8499;3.6341;3.484;3.3958;
+11000;10.748;9.9496;9.2447;8.623;8.0647;7.5562;7.0941;6.6666;6.2684;5.8828;5.518;5.1701;4.8203;4.5105;4.2221;3.9574;3.7208;3.5239;3.3934;3.3201;
+11500;9.9382;9.1958;8.5449;7.9707;7.4553;6.9858;6.5594;6.1649;5.7972;5.4407;5.1038;4.7832;4.4603;4.1744;3.9082;3.6633;3.4458;3.2642;3.1423;3.0728;
+12000;9.1862;8.499;7.8982;7.368;6.8921;6.4584;6.0651;5.701;5.3614;5.0321;4.7211;4.4254;4.127;3.8634;3.6177;3.3918;3.1908;3.0238;2.9114;2.8476;
+12500;8.489;7.8553;7.3005;6.8108;6.3717;5.971;5.6079;5.2718;4.9586;4.6545;4.3668;4.0944;3.8188;3.5758;3.3489;3.1405;2.9543;2.8011;2.6976;2.6391;
+13000;7.8453;7.2604;6.748;6.2958;5.8903;5.5203;5.1854;4.8755;4.5866;4.3056;4.0393;3.7883;3.5338;3.3093;3.1003;2.9079;2.7362;2.5944;2.4996;2.446;
+13500;7.2509;6.7104;6.2373;5.8198;5.4455;5.1039;4.7944;4.5085;4.2414;3.9825;3.7376;3.5052;3.2703;3.0631;2.8703;2.6927;2.5342;2.4031;2.3162;2.2668;
+14000;6.6991;6.202;5.7654;5.3798;5.0343;4.7191;4.4332;4.1694;3.923;3.6836;3.4565;3.2433;3.0269;2.8356;2.6575;2.4936;2.3471;2.2337;2.1464;2.101;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;28.726;26.005;23.607;21.504;19.619;17.882;16.235;14.605;13.1;11.606;10.053;8.4952;6.898;5.3916;3.9533;2.493;1.0736;-9999;-9999;-9999;
+500;27.472;24.83;22.555;20.558;18.769;17.126;15.566;14.03;12.599;11.175;9.7203;8.2637;6.7502;5.3099;3.9659;2.5898;1.2569;-9999;-9999;-9999;
+1000;26.259;23.618;21.549;19.644;17.947;16.387;14.909;13.461;12.104;10.753;9.3938;8.003;6.6006;5.2283;3.9692;2.6772;1.4248;0.23434;-9999;-9999;
+1500;24.979;22.601;20.556;18.759;17.151;15.671;14.275;12.906;11.62;10.337;9.0652;7.7577;6.4449;5.2074;3.9623;2.7501;1.5774;0.4626;-9999;-9999;
+2000;23.758;21.544;19.609;17.906;16.382;14.978;13.656;12.369;11.149;9.9307;8.7405;7.5075;6.2783;5.1129;3.9458;2.8088;1.711;0.66898;-9999;-9999;
+2500;22.608;20.525;18.693;17.081;15.639;14.309;13.059;11.845;10.69;9.5369;8.4215;7.2607;6.107;5.0064;3.9154;2.8555;1.8291;0.85731;-9999;-9999;
+3000;21.551;19.543;17.811;16.285;14.921;13.662;12.477;11.338;10.246;9.1518;8.1091;7.0172;5.9343;4.8968;3.8729;2.8797;1.9276;1.0263;0.19483;-9999;
+3500;20.498;18.597;16.96;15.517;14.228;13.037;11.924;10.847;9.8145;8.7779;7.8036;6.7771;5.7513;4.7839;3.8453;2.8956;2.0048;1.1685;0.40544;-9999;
+4000;19.491;17.687;16.139;14.776;13.558;12.434;11.385;10.372;9.3967;8.4175;7.5296;6.5425;5.557;4.668;3.7782;2.9011;2.07;1.2895;0.58135;-9999;
+4500;18.5;16.808;15.348;14.062;12.913;11.851;10.863;9.9109;8.9906;8.0666;7.2294;6.3115;5.4169;4.552;3.7066;2.8971;2.1206;1.3953;0.7377;0.17072;
+5000;17.555;15.962;14.587;13.373;12.289;11.288;10.358;9.4632;8.5937;7.725;6.9364;6.0831;5.2466;4.4346;3.636;2.8888;2.1632;1.487;0.87757;0.35488;
+5500;16.659;15.15;13.853;12.71;11.688;10.745;9.87;9.0276;8.212;7.3933;6.6514;5.8586;5.0764;4.3157;3.5618;2.8738;2.1983;1.5699;1.0033;0.52082;
+6000;15.81;14.335;13.153;12.07;11.108;10.219;9.397;8.6074;7.8405;7.0712;6.373;5.6368;4.9069;4.1564;3.4867;2.8515;2.2238;1.6412;1.1177;0.67266;
+6500;14.94;13.616;12.468;11.455;10.55;9.7134;8.9412;8.1989;7.4806;6.7912;6.1026;5.4208;4.7021;4.0424;3.4101;2.8226;2.2402;1.7008;1.2179;0.80979;
+7000;14.141;12.894;11.816;10.863;10.012;9.2266;8.5017;7.804;7.1316;6.487;5.839;5.2083;4.5436;3.9271;3.3316;2.7876;2.2478;1.749;1.3047;0.93126;
+7500;13.372;12.202;11.189;10.294;9.4952;8.7566;8.0777;7.4226;6.7941;6.192;5.5846;5;4.3868;3.8101;3.2508;2.7472;2.2475;1.787;1.3787;1.0381;
+8000;12.637;11.539;10.589;9.748;8.9982;8.3052;7.669;7.0564;6.4679;5.9052;5.3372;4.7955;4.2293;3.6919;3.1614;2.7146;2.24;1.8157;1.441;1.1309;
+8500;11.93;10.903;10.012;9.2246;8.5212;7.8712;7.2759;6.7009;6.1526;5.6275;5.0963;4.5952;4.0718;3.5717;3.1053;2.656;2.2404;1.8352;1.4919;1.2103;
+9000;11.26;10.294;9.4598;8.7228;8.0641;7.4553;6.8982;6.3609;5.8494;5.36;4.862;4.4163;3.9149;3.4519;3.0169;2.5952;2.216;1.8461;1.5324;1.2775;
+9500;10.625;9.688;8.9328;8.241;7.6247;7.0552;6.5359;6.0333;5.5569;5.0804;4.6382;4.2195;3.7635;3.3302;2.9273;2.5312;2.1919;1.8496;1.5635;1.3334;
+10000;9.9923;9.1531;8.4235;7.7795;7.2031;6.671;6.1867;5.7181;5.255;4.8353;4.4195;4.0288;3.6125;3.2111;2.839;2.4697;2.1479;1.8539;1.586;1.3793;
+10500;9.3949;8.6208;7.9396;7.3377;6.7992;6.3025;5.8512;5.4136;4.9882;4.5947;4.2065;3.8436;3.4646;3.0919;2.7495;2.4069;2.1148;1.8468;1.6014;1.4149;
+11000;8.8411;8.1112;7.4758;6.915;6.413;5.9497;5.5294;5.1228;4.7305;4.3639;4.0194;3.6638;3.3181;2.9702;2.6423;2.3432;2.0836;1.8297;1.611;1.4452;
+11500;8.1695;7.4965;6.9097;6.3919;5.9285;5.5006;5.1124;4.7374;4.3744;4.0361;3.7182;3.39;3.0703;2.7492;2.4461;2.1706;1.9313;1.6963;1.494;1.3408;
+12000;7.5469;6.9285;6.3866;5.9085;5.4805;5.0854;4.7271;4.381;4.045;3.733;3.4398;3.1367;2.8411;2.5449;2.2641;2.0108;1.7903;1.5727;1.3856;1.244;
+12500;6.9696;6.4036;5.9031;5.4616;5.0663;4.7013;4.3709;4.0515;3.7409;3.4519;3.1822;2.9024;2.6294;2.356;2.0961;1.8626;1.6597;1.4582;1.2851;1.1543;
+13000;6.4346;5.9185;5.4562;5.0485;4.6837;4.3466;4.0412;3.7467;3.4596;3.1937;2.944;2.6857;2.4328;2.1812;1.9408;1.7252;1.5388;1.3521;1.192;1.0711;
+13500;5.9712;5.4701;5.0432;4.6667;4.3299;4.0186;3.7368;3.465;3.1994;2.9542;2.7237;2.4853;2.2512;2.0196;1.7968;1.5981;1.4262;1.2535;1.1057;0.99397;
+14000;5.5085;5.0556;4.6615;4.3139;4.0029;3.7154;3.4554;3.2044;2.9588;2.7326;2.5201;2.2999;2.0832;1.87;1.6764;1.4809;1.3152;1.159;1.0256;0.92245;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;23.131;20.61;18.494;16.646;14.977;13.384;11.946;10.514;9.1007;7.6587;6.18;4.6383;3.1688;1.7187;0.20979;-9999;-9999;-9999;-9999;-9999;
+500;22.74;19.682;17.671;15.917;14.339;12.826;11.465;10.107;8.7702;7.4092;6.0107;4.5605;3.1585;1.8003;0.37984;-9999;-9999;-9999;-9999;-9999;
+1000;21.071;18.791;16.886;15.215;13.72;12.283;10.992;9.7046;8.4427;7.1621;5.8411;4.4793;3.1398;1.8705;0.53429;-9999;-9999;-9999;-9999;-9999;
+1500;20.109;17.929;16.124;14.538;13.12;11.758;10.535;9.3165;8.1217;6.9141;5.6663;4.3948;3.1842;1.9271;0.673;-9999;-9999;-9999;-9999;-9999;
+2000;19.111;17.098;15.386;13.883;12.54;11.25;10.093;8.9375;7.809;6.6694;5.4919;4.3007;3.1546;1.9755;0.79823;-9999;-9999;-9999;-9999;-9999;
+2500;18.217;16.296;14.675;13.25;11.979;10.758;9.66;8.5696;7.5041;6.4304;5.3193;4.1976;3.1168;2.0066;0.90513;-9999;-9999;-9999;-9999;-9999;
+3000;17.34;15.523;13.988;12.639;11.437;10.282;9.2454;8.2134;7.2074;6.1964;5.1485;4.0743;3.0745;2.0299;0.99556;-9999;-9999;-9999;-9999;-9999;
+3500;16.478;14.776;13.326;12.05;10.914;9.8207;8.8418;7.8679;6.9189;5.9684;4.9816;3.9464;3.0283;2.0459;1.0756;0.10999;-9999;-9999;-9999;-9999;
+4000;15.665;14.055;12.687;11.481;10.408;9.3756;8.4519;7.5315;6.6378;5.7631;4.8166;3.8867;2.9799;2.0568;1.1446;0.24036;-9999;-9999;-9999;-9999;
+4500;14.878;13.365;12.072;10.932;9.9188;8.9449;8.0734;7.2052;6.364;5.5356;4.652;3.7797;2.9249;2.0616;1.2065;0.36061;-9999;-9999;-9999;-9999;
+5000;14.129;12.7;11.479;10.403;9.4465;8.5277;7.7068;6.8879;6.0966;5.3129;4.4895;3.6717;2.8673;2.0599;1.2593;0.46861;-9999;-9999;-9999;-9999;
+5500;13.402;12.057;10.907;9.892;8.9906;8.1247;7.3515;6.5802;5.8366;5.0969;4.3265;3.5623;2.807;2.0521;1.3036;0.56476;-9999;-9999;-9999;-9999;
+6000;12.713;11.439;10.357;9.4001;8.551;7.7355;7.008;6.2825;5.5837;4.8852;4.1681;3.452;2.744;2.0391;1.3397;0.65024;-9999;-9999;-9999;-9999;
+6500;12.035;10.847;9.8274;8.9268;8.1274;7.3921;6.6729;5.9936;5.3381;4.6814;4.0135;3.3423;2.6781;2.027;1.3687;0.72537;0.098335;-9999;-9999;-9999;
+7000;11.388;10.278;9.3193;8.4686;7.7195;7.0267;6.3528;5.7141;5.0993;4.4858;3.861;3.2321;2.6105;1.9964;1.3899;0.79063;0.20785;-9999;-9999;-9999;
+7500;10.78;9.7301;8.8298;8.0331;7.3263;6.6748;6.0434;5.4155;4.8672;4.2947;3.7109;3.0962;2.5415;1.9624;1.4044;0.84749;0.30644;-9999;-9999;-9999;
+8000;10.204;9.2043;8.3602;7.6122;6.9488;6.3355;5.7459;5.1609;4.6444;4.1091;3.5644;2.9953;2.4399;1.9276;1.4124;0.89488;0.39303;-9999;-9999;-9999;
+8500;9.6222;8.7014;7.9093;7.2078;6.5855;6.0098;5.459;4.9128;4.4279;3.9297;3.4222;2.8965;2.3751;1.8883;1.415;0.93458;0.46975;0.025268;-9999;-9999;
+9000;9.0716;8.2196;7.4769;6.8195;6.2362;5.6965;5.1814;4.6758;4.2179;3.7538;3.2811;2.7972;2.3111;1.8491;1.4146;0.96894;0.53774;0.12706;-9999;-9999;
+9500;8.5631;7.7557;7.0614;6.4461;5.901;5.3946;4.9143;4.4418;4.0145;3.5823;3.1431;2.6976;2.2441;1.809;1.4091;0.99678;0.59827;0.2197;-9999;-9999;
+10000;8.0857;7.3113;6.6632;6.0876;5.5768;5.1041;4.6565;4.2181;3.818;3.414;3.008;2.5978;2.1757;1.79;1.3988;1.0179;0.65037;0.30216;-9999;-9999;
+10500;7.591;6.8886;6.2821;5.745;5.2672;4.8248;4.4085;4.0019;3.6276;3.2487;2.8758;2.498;2.1056;1.746;1.3845;1.033;0.6944;0.37431;0.079744;-9999;
+11000;7.1389;6.483;5.9172;5.4164;4.9706;4.5574;4.1702;3.7932;3.4431;3.0885;2.7462;2.3906;2.0354;1.7;1.3663;1.0424;0.73099;0.43748;0.16848;-9999;
+11500;6.5946;5.9915;5.4689;5.0065;4.5948;4.2132;3.8555;3.5069;3.1843;2.8572;2.5404;2.212;1.8835;1.5741;1.2802;0.96669;0.67858;0.40715;0.15825;-9999;
+12000;6.0898;5.5373;5.0546;4.6277;4.2474;3.8952;3.5646;3.2424;2.9449;2.643;2.3501;2.0529;1.7429;1.4577;1.1728;0.89611;0.63005;0.37894;0.14847;-9999;
+12500;5.622;5.1175;4.6717;4.2774;3.9263;3.6023;3.2958;2.9979;2.7236;2.4451;2.1742;1.8991;1.6131;1.3499;1.0866;0.83088;0.58488;0.35268;0.13947;-9999;
+13000;5.2065;4.7295;4.3181;3.9541;3.6295;3.3304;3.0465;2.7719;2.5189;2.2621;2.0114;1.757;1.493;1.2501;1.0068;0.77045;0.54306;0.32837;0.13095;-9999;
+13500;4.8225;4.3607;3.9924;3.6547;3.3552;3.0793;2.818;2.5629;2.3297;2.0928;1.8609;1.6255;1.3818;1.1577;0.93291;0.71449;0.50426;0.30572;0.12308;-9999;
+14000;4.4464;4.0397;3.6885;3.3782;3.1016;2.8467;2.6049;2.3709;2.1547;1.9364;1.7217;1.504;1.279;1.0722;0.8645;0.66263;0.46833;0.28465;0.11565;-9999;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;21.027;18.643;16.636;14.884;13.302;11.796;10.397;9.0527;7.6877;6.2623;4.7819;3.3802;1.9109;0.42018;-9999;-9999;-9999;-9999;-9999;-9999;
+500;20.951;17.806;15.9;14.237;12.737;11.307;9.9826;8.71;7.4174;6.0733;4.6939;3.3473;1.9616;0.55663;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;19.199;16.995;15.191;13.61;12.19;10.832;9.578;8.3706;7.1052;5.8868;4.5986;3.3083;2.0034;0.67972;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;18.246;16.217;14.507;13.007;11.662;10.372;9.1846;8.0407;6.8406;5.6943;4.49;3.2617;2.0398;0.79081;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;17.385;15.466;13.845;12.422;11.15;9.927;8.8076;7.7203;6.5814;5.5044;4.3584;3.2083;2.048;0.88754;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;16.607;14.742;13.207;11.858;10.654;9.4961;8.4368;7.4089;6.3328;5.3178;4.2364;3.0917;2.0556;0.96712;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;15.76;14.043;12.591;11.314;10.175;9.0793;8.0777;7.1064;6.0906;5.1346;4.1149;3.0408;2.0527;1.0374;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;14.96;13.369;11.997;10.788;9.7123;8.6753;7.7303;6.8117;5.8524;4.9548;3.9945;2.9879;2.0455;1.0983;0.12062;-9999;-9999;-9999;-9999;-9999;
+4000;14.249;12.72;11.423;10.28;9.2645;8.2849;7.3932;6.5255;5.6599;4.777;3.8732;2.931;2.0347;1.1525;0.23557;-9999;-9999;-9999;-9999;-9999;
+4500;13.574;12.096;10.87;9.7901;8.8319;7.9064;7.0662;6.2465;5.4317;4.6029;3.7523;2.8728;2.0201;1.1984;0.33987;-9999;-9999;-9999;-9999;-9999;
+5000;12.854;11.493;10.337;9.3165;8.4128;7.5403;6.7481;5.9755;5.2093;4.4317;3.632;2.8144;2.0021;1.2365;0.43289;-9999;-9999;-9999;-9999;-9999;
+5500;12.173;10.913;9.8232;8.8611;8.0091;7.1863;6.4405;5.7123;4.9921;4.2634;3.5125;2.7496;1.982;1.2669;0.51585;-9999;-9999;-9999;-9999;-9999;
+6000;11.561;10.356;9.329;8.4218;7.6195;6.8445;6.1433;5.4576;4.7808;4.0982;3.3935;2.6795;1.996;1.2896;0.59004;-9999;-9999;-9999;-9999;-9999;
+6500;10.98;9.82;8.8534;7.9992;7.2438;6.5146;5.8552;5.2101;4.5751;3.9362;3.2756;2.6098;1.9667;1.3067;0.65291;0.0014878;-9999;-9999;-9999;-9999;
+7000;10.372;9.3055;8.3968;7.5927;6.8823;6.1965;5.5767;4.9701;4.3748;3.7774;3.1586;2.5265;1.935;1.3181;0.70811;0.102;-9999;-9999;-9999;-9999;
+7500;9.7971;8.8114;7.9579;7.202;6.5345;5.8906;5.3097;4.7396;4.1816;3.6229;3.0437;2.4361;1.8995;1.3244;0.75581;0.19246;-9999;-9999;-9999;-9999;
+8000;9.2753;8.3379;7.5363;6.8264;6.1998;5.595;5.0507;4.5159;3.9939;3.4818;2.9315;2.3904;1.8623;1.3264;0.7966;0.27217;-9999;-9999;-9999;-9999;
+8500;8.7849;7.8836;7.1316;6.4655;5.8774;5.3104;4.8004;4.2994;3.8115;3.3298;2.8205;2.3167;1.8222;1.3248;0.83175;0.34412;-9999;-9999;-9999;-9999;
+9000;8.2711;7.4478;6.7435;6.1191;5.5678;5.0367;4.5594;4.0901;3.6344;3.1822;2.711;2.242;1.7802;1.3187;0.86095;0.40819;-9999;-9999;-9999;-9999;
+9500;7.7867;7.0296;6.3707;5.786;5.2694;4.7728;4.3272;3.8881;3.4626;3.038;2.6014;2.1666;1.7363;1.3084;0.88392;0.46463;0.055702;-9999;-9999;-9999;
+10000;7.3481;6.6297;6.0133;5.4664;4.9833;4.5376;4.1013;3.6925;3.2962;2.8986;2.4961;2.0911;1.6907;1.2974;0.90146;0.51344;0.13537;-9999;-9999;-9999;
+10500;6.9339;6.2477;5.6714;5.1602;4.7081;4.291;3.8853;3.5037;3.1349;2.7645;2.3927;2.0156;1.6436;1.275;0.91339;0.55509;0.20613;-9999;-9999;-9999;
+11000;6.5067;5.8808;5.3433;4.8663;4.4446;4.0547;3.6776;3.3214;2.9785;2.6355;2.2906;1.9237;1.5955;1.2496;0.92041;0.58988;0.2687;-9999;-9999;-9999;
+11500;6.0094;5.4348;4.9385;4.4979;4.1085;3.7486;3.4;3.0713;2.7547;2.4372;2.119;1.7801;1.477;1.158;0.8532;0.54771;0.25061;-9999;-9999;-9999;
+12000;5.5483;5.0227;4.5644;4.1576;3.798;3.4656;3.1434;2.84;2.5476;2.2542;1.9602;1.6462;1.3674;1.0732;0.7909;0.50848;0.23377;-9999;-9999;-9999;
+12500;5.1348;4.642;4.2186;3.843;3.511;3.2041;2.9062;2.6263;2.3562;2.0849;1.8135;1.538;1.266;0.99454;0.73313;0.47215;0.21813;-9999;-9999;-9999;
+13000;4.7508;4.2902;3.8991;3.5522;3.2455;2.9623;2.6871;2.4286;2.1792;1.9284;1.6777;1.4233;1.1722;0.92204;0.67979;0.43845;0.20355;-9999;-9999;-9999;
+13500;4.3941;3.9521;3.6058;3.2834;3.0001;2.7389;2.4845;2.2459;2.0155;1.7836;1.5522;1.3173;1.0854;0.85493;0.63032;0.40719;0.18994;-9999;-9999;-9999;
+14000;4.0526;3.6643;3.3307;3.0351;2.7734;2.5319;2.2968;2.077;1.8642;1.65;1.4361;1.2192;1.005;0.79264;0.58451;0.3782;0.1774;-9999;-9999;-9999;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;19.032;16.784;14.895;13.233;11.728;10.309;8.9408;7.6938;6.368;4.9783;3.5882;2.1773;0.70708;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;18.197;16.021;14.233;12.658;11.233;9.8862;8.594;7.4106;6.1601;4.836;3.5235;2.195;0.80904;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;17.323;15.305;13.595;12.104;10.755;9.475;8.2516;7.1279;5.9507;4.6953;3.4578;2.2039;0.89979;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;16.487;14.613;12.984;11.568;10.292;9.0772;7.9197;6.8539;5.7391;4.5544;3.3866;2.2042;0.98008;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;15.756;13.927;12.393;11.05;9.8431;8.6909;7.5961;6.5867;5.5327;4.4181;3.3119;2.1959;1.0451;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;14.997;13.269;11.823;10.549;9.4094;8.317;7.282;6.3267;5.3307;4.2807;3.2366;2.1829;1.1009;0.0055764;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;14.272;12.646;11.273;10.066;8.9887;7.9548;6.9784;6.0736;5.1339;4.1463;3.1606;2.1665;1.1484;0.11929;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;13.587;12.045;10.741;9.5998;8.5827;7.6044;6.6832;5.8274;4.9412;4.0121;3.0836;2.1467;1.1908;0.22315;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;12.915;11.454;10.229;9.1492;8.1893;7.2647;6.3963;5.5871;4.7514;3.8798;2.967;2.1221;1.2256;0.31758;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;12.281;10.89;9.7357;8.715;7.81;6.9348;6.1177;5.3529;4.5664;3.748;2.8993;2.094;1.2535;0.40309;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;11.643;10.351;9.2591;8.2952;7.4424;6.6158;5.8478;5.1252;4.3636;3.619;2.8307;2.0624;1.2751;0.47754;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;11.04;9.8317;8.8001;7.8906;7.0874;6.3087;5.5873;4.9044;4.1863;3.4898;2.7569;2.0279;1.2908;0.54423;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;10.477;9.3283;8.3585;7.5014;6.7447;6.0103;5.3315;4.6897;4.0161;3.3617;2.6797;1.9902;1.302;0.60287;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;9.9253;8.8471;7.934;7.1261;6.4148;5.7229;5.0845;4.4802;3.8477;3.2353;2.5944;1.9506;1.3003;0.65381;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;9.4028;8.3847;7.5259;6.7657;6.0968;5.4463;4.8471;4.2791;3.6821;3.1127;2.5114;1.9083;1.2954;0.69752;0.083757;-9999;-9999;-9999;-9999;-9999;
+7500;8.9095;7.9407;7.133;6.4188;5.7903;5.179;4.6189;4.0837;3.5219;2.9928;2.4296;1.8404;1.2891;0.73463;0.16294;-9999;-9999;-9999;-9999;-9999;
+8000;8.4063;7.5142;6.7565;6.0849;5.495;4.9212;4.3961;3.8941;3.3658;2.8747;2.348;1.803;1.2791;0.76698;0.23411;-9999;-9999;-9999;-9999;-9999;
+8500;7.9328;7.1051;6.3945;5.7642;5.2109;4.6726;4.1814;3.7105;3.2382;2.7583;2.267;1.7616;1.2676;0.79323;0.2981;-9999;-9999;-9999;-9999;-9999;
+9000;7.4869;6.7131;6.0474;5.4564;4.9377;4.4337;3.9736;3.5323;3.0915;2.6451;2.1862;1.7168;1.2539;0.81389;0.35432;-9999;-9999;-9999;-9999;-9999;
+9500;7.0662;6.3371;5.714;5.1605;4.6749;4.2028;3.7736;3.3605;2.9487;2.5336;2.1058;1.6706;1.2346;0.82908;0.40331;-9999;-9999;-9999;-9999;-9999;
+10000;6.6696;5.9774;5.3946;4.8767;4.4223;3.9809;3.5801;3.1936;2.8104;2.4247;2.0262;1.6225;1.2376;0.83949;0.4453;0.052215;-9999;-9999;-9999;-9999;
+10500;6.272;5.6337;5.0888;4.6044;4.179;3.7673;3.3936;3.0326;2.6759;2.3179;1.9476;1.572;1.2149;0.84605;0.48101;0.11808;-9999;-9999;-9999;-9999;
+11000;5.8984;5.3046;4.7956;4.3435;3.9466;3.5624;3.2143;2.877;2.5452;2.2133;1.8695;1.5107;1.1902;0.84879;0.5109;0.17603;-9999;-9999;-9999;-9999;
+11500;5.449;4.9019;4.4322;4.0146;3.6483;3.2934;2.9716;2.6604;2.354;2.0472;1.7295;1.4004;1.1021;0.78657;0.47433;0.16477;-9999;-9999;-9999;-9999;
+12000;5.032;4.5299;4.0965;3.7105;3.3724;3.0447;2.7474;2.4602;2.1771;1.8936;1.6002;1.2981;1.0206;0.72899;0.4405;0.15413;-9999;-9999;-9999;-9999;
+12500;4.6556;4.1868;3.7862;3.4296;3.1175;2.8148;2.5399;2.275;2.0136;1.7516;1.4806;1.2028;0.94508;0.67563;0.40911;0.14431;-9999;-9999;-9999;-9999;
+13000;4.3061;3.8698;3.4993;3.17;2.882;2.6023;2.3482;2.1039;1.8624;1.6203;1.37;1.1147;0.87537;0.62634;0.37997;0.13508;-9999;-9999;-9999;-9999;
+13500;3.9765;3.5759;3.2342;2.9299;2.6641;2.4058;2.1713;1.9456;1.7226;1.4989;1.2676;1.0335;0.81076;0.58059;0.353;0.1266;-9999;-9999;-9999;-9999;
+14000;3.6709;3.3045;2.9892;2.7083;2.4628;2.2243;2.0076;1.7993;1.5933;1.3866;1.173;0.9579;0.75096;0.53827;0.32785;0.11863;-9999;-9999;-9999;-9999;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;17.158;15.011;13.194;11.692;10.255;8.9339;7.6923;6.4345;5.1377;3.8032;2.4361;1.0453;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;16.396;14.333;12.624;11.129;9.7795;8.567;7.3933;6.2035;4.981;3.7112;2.4245;1.1122;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;15.609;13.7;12.118;10.694;9.4132;8.2178;7.1017;5.975;4.8212;3.6211;2.3899;1.1698;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;14.891;13.078;11.569;10.222;9.0116;7.8758;6.8169;5.7513;4.6612;3.5264;2.3629;1.217;0.011454;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;14.13;12.477;11.04;9.7656;8.6222;7.5436;6.5412;5.5335;4.5043;3.4322;2.3073;1.2536;0.11927;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;13.516;11.894;10.528;9.3247;8.2452;7.2221;6.2734;5.3227;4.3503;3.3375;2.3206;1.2857;0.2163;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;12.865;11.33;10.035;8.8987;7.8811;6.9104;6.0123;5.1158;4.1996;3.2443;2.2875;1.312;0.30652;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;12.249;10.788;9.5623;8.4876;7.5264;6.6081;5.7588;4.914;4.0506;3.1514;2.2504;1.3329;0.38533;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;11.664;10.211;9.0828;8.0921;7.1845;6.3161;5.5117;4.7158;3.9036;3.0551;2.2104;1.3486;0.45686;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;11.057;9.7603;8.6687;7.707;6.8533;6.0308;5.2716;4.5242;3.7593;2.9604;2.1671;1.3593;0.52045;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;10.484;9.2741;8.2452;7.3367;6.5328;5.756;5.0389;4.3367;3.6196;2.8654;2.1187;1.3617;0.57647;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;9.9431;8.8068;7.8376;6.9801;6.2234;5.4899;4.8133;4.1548;3.4817;2.7683;2.0695;1.3599;0.62481;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;9.4456;8.3588;7.4457;6.6366;5.9244;5.2332;4.5959;3.9763;3.3459;2.6768;2.02;1.3542;0.66694;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;8.9729;7.896;7.0787;6.3062;5.6369;4.9854;4.3626;3.8042;3.2121;2.5871;1.9689;1.3449;0.70259;0.053304;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;8.4752;7.5146;6.7059;5.9889;5.3598;4.7461;4.163;3.6369;3.0816;2.4985;1.9178;1.333;0.73321;0.12671;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;8.0053;7.1169;6.3573;5.6832;5.0927;4.5153;3.9687;3.4745;2.9539;2.4096;1.866;1.3185;0.75928;0.19344;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;7.5812;6.7359;6.0223;5.3891;4.8355;4.2922;3.7818;3.3166;2.8294;2.3214;1.7853;1.3006;0.78007;0.25294;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;7.1819;6.3462;5.7079;5.1056;4.587;4.0772;3.6009;3.1635;2.6981;2.2355;1.7404;1.2806;0.79608;0.30547;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;6.7624;6.0195;5.3919;4.835;4.3486;3.8702;3.4259;3.0142;2.5788;2.1494;1.6934;1.258;0.8075;0.35129;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;6.3688;5.6826;5.0955;4.5732;4.1182;3.6708;3.2553;2.8706;2.4644;2.0639;1.6446;1.2331;0.81702;0.39141;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;5.9996;5.3602;4.8113;4.3219;3.8961;3.4785;3.0912;2.7308;2.3516;1.9803;1.5943;1.2063;0.81576;0.42538;0.028206;-9999;-9999;-9999;-9999;-9999;
+10500;5.6518;5.0523;4.5389;4.0816;3.6831;3.2932;2.9322;2.5954;2.2405;1.898;1.5386;1.1781;0.81208;0.45402;0.086375;-9999;-9999;-9999;-9999;-9999;
+11000;5.3251;4.7575;4.2783;3.8514;3.4796;3.1155;2.7796;2.4644;2.1322;1.8167;1.4827;1.1312;0.80742;0.47757;0.13844;-9999;-9999;-9999;-9999;-9999;
+11500;4.9148;4.3969;3.954;3.5595;3.2163;2.8802;2.5699;2.2789;1.9724;1.6805;1.372;1.0464;0.74859;0.44323;0.12907;-9999;-9999;-9999;-9999;-9999;
+12000;4.5346;4.0636;3.6544;3.2898;2.9733;2.6627;2.3754;2.1075;1.825;1.5545;1.2696;0.96855;0.69386;0.41142;0.12102;-9999;-9999;-9999;-9999;-9999;
+12500;4.2004;3.7554;3.3776;3.0407;2.7486;2.4616;2.1961;1.949;1.6883;1.4379;1.1749;0.89648;0.64353;0.38191;0.11348;-9999;-9999;-9999;-9999;-9999;
+13000;3.8894;3.4707;3.1217;2.8104;2.5409;2.2758;2.0303;1.8024;1.5621;1.3301;1.0872;0.8437;0.59623;0.35457;0.10645;-9999;-9999;-9999;-9999;-9999;
+13500;3.587;3.2074;2.8851;2.5976;2.349;2.104;1.8769;1.6668;1.4453;1.2305;1.0062;0.78126;0.55301;0.32924;0.099844;-9999;-9999;-9999;-9999;-9999;
+14000;3.3075;2.9642;2.6666;2.4009;2.1714;1.9452;1.7354;1.5416;1.3372;1.1384;0.93119;0.72348;0.51316;0.30576;0.093699;-9999;-9999;-9999;-9999;-9999;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;15.37;13.347;11.649;10.259;8.8912;7.6487;6.4748;5.2689;4.0096;2.7215;1.3942;0.014939;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;14.705;12.679;11.138;9.8146;8.5228;7.3434;6.2303;5.0883;3.8995;2.6807;1.4263;0.12585;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;13.999;12.18;10.649;9.3865;8.1671;7.0457;5.9907;4.9084;3.787;2.6349;1.4505;0.22554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;13.326;11.629;10.174;8.9727;7.822;6.7563;5.7571;4.7318;3.6733;2.5841;1.4662;0.31515;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;12.724;11.096;9.7152;8.5726;7.4873;6.4754;5.5281;4.5594;3.5606;2.5316;1.4765;0.39155;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;12.164;10.534;9.2692;8.1873;7.1631;6.2025;5.3071;4.3921;3.4504;2.4784;1.4826;0.46122;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;11.536;10.085;8.898;7.8115;6.8499;5.938;5.0917;4.2281;3.3409;2.4239;1.4856;0.52534;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;10.943;9.6069;8.4757;7.4526;6.5458;5.6815;4.8819;4.0673;3.2317;2.3668;1.4833;0.58074;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;10.437;9.1449;8.0694;7.105;6.2512;5.4319;4.677;3.9092;3.1234;2.3087;1.4773;0.6293;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;9.9597;8.6623;7.6435;6.7711;5.9657;5.1899;4.4776;3.7554;3.0159;2.2485;1.4674;0.67178;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;9.4355;8.247;7.3063;6.424;5.6878;4.9582;4.2845;3.6043;2.9099;2.1887;1.4538;0.70802;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;8.9371;7.8503;6.9374;6.1323;5.4207;4.7318;4.0974;3.4571;2.8048;2.1275;1.4204;0.73869;0.015453;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;8.473;7.451;6.5916;5.8324;5.1634;4.5134;3.9162;3.3156;2.7021;2.0658;1.4022;0.76387;0.087105;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;8.0348;7.0673;6.2587;5.5431;4.9148;4.3021;3.7399;3.1767;2.6015;2.0042;1.3786;0.7853;0.15171;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;7.6196;6.6626;5.9202;5.2663;4.6747;4.0992;3.5695;3.0413;2.5023;1.9423;1.3759;0.80297;0.21057;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;7.1947;6.3439;5.6306;4.9968;4.4429;3.9016;3.4042;2.9096;2.4047;1.8803;1.3514;0.81605;0.26257;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;6.7941;6.0036;5.3346;4.7389;4.2182;3.711;3.2442;2.7808;2.3089;1.8181;1.3246;0.82517;0.30829;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;6.4165;5.6775;5.0503;4.4896;4.0027;3.5268;3.0891;2.6559;2.2148;1.7561;1.2962;0.83132;0.34823;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;6.0606;5.3654;4.7764;4.2515;3.796;3.3496;2.9387;2.5344;2.1225;1.6944;1.2653;0.83263;0.38285;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;5.7233;5.066;4.5144;4.0225;3.5963;3.1781;2.7934;2.4166;2.0332;1.6312;1.2316;0.82975;0.41222;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;5.4054;4.7586;4.2686;3.8026;3.4045;3.013;2.6526;2.3023;1.946;1.57;1.1982;0.82345;0.43685;0.045624;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;5.0784;4.5056;4.0229;3.5923;3.2198;2.8538;2.5166;2.1899;1.8595;1.51;1.1644;0.81578;0.45713;0.094448;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;4.7722;4.2432;3.7924;3.3903;3.044;2.701;2.3861;2.0828;1.7744;1.4507;1.1291;0.80529;0.47347;0.13768;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;4.4093;3.9208;3.5051;3.1333;2.813;2.4971;2.1951;1.9257;1.6412;1.342;1.045;0.74594;0.43925;0.12891;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;4.0794;3.6238;3.2394;2.8959;2.6004;2.3086;2.0286;1.7808;1.5181;1.2421;0.96717;0.69101;0.40753;0.12066;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;3.7729;3.3494;2.9939;2.6765;2.4039;2.1343;1.876;1.6467;1.4042;1.1484;0.8948;0.64017;0.37809;0.11301;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;3.4842;3.095;2.7671;2.4737;2.2223;1.9732;1.7348;1.5229;1.2989;1.0624;0.82858;0.59284;0.35105;0.10582;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;3.2169;2.8599;2.5575;2.2864;2.0546;1.8242;1.6043;1.4083;1.2015;0.98293;0.76696;0.54956;0.32558;0.099524;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.9747;2.6433;2.3637;2.1132;1.8994;1.6866;1.4837;1.3024;1.1115;0.90941;0.70998;0.50926;0.30214;0.092855;-9999;-9999;-9999;-9999;-9999;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;13.698;11.803;10.202;8.8471;7.6402;6.4759;5.3268;4.2061;2.9683;1.7294;0.43833;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;13.126;11.222;9.7568;8.4724;7.324;6.2207;5.1309;4.0711;2.9031;1.7309;0.51139;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;12.469;10.771;9.3304;8.1094;7.0176;5.9718;4.9382;3.935;2.8319;1.7264;0.57603;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.903;10.282;8.9157;7.757;6.7201;5.7291;4.7494;3.8014;2.7626;1.7159;0.63008;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;11.3;9.8113;8.5145;7.4172;6.4322;5.4952;4.5653;3.6705;2.6923;1.7023;0.67825;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.807;9.3539;8.1262;7.0871;6.1544;5.2683;4.3859;3.5433;2.6193;1.687;0.721;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;10.341;8.9136;7.752;6.816;5.8875;5.0499;4.2143;3.4176;2.5492;1.6681;0.75814;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.7856;8.4922;7.3906;6.5011;5.6289;4.8345;4.0448;3.2929;2.4766;1.6462;0.78927;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;9.308;8.0851;7.042;6.1968;5.3781;4.6249;3.88;3.1714;2.4036;1.6214;0.81527;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;8.8554;7.6919;6.7051;5.9031;5.1343;4.4218;3.7173;3.0517;2.3305;1.5943;0.83634;0.047955;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;8.3994;7.314;6.3851;5.6176;4.8948;4.2253;3.5578;2.9345;2.2573;1.5649;0.85233;0.11393;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.9673;6.951;6.0729;5.3462;4.6722;4.0354;3.4046;2.8203;2.1851;1.5341;0.86466;0.17335;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;7.5594;6.5978;5.8067;5.0835;4.4527;3.8514;3.2555;2.709;2.1136;1.5021;0.87472;0.22718;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;7.1702;6.2603;5.5106;4.8323;4.2403;3.6733;3.112;2.5999;2.0424;1.4684;0.88086;0.27558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;6.7834;5.9354;5.226;4.5901;4.0351;3.5008;2.9996;2.4939;1.9716;1.4336;0.88314;0.3179;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;6.4193;5.6207;4.9526;4.357;3.8369;3.3342;2.8637;2.3894;1.9013;1.3973;0.88237;0.35497;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;6.068;5.3207;4.6914;4.1328;3.6457;3.173;2.7317;2.2876;1.8316;1.36;0.87864;0.38692;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;5.7372;5.0326;4.4418;3.9173;3.4616;3.0172;2.6037;2.1883;1.7626;1.3216;0.87209;0.41416;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;5.4144;4.755;4.2025;3.7104;3.2844;2.8675;2.4795;2.0916;1.6944;1.2825;0.86322;0.43674;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;5.114;4.4887;3.9724;3.5112;3.113;2.7219;2.3598;1.996;1.6269;1.2432;0.83989;0.45572;0.045685;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.8121;4.2351;3.7527;3.3201;2.9469;2.5814;2.2435;1.9057;1.5609;1.2029;0.82844;0.47063;0.08987;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;4.5292;3.9928;3.5409;3.1369;2.7895;2.4468;2.131;1.8162;1.4953;1.1621;0.81522;0.48205;0.12895;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;4.2637;3.7599;3.3386;2.9611;2.6375;2.3171;2.0225;1.7294;1.431;1.1209;0.79204;0.49041;0.16329;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.94;3.4749;3.0854;2.7367;2.438;2.1422;1.87;1.5992;1.3237;1.0372;0.73541;0.4546;0.15232;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.6398;3.2115;2.8517;2.5291;2.2541;1.9805;1.7158;1.4779;1.2244;0.95987;0.6832;0.42149;0.14215;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;3.3617;2.9681;2.6351;2.3362;2.0839;1.831;1.5869;1.3667;1.1326;0.88818;0.63437;0.39083;0.13266;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;3.1024;2.7434;2.4359;2.1602;1.9266;1.6927;1.4677;1.2641;1.0477;0.82203;0.58742;0.36243;0.12384;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.8634;2.5357;2.2514;1.9965;1.7811;1.5651;1.3577;1.169;0.96914;0.76;0.54377;0.33612;0.11566;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.6427;2.3438;2.0809;1.8455;1.6469;1.447;1.2559;1.0813;0.89665;0.70405;0.50441;0.31217;0.10803;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.976;11.06;9.5307;8.2144;7.0537;5.9276;4.8116;3.7116;2.4841;1.2091;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;12.355;10.513;9.1134;7.8672;6.7632;5.6961;4.6367;3.5973;2.438;1.245;0.078938;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.755;10.096;8.7163;7.5309;6.4812;5.4703;4.4646;3.4825;2.3883;1.2688;0.16396;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;11.211;9.6383;8.3296;7.2051;6.2077;5.251;4.2958;3.3684;2.3371;1.2856;0.23782;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;10.65;9.1965;7.9555;6.8902;5.9428;5.0367;4.1315;3.2571;2.2849;1.2921;0.30445;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;10.182;8.7692;7.5943;6.6348;5.6875;4.8302;3.9728;3.1479;2.2322;1.306;0.36503;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.6913;8.3581;7.2448;6.3332;5.4397;4.6289;3.8178;3.04;2.1783;1.3151;0.41798;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;9.2271;7.961;6.9076;6.0422;5.1996;4.433;3.6663;2.9327;2.1225;1.3093;0.46515;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.7888;7.5376;6.5792;5.7612;4.967;4.2426;3.5186;2.8277;2.0657;1.3001;0.50624;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;8.3313;7.2085;6.2674;5.4894;4.7445;4.0594;3.3746;2.7245;2.0089;1.2881;0.54185;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.8701;6.8552;5.9648;5.2285;4.5295;3.881;3.2337;2.6229;1.9529;1.2735;0.57242;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.509;6.5144;5.6738;4.9762;4.3186;3.7079;3.0967;2.5242;1.8953;1.2573;0.59892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;7.1208;6.1867;5.393;4.7336;4.119;3.54;2.9669;2.4271;1.8375;1.2389;0.62157;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.7533;5.8714;5.1225;4.4997;3.9239;3.3774;2.839;2.3318;1.78;1.2184;0.64;0.036964;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;6.4069;5.5334;4.86;4.2747;3.7351;3.22;2.7142;2.2384;1.7224;1.1959;0.65442;0.091492;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;6.0485;5.2767;4.6402;4.0566;3.5528;3.0678;2.5937;2.147;1.6648;1.1717;0.66499;0.14006;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.712;4.9966;4.3935;3.8481;3.3767;2.9208;2.4773;2.0575;1.6073;1.1458;0.6724;0.18306;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;5.4015;4.7258;4.1575;3.6476;3.2068;2.7779;2.3606;1.9701;1.55;1.1186;0.67653;0.22087;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;5.1112;4.4661;3.9315;3.4553;3.0435;2.6407;2.2486;1.8846;1.4932;1.0901;0.67774;0.25385;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.8128;4.2168;3.7164;3.2701;2.8855;2.5077;2.1403;1.8015;1.4367;1.0606;0.67621;0.28234;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.5328;3.9782;3.5103;3.0924;2.7333;2.3795;2.0357;1.72;1.381;1.0305;0.67239;0.30667;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;4.2715;3.7499;3.3131;2.9219;2.5868;2.2558;1.9342;1.6407;1.3257;0.99919;0.66645;0.32701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;4.026;3.5314;3.1239;2.7585;2.4464;2.1369;1.8367;1.5634;1.2711;0.96725;0.65822;0.34388;0.018769;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.7132;3.2643;2.8873;2.5494;2.2616;1.9756;1.699;1.4459;1.1757;0.89509;0.60957;0.31913;0.018713;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.4241;3.0172;2.6684;2.3566;2.0908;1.8265;1.5717;1.3373;1.0875;0.82835;0.56462;0.29621;0.018591;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;3.1719;2.7869;2.4662;2.1774;1.9332;1.6886;1.454;1.2368;1.006;0.76669;0.52301;0.27496;0.018328;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.9378;2.5747;2.2794;2.0123;1.7874;1.5612;1.3451;1.1439;0.93059;0.70953;0.48451;0.25525;0.018081;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.7206;2.3792;2.1068;1.8597;1.6525;1.4434;1.2445;1.0581;0.8609;0.6567;0.44887;0.23698;0.017732;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.5023;2.1995;1.9471;1.7188;1.5278;1.3346;1.1513;0.97859;0.79643;0.60783;0.41587;0.22006;0.017464;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;12.151;10.276;8.8727;7.6085;6.4925;5.404;4.33;3.2409;2.0386;0.83182;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;11.618;9.8364;8.4888;7.288;6.2264;5.1952;4.1731;3.1466;2.0116;0.87206;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;11.099;9.4085;8.116;6.9775;5.9679;4.9908;4.0197;3.0506;1.9798;0.90612;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;10.545;9.0219;7.7607;6.6767;5.7168;4.7922;3.8691;2.9564;1.9419;0.93212;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;9.9889;8.609;7.4128;6.3854;5.4742;4.5998;3.7234;2.8629;1.9043;0.95265;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;9.5748;8.2098;7.0765;6.104;5.2398;4.412;3.5808;2.7712;1.8649;0.97055;0.019395;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;9.1026;7.8244;6.7515;5.8312;5.0126;4.2295;3.4427;2.6801;1.8244;0.93515;0.089135;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.6733;7.4535;6.4379;5.6094;4.7926;4.0521;3.3093;2.5896;1.7852;0.9512;0.15218;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;8.2472;7.0951;6.1347;5.3479;4.5788;3.8794;3.1756;2.5005;1.7442;0.96569;0.20881;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.8371;6.75;5.8423;5.098;4.3718;3.7121;3.046;2.4121;1.7021;0.97564;0.2598;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;7.4414;6.4176;5.561;4.8551;4.1729;3.5502;2.9227;2.3259;1.6588;0.98029;0.30473;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;7.0686;6.0977;5.2895;4.6216;3.9801;3.3928;2.8023;2.2414;1.6167;0.9836;0.34489;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.6993;5.7903;5.0282;4.3966;3.7995;3.242;2.6842;2.1581;1.573;0.98312;0.38009;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;6.3516;5.4956;4.7766;4.1796;3.6209;3.0944;2.5695;2.0761;1.5292;0.97954;0.41025;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;6.0127;5.2122;4.5343;3.9706;3.4466;2.9521;2.4578;1.9955;1.484;0.96903;0.43628;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.6906;4.9398;4.3012;3.7695;3.2798;2.8127;2.3495;1.9164;1.4387;0.95629;0.45803;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.3878;4.6781;4.077;3.5761;3.1182;2.6786;2.2444;1.8387;1.3929;0.9415;0.47591;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;5.1026;4.4039;3.8597;3.3901;2.9622;2.549;2.1424;1.7626;1.3468;0.92487;0.49019;0.036145;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.7941;4.1858;3.6765;3.2103;2.8122;2.424;2.0433;1.6881;1.3007;0.90659;0.50114;0.078814;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.5294;3.9541;3.473;3.0386;2.6669;2.3029;1.9475;1.6155;1.2547;0.88691;0.50903;0.11685;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.2682;3.7301;3.2785;2.8735;2.5271;2.1858;1.8543;1.5441;1.2089;0.8661;0.51426;0.15015;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;4.0239;3.5164;3.094;2.7157;2.3923;2.0728;1.7639;1.4744;1.163;0.84376;0.51673;0.17906;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.7944;3.2956;2.9061;2.5648;2.2631;1.9643;1.6767;1.4064;1.1174;0.82046;0.51664;0.20412;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.4893;3.0574;2.6964;2.3695;2.0924;1.816;1.5501;1.3007;1.0337;0.75936;0.47874;0.18989;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.2292;2.828;2.492;2.1897;1.9345;1.679;1.4331;1.203;0.95625;0.70285;0.44367;0.17668;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.9879;2.617;2.3031;2.0237;1.7889;1.5523;1.3249;1.1127;0.88461;0.65057;0.41118;0.16442;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.7611;2.415;2.1287;1.8701;1.6536;1.4352;1.225;1.0292;0.81837;0.60222;0.3811;0.15302;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.5514;2.2298;1.9675;1.7283;1.529;1.327;1.1325;0.95196;0.75713;0.55749;0.35326;0.14244;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.3549;2.0625;1.8184;1.5973;1.4137;1.2269;1.047;0.88054;0.70042;0.51608;0.32747;0.13262;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;11.396;9.6683;8.3296;7.0291;5.956;4.9034;3.8489;2.7788;1.603;0.40254;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;10.905;9.1839;7.8892;6.7336;5.7131;4.7162;3.719;2.708;1.5938;0.46057;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;10.428;8.7943;7.5446;6.4476;5.477;4.5325;3.5894;2.634;1.5804;0.51282;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;9.9004;8.4284;7.2149;6.1711;5.248;4.3543;3.4693;2.5609;1.5638;0.55777;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;9.3821;8.0428;6.8906;5.9016;5.0266;4.1807;3.3409;2.4884;1.5459;0.59767;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;8.9902;7.6705;6.5795;5.643;4.8121;4.0122;3.2143;2.4131;1.5255;0.63313;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;8.5421;7.3108;6.278;5.3918;4.6045;3.848;3.091;2.338;1.5016;0.66282;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;8.1444;6.9645;5.987;5.1489;4.4029;3.6882;2.9733;2.2633;1.477;0.68775;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;7.7441;6.63;5.7051;4.9126;4.2077;3.5321;2.8542;2.1887;1.4478;0.7083;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;7.4044;6.3079;5.4341;4.7222;4.0195;3.3819;2.7401;2.115;1.4175;0.72403;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;6.9895;5.9977;5.1728;4.4983;3.8373;3.2357;2.6281;2.0433;1.3855;0.73586;0.044864;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;6.5987;5.6995;4.9208;4.2819;3.6608;3.094;2.5213;1.9722;1.353;0.74488;0.098809;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;6.2907;5.4118;4.678;4.0736;3.4902;2.9563;2.4164;1.9019;1.3215;0.75152;0.14706;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;5.9628;5.1353;4.4441;3.8729;3.3252;2.8229;2.3146;1.8325;1.2894;0.72587;0.18923;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.6536;4.8365;4.2171;3.6798;3.1657;2.6936;2.2155;1.764;1.2563;0.73302;0.22708;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.3626;4.595;4.0007;3.4937;3.0187;2.569;2.1191;1.6966;1.2223;0.73712;0.26018;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;5.0452;4.3706;3.7942;3.3144;2.8709;2.4476;2.0254;1.6302;1.1877;0.73759;0.2887;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.7759;4.1363;3.5942;3.1421;2.728;2.3301;1.9341;1.5649;1.1527;0.73546;0.31273;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.5094;3.9117;3.4022;2.9769;2.5906;2.2169;1.8455;1.5008;1.1169;0.73161;0.33297;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;4.259;3.696;3.2176;2.8186;2.4577;2.107;1.7599;1.4381;1.0806;0.72124;0.34985;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;4.0235;3.4696;3.0385;2.665;2.3294;2.0005;1.6766;1.3764;1.0445;0.70947;0.36353;0.00060933;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.7763;3.2907;2.887;2.5177;2.2058;1.8979;1.5958;1.3159;1.0077;0.69574;0.37438;0.037851;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.5456;3.0998;2.7205;2.3774;2.0874;1.7993;1.5176;1.2567;0.97096;0.68064;0.38213;0.070859;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.2843;2.8641;2.5138;2.1969;1.93;1.6635;1.4032;1.1624;0.89827;0.63006;0.35439;0.066652;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;3.0417;2.6297;2.3116;2.0309;1.7845;1.538;1.2973;1.0751;0.83091;0.58336;0.32872;0.062708;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.8166;2.436;2.1366;1.8768;1.65;1.422;1.1994;0.99447;0.76871;0.54008;0.30486;0.058993;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.5904;2.2606;1.9839;1.7336;1.5256;1.3148;1.1089;0.91989;0.71121;0.50007;0.28281;0.055576;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.3821;2.09;1.8336;1.6022;1.4111;1.2156;1.0252;0.85092;0.65804;0.46302;0.26237;0.052273;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.2134;1.9306;1.6947;1.4806;1.3044;1.124;0.94783;0.78714;0.60884;0.42874;0.24342;0.049206;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;10.649;9.0136;7.725;6.4754;5.4438;4.4282;3.3874;2.3452;1.1907;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;10.218;8.5565;7.3958;6.2046;5.2229;4.2616;3.2792;2.2899;1.1993;0.071124;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;9.7962;8.2297;7.0722;5.9417;5.0081;4.0971;3.1689;2.233;1.2026;0.14099;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;9.2792;7.7888;6.6864;5.687;4.8002;3.9376;3.061;2.176;1.2022;0.20199;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;8.7812;7.4986;6.3915;5.4407;4.5987;3.7827;2.9553;2.1178;1.1982;0.25723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;8.4263;7.1521;6.103;5.2024;4.4038;3.6321;2.8518;2.0602;1.1914;0.30705;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;8.0224;6.8174;5.8238;4.9716;4.2149;3.485;2.7496;2.0031;1.1836;0.35071;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;7.639;6.4442;5.5505;4.7479;4.0318;3.3411;2.6576;1.9464;1.1742;0.39077;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;7.2455;6.1828;5.2935;4.5316;3.8533;3.2019;2.5531;1.8888;1.161;0.42574;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;6.8983;5.8827;5.0426;4.3231;3.682;3.0668;2.4513;1.8313;1.1476;0.45576;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;6.5775;5.5937;4.8004;4.1564;3.5163;2.936;2.3536;1.7749;1.1294;0.48233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;6.2175;5.3156;4.567;3.9573;3.3557;2.8088;2.2584;1.7166;1.111;0.50519;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;5.8977;5.0478;4.342;3.765;3.2001;2.6852;2.1658;1.6586;1.0916;0.52425;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;5.5954;4.7565;4.1232;3.5799;3.0497;2.5652;2.0751;1.6011;1.0703;0.53959;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;5.3104;4.5216;3.9147;3.4014;2.9043;2.4488;1.9871;1.5441;1.0462;0.55093;0.024809;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;5.0105;4.3046;3.7159;3.2293;2.7638;2.3359;1.9016;1.4877;1.0203;0.55894;0.068377;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;4.7289;4.076;3.5228;3.064;2.6282;2.2265;1.8184;1.4319;0.9938;0.56413;0.10723;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.4648;3.8565;3.3372;2.905;2.5041;2.1213;1.7376;1.3768;0.96768;0.56678;0.14157;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;4.2172;3.6474;3.1594;2.7524;2.379;2.0191;1.6591;1.3226;0.94175;0.54522;0.17119;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.9846;3.4466;2.9883;2.6056;2.2578;1.9199;1.5826;1.2695;0.91469;0.54815;0.19742;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.7665;3.2315;2.8222;2.4646;2.1405;1.8238;1.509;1.2168;0.88747;0.54937;0.21992;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.5409;3.0692;2.6665;2.3293;2.0274;1.731;1.4369;1.165;0.85943;0.54777;0.23895;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.3299;2.8924;2.5155;2.1995;1.9191;1.6418;1.3673;1.1143;0.83105;0.54404;0.25425;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;3.0807;2.672;2.3249;2.0326;1.7746;1.5179;1.2642;1.0307;0.76886;0.50273;0.23618;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.8514;2.4515;2.1485;1.8782;1.6409;1.4035;1.1687;0.9534;0.71148;0.46447;0.21939;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.6292;2.2839;2.0001;1.7348;1.5174;1.2976;1.0806;0.88196;0.65805;0.42962;0.2038;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.4295;2.111;1.8481;1.6031;1.4031;1.1998;0.99886;0.81588;0.60895;0.39685;0.18932;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.2451;1.9512;1.7077;1.4814;1.2974;1.1095;0.92362;0.75474;0.56349;0.36669;0.17593;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;2.0748;1.8032;1.5781;1.3688;1.2;1.0258;0.8632;0.69844;0.52137;0.33896;0.16338;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;9.9888;8.3013;7.1552;5.95;4.9535;3.9742;2.9548;1.9358;0.79676;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;9.5585;7.9569;6.7631;5.7025;4.7548;3.8267;2.8616;1.8979;0.8233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;9.1012;7.5848;6.4687;5.4614;4.561;3.6822;2.7685;1.8571;0.84411;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;8.6967;7.3111;6.259;5.2277;4.3728;3.5417;2.6779;1.8155;0.8616;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;8.274;6.9126;5.9089;5.0004;4.1912;3.4053;2.5886;1.7747;0.87238;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;7.8684;6.6543;5.647;4.7821;4.0149;3.2703;2.5019;1.7239;0.88174;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;7.5053;6.2862;5.3845;4.5705;3.8442;3.1392;2.4159;1.6885;0.88773;0.059308;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;7.1659;6.0432;5.14;4.3658;3.6775;3.0128;2.3307;1.6441;0.88949;0.11034;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;6.7912;5.7034;4.8959;4.1674;3.5164;2.8905;2.2469;1.5994;0.88868;0.15766;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;6.4261;5.4743;4.6675;3.9764;3.3607;2.7683;2.1647;1.5545;0.88554;0.20006;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;6.1295;5.2058;4.4436;3.7917;3.2103;2.6516;2.0844;1.51;0.88119;0.23861;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;5.8465;4.9471;4.228;3.6133;3.0644;2.5378;2.0136;1.4661;0.87472;0.27282;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;5.518;4.6982;4.0202;3.4707;2.9236;2.4275;1.9314;1.4215;0.86623;0.30272;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;5.2093;4.4587;3.8199;3.2999;2.787;2.3202;1.8517;1.3774;0.85612;0.32943;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;4.9535;4.2284;3.6273;3.1354;2.6549;2.216;1.7742;1.3331;0.84413;0.35223;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;4.7108;4.0071;3.4415;2.9772;2.5272;2.1149;1.6986;1.2888;0.83063;0.37143;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;4.4338;3.7945;3.263;2.825;2.4039;2.0169;1.6251;1.244;0.81555;0.38726;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;4.1744;3.5904;3.0914;2.6785;2.2849;1.9219;1.5536;1.1985;0.79895;0.39997;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;3.9565;3.395;2.9268;2.538;2.1703;1.8303;1.4846;1.1534;0.78132;0.4098;0.015432;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.7504;3.2073;2.7682;2.4028;2.0596;1.741;1.4167;1.1094;0.76176;0.41662;0.050103;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.5182;3.0273;2.6162;2.2729;1.96;1.6555;1.3511;1.0653;0.741;0.42098;0.080819;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.3025;2.856;2.4708;2.1484;1.8571;1.5719;1.2875;1.0218;0.71896;0.42286;0.10792;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;3.1179;2.6918;2.3312;2.029;1.7588;1.4917;1.2259;0.97897;0.69774;0.42274;0.13126;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.8867;2.488;2.1544;1.8752;1.6264;1.3792;1.1333;0.90566;0.6457;0.3917;0.12224;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.6722;2.2898;1.9904;1.7324;1.5043;1.2753;1.0478;0.8378;0.59747;0.36297;0.11385;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.4758;2.1255;1.8405;1.6007;1.3906;1.1791;0.96904;0.77516;0.55299;0.33637;0.10606;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.2736;1.9646;1.7012;1.4788;1.2863;1.0903;0.89594;0.71702;0.51209;0.31174;0.098816;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;2.088;1.8158;1.5723;1.3667;1.1897;1.0081;0.82843;0.66338;0.4741;0.28891;0.092085;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.9419;1.6785;1.4532;1.2629;1.1003;0.93217;0.76603;0.61375;0.43907;0.26779;0.085834;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;9.3063;7.7767;6.6013;5.4433;4.4871;3.546;2.5446;1.5408;0.41556;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;8.9201;7.3775;6.3189;5.2177;4.3083;3.4166;2.4703;1.5223;0.46061;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;8.4983;7.0372;6.0415;4.9985;4.1344;3.2889;2.3956;1.4997;0.49457;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;8.143;6.7834;5.7725;4.7859;3.9658;3.1654;2.3222;1.4751;0.52871;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;7.7249;6.4138;5.5165;4.5814;3.8031;3.045;2.2493;1.4497;0.5601;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;7.337;6.1749;5.2656;4.3823;3.6443;2.9273;2.1764;1.4222;0.58197;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;7.0078;5.8334;4.9692;4.19;3.4903;2.8122;2.1034;1.3926;0.60189;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;6.6934;5.6101;4.797;4.0029;3.3406;2.6993;2.0315;1.361;0.6184;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;6.3413;5.2935;4.52;3.8225;3.1965;2.5899;1.9604;1.3291;0.63138;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;6.0129;5.0828;4.3091;3.6462;3.0551;2.4877;1.8912;1.2972;0.64206;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;5.7235;4.7905;4.0989;3.4773;2.9192;2.3813;1.8236;1.2646;0.64882;0.0084643;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;5.447;4.594;3.904;3.315;2.7875;2.2805;1.7567;1.2314;0.65389;0.054238;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;5.1528;4.3246;3.7092;3.1572;2.66;2.1826;1.6916;1.1977;0.65568;0.095151;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;4.8752;4.1406;3.5277;3.0049;2.5365;2.0874;1.6274;1.1634;0.65522;0.13156;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;4.6258;3.9271;3.35;2.8821;2.4173;1.9949;1.5642;1.1288;0.65263;0.16378;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;4.3896;3.7218;3.179;2.7369;2.3018;1.9051;1.5022;1.0939;0.64796;0.19206;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;4.1407;3.5245;3.0144;2.5972;2.1903;1.8179;1.446;1.0594;0.6417;0.21679;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;3.9071;3.3351;2.8561;2.4628;2.0825;1.7333;1.3827;1.0242;0.63385;0.23793;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;3.6951;3.1538;2.7045;2.3334;1.9787;1.6517;1.3212;0.98953;0.62499;0.25634;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.4952;2.9796;2.5583;2.2095;1.8784;1.5722;1.2617;0.95535;0.61461;0.27204;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.2859;2.8122;2.4179;2.0902;1.7814;1.495;1.2033;0.92075;0.60319;0.28511;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;3.0912;2.6524;2.2836;1.9759;1.6879;1.4203;1.1475;0.88608;0.59028;0.29518;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.9121;2.4993;2.1547;1.8662;1.6053;1.349;1.0933;0.85073;0.57632;0.30283;0.01258;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.6884;2.3098;1.9915;1.7239;1.4849;1.2474;1.0109;0.78708;0.53343;0.2807;0.012517;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.4816;2.1347;1.8407;1.593;1.3736;1.1534;0.93474;0.7282;0.49372;0.26019;0.012433;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.298;1.9733;1.7012;1.472;1.2705;1.0666;0.86433;0.67375;0.45702;0.2412;0.01233;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;2.1289;1.8115;1.5719;1.3601;1.175;0.98619;0.79925;0.62327;0.42306;0.2236;0.012202;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.9639;1.686;1.4533;1.2566;1.087;0.91196;0.73896;0.5765;0.39159;0.20733;0.012038;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.8121;1.5585;1.3433;1.161;1.0054;0.84329;0.6835;0.53325;0.36251;0.19225;0.011836;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;8.6775;7.207;6.0825;4.967;4.0429;3.1471;2.1501;1.1617;0.049901;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;8.3191;6.8341;5.7328;4.7582;3.8841;3.0393;2.0929;1.1575;0.10876;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;7.9169;6.511;5.4849;4.5607;3.7308;2.9261;2.045;1.1512;0.16054;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;7.4863;6.2849;5.324;4.3689;3.5818;2.8183;1.9928;1.1439;0.20782;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;7.198;5.9359;5.0125;4.1817;3.4339;2.7106;1.9332;1.1345;0.25586;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;6.855;5.7207;4.7944;4.0004;3.2919;2.6029;1.8748;1.1211;0.30009;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;6.5293;5.3993;4.5695;3.8249;3.1539;2.5024;1.8088;1.1057;0.33059;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;6.2121;5.1457;4.3589;3.6545;3.0204;2.4039;1.7481;1.0891;0.3562;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;5.9086;4.9003;4.1565;3.4893;2.8894;2.3077;1.691;1.0709;0.38178;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;5.6196;4.7073;3.9663;3.3316;2.7639;2.215;1.6356;1.0519;0.40422;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;5.3326;4.4349;3.7732;3.1781;2.642;2.1245;1.5804;1.032;0.42396;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;5.0603;4.215;3.5911;3.0299;2.5239;2.0363;1.5257;1.0107;0.44041;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;4.8024;4.0055;3.4162;2.8869;2.4094;1.9503;1.4709;0.98769;0.45385;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;4.5582;3.8359;3.2491;2.7487;2.2986;1.8666;1.4167;0.96368;0.46424;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;4.311;3.6057;3.0826;2.6147;2.1912;1.7855;1.3637;0.93893;0.47204;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;4.077;3.4152;2.9253;2.4856;2.0873;1.7062;1.311;0.91336;0.47774;0.022694;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;3.8592;3.2372;2.7746;2.3807;1.987;1.6292;1.2594;0.88736;0.4801;0.056609;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;3.6533;3.0904;2.6313;2.2579;1.89;1.5544;1.2086;0.86098;0.4805;0.086478;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;3.4438;2.9228;2.4919;2.1391;1.7965;1.4822;1.1594;0.8342;0.47896;0.11267;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.2469;2.7358;2.3555;2.0256;1.706;1.4117;1.1113;0.80762;0.47612;0.13561;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;3.0625;2.6065;2.2284;1.9163;1.6185;1.3433;1.0683;0.78074;0.47163;0.15567;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.8903;2.4584;2.1049;1.8116;1.5341;1.2771;1.0184;0.75325;0.46532;0.17287;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.7148;2.3173;1.9867;1.7111;1.4533;1.2133;0.97052;0.72571;0.4581;0.18675;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.5003;2.1417;1.8362;1.5806;1.3434;1.1222;0.89784;0.67139;0.42422;0.17346;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.3185;1.9801;1.697;1.4604;1.242;1.0374;0.83009;0.62116;0.39326;0.1613;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;2.1503;1.8288;1.5685;1.3492;1.1482;0.95932;0.76776;0.57472;0.36392;0.14975;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.9768;1.6901;1.4497;1.2464;1.0695;0.88749;0.71029;0.53174;0.33711;0.13911;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.8294;1.5622;1.3399;1.1515;0.98944;0.8207;0.6569;0.49201;0.31227;0.12931;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.6937;1.4334;1.238;1.0639;0.9154;0.75895;0.6076;0.45527;0.2892;0.11997;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;7.9909;6.5033;5.4747;4.4438;3.5413;2.6717;1.7063;0.71437;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;7.6642;6.2481;5.2076;4.2927;3.4213;2.6045;1.6902;0.75189;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;7.3478;6.0026;5.0261;4.1479;3.3054;2.5362;1.6716;0.78095;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;7.0213;5.7404;4.813;3.9793;3.2162;2.4678;1.6508;0.80729;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;6.7249;5.5103;4.6018;3.8158;3.0851;2.3868;1.6102;0.82794;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;6.3778;5.2852;4.3979;3.6474;2.9571;2.2985;1.5663;0.83746;0.016799;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;6.0708;4.9844;4.19;3.4875;2.8332;2.2116;1.5221;0.8342;0.064273;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;5.7705;4.8026;4.0055;3.3258;2.7153;2.1277;1.4773;0.8298;0.10442;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;5.4948;4.5252;3.8104;3.1776;2.5993;2.0468;1.4333;0.822;0.14324;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;5.2329;4.3498;3.6395;3.0338;2.4879;1.9679;1.3919;0.81504;0.17708;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;4.9591;4.0961;3.4605;2.8945;2.3789;1.8873;1.3534;0.80699;0.20801;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;4.6983;3.8876;3.2921;2.76;2.2736;1.8104;1.3132;0.79716;0.2365;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;4.4656;3.6994;3.1333;2.6299;2.1714;1.7313;1.268;0.78528;0.26258;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;4.2453;3.5451;2.9826;2.5043;2.0724;1.6583;1.2196;0.77168;0.28482;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;4.0089;3.331;2.8292;2.383;1.9765;1.5872;1.1743;0.75705;0.29832;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;3.7846;3.15;2.6843;2.2659;1.8836;1.5181;1.132;0.7416;0.31256;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;3.588;2.9901;2.5475;2.1531;1.7938;1.4506;1.0899;0.72503;0.32284;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;3.4028;2.8567;2.4173;2.0631;1.7071;1.3851;1.0483;0.70762;0.33173;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;3.2033;2.6778;2.287;1.9556;1.6235;1.3219;1.0072;0.68913;0.33966;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;3.0156;2.5254;2.1634;1.8507;1.5424;1.2601;0.96676;0.67001;0.34499;0.0061049;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;2.8483;2.4096;2.0478;1.7509;1.4638;1.1999;0.9263;0.64993;0.34821;0.03374;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.692;2.273;1.9345;1.6554;1.388;1.1415;0.88669;0.62954;0.3492;0.057396;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.5251;2.1425;1.8252;1.5637;1.3157;1.0854;0.84815;0.60885;0.34824;0.078296;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.338;1.9661;1.6868;1.4445;1.2163;1.0037;0.7846;0.56334;0.32273;0.073103;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.1648;1.8201;1.5588;1.3344;1.1244;0.92819;0.72584;0.52132;0.29834;0.067686;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;1.9929;1.6913;1.4412;1.2326;1.0395;0.85839;0.67151;0.48244;0.27756;0.06397;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.8349;1.5631;1.332;1.1387;0.96106;0.79375;0.62121;0.44649;0.25709;0.060039;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.7019;1.4448;1.2317;1.0518;0.88852;0.73406;0.57505;0.41336;0.23835;0.056319;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.579;1.3278;1.1382;0.97177;0.83089;0.67947;0.5319;0.38267;0.22101;0.052833;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;7.0844;5.7966;4.7882;3.8392;3.0155;2.1695;1.2211;0.26684;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;6.8484;5.5907;4.6179;3.6605;2.9288;2.1277;1.2323;0.32775;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;6.5761;5.3123;4.4227;3.5618;2.8411;2.0826;1.2442;0.3821;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;6.3139;5.1752;4.3054;3.4524;2.7578;2.0362;1.2483;0.43005;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;6.0632;4.9735;4.1527;3.3384;2.674;1.9879;1.2473;0.47182;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;5.8215;4.7333;3.9195;3.2249;2.5725;1.9354;1.2407;0.50677;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;5.5765;4.5431;3.781;3.1204;2.4779;1.8839;1.2258;0.53485;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;5.3434;4.3627;3.6405;3.0108;2.3936;1.8319;1.2062;0.55629;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;5.098;4.1673;3.4852;2.8826;2.3097;1.7805;1.1869;0.57296;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;4.8454;3.9669;3.3259;2.7532;2.2272;1.7221;1.1607;0.58701;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;4.6023;3.7737;3.2174;2.6278;2.1309;1.6556;1.1258;0.5983;0.0050532;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;4.3664;3.5854;3.0184;2.508;2.0374;1.5902;1.0935;0.5971;0.041625;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;4.1418;3.4436;2.8761;2.3913;1.9471;1.5262;1.0605;0.59439;0.0747;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;3.9284;3.2685;2.7298;2.2782;1.8594;1.4635;1.0276;0.58982;0.10455;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;3.7251;3.1006;2.5933;2.1656;1.7742;1.4021;0.99425;0.58393;0.13121;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;3.5204;2.9089;2.4572;2.0582;1.6917;1.343;0.961;0.57707;0.15493;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;3.331;2.7829;2.3351;1.9563;1.612;1.2848;0.92879;0.56937;0.17577;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;3.1463;2.6079;2.2098;1.8577;1.5339;1.2284;0.89762;0.56018;0.19197;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;2.9718;2.4915;2.0964;1.78;1.4593;1.1734;0.86575;0.55004;0.20733;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;2.804;2.3316;1.9813;1.6858;1.3871;1.1176;0.8331;0.53853;0.22135;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;2.6465;2.2219;1.8756;1.5948;1.3171;1.0653;0.79735;0.52617;0.23227;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.4892;2.0765;1.7699;1.5082;1.2495;1.0134;0.76515;0.51297;0.23704;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.3437;1.9585;1.6711;1.4284;1.185;0.9645;0.73394;0.49906;0.2429;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.1691;1.812;1.5452;1.3192;1.0956;0.89257;0.67856;0.46192;0.22538;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;2.0074;1.6765;1.4287;1.2184;1.0133;0.82516;0.62788;0.42756;0.20915;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;1.8493;1.56;1.3211;1.1261;0.93658;0.76328;0.581;0.39579;0.19558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.7042;1.442;1.2209;1.0396;0.8659;0.70606;0.53787;0.36643;0.18225;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.5803;1.3209;1.1276;0.95798;0.80049;0.65315;0.4991;0.33931;0.16876;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.4598;1.2318;1.0433;0.88561;0.74019;0.60419;0.46189;0.31425;0.15622;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;6.2275;5.0131;4.086;3.2674;2.485;1.6627;0.76584;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;5.9919;4.7601;3.9218;3.1647;2.425;1.6491;0.84264;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;5.807;4.6927;3.8275;3.0664;2.3625;1.6329;0.8104;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;5.5797;4.458;3.6962;2.9679;2.3009;1.608;0.8306;0.046836;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;5.3639;4.3642;3.6086;2.8254;2.2386;1.5817;0.84577;0.10556;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;5.1604;4.1432;3.4376;2.7401;2.1751;1.5528;0.85693;0.15715;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;4.9637;4.052;3.346;2.6676;2.1107;1.5215;0.86626;0.20366;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;4.759;3.84;3.194;2.5822;2.0463;1.4888;0.8707;0.24423;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;4.5629;3.691;3.0606;2.4885;1.974;1.4547;0.87187;0.28079;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;4.3708;3.5441;2.9269;2.3999;1.9071;1.4198;0.87057;0.31289;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;4.1855;3.402;2.8148;2.3151;1.843;1.3837;0.86754;0.34109;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;3.9966;3.2555;2.7067;2.2347;1.7795;1.3462;0.8616;0.36651;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;3.8171;3.1489;2.6021;2.1474;1.7165;1.308;0.854;0.38666;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;3.6352;2.9713;2.484;2.0629;1.6499;1.2691;0.84496;0.40473;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;3.4432;2.819;2.3602;1.9594;1.5821;1.2279;0.83427;0.41924;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;3.261;2.6746;2.2407;1.8634;1.5097;1.1741;0.80999;0.42995;0.011707;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;3.0879;2.5374;2.1279;1.7714;1.4392;1.1244;0.77936;0.42855;0.034519;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;2.9242;2.4173;2.0217;1.6824;1.3707;1.0767;0.74974;0.42293;0.058547;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;2.7509;2.2671;1.9128;1.6127;1.3048;1.0298;0.72346;0.41916;0.0804;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;2.5872;2.1645;1.8134;1.523;1.241;0.9836;0.70023;0.41405;0.099933;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;2.4336;2.0431;1.7124;1.4427;1.1796;0.9383;0.67476;0.40842;0.11655;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.3034;1.9076;1.6155;1.3687;1.1201;0.89419;0.64931;0.40154;0.13098;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.1695;1.8;1.5257;1.2929;1.062;0.85231;0.62443;0.39403;0.14282;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;2.0075;1.6653;1.4104;1.1941;0.98195;0.78818;0.57793;0.36485;0.13305;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;1.8524;1.537;1.3031;1.1025;0.90792;0.72889;0.53493;0.3376;0.12379;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;1.7097;1.435;1.2065;1.0161;0.83925;0.67431;0.49455;0.31291;0.11526;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.5785;1.3266;1.1165;0.93982;0.77643;0.62366;0.45839;0.28989;0.10733;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.4627;1.214;1.031;0.86902;0.71766;0.57728;0.42436;0.26864;0.099982;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.3561;1.1251;0.95379;0.80354;0.66328;0.53412;0.39286;0.24896;0.093108;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;5.4292;4.2333;3.4442;2.649;1.9746;1.2779;0.3877;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;5.2322;4.093;3.3484;2.5954;1.9396;1.2689;0.37554;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;5.0018;3.975;3.2592;2.5728;1.9013;1.2549;0.47153;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;4.8578;3.8211;3.153;2.4929;1.8758;1.2543;0.50182;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;4.6751;3.6873;3.0549;2.4214;1.821;1.2194;0.53969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;4.4862;3.6164;2.9379;2.348;1.7783;1.1691;0.55771;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;4.2876;3.4612;2.8397;2.2743;1.7342;1.1762;0.57759;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;4.164;3.3114;2.7416;2.1987;1.6869;1.1622;0.59227;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;4.0044;3.2436;2.6486;2.1274;1.6419;1.1451;0.58845;0.0070825;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;3.8504;3.0811;2.5525;2.0549;1.5936;1.1188;0.593;0.049842;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;3.6954;3.0037;2.4677;1.9821;1.5469;1.0996;0.59955;0.091648;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;3.5381;2.8461;2.366;1.8798;1.4993;1.0778;0.6053;0.12982;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;3.3898;2.7679;2.2794;1.8279;1.4519;1.0539;0.6106;0.16271;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;3.2391;2.619;2.1724;1.7671;1.4112;1.028;0.61319;0.19199;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;3.0949;2.5089;2.072;1.7048;1.3506;1.0013;0.61303;0.21747;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;2.9519;2.3987;1.991;1.6437;1.2941;0.9738;0.61067;0.23936;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;2.8171;2.3151;1.9124;1.5736;1.2485;0.94579;0.60596;0.2579;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;2.6759;2.1848;1.822;1.5059;1.2036;0.91751;0.59919;0.27327;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;2.562;2.1018;1.7417;1.4443;1.1589;0.8887;0.59104;0.286;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;2.397;1.9633;1.6429;1.3674;1.1051;0.85636;0.5771;0.29646;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;2.2432;1.8745;1.5579;1.2954;1.0506;0.81908;0.55944;0.30062;0.011301;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;2.1281;1.749;1.4692;1.2262;0.99593;0.78215;0.54541;0.30032;0.030833;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;2.0186;1.6668;1.3905;1.1692;0.94528;0.7449;0.52767;0.29951;0.050898;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;1.8533;1.5256;1.2831;1.0804;0.87431;0.68991;0.48846;0.27696;0.046952;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;1.7112;1.4091;1.185;0.99783;0.80849;0.63866;0.45086;0.25587;0.043515;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;1.5806;1.3168;1.0986;0.91803;0.74759;0.59075;0.4155;0.23705;0.041287;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;1.4619;1.2174;1.0156;0.84907;0.693;0.54653;0.38371;0.22;0.03921;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;1.3513;1.1131;0.93663;0.78532;0.64085;0.50555;0.3555;0.20421;0.037154;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;1.2498;1.04;0.86796;0.72637;0.59281;0.46761;0.3294;0.1896;0.035362;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/V2527-A5/valid_operating_point.csv b/engine/test/stubs/V2527-A5/valid_operating_point.csv
new file mode 100644
index 00000000..60f90c75
--- /dev/null
+++ b/engine/test/stubs/V2527-A5/valid_operating_point.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+500;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+1000;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+1500;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+2000;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+2500;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+3000;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+3500;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;
+4000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+4500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+5000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+5500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+6000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+6500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+7000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+7500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+8000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+8500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+9000;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+9500;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;
+10000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+10500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+11000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+11500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+12000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+12500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+13000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+13500;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
+14000;1;1;1;1;1;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;
diff --git a/engine/test/stubs/engine_v3.xml b/engine/test/stubs/engine_v3.xml
new file mode 100644
index 00000000..05293895
--- /dev/null
+++ b/engine/test/stubs/engine_v3.xml
@@ -0,0 +1,185 @@
+<engine_data_file version="3.0.0">
+    <design_conditions Desc="Flight conditions for creating the bucket curve">
+        <flight_altitude Desc="Flight altitude for bucket curve" Unit="ft">35000</flightAltitude>
+        <flight_mach_number Desc="Mach number for bucket curve" Unit="-">0.8</flightMachNumber>
+        <thrust Desc="thrust at design point, ISA (value from source)" Unit="kN">17.01</thrust>
+        <SLST Desc="Sea level static thrust measured at SL, Mach 0, ISA (value from source)" Unit="kN">110.31</SLST>
+        <MCT Desc="Maximum continuous thrust measured at SL, Mach 0, ISA (value from source)" Unit="kN">98.92</MCT>
+        <FlatRatingTemp_MTO Desc="Delta ISA Temperature until the Maximum Takeoff Thrust (MTO) can be reached at sea level" Unit="K">31</FlatRatingTemp_MTO>
+        <FlatRatingTemp_MCT Desc="Delta ISA Temperature until the Maximum Continuous Thrust (MCT) can be reached at sea level" Unit="K">10</FlatRatingTemp_MCT>
+        <OPRMax_Climb Desc="Maximum overall pressure ratio in rating TO" Unit="-">32.8</OPRMax_Climb>
+    </design_conditions>
+    <operating_data Desc="Unscaled engine data">
+        <UnscaledSLST Desc="Unscaled Flat-Rated static thrust of the deck" Unit="kN" ValueFromSource="110.31">110.3126953</UnscaledSLST>
+        <UnscaledRatedPower Desc="Unscaled Flat-Rated static power of the deck (Shaft power)" Unit="kW">0</UnscaledRatedPower>
+        <N1nominal Desc="Maximum rotational speed for low pressure rotor - Limit in TCDS" Unit="1/min">5650</N1nominal>
+        <N2nominal Desc="Maximum rotational speed for high pressure rotor - Limit in TCDS" Unit="1/min">14950</N2nominal>
+        <WFToP3min Desc="Minimum fraction of fuel flow and p3 to prevent flame-out" Unit="-">45</WFToP3min>
+        <WFToP3max_MTO Desc="Maximum ratio of fuel flow to flow pressure after compression in rating TO" Unit="-">101.83</WFToP3max_MTO>
+        <WFToP3max_MCT Desc="Maximum ratio of fuel flow to flow pressure after compression in rating MCT" Unit="-">98.74</WFToP3max_MCT>
+        <TempMax_MTO Desc="Temperature limit at turbine exit (T49 or T5). Calculated by returning UnscaledSLST at TO-rating and ambient conditions at FlatRatingTemp_MTO" Unit="K">848.69</TempMax_MTO>
+        <TempMax_MCT Desc="Temperature limit at turbine exit (T49 or T5). Calculated by returning Maximum Continuous Thrust at MCT-rating and ambient conditions at FlatRatingTemp_MCT" Unit="K">772.35</TempMax_MCT>
+        <N2max Desc="Maximum relative rotational speed for high pressure rotor - Limit in TCDS" Unit="-">1.034</N2max>
+        <RelBleedMax Desc="Maximum bleed air extraction of the engine for aircraft onboard systems as a fraction of core mass flow" Unit="-">0.3</RelBleedMax>
+        <ShaftPowerExtractionMax Desc="Maximum shaft power extraction of the engine for aircraft onboard systems" Unit="kW">150</ShaftPowerExtractionMax>
+        <NfractionClimbRating Desc="Fraction of N_Climb/N_MCT; calculated such that N_Climb is about 0.9*N1 at SL, Ma=0, and ISA conditions" Unit="-">0.97</NfractionClimbRating>
+        <NfractionCruiseRating Desc="Fraction of N_Cruise/N_MCT; calculated such that Cruise thrust is met at design point (cf. EngineDesignCondition)" Unit="-">0.875</NfractionCruiseRating>
+    </operating_data>
+    <geometry Desc="Dimensions of the engine">
+        <engine_dimensions Desc="External dimensions of the engine">
+            <width Desc="Engine width" Unit="m">1.829</width>
+            <height Desc="Height of the engine" Unit="m">2.118</height>
+            <length Desc="Length of the engine" Unit="m">2.508</length>
+        </engine_dimensions>
+        <jetpecific>
+            <diameter_fan Desc="Diameter of the fan" Unit="m">1.613</diameter_fan>
+            <turbine_noise>
+                <diameter_rotor Desc="Diameter of LP Turbine rotor blades" Unit="m">0</diameter_rotor>
+                <area_inlet Desc="Inlet area of LP turbine" Unit="m2">0</area_inlet>
+                <number_of_blades Desc="No of rotor blades of LP turbine" Unit="-">0</number_of_blades>
+            </turbine_noise>
+            <fan_noise>
+                <fanInletArea Desc="Inlet area of the fan of the engine" Unit="m2">0</fanInletArea>
+                <fanExhaustArea Desc="Inlet area of the fan of the engine" Unit="m2">0</fanExhaustArea>
+                <fanRotorBladeNo Desc="Number of fan rotor blades" Unit="-">0</fanRotorBladeNo>
+                <fanStatorVaneNo Desc="Number of stator vanes in fan section of engine" Unit="-">0</fanStatorVaneNo>
+                <fanRotorStatorSpacing Desc="The spacing between rotor blades and stator vanes, actually the ratio spacing/rotorChord (s/C)" Unit="-">0</fanRotorStatorSpacing>
+                <fanInletRotorDiameter Desc="Diameter of the fan inlet rotor" Unit="m">0</fanInletRotorDiameter>
+                <fanExhaustRotorDiameter Desc="Diameter of the fan exhaust rotor" Unit="m">0</fanExhaustRotorDiameter>
+                <fanTipDesignMach Desc="Design Mach number of the fan rotors tip" Unit="-">0</fanTipDesignMach>
+                <IGV Desc="Whether engine has Inlet Guide Vanes or not: 1:No 2:Yes" Unit="-">0</IGV>
+                <IFD Desc="Whether Inlet Flow Distortion is present or not: 1:No 2:Yes" Unit="-">0</IFD>
+                <INBB Desc="Calculate inlet broadband noise or not: 0:No 1:Yes" Unit="-">0</INBB>
+                <INTON Desc="Calculate inlet tonal noise or not: 0:No 1:Yes" Unit="-">0</INTON>
+                <DISBB Desc="Calculate exhaust broadband noise or not: 0:No 1:Yes" Unit="-">0</DISBB>
+                <DISTON Desc="Calculate exhaust tonal noise or not: 0:No 1:Yes" Unit="-">0</DISTON>
+            </fanNoise>
+            <combustorNoise>
+                <combustorEntranceArea Desc="Cross-sectional area of the entrance of combustor" Unit="m2">0</combustorEntranceArea>
+            </combustorNoise>
+            <jetNoise>
+                <flightVectorEngineAxisAngle Desc="Distance from source to observer in dimensionless form" Unit="-">0</flightVectorEngineAxisAngle>
+                <plugNozzle Desc="Boolean for whether there is a plug at nozzle or not: 1: Yes 0: No" Unit="-">0</plugNozzle>
+                <plugDiameter Desc="Diameter of plug at nozzle" Unit="m">0</plugDiameter>
+                <coaxialNozzle Desc="Boolean for whether the nozzles are coaxial or a single nozzle is present: 1: Yes 0: No" Unit="-">0</coaxialNozzle>
+                <actualPrimaryArea Desc="Geometrical area of the primary jet" Unit="m2">0</actualPrimaryArea>
+                <actualSecondaryArea Desc="Geometrical area of the secondary jet" Unit="m2">0</actualSecondaryArea>
+            </jetNoise>
+        </jetSpecific>
+        <propSpecific>
+            <PropDiameter Desc="Diameter of the propeller" Unit="m">0.0</PropDiameter>
+            <PropBlades Desc="Number of propeller blades" Unit="---">0</PropBlades>
+        </propSpecific>
+    </Geometry>
+    <Deck Desc="Engine performance map (Performance Deck). All values apply to the unscaled deck!">
+        <ThrustDeckName Unit="-">V2527-A5_FN.csv</ThrustDeckName>
+        <FuelDeckName Unit="-">V2527-A5_WF.csv</FuelDeckName>
+        <CoreMassFlowDeckName Unit="-">V2527-A5_W25.csv</CoreMassFlowDeckName>
+        <OPRDeckName Unit="-">V2527-A5_P3q2.csv</OPRDeckName>
+        <EPRDeckName Unit="-">V2527-A5_P5q2.csv</EPRDeckName>
+        <TemperatureLimitDeckName Unit="-">V2527-A5_St5_T.csv</TemperatureLimitDeckName>
+        <EGTDeckName Unit="-">V2527-A5_St5_T.csv</EGTDeckName>
+        <NLimitDeckName Unit="-">V2527-A5_XN_HPC.csv</NLimitDeckName>
+        <WFToP3LimitDeckName Unit="-">V2527-A5_WFqP3.csv</WFToP3LimitDeckName>
+        <St2FuelAirDeckName Unit="-">V2527-A5_St2_fa.csv</St2FuelAirDeckName>
+        <St2MachDeckName Unit="-">V2527-A5_St2_Mn.csv</St2MachDeckName>
+        <St2TotalPressureDeckName Unit="-">V2527-A5_St2_P.csv</St2TotalPressureDeckName>
+        <St2TotalTemperatureDeckName Unit="-">V2527-A5_St2_T.csv</St2TotalTemperatureDeckName>
+        <St2StaticTemperatureDeckName Unit="-">V2527-A5_St2_Ts.csv</St2StaticTemperatureDeckName>
+        <St2MassFlowDeckName Unit="-">V2527-A5_St2_W.csv</St2MassFlowDeckName>
+        <St3FuelAirDeckName Unit="-">V2527-A5_St3_fa.csv</St3FuelAirDeckName>
+        <St3MachDeckName Unit="-">V2527-A5_St3_Mn.csv</St3MachDeckName>
+        <St3TotalPressureDeckName Unit="-">V2527-A5_St3_P.csv</St3TotalPressureDeckName>
+        <St3TotalTemperatureDeckName Unit="-">V2527-A5_St3_T.csv</St3TotalTemperatureDeckName>
+        <St3StaticTemperatureDeckName Unit="-">V2527-A5_St3_Ts.csv</St3StaticTemperatureDeckName>
+        <St3MassFlowDeckName Unit="-">V2527-A5_St3_W.csv</St3MassFlowDeckName>
+        <St4FuelAirDeckName Unit="-">V2527-A5_St4_fa.csv</St4FuelAirDeckName>
+        <St4MachDeckName Unit="-">V2527-A5_St4_Mn.csv</St4MachDeckName>
+        <St4TotalPressureDeckName Unit="-">V2527-A5_St4_P.csv</St4TotalPressureDeckName>
+        <St4TotalTemperatureDeckName Unit="-">V2527-A5_St4_T.csv</St4TotalTemperatureDeckName>
+        <St4StaticTemperatureDeckName Unit="-">V2527-A5_St4_Ts.csv</St4StaticTemperatureDeckName>
+        <St4MassFlowDeckName Unit="-">V2527-A5_St4_W.csv</St4MassFlowDeckName>
+        <St5FuelAirDeckName Unit="-">V2527-A5_St5_fa.csv</St5FuelAirDeckName>
+        <St5MachDeckName Unit="-">V2527-A5_St5_Mn.csv</St5MachDeckName>
+        <St5TotalPressureDeckName Unit="-">V2527-A5_St5_P.csv</St5TotalPressureDeckName>
+        <St5TotalTemperatureDeckName Unit="-">V2527-A5_St5_T.csv</St5TotalTemperatureDeckName>
+        <St5StaticTemperatureDeckName Unit="-">V2527-A5_St5_Ts.csv</St5StaticTemperatureDeckName>
+        <St5MassFlowDeckName Unit="-">V2527-A5_St5_W.csv</St5MassFlowDeckName>
+        <St13FuelAirDeckName Unit="-">V2527-A5_St13_fa.csv</St13FuelAirDeckName>
+        <St13MachDeckName Unit="-">V2527-A5_St13_Mn.csv</St13MachDeckName>
+        <St13TotalPressureDeckName Unit="-">V2527-A5_St13_P.csv</St13TotalPressureDeckName>
+        <St13TotalTemperatureDeckName Unit="-">V2527-A5_St13_T.csv</St13TotalTemperatureDeckName>
+        <St13StaticTemperatureDeckName Unit="-">V2527-A5_St13_Ts.csv</St13StaticTemperatureDeckName>
+        <St13MassFlowDeckName Unit="-">V2527-A5_St13_W.csv</St13MassFlowDeckName>
+        <St22FuelAirDeckName Unit="-">V2527-A5_St22_fa.csv</St22FuelAirDeckName>
+        <St22MachDeckName Unit="-">V2527-A5_St22_Mn.csv</St22MachDeckName>
+        <St22TotalPressureDeckName Unit="-">V2527-A5_St22_P.csv</St22TotalPressureDeckName>
+        <St22TotalTemperatureDeckName Unit="-">V2527-A5_St22_T.csv</St22TotalTemperatureDeckName>
+        <St22StaticTemperatureDeckName Unit="-">V2527-A5_St22_Ts.csv</St22StaticTemperatureDeckName>
+        <St22MassFlowDeckName Unit="-">V2527-A5_St22_W.csv</St22MassFlowDeckName>
+        <St25FuelAirDeckName Unit="-">V2527-A5_St25_fa.csv</St25FuelAirDeckName>
+        <St25MachDeckName Unit="-">V2527-A5_St25_Mn.csv</St25MachDeckName>
+        <St25TotalPressureDeckName Unit="-">V2527-A5_St25_P.csv</St25TotalPressureDeckName>
+        <St25TotalTemperatureDeckName Unit="-">V2527-A5_St25_T.csv</St25TotalTemperatureDeckName>
+        <St25StaticTemperatureDeckName Unit="-">V2527-A5_St25_Ts.csv</St25StaticTemperatureDeckName>
+        <St25MassFlowDeckName Unit="-">V2527-A5_St25_W.csv</St25MassFlowDeckName>
+        <St45FuelAirDeckName Unit="-">V2527-A5_St45_fa.csv</St45FuelAirDeckName>
+        <St45MachDeckName Unit="-">V2527-A5_St45_Mn.csv</St45MachDeckName>
+        <St45TotalPressureDeckName Unit="-">V2527-A5_St45_P.csv</St45TotalPressureDeckName>
+        <St45TotalTemperatureDeckName Unit="-">V2527-A5_St45_T.csv</St45TotalTemperatureDeckName>
+        <St45StaticTemperatureDeckName Unit="-">V2527-A5_St45_Ts.csv</St45StaticTemperatureDeckName>
+        <St45MassFlowDeckName Unit="-">V2527-A5_St45_W.csv</St45MassFlowDeckName>
+        <St18MachDeckName Unit="-">V2527-A5_St8_Mn.csv</St18MachDeckName>
+        <St18TotalTemperatureDeckName Unit="-">V2527-A5_St8_T.csv</St18TotalTemperatureDeckName>
+        <St18JetVelocityDeckName Unit="-">V2527-A5_St8_V.csv</St18JetVelocityDeckName>
+        <St18JetDensityDeckName Unit="-">V2527-A5_St8_Rh.csv</St18JetDensityDeckName>
+        <St18MassFlowDeckName Unit="-">V2527-A5_St8_W.csv</St18MassFlowDeckName>
+        <St8MachDeckName Unit="-">V2527-A5_St8_Mn.csv</St8MachDeckName>
+        <St8TotalTemperatureDeckName Unit="-">V2527-A5_St8_T.csv</St8TotalTemperatureDeckName>
+        <St8JetVelocityDeckName Unit="-">V2527-A5_St8_V.csv</St8JetVelocityDeckName>
+        <St8JetDensityDeckName Unit="-">V2527-A5_St8_Rh.csv</St8JetDensityDeckName>
+        <St8MassFlowDeckName Unit="-">V2527-A5_St8_W.csv</St8MassFlowDeckName>
+        <SNoxDeckName Unit="-">V2527-A5_sNOx.csv</SNoxDeckName>
+    </Deck>
+    <EmissionFactors Desc="Data for the emission calculation">
+        <NOxFactor Desc="Combustion chamber factor NOx Severity Parameter * x = EI_NOx 23 - 32">32</NOxFactor>
+        <CO2Factor Desc="Stoichiometric factor for the combustion of the fuel" Unit="kg/kgFuel">3.149</CO2Factor>
+        <H2OFactor Desc="Stoichiometric factor for the combustion of the fuel" Unit="kg/kgFuel">1.2</H2OFactor>
+        <SO2Factor Desc="Stoichiometric factor for fuel combustion" Unit="kg/kgFuel">0.84e-3</SO2Factor>
+        <PM10Factor Desc="Factor for the combustion of the fuel" Unit="kg/kgFuel">0.025e-3</PM10Factor>
+    </EmissionFactors>
+    <ICAOEngineData>
+        <LTOFuelFlow Desc=" Fuel Flow according to ICAO Aircraft Engine Emissions Databank for LTO phases">
+            <Taxi Desc="Fuel Flow for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/s">0.128</Taxi>
+            <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/s">1.053</Takeoff>
+            <ClimbOut Desc="EI Index for ClimbOut phase according to ICAO" Unit="kg/s">0.88</ClimbOut>
+            <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/s">0.319</Approach>
+        </LTOFuelFlow>
+        <LTOEmissions Desc="EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+            <HCFactor Desc=" EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="EI Index for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/kgFuel">0.105e-3</Taxi>
+                <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/kgFuel">0.041e-3</Takeoff>
+                <ClimbOut Desc="EI Index for ClimbOut Phase according to ICAO" Unit="kg/kgFuel">0.041e-3</ClimbOut>
+                <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/kgFuel">0.061e-3</Approach>
+            </HCFactor>
+            <COFactor Desc=" EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="EI Index for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/kgFuel">12.43e-3</Taxi>
+                <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/kgFuel">0.53e-3</Takeoff>
+                <ClimbOut Desc="EI Index for ClimbOut Phase according to ICAO" Unit="kg/kgFuel">0.62e-3</ClimbOut>
+                <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/kgFuel">2.44e-3</Approach>
+            </COFactor>
+            <NOxFactor Desc=" EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="EI Index for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/kgFuel">4.7e-3</Taxi>
+                <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/kgFuel">26.5e-3</Takeoff>
+                <ClimbOut Desc="EI Index for ClimbOut Phase according to ICAO" Unit="kg/kgFuel">22.3e-3</ClimbOut>
+                <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/kgFuel">8.9e-3</Approach>
+            </NOxFactor>
+            <SNFactor Desc=" Smoke Number according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="Smoke Number for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="-">2.6</Taxi>
+                <Takeoff Desc="Smoke Number for Takeoff Phase according to ICAO" Unit="-">5.2</Takeoff>
+                <ClimbOut Desc="Smoke Number for ClimbOut Phase according to ICAO" Unit="-">7.2</ClimbOut>
+                <Approach Desc="Smoke Number for Approach Phase according to ICAO" Unit="-">4.2</Approach>
+            </SNFactor>
+        </LTOEmissions>
+    </ICAOEngineData>
+</engine_data_file>
diff --git a/engine/test/stubs/test-engineV2/fuel_flow.csv b/engine/test/stubs/test-engineV2/fuel_flow.csv
new file mode 100644
index 00000000..da56f9d1
--- /dev/null
+++ b/engine/test/stubs/test-engineV2/fuel_flow.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.5981;1.6003;1.6056;1.6146;1.6276;1.6449;1.667;1.6942;1.7264;1.764;1.8085;1.8572;1.9116;1.9719;2.0383;2.1111;2.1904;2.2763;2.3685;2.4665;
+500;1.5203;1.5229;1.5281;1.5367;1.5492;1.5658;1.5869;1.6123;1.6425;1.6782;1.7197;1.7661;1.8179;1.8751;1.9383;2.0076;2.0833;2.1653;2.254;2.3487;
+1000;1.4454;1.4481;1.4531;1.4616;1.4738;1.4899;1.51;1.5342;1.5628;1.5961;1.6342;1.6786;1.7277;1.7822;1.8421;1.908;1.98;2.0584;2.1431;2.2343;
+1500;1.3737;1.3754;1.3803;1.3887;1.4007;1.4165;1.4359;1.4591;1.4865;1.518;1.5547;1.5952;1.6411;1.6927;1.7497;1.8123;1.8807;1.9552;2.0361;2.1232;
+2000;1.3027;1.3044;1.3094;1.3177;1.3296;1.345;1.364;1.3865;1.413;1.4429;1.4778;1.516;1.5588;1.607;1.6609;1.7203;1.7853;1.856;1.933;2.0161;
+2500;1.2333;1.235;1.2399;1.2483;1.2601;1.2752;1.2939;1.3159;1.3416;1.3706;1.4029;1.4402;1.4806;1.5256;1.576;1.632;1.6936;1.7608;1.8338;1.913;
+3000;1.1653;1.167;1.1719;1.1802;1.1918;1.2069;1.2252;1.247;1.2721;1.3002;1.3315;1.3672;1.4057;1.4481;1.4951;1.5476;1.6058;1.6693;1.7386;1.8137;
+3500;1.0994;1.101;1.1058;1.1139;1.1252;1.1398;1.1579;1.1794;1.2041;1.2316;1.2621;1.2967;1.3336;1.374;1.4183;1.4672;1.5217;1.5819;1.6472;1.7184;
+4000;1.0355;1.0371;1.0418;1.0496;1.0606;1.0748;1.0923;1.1132;1.1373;1.1645;1.1944;1.2282;1.2639;1.3026;1.3448;1.3908;1.4416;1.498;1.56;1.6271;
+4500;0.97398;0.97588;0.98039;0.98787;0.99839;1.012;1.0288;1.049;1.0722;1.0986;1.129;1.1613;1.1962;1.2337;1.2741;1.3179;1.3655;1.418;1.4763;1.5399;
+5000;0.91514;0.91671;0.92108;0.92831;0.93848;0.95164;0.9679;0.98725;1.0095;1.0348;1.064;1.0957;1.13;1.1667;1.2058;1.2478;1.293;1.3422;1.3963;1.4562;
+5500;0.85816;0.85961;0.86379;0.87076;0.88056;0.89326;0.90896;0.92758;0.94907;0.97343;1.0015;1.0319;1.0651;1.1012;1.1395;1.1801;1.2234;1.27;1.3205;1.3763;
+6000;0.80385;0.80458;0.80855;0.81524;0.82467;0.83689;0.852;0.86991;0.89059;0.91406;0.94117;0.97043;1.0025;1.0373;1.0746;1.1143;1.1562;1.2008;1.2485;1.3004;
+6500;0.75262;0.75373;0.75713;0.7624;0.77124;0.78273;0.79706;0.81424;0.8341;0.85731;0.88277;0.91095;0.94186;0.97546;1.0117;1.0504;1.091;1.134;1.1796;1.2285;
+7000;0.70646;0.70755;0.71074;0.71609;0.72365;0.73351;0.7454;0.76144;0.78008;0.80192;0.82637;0.85347;0.88322;0.9156;0.9506;0.98816;1.028;1.0695;1.1133;1.1599;
+7500;0.66266;0.66369;0.66669;0.67171;0.67881;0.68806;0.69956;0.71331;0.72906;0.74982;0.77278;0.79822;0.82659;0.85773;0.89143;0.92766;0.96635;1.0072;1.0496;1.0939;
+8000;0.6211;0.62166;0.62484;0.62956;0.63624;0.64494;0.65568;0.66854;0.68361;0.70094;0.72169;0.74611;0.77295;0.8022;0.83427;0.86912;0.90643;0.94611;0.98774;1.0308;
+8500;0.58159;0.58213;0.58512;0.5895;0.59577;0.60394;0.61404;0.6261;0.64015;0.65637;0.67527;0.69589;0.72161;0.74971;0.78013;0.81288;0.84848;0.8867;0.92722;0.9695;
+9000;0.54435;0.54506;0.54752;0.55163;0.55747;0.56509;0.57449;0.58575;0.59895;0.61415;0.63175;0.65133;0.67327;0.6991;0.72829;0.75976;0.79347;0.82938;0.86831;0.90952;
+9500;0.50914;0.5095;0.51191;0.51575;0.52121;0.5283;0.53707;0.54756;0.55987;0.57407;0.59055;0.60879;0.62926;0.65207;0.67835;0.70851;0.74088;0.77543;0.81209;0.85106;
+10000;0.47568;0.47639;0.4785;0.48204;0.48704;0.49352;0.50162;0.51173;0.52323;0.53649;0.5516;0.56863;0.58765;0.60885;0.63242;0.65918;0.69018;0.72334;0.75859;0.79588;
+10500;0.44405;0.44507;0.44705;0.45035;0.455;0.46103;0.46848;0.4774;0.4883;0.50066;0.51472;0.53059;0.54837;0.56811;0.58999;0.61417;0.64141;0.67314;0.70695;0.74279;
+11000;0.41486;0.41548;0.41732;0.4204;0.42473;0.43033;0.43726;0.44554;0.45525;0.46676;0.47987;0.49464;0.51118;0.5296;0.54996;0.57243;0.59718;0.62487;0.65721;0.69156;
+11500;0.38486;0.38556;0.38727;0.39012;0.39414;0.39934;0.40576;0.41345;0.42246;0.43284;0.44529;0.459;0.47436;0.49144;0.51033;0.53119;0.55416;0.57984;0.60976;0.64156;
+12000;0.35702;0.3578;0.35939;0.36203;0.36576;0.37059;0.37655;0.38368;0.39204;0.40168;0.41322;0.42594;0.44021;0.45603;0.47357;0.49292;0.51425;0.53809;0.56586;0.59538;
+12500;0.33156;0.33205;0.33352;0.33598;0.33944;0.34392;0.34945;0.35608;0.36383;0.37276;0.38347;0.39528;0.4085;0.42319;0.43946;0.45743;0.47722;0.49935;0.52513;0.55254;
+13000;0.30792;0.30821;0.30953;0.31181;0.31502;0.31918;0.32431;0.33046;0.33765;0.34594;0.35587;0.36683;0.37909;0.39272;0.40782;0.4245;0.44287;0.46342;0.48735;0.5128;
+13500;0.28559;0.28602;0.28728;0.28939;0.29237;0.29623;0.30099;0.30669;0.31337;0.32106;0.33027;0.34043;0.35181;0.36446;0.37848;0.39395;0.41101;0.43008;0.4523;0.47592;
+14000;0.26514;0.26553;0.2667;0.26866;0.27142;0.27499;0.2794;0.28467;0.29085;0.29797;0.3065;0.31594;0.3265;0.33824;0.35125;0.36562;0.38145;0.39915;0.41979;0.44171;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.3918;1.3931;1.3975;1.405;1.4158;1.43;1.448;1.4701;1.4968;1.5285;1.5659;1.6069;1.6521;1.7015;1.7555;1.8147;1.8794;1.9505;2.0291;2.1157;
+500;1.3228;1.324;1.3283;1.3355;1.3457;1.3593;1.3764;1.3976;1.4233;1.4545;1.4896;1.5292;1.5729;1.6205;1.6723;1.7286;1.7902;1.8573;1.9311;2.0126;
+1000;1.2561;1.2575;1.2616;1.2685;1.2783;1.2913;1.3078;1.3282;1.3528;1.3818;1.4161;1.4539;1.496;1.542;1.5918;1.6457;1.7043;1.7681;1.8376;1.914;
+1500;1.1919;1.1937;1.1976;1.2042;1.2136;1.226;1.2418;1.2614;1.2851;1.3136;1.3455;1.3815;1.4215;1.4658;1.5139;1.5657;1.6217;1.6823;1.7481;1.8199;
+2000;1.1311;1.1324;1.1361;1.1424;1.1514;1.1633;1.1785;1.1973;1.2199;1.2471;1.2776;1.3119;1.35;1.392;1.4382;1.4882;1.542;1.5998;1.6624;1.7302;
+2500;1.0724;1.0736;1.0772;1.0832;1.0918;1.1032;1.1177;1.1358;1.1574;1.1833;1.2123;1.245;1.2813;1.3213;1.3652;1.4131;1.4649;1.5203;1.5798;1.6443;
+3000;1.0158;1.0176;1.021;1.0267;1.0348;1.0457;1.0596;1.0768;1.0973;1.1212;1.1496;1.1806;1.2151;1.2532;1.2951;1.3407;1.3903;1.4435;1.5005;1.5616;
+3500;0.96322;0.96435;0.96755;0.97293;0.98065;0.99092;1.0041;1.0204;1.0398;1.0624;1.0893;1.1187;1.1514;1.1877;1.2275;1.271;1.3183;1.3695;1.4239;1.4823;
+4000;0.91253;0.91355;0.91658;0.92168;0.92898;0.93879;0.95131;0.96663;0.98484;1.0062;1.0316;1.0594;1.0904;1.1247;1.1625;1.2039;1.249;1.2978;1.3503;1.406;
+4500;0.86351;0.86515;0.86805;0.87298;0.88005;0.88943;0.90132;0.91567;0.93263;0.95265;0.97634;1.0026;1.0318;1.0643;1.1001;1.1394;1.1823;1.2288;1.2789;1.3326;
+5000;0.81756;0.8185;0.82132;0.8261;0.83297;0.84211;0.85354;0.86725;0.88336;0.90209;0.92333;0.94824;0.97582;1.0065;1.0403;1.0775;1.1181;1.1623;1.2101;1.2615;
+5500;0.77232;0.77327;0.77606;0.78077;0.7875;0.79641;0.80745;0.82066;0.83614;0.85388;0.87389;0.89708;0.92256;0.95116;0.9831;1.0182;1.0566;1.0985;1.1439;1.1928;
+6000;0.72838;0.72931;0.73208;0.73675;0.74343;0.75212;0.76281;0.77559;0.79056;0.80758;0.8266;0.84844;0.87229;0.8989;0.92861;0.96148;0.99774;1.0373;1.0803;1.1268;
+6500;0.68621;0.68755;0.69023;0.69478;0.70125;0.70958;0.71978;0.73195;0.74641;0.76279;0.78111;0.80136;0.82441;0.84934;0.87699;0.90774;0.9416;0.97874;1.0193;1.0633;
+7000;0.64618;0.64706;0.64971;0.65417;0.66048;0.66863;0.67866;0.69062;0.70438;0.71982;0.73707;0.75713;0.7786;0.80213;0.82803;0.85663;0.88834;0.92317;0.96112;1.0026;
+7500;0.60701;0.60789;0.61048;0.61483;0.62094;0.62884;0.63858;0.65023;0.66368;0.67881;0.69553;0.71444;0.73461;0.75696;0.78141;0.80819;0.83766;0.87026;0.90595;0.94477;
+8000;0.56916;0.57;0.57254;0.57675;0.58266;0.59031;0.59975;0.61101;0.62399;0.63868;0.65506;0.67353;0.69305;0.7142;0.73698;0.76208;0.78966;0.81991;0.85333;0.88981;
+8500;0.53283;0.53345;0.53588;0.53994;0.54563;0.55303;0.56215;0.57303;0.58554;0.59971;0.61554;0.63358;0.65268;0.67316;0.69518;0.71876;0.74409;0.77228;0.80325;0.83741;
+9000;0.49745;0.49825;0.5006;0.5045;0.51;0.51711;0.52588;0.53632;0.54834;0.56199;0.5777;0.59466;0.61321;0.63327;0.65461;0.67741;0.70168;0.72766;0.75594;0.78756;
+9500;0.46381;0.46424;0.46658;0.47034;0.47562;0.48246;0.49091;0.50094;0.51249;0.5256;0.54069;0.55699;0.57487;0.59428;0.61519;0.63729;0.66076;0.68561;0.71215;0.74088;
+10000;0.43252;0.43317;0.4351;0.43833;0.4429;0.44911;0.4572;0.4668;0.47789;0.49082;0.50499;0.52068;0.53785;0.55651;0.57666;0.59829;0.62105;0.64508;0.67044;0.69746;
+10500;0.40337;0.40424;0.40605;0.40908;0.41334;0.41891;0.42583;0.434;0.44456;0.45695;0.47055;0.48561;0.50212;0.52008;0.53945;0.56023;0.58245;0.60577;0.63027;0.65604;
+11000;0.37629;0.37686;0.37855;0.38138;0.38537;0.39058;0.39705;0.40475;0.41378;0.42414;0.43738;0.45181;0.46765;0.48489;0.50353;0.52353;0.54488;0.56757;0.59133;0.61621;
+11500;0.34911;0.34973;0.35129;0.35392;0.35763;0.36246;0.36844;0.37559;0.38397;0.39359;0.40588;0.41928;0.43398;0.44998;0.46728;0.48584;0.50565;0.52672;0.5487;0.57171;
+12000;0.32389;0.32456;0.32601;0.32844;0.33187;0.33635;0.34191;0.34855;0.35632;0.36524;0.37666;0.38909;0.40274;0.41759;0.43364;0.45087;0.46926;0.48883;0.50923;0.53057;
+12500;0.30075;0.3012;0.30254;0.3048;0.30798;0.31214;0.3173;0.32346;0.33066;0.33895;0.34955;0.3611;0.37377;0.38755;0.40244;0.41844;0.43551;0.45367;0.4726;0.4924;
+13000;0.27925;0.27952;0.28077;0.28286;0.28582;0.28968;0.29447;0.30018;0.30688;0.31457;0.32441;0.33512;0.34688;0.35968;0.3735;0.38834;0.4042;0.42105;0.43862;0.45697;
+13500;0.25905;0.25944;0.2606;0.26253;0.26527;0.26884;0.27329;0.27859;0.28481;0.29195;0.30108;0.31103;0.32195;0.33382;0.34665;0.36043;0.37515;0.39079;0.40708;0.4241;
+14000;0.24049;0.24085;0.24193;0.24372;0.24627;0.24958;0.2537;0.25861;0.26436;0.27113;0.27944;0.28868;0.29881;0.30983;0.32174;0.33453;0.3482;0.36271;0.37782;0.39361;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.2016;1.2029;1.2063;1.2121;1.2203;1.2311;1.2447;1.2614;1.2813;1.306;1.3355;1.3697;1.4089;1.4527;1.5012;1.5544;1.6126;1.6762;1.7454;1.8207;
+500;1.1438;1.1453;1.1486;1.1541;1.1619;1.1721;1.185;1.2008;1.2197;1.2435;1.271;1.3032;1.3402;1.3819;1.4279;1.4785;1.5339;1.5942;1.66;1.7315;
+1000;1.0882;1.0896;1.0928;1.0981;1.1056;1.1155;1.1279;1.143;1.161;1.1828;1.2093;1.2398;1.2745;1.3139;1.3576;1.4056;1.4581;1.5155;1.5779;1.6457;
+1500;1.0348;1.0358;1.0389;1.044;1.0513;1.0608;1.0728;1.0873;1.1047;1.1254;1.1507;1.1793;1.2119;1.2487;1.29;1.3355;1.3854;1.4398;1.4991;1.5634;
+2000;0.98272;0.98373;0.9867;0.99169;0.99876;1.008;1.0196;1.0337;1.0505;1.0703;1.0946;1.1217;1.1524;1.1868;1.2253;1.2683;1.3155;1.3672;1.4234;1.4844;
+2500;0.9328;0.93324;0.93612;0.94095;0.94783;0.95684;0.9681;0.98179;0.99813;1.0173;1.0406;1.0665;1.0956;1.128;1.164;1.2039;1.2485;1.2974;1.3507;1.4086;
+3000;0.88359;0.88452;0.88729;0.89193;0.89854;0.90724;0.91819;0.93154;0.94746;0.96618;0.98856;1.0134;1.0411;1.0718;1.1056;1.1431;1.1845;1.2305;1.281;1.3358;
+3500;0.83664;0.8377;0.84034;0.84477;0.85108;0.85942;0.86994;0.88284;0.89835;0.91667;0.9383;0.96212;0.98862;1.0178;1.0498;1.0851;1.1239;1.1668;1.2141;1.266;
+4000;0.79224;0.79308;0.79557;0.79977;0.80575;0.81365;0.82365;0.83594;0.85086;0.86883;0.88961;0.91262;0.93803;0.96587;0.99631;1.0296;1.0661;1.1063;1.1506;1.1993;
+4500;0.74964;0.75003;0.75262;0.75662;0.76234;0.76989;0.77946;0.79125;0.80551;0.82243;0.84242;0.86465;0.88914;0.91582;0.94486;0.97648;1.011;1.0487;1.0901;1.1358;
+5000;0.70842;0.70918;0.71144;0.71525;0.7207;0.72791;0.73706;0.74836;0.76204;0.77824;0.79733;0.81841;0.84178;0.86746;0.89529;0.92544;0.95812;0.99368;1.0325;1.0751;
+5500;0.66891;0.66984;0.67199;0.67562;0.68082;0.68772;0.69646;0.70726;0.72037;0.73578;0.75401;0.77408;0.79634;0.82085;0.84745;0.87628;0.90742;0.94108;0.97765;1.0175;
+6000;0.63209;0.63277;0.63476;0.63812;0.64294;0.64934;0.65759;0.66794;0.68052;0.6951;0.71243;0.73148;0.75263;0.77594;0.80148;0.82906;0.85863;0.89066;0.92521;0.96271;
+6500;0.59717;0.59779;0.59968;0.60287;0.60745;0.61355;0.62132;0.63097;0.64263;0.6562;0.67259;0.69061;0.71066;0.73279;0.75705;0.78352;0.81197;0.84235;0.87502;0.91038;
+7000;0.56408;0.56467;0.56643;0.56942;0.57372;0.57947;0.58685;0.59607;0.60706;0.61986;0.6351;0.65179;0.67042;0.69138;0.71439;0.73951;0.76681;0.79603;0.82713;0.86041;
+7500;0.53226;0.53324;0.53492;0.53774;0.54181;0.54724;0.5542;0.56284;0.57314;0.58521;0.59953;0.61525;0.63278;0.65216;0.6735;0.69729;0.72318;0.75122;0.78109;0.81283;
+8000;0.50271;0.50325;0.50486;0.50758;0.51148;0.51668;0.52331;0.5314;0.54098;0.55224;0.5656;0.58035;0.59684;0.61513;0.63526;0.65733;0.68137;0.70792;0.73661;0.76704;
+8500;0.47396;0.47452;0.47608;0.47872;0.4825;0.48752;0.49386;0.50151;0.51055;0.52107;0.53306;0.5471;0.56255;0.57974;0.59871;0.61951;0.64223;0.66691;0.69359;0.72284;
+9000;0.44627;0.44678;0.44832;0.45092;0.45464;0.45957;0.46569;0.473;0.48157;0.49146;0.50265;0.51561;0.52993;0.54599;0.5638;0.58338;0.60477;0.62808;0.65331;0.68051;
+9500;0.41939;0.41991;0.42142;0.42398;0.42764;0.43248;0.43844;0.44554;0.45381;0.46322;0.47378;0.48555;0.49909;0.51394;0.53054;0.5489;0.56901;0.59094;0.61476;0.64048;
+10000;0.39324;0.39375;0.39527;0.39783;0.40147;0.40618;0.41197;0.41889;0.42694;0.43601;0.44611;0.4573;0.47;0.48374;0.49901;0.51608;0.53492;0.5555;0.5779;0.60216;
+10500;0.36791;0.36841;0.3699;0.37241;0.37597;0.38057;0.38624;0.393;0.40081;0.4096;0.41938;0.43014;0.44224;0.45518;0.46938;0.48506;0.5025;0.52175;0.54274;0.56554;
+11000;0.34349;0.34398;0.34543;0.34788;0.35132;0.35576;0.36125;0.36781;0.3754;0.38395;0.39372;0.40417;0.41555;0.42788;0.44127;0.45588;0.47193;0.48974;0.50931;0.53064;
+11500;0.31869;0.31923;0.32058;0.32285;0.32604;0.33017;0.33526;0.34134;0.34838;0.35631;0.36538;0.37509;0.38565;0.39709;0.40951;0.42307;0.43797;0.45452;0.47266;0.4924;
+12000;0.29568;0.29627;0.29752;0.29963;0.30259;0.30642;0.31114;0.31679;0.32332;0.33068;0.3391;0.34811;0.3579;0.36852;0.38005;0.39263;0.40648;0.42183;0.43866;0.457;
+12500;0.27458;0.27496;0.27613;0.27808;0.28083;0.28439;0.28877;0.29401;0.30008;0.30691;0.31472;0.32308;0.33217;0.34202;0.35272;0.3644;0.37726;0.3915;0.40712;0.42416;
+13000;0.25498;0.2552;0.25629;0.2581;0.26065;0.26395;0.26802;0.27289;0.27851;0.28485;0.2921;0.29986;0.30829;0.31744;0.32737;0.33822;0.35014;0.36335;0.37787;0.3937;
+13500;0.23658;0.23692;0.23792;0.2396;0.24196;0.24501;0.24877;0.25328;0.25851;0.26439;0.27112;0.27832;0.28615;0.29463;0.30386;0.31392;0.32498;0.33725;0.35073;0.36543;
+14000;0.21968;0.21998;0.22091;0.22247;0.22466;0.22749;0.23099;0.23516;0.23999;0.24543;0.25167;0.25833;0.2656;0.27348;0.28204;0.29137;0.30164;0.31303;0.32556;0.33922;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1.0292;1.0303;1.0333;1.0384;1.0457;1.0553;1.0674;1.0823;1.1;1.1208;1.1449;1.1732;1.2055;1.2426;1.2843;1.3304;1.3809;1.4359;1.4958;1.5606;
+500;0.97891;0.97994;0.98279;0.98759;0.99442;1.0034;1.0147;1.0287;1.0456;1.0654;1.0884;1.1154;1.1461;1.1814;1.2211;1.2649;1.3129;1.3653;1.4222;1.4839;
+1000;0.93061;0.93161;0.9343;0.93884;0.9453;0.9538;0.96444;0.97778;0.99367;1.0124;1.0342;1.0599;1.0892;1.1228;1.1604;1.202;1.2476;1.2974;1.3515;1.4102;
+1500;0.88429;0.88514;0.8877;0.892;0.89813;0.90619;0.91626;0.92894;0.94411;0.96188;0.9826;1.007;1.0347;1.0666;1.1022;1.1416;1.1849;1.2321;1.2835;1.3392;
+2000;0.83981;0.84049;0.84292;0.84699;0.85279;0.86041;0.86995;0.882;0.89648;0.91347;0.93355;0.95646;0.98285;1.0128;1.0464;1.0837;1.1246;1.1694;1.2182;1.2711;
+2500;0.79703;0.7978;0.80007;0.80388;0.80933;0.81652;0.82555;0.83695;0.85074;0.86693;0.8862;0.90808;0.93323;0.96165;0.9933;1.0282;1.0669;1.1093;1.1555;1.2057;
+3000;0.75637;0.75707;0.7592;0.76277;0.76787;0.7746;0.78305;0.79378;0.80689;0.82229;0.84067;0.86163;0.88567;0.91259;0.94257;0.97554;1.0117;1.0516;1.0953;1.1429;
+3500;0.71767;0.71834;0.72033;0.72367;0.72843;0.7347;0.74258;0.75256;0.76489;0.7795;0.797;0.81701;0.83997;0.8656;0.89393;0.92514;0.95931;0.99673;1.0377;1.0827;
+4000;0.68039;0.68139;0.68328;0.68644;0.69095;0.69687;0.70431;0.71355;0.72502;0.73862;0.75517;0.77423;0.79606;0.82046;0.84737;0.87681;0.90914;0.94443;0.98301;1.0251;
+4500;0.64536;0.64597;0.64777;0.65079;0.65508;0.66071;0.66778;0.67647;0.68726;0.70005;0.71547;0.73335;0.75395;0.77709;0.80265;0.83059;0.86106;0.89442;0.93077;0.97042;
+5000;0.61169;0.61198;0.61366;0.61655;0.62065;0.62605;0.6328;0.64102;0.65119;0.6633;0.67785;0.69465;0.71388;0.73562;0.75971;0.78623;0.8151;0.84654;0.88085;0.91818;
+5500;0.57934;0.57985;0.58147;0.58419;0.58804;0.59309;0.59942;0.6071;0.61673;0.62822;0.64173;0.65784;0.67584;0.69614;0.7188;0.74372;0.77105;0.80076;0.83309;0.86829;
+6000;0.54838;0.54891;0.55048;0.55312;0.55685;0.56174;0.56786;0.57528;0.58425;0.595;0.60759;0.62275;0.63966;0.65862;0.67975;0.70324;0.72896;0.75699;0.78745;0.82061;
+6500;0.51844;0.51895;0.52048;0.52305;0.52668;0.53144;0.53739;0.54461;0.55324;0.56356;0.57565;0.58978;0.6054;0.62295;0.64266;0.66454;0.68878;0.71525;0.74397;0.77505;
+7000;0.48985;0.49011;0.49153;0.49399;0.49749;0.5021;0.5079;0.51496;0.52334;0.5333;0.54522;0.55843;0.57323;0.58962;0.60771;0.62781;0.65038;0.67531;0.70246;0.73181;
+7500;0.46184;0.46231;0.46371;0.46606;0.46941;0.47383;0.4794;0.48624;0.49444;0.50413;0.51565;0.5283;0.54239;0.55789;0.57491;0.59363;0.61423;0.63715;0.66273;0.69048;
+8000;0.43529;0.43573;0.43705;0.43928;0.44246;0.44667;0.45201;0.45858;0.4665;0.4759;0.48706;0.49926;0.51273;0.52747;0.54357;0.56117;0.58046;0.60163;0.62497;0.6509;
+8500;0.40988;0.4103;0.41156;0.41368;0.41672;0.42074;0.42584;0.43211;0.43969;0.44871;0.45938;0.47116;0.48412;0.49822;0.51353;0.53017;0.5483;0.56809;0.58978;0.61367;
+9000;0.38556;0.386;0.38719;0.38921;0.39209;0.39592;0.40078;0.40679;0.41408;0.42269;0.43284;0.44404;0.45642;0.46999;0.48465;0.50047;0.5176;0.53618;0.55643;0.5786;
+9500;0.36226;0.36284;0.36398;0.36589;0.36862;0.37225;0.37687;0.38261;0.38972;0.39775;0.40742;0.41805;0.42982;0.44274;0.45679;0.47192;0.4882;0.50575;0.52474;0.5454;
+10000;0.34048;0.34085;0.34192;0.34372;0.34631;0.34975;0.35413;0.35958;0.36619;0.3739;0.38307;0.39314;0.40427;0.41654;0.42995;0.44447;0.45998;0.47662;0.49454;0.51389;
+10500;0.31974;0.32007;0.32105;0.32273;0.32515;0.32839;0.33255;0.33772;0.34394;0.35119;0.35982;0.36929;0.37982;0.39141;0.40412;0.41795;0.43287;0.44876;0.46568;0.48388;
+11000;0.30021;0.30052;0.30145;0.30302;0.30528;0.3083;0.31217;0.31701;0.32282;0.32961;0.3377;0.34655;0.35644;0.36738;0.37937;0.39246;0.40666;0.42192;0.43811;0.45532;
+11500;0.27859;0.27892;0.27978;0.28124;0.28334;0.28614;0.28974;0.29424;0.29963;0.30594;0.31345;0.32167;0.33086;0.341;0.35213;0.36428;0.37746;0.39164;0.40667;0.42265;
+12000;0.25853;0.25888;0.25968;0.26104;0.26298;0.26559;0.26894;0.27311;0.27812;0.28398;0.29096;0.2986;0.30712;0.31652;0.32685;0.33814;0.35038;0.36354;0.3775;0.39233;
+12500;0.24005;0.24029;0.24104;0.24229;0.2441;0.24653;0.24964;0.25352;0.25817;0.2636;0.27009;0.27719;0.28508;0.29381;0.3034;0.31389;0.32525;0.33747;0.35043;0.3642;
+13000;0.22289;0.22305;0.22374;0.22491;0.2266;0.22885;0.23173;0.23534;0.23966;0.24471;0.25073;0.25731;0.26463;0.27273;0.28165;0.29138;0.30193;0.31327;0.32531;0.3381;
+13500;0.20691;0.20713;0.20776;0.20885;0.21041;0.21249;0.21516;0.21849;0.22248;0.22733;0.23276;0.23885;0.24566;0.25318;0.26146;0.2705;0.28029;0.29083;0.302;0.31388;
+14000;0.19217;0.19236;0.19296;0.19397;0.19541;0.19735;0.19983;0.20292;0.20663;0.21112;0.21614;0.22178;0.22807;0.23504;0.24273;0.25112;0.26022;0.26999;0.28037;0.2914;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.88288;0.88381;0.88655;0.89119;0.89789;0.90685;0.91685;0.92918;0.94357;0.96074;0.9803;1.0036;1.0298;1.0592;1.0929;1.131;1.1732;1.2193;1.2691;1.3231;
+500;0.83915;0.84003;0.84263;0.84701;0.85325;0.86159;0.87107;0.88269;0.89648;0.91286;0.93145;0.95363;0.9787;1.0069;1.0392;1.0757;1.1159;1.1598;1.2074;1.2587;
+1000;0.79732;0.79803;0.80049;0.80462;0.81053;0.81837;0.82744;0.83853;0.85157;0.86654;0.88464;0.90574;0.92962;0.95672;0.98755;1.0224;1.0607;1.1026;1.1479;1.1969;
+1500;0.75719;0.75777;0.7601;0.764;0.76956;0.77694;0.78559;0.79617;0.80862;0.82292;0.84003;0.85996;0.88255;0.90852;0.93799;0.97112;1.0077;1.0475;1.0907;1.1373;
+2000;0.71843;0.71917;0.72136;0.72504;0.73027;0.73721;0.74545;0.75552;0.76741;0.7811;0.79766;0.81634;0.83778;0.86233;0.89041;0.92189;0.95661;0.99444;1.0355;1.08;
+2500;0.68128;0.68218;0.68424;0.6877;0.69262;0.69913;0.70698;0.71655;0.72787;0.74097;0.7567;0.77451;0.79495;0.81833;0.845;0.87464;0.90757;0.94349;0.9825;1.0248;
+3000;0.64618;0.64682;0.64874;0.65197;0.65657;0.66266;0.67013;0.67921;0.68997;0.70248;0.71743;0.73439;0.75387;0.77617;0.80155;0.82971;0.86066;0.89455;0.93159;0.97171;
+3500;0.61249;0.6131;0.6149;0.61794;0.62226;0.62794;0.635;0.64355;0.65371;0.6656;0.67979;0.69594;0.7145;0.73575;0.75987;0.78662;0.81592;0.8479;0.8827;0.92076;
+4000;0.58018;0.58077;0.58247;0.58533;0.58939;0.59473;0.60145;0.60957;0.61921;0.63049;0.64382;0.6591;0.67677;0.69703;0.71991;0.74526;0.77304;0.80329;0.83622;0.87196;
+4500;0.54955;0.55007;0.55162;0.55424;0.55797;0.5629;0.56929;0.57703;0.58622;0.59697;0.60959;0.62405;0.64075;0.65994;0.68162;0.70563;0.73191;0.76057;0.79169;0.8255;
+5000;0.52056;0.52105;0.52251;0.52497;0.52847;0.53307;0.539;0.54618;0.55473;0.56483;0.57687;0.5906;0.60641;0.62462;0.64505;0.66766;0.69251;0.71961;0.74908;0.78101;
+5500;0.49276;0.49328;0.49465;0.49696;0.50026;0.50457;0.51018;0.51701;0.52514;0.53468;0.54573;0.55873;0.57365;0.59086;0.61016;0.63151;0.65486;0.68039;0.70824;0.73843;
+6000;0.4661;0.46672;0.46801;0.47019;0.47328;0.47733;0.48262;0.48911;0.49682;0.5059;0.51645;0.5288;0.54284;0.55885;0.5768;0.59692;0.61897;0.64302;0.66918;0.69768;
+6500;0.44094;0.44134;0.44255;0.44459;0.44751;0.45132;0.45628;0.46242;0.46974;0.47837;0.48844;0.50018;0.51353;0.52869;0.54556;0.56412;0.58464;0.60733;0.632;0.65879;
+7000;0.4168;0.41721;0.41834;0.42023;0.42293;0.42649;0.43111;0.43693;0.44384;0.45203;0.46177;0.47282;0.48553;0.49985;0.51578;0.53329;0.55243;0.5734;0.59647;0.62172;
+7500;0.39431;0.39439;0.39543;0.39718;0.39967;0.40295;0.40719;0.41261;0.41911;0.42686;0.43612;0.44667;0.45874;0.47228;0.4873;0.50381;0.52184;0.54152;0.56303;0.5864;
+8000;0.3724;0.37272;0.3737;0.37535;0.3777;0.38077;0.38468;0.38968;0.39569;0.40289;0.41161;0.42164;0.43312;0.44591;0.46009;0.47563;0.49263;0.51114;0.53131;0.5533;
+8500;0.35143;0.35199;0.35293;0.35449;0.35672;0.35964;0.36329;0.36796;0.37358;0.38028;0.38841;0.39783;0.40863;0.42072;0.43407;0.44871;0.4647;0.48215;0.50109;0.5217;
+9000;0.33181;0.33212;0.33302;0.33451;0.33664;0.33943;0.34291;0.34728;0.35258;0.35887;0.36646;0.37525;0.38535;0.39673;0.40927;0.423;0.43805;0.45445;0.47229;0.4916;
+9500;0.31272;0.31301;0.31387;0.31532;0.31737;0.32005;0.32339;0.32752;0.33254;0.33849;0.3455;0.35388;0.36325;0.37384;0.38564;0.39858;0.41267;0.42803;0.44479;0.46296;
+10000;0.2945;0.29467;0.29542;0.29682;0.2988;0.30139;0.30463;0.30858;0.31337;0.31905;0.32571;0.3336;0.34235;0.35216;0.3631;0.37526;0.38854;0.40297;0.41863;0.43564;
+10500;0.27651;0.27679;0.2776;0.27895;0.28088;0.2834;0.28656;0.29037;0.29498;0.30044;0.30682;0.31428;0.32251;0.33165;0.34178;0.35303;0.36549;0.37908;0.3938;0.40974;
+11000;0.25946;0.25971;0.26048;0.26177;0.26361;0.26604;0.2691;0.27282;0.27729;0.28256;0.28886;0.29582;0.30359;0.31216;0.32161;0.33201;0.34353;0.35626;0.37011;0.38508;
+11500;0.2408;0.24108;0.2418;0.243;0.24471;0.24697;0.2498;0.25326;0.2574;0.26231;0.26815;0.27461;0.28183;0.28979;0.29856;0.30822;0.31893;0.33074;0.3436;0.35749;
+12000;0.22348;0.22381;0.22447;0.22558;0.22717;0.22927;0.2319;0.23511;0.23896;0.24352;0.24894;0.25494;0.26164;0.26903;0.27717;0.28615;0.29609;0.30706;0.31899;0.33189;
+12500;0.20757;0.20777;0.20839;0.20942;0.2109;0.21284;0.21529;0.21827;0.22185;0.22608;0.23111;0.23668;0.2429;0.24977;0.25732;0.26567;0.2749;0.28508;0.29616;0.30813;
+13000;0.19276;0.19295;0.19352;0.19448;0.19584;0.19764;0.1999;0.20265;0.20597;0.20989;0.21457;0.21974;0.22551;0.23189;0.23891;0.24666;0.25523;0.26468;0.27496;0.28608;
+13500;0.17906;0.17923;0.17976;0.18065;0.18192;0.18359;0.18569;0.18825;0.19131;0.19495;0.19928;0.20405;0.20939;0.2153;0.22181;0.22902;0.23697;0.24575;0.2553;0.2656;
+14000;0.16631;0.1665;0.16699;0.16782;0.169;0.17055;0.1725;0.17488;0.17773;0.18111;0.18514;0.18957;0.19453;0.2;0.20602;0.21268;0.22003;0.22818;0.23704;0.24659;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.75671;0.7573;0.75972;0.76386;0.76997;0.77716;0.78513;0.79482;0.80667;0.82033;0.83637;0.8538;0.87321;0.89479;0.91965;0.94783;0.98021;1.0165;1.0562;1.0996;
+500;0.71873;0.7194;0.7217;0.72562;0.73136;0.73808;0.74562;0.7548;0.7661;0.77917;0.79451;0.81139;0.83011;0.85099;0.87496;0.90217;0.93342;0.96821;1.0061;1.0471;
+1000;0.68237;0.68296;0.68515;0.68888;0.69434;0.70068;0.70793;0.71673;0.72741;0.73975;0.75435;0.77065;0.78866;0.80883;0.83192;0.85821;0.88827;0.92161;0.95784;0.99685;
+1500;0.64755;0.64805;0.65012;0.65364;0.65881;0.66478;0.67172;0.68013;0.69033;0.70215;0.71607;0.73191;0.74884;0.76827;0.7905;0.81587;0.84473;0.87663;0.91126;0.94852;
+2000;0.61395;0.6146;0.61656;0.61989;0.62478;0.63039;0.63702;0.64505;0.65476;0.66604;0.67931;0.69452;0.71088;0.72938;0.75065;0.7751;0.80279;0.83326;0.86631;0.90191;
+2500;0.58181;0.58255;0.5844;0.58755;0.59216;0.59744;0.60378;0.61145;0.62028;0.63141;0.64407;0.65858;0.67443;0.69224;0.71261;0.73586;0.76239;0.79147;0.82298;0.85695;
+3000;0.55144;0.55202;0.55376;0.55672;0.56104;0.56599;0.57201;0.57926;0.5877;0.59824;0.61029;0.62412;0.63945;0.6565;0.67616;0.69841;0.72358;0.75125;0.78125;0.81363;
+3500;0.52237;0.52285;0.52446;0.52723;0.53129;0.53597;0.54172;0.54864;0.55665;0.56657;0.57793;0.59109;0.60587;0.62231;0.64107;0.66249;0.68643;0.7127;0.7411;0.77191;
+4000;0.49491;0.49542;0.49694;0.49951;0.50325;0.50761;0.51296;0.51942;0.52697;0.53635;0.54714;0.55957;0.5737;0.58941;0.60739;0.62791;0.65072;0.67569;0.70272;0.73185;
+4500;0.46866;0.46919;0.47062;0.47302;0.47652;0.48067;0.48578;0.49194;0.49908;0.50774;0.51782;0.52968;0.543;0.558;0.57512;0.59469;0.61641;0.64014;0.66581;0.69353;
+5000;0.44372;0.44416;0.4455;0.44775;0.45102;0.45495;0.45979;0.46565;0.47247;0.48064;0.49024;0.50141;0.5138;0.52795;0.54432;0.56291;0.58346;0.60599;0.63036;0.65669;
+5500;0.41984;0.42023;0.42149;0.42361;0.42666;0.43039;0.435;0.44056;0.44704;0.45496;0.46385;0.47446;0.48634;0.49979;0.51513;0.5325;0.55201;0.57327;0.59633;0.62131;
+6000;0.39697;0.39736;0.39854;0.40053;0.40337;0.40691;0.41129;0.41658;0.42276;0.43024;0.43863;0.44869;0.46002;0.47286;0.4875;0.50397;0.52215;0.54198;0.5638;0.58736;
+6500;0.37518;0.37554;0.37664;0.37849;0.38115;0.38449;0.38864;0.39365;0.39954;0.40662;0.41458;0.42409;0.43483;0.44708;0.46104;0.47665;0.49384;0.51258;0.53287;0.55497;
+7000;0.35483;0.35482;0.35584;0.35757;0.36003;0.36318;0.36708;0.37179;0.37736;0.38406;0.39161;0.40062;0.41079;0.42243;0.4357;0.4505;0.46675;0.48444;0.50366;0.52441;
+7500;0.33469;0.33501;0.33597;0.33758;0.33988;0.34285;0.34654;0.35102;0.3563;0.36262;0.3697;0.3782;0.38785;0.3989;0.41146;0.42546;0.44082;0.45752;0.47565;0.4953;
+8000;0.31549;0.3161;0.317;0.3185;0.32064;0.32345;0.32694;0.33117;0.33619;0.34198;0.34903;0.35696;0.36604;0.37645;0.38833;0.4015;0.416;0.43177;0.44887;0.4674;
+8500;0.29776;0.29806;0.29889;0.3003;0.30229;0.30494;0.30825;0.31226;0.317;0.32252;0.32913;0.33665;0.3453;0.35517;0.36634;0.3787;0.39227;0.40713;0.42327;0.44073;
+9000;0.28081;0.28085;0.28163;0.28294;0.2848;0.28729;0.29042;0.29421;0.29871;0.30395;0.31019;0.31727;0.32545;0.33486;0.34539;0.35704;0.36978;0.38364;0.3988;0.41526;
+9500;0.2642;0.26444;0.26517;0.26639;0.26813;0.27046;0.27343;0.27701;0.28127;0.28627;0.29215;0.29884;0.30656;0.31543;0.32539;0.33636;0.34834;0.3614;0.37557;0.39095;
+10000;0.24837;0.2488;0.24948;0.25063;0.25225;0.25443;0.25723;0.26061;0.26465;0.26939;0.27485;0.2813;0.2886;0.29694;0.30628;0.31662;0.32788;0.34015;0.35349;0.36793;
+10500;0.23369;0.23392;0.23455;0.23562;0.23713;0.23916;0.2418;0.24499;0.2488;0.25329;0.2585;0.26459;0.2715;0.27936;0.28811;0.29777;0.30837;0.31989;0.33242;0.34599;
+11000;0.21968;0.21983;0.22041;0.22139;0.22279;0.22466;0.22713;0.23012;0.23372;0.23795;0.243;0.24868;0.25523;0.26262;0.27083;0.27986;0.28976;0.30058;0.31232;0.32507;
+11500;0.2039;0.20409;0.20464;0.20555;0.20685;0.20858;0.21088;0.21366;0.217;0.22093;0.22561;0.23089;0.23697;0.24383;0.25145;0.25983;0.26901;0.27904;0.28994;0.30178;
+12000;0.18925;0.18949;0.19;0.19084;0.19205;0.19367;0.1958;0.19838;0.20148;0.20514;0.20948;0.21438;0.22002;0.22638;0.23345;0.24123;0.24975;0.25904;0.26917;0.28016;
+12500;0.17584;0.176;0.17647;0.17725;0.17836;0.17985;0.18182;0.18419;0.18708;0.19048;0.19443;0.19905;0.20429;0.2102;0.21676;0.22398;0.23187;0.2405;0.2499;0.2601;
+13000;0.16339;0.16353;0.16396;0.16469;0.16572;0.16711;0.16894;0.17115;0.17381;0.17695;0.18067;0.18486;0.18969;0.19517;0.20126;0.20796;0.21527;0.22329;0.23202;0.24149;
+13500;0.1518;0.15196;0.15236;0.15304;0.154;0.15529;0.15699;0.15905;0.16152;0.16444;0.1679;0.1718;0.17628;0.18134;0.18695;0.1931;0.19987;0.20732;0.21542;0.22421;
+14000;0.14102;0.14122;0.14159;0.14222;0.14311;0.14432;0.1459;0.14781;0.15011;0.15282;0.15604;0.15966;0.16383;0.16853;0.17374;0.17945;0.18572;0.19259;0.20005;0.20818;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.64635;0.64709;0.64911;0.65251;0.65746;0.66251;0.66882;0.67588;0.68515;0.6954;0.70635;0.71819;0.73127;0.74567;0.76261;0.78283;0.8066;0.83461;0.86696;0.90271;
+500;0.61333;0.61428;0.61623;0.61949;0.62368;0.62893;0.6349;0.64164;0.65053;0.66042;0.67115;0.68253;0.69522;0.7093;0.72503;0.7449;0.76765;0.79454;0.82549;0.85953;
+1000;0.58223;0.58287;0.58472;0.58784;0.59182;0.59684;0.60258;0.60904;0.61749;0.62693;0.63699;0.6483;0.66057;0.67434;0.68967;0.70853;0.7303;0.75604;0.78553;0.818;
+1500;0.55247;0.55278;0.55453;0.55751;0.56129;0.56608;0.57157;0.57779;0.5859;0.59499;0.6047;0.61551;0.62732;0.64073;0.65566;0.67362;0.69449;0.7191;0.74712;0.77798;
+2000;0.52342;0.52397;0.52564;0.52848;0.53204;0.5366;0.54186;0.54783;0.5556;0.56436;0.57377;0.58421;0.59559;0.60846;0.62296;0.6401;0.66019;0.68367;0.71024;0.73951;
+2500;0.49598;0.49652;0.4981;0.5008;0.50416;0.50846;0.51344;0.51914;0.52658;0.53499;0.54411;0.55419;0.56519;0.57761;0.59174;0.60792;0.62726;0.64968;0.67489;0.70256;
+3000;0.47019;0.47068;0.47216;0.47469;0.4782;0.48181;0.48645;0.49184;0.49887;0.50686;0.51567;0.52538;0.53602;0.54799;0.56173;0.57724;0.59568;0.61708;0.64099;0.66715;
+3500;0.44553;0.446;0.44741;0.44982;0.45316;0.45661;0.46106;0.46616;0.47273;0.48023;0.48853;0.4978;0.50804;0.51955;0.53292;0.54793;0.56549;0.5859;0.60846;0.63322;
+4000;0.42194;0.42236;0.4237;0.42599;0.42914;0.43243;0.43668;0.44159;0.44787;0.45509;0.46309;0.4718;0.48139;0.49232;0.50513;0.51977;0.53653;0.55601;0.57745;0.60073;
+4500;0.3994;0.39975;0.40102;0.40319;0.40616;0.40931;0.41336;0.41805;0.42402;0.43094;0.43885;0.4471;0.45639;0.46673;0.47878;0.49275;0.50885;0.5273;0.54768;0.56972;
+5000;0.37774;0.37814;0.37933;0.3814;0.38418;0.38719;0.39106;0.39554;0.40118;0.40782;0.41539;0.42338;0.43235;0.44236;0.45394;0.46726;0.48243;0.49976;0.51908;0.54;
+5500;0.35706;0.35748;0.35862;0.36056;0.36318;0.36604;0.36973;0.37403;0.37934;0.3857;0.39293;0.4007;0.4093;0.419;0.43027;0.44298;0.45757;0.47387;0.49166;0.51146;
+6000;0.33752;0.33786;0.33892;0.34074;0.34316;0.34586;0.34934;0.35344;0.35847;0.36453;0.37143;0.37899;0.38721;0.39655;0.40739;0.41963;0.43366;0.4492;0.46612;0.48437;
+6500;0.31886;0.31919;0.32018;0.32189;0.32417;0.32674;0.33004;0.33391;0.3386;0.34432;0.35087;0.35819;0.36605;0.37505;0.38544;0.39722;0.41066;0.42549;0.44157;0.45887;
+7000;0.30106;0.30135;0.30228;0.30389;0.30602;0.30847;0.31161;0.3153;0.31972;0.32518;0.33136;0.33836;0.34581;0.35443;0.3644;0.37572;0.38856;0.40269;0.41796;0.4344;
+7500;0.28409;0.28431;0.28519;0.2867;0.2887;0.29104;0.29402;0.29754;0.3019;0.30689;0.31276;0.31948;0.32661;0.33482;0.34425;0.35509;0.36733;0.38077;0.39529;0.41089;
+8000;0.26791;0.26801;0.26887;0.27029;0.27217;0.2744;0.27723;0.28058;0.28471;0.28942;0.29499;0.30137;0.30826;0.31613;0.32516;0.33545;0.34698;0.35972;0.37351;0.38833;
+8500;0.25229;0.25255;0.25332;0.25464;0.2564;0.25853;0.26122;0.26441;0.26831;0.27276;0.27802;0.28406;0.29071;0.29833;0.30691;0.3167;0.32767;0.33966;0.35259;0.36665;
+9000;0.23742;0.23777;0.23849;0.23972;0.24138;0.2434;0.24596;0.24899;0.25267;0.25689;0.26186;0.26757;0.27396;0.28122;0.28943;0.29877;0.30915;0.32051;0.33277;0.34596;
+9500;0.22348;0.2237;0.22437;0.22552;0.22707;0.22899;0.23141;0.2343;0.23778;0.24175;0.24645;0.25184;0.25797;0.26487;0.27271;0.2816;0.29143;0.30215;0.31376;0.32625;
+10000;0.2102;0.21028;0.21094;0.212;0.21345;0.21527;0.21756;0.2203;0.22346;0.22734;0.23177;0.23697;0.2427;0.24929;0.25673;0.26517;0.27447;0.28458;0.29554;0.30736;
+10500;0.19735;0.19755;0.19813;0.19912;0.20048;0.20221;0.20438;0.20697;0.20997;0.21361;0.2178;0.22271;0.2282;0.23442;0.2415;0.24946;0.25824;0.26779;0.2781;0.28926;
+11000;0.18514;0.18542;0.18596;0.18687;0.18814;0.18977;0.19181;0.19426;0.19712;0.20053;0.20451;0.20915;0.21436;0.22026;0.22699;0.23449;0.24274;0.25173;0.26146;0.27195;
+11500;0.17201;0.17218;0.17268;0.17353;0.17471;0.17622;0.17811;0.18039;0.18304;0.18621;0.18989;0.19419;0.19903;0.20451;0.21075;0.21772;0.22537;0.23372;0.24275;0.25248;
+12000;0.1598;0.15996;0.16042;0.1612;0.16228;0.16367;0.16541;0.16751;0.16996;0.1729;0.17632;0.18032;0.18481;0.1899;0.19569;0.20215;0.20926;0.217;0.22538;0.23441;
+12500;0.14853;0.14867;0.1491;0.14983;0.15083;0.15212;0.15374;0.15568;0.15794;0.16065;0.16387;0.16748;0.17161;0.17634;0.18171;0.18771;0.1943;0.20149;0.20926;0.21765;
+13000;0.13804;0.13819;0.13859;0.13926;0.14019;0.1414;0.1429;0.1447;0.1468;0.14933;0.15232;0.15568;0.15952;0.16388;0.16882;0.17434;0.18043;0.18709;0.19431;0.20209;
+13500;0.12829;0.12845;0.12882;0.12945;0.13032;0.13144;0.13283;0.13451;0.13647;0.13882;0.1416;0.14473;0.1483;0.15235;0.15695;0.16208;0.16771;0.17384;0.18047;0.18766;
+14000;0.1193;0.11941;0.11976;0.12034;0.12115;0.12219;0.12349;0.12505;0.12687;0.12906;0.13165;0.13456;0.13788;0.14164;0.14592;0.15069;0.15592;0.16162;0.16779;0.17444;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.54972;0.5503;0.55189;0.55449;0.55802;0.56186;0.56632;0.57168;0.57789;0.5846;0.59164;0.59923;0.60733;0.61832;0.63097;0.64587;0.6634;0.684;0.70823;0.73682;
+500;0.52152;0.52231;0.52382;0.5263;0.5296;0.53323;0.53746;0.54252;0.54855;0.55504;0.5618;0.5692;0.5771;0.58753;0.59971;0.614;0.63081;0.65062;0.67395;0.70129;
+1000;0.49501;0.49549;0.49692;0.49929;0.50241;0.50588;0.50992;0.51479;0.52054;0.52676;0.53325;0.5404;0.54808;0.55793;0.56961;0.58338;0.59955;0.61855;0.64099;0.6671;
+1500;0.46931;0.46977;0.47114;0.4734;0.47636;0.47967;0.48355;0.48821;0.49377;0.49981;0.50602;0.5129;0.52029;0.52957;0.54077;0.55396;0.56949;0.58777;0.60933;0.63425;
+2000;0.4447;0.44535;0.44662;0.44873;0.45146;0.45457;0.45829;0.46276;0.4681;0.47369;0.48;0.48665;0.49379;0.50252;0.51314;0.52578;0.54065;0.55817;0.57891;0.60267;
+2500;0.42204;0.42225;0.42346;0.42549;0.42808;0.43103;0.43448;0.43864;0.44365;0.44894;0.45504;0.46148;0.46841;0.47675;0.48688;0.49882;0.51303;0.5298;0.54965;0.57233;
+3000;0.39974;0.40013;0.4013;0.40323;0.40569;0.40852;0.41184;0.41583;0.42067;0.42572;0.43142;0.43745;0.44411;0.45207;0.46178;0.47321;0.48664;0.50262;0.5216;0.54314;
+3500;0.37843;0.37895;0.38006;0.38192;0.38426;0.38697;0.39016;0.39398;0.39867;0.40361;0.40911;0.41496;0.42127;0.42825;0.43776;0.44825;0.46153;0.47669;0.4947;0.51514;
+4000;0.35834;0.35868;0.35975;0.36153;0.36375;0.36635;0.36942;0.37308;0.37764;0.38243;0.38774;0.39341;0.39956;0.40636;0.41523;0.4254;0.43749;0.45195;0.46904;0.48832;
+4500;0.33914;0.33929;0.34032;0.34203;0.34414;0.34663;0.34958;0.35309;0.35749;0.36235;0.36727;0.37275;0.37876;0.38536;0.39375;0.4035;0.41495;0.42844;0.44453;0.46272;
+5000;0.32043;0.32079;0.32175;0.32341;0.3254;0.32779;0.33061;0.33396;0.33822;0.34291;0.34768;0.35299;0.35883;0.36528;0.3732;0.38251;0.39349;0.40639;0.42143;0.43827;
+5500;0.30298;0.30328;0.3042;0.30576;0.30762;0.30987;0.31255;0.31568;0.31977;0.32431;0.32893;0.33408;0.33974;0.34603;0.35354;0.36243;0.37292;0.38528;0.39959;0.41543;
+6000;0.28632;0.28654;0.28742;0.28892;0.29067;0.29282;0.29539;0.29839;0.3023;0.3066;0.31103;0.31597;0.32146;0.32759;0.33475;0.34326;0.35325;0.36506;0.37865;0.39364;
+6500;0.27043;0.27052;0.27138;0.27282;0.27448;0.27653;0.27899;0.28186;0.28562;0.28977;0.29407;0.29881;0.30401;0.30993;0.31659;0.32493;0.33445;0.34569;0.35859;0.37277;
+7000;0.25498;0.25525;0.25604;0.25741;0.25898;0.26094;0.2633;0.26604;0.26966;0.27367;0.27786;0.28244;0.28748;0.29321;0.2996;0.30742;0.31651;0.3272;0.33937;0.35277;
+7500;0.24027;0.24064;0.24139;0.2427;0.24418;0.24604;0.2483;0.2511;0.2544;0.25824;0.26234;0.26674;0.27163;0.27721;0.28344;0.29086;0.29945;0.30954;0.32101;0.33361;
+8000;0.22648;0.22672;0.22743;0.22868;0.23006;0.23184;0.23399;0.23667;0.23982;0.2435;0.2475;0.25172;0.25645;0.26186;0.26791;0.27503;0.28329;0.29286;0.30355;0.31532;
+8500;0.21336;0.21343;0.21412;0.21531;0.21661;0.2183;0.22035;0.2229;0.2259;0.22943;0.23332;0.23737;0.24194;0.24715;0.25304;0.25969;0.2678;0.27691;0.28703;0.29804;
+9000;0.20061;0.20082;0.20146;0.20257;0.20379;0.2054;0.20736;0.20978;0.21264;0.21601;0.21965;0.22367;0.22807;0.23306;0.23878;0.24525;0.25294;0.26166;0.27121;0.28159;
+9500;0.18851;0.1888;0.1894;0.19044;0.19159;0.19312;0.19498;0.19728;0.2;0.20321;0.20673;0.21058;0.21484;0.21974;0.22514;0.23138;0.23871;0.24702;0.25609;0.26586;
+10000;0.17721;0.1774;0.17796;0.17892;0.18001;0.18146;0.18321;0.18526;0.18796;0.19101;0.19451;0.1981;0.2022;0.2069;0.2121;0.21822;0.22514;0.23298;0.24159;0.25083;
+10500;0.16649;0.16655;0.16709;0.16798;0.16901;0.17038;0.17205;0.17399;0.17652;0.1794;0.18272;0.18619;0.19013;0.19464;0.19973;0.20552;0.21217;0.21956;0.22767;0.23644;
+11000;0.15612;0.15628;0.15677;0.15759;0.15857;0.15986;0.16144;0.16328;0.16566;0.16838;0.17151;0.17485;0.17863;0.18285;0.18782;0.19338;0.19974;0.20676;0.21437;0.22262;
+11500;0.14508;0.14522;0.14567;0.14642;0.14731;0.1485;0.14995;0.15164;0.15384;0.15637;0.15928;0.16238;0.16587;0.16988;0.17441;0.17957;0.18546;0.19197;0.19904;0.2067;
+12000;0.13487;0.135;0.13543;0.13612;0.13695;0.13806;0.13941;0.14098;0.14301;0.14534;0.14801;0.15085;0.15405;0.15776;0.16197;0.16675;0.17222;0.17826;0.18481;0.19193;
+12500;0.12537;0.12552;0.12592;0.12656;0.12733;0.12836;0.12962;0.13108;0.13297;0.13514;0.13763;0.14027;0.14326;0.14667;0.15052;0.1549;0.15993;0.16553;0.17161;0.17821;
+13000;0.11653;0.11672;0.11709;0.11769;0.1184;0.11936;0.12053;0.12189;0.12366;0.12567;0.128;0.13046;0.13323;0.1364;0.13998;0.14406;0.14871;0.15385;0.15942;0.16548;
+13500;0.10844;0.10855;0.10889;0.10945;0.11011;0.11101;0.1121;0.11336;0.11501;0.11688;0.11905;0.12133;0.12392;0.12686;0.1302;0.13399;0.13831;0.14308;0.14825;0.15385;
+14000;0.10091;0.10097;0.10129;0.1018;0.10242;0.10325;0.10427;0.10545;0.10698;0.10872;0.11074;0.11286;0.11527;0.11801;0.12111;0.12463;0.12865;0.13308;0.13787;0.14308;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.46497;0.46543;0.46668;0.46867;0.47122;0.47403;0.477;0.48074;0.48462;0.4886;0.49282;0.49738;0.50384;0.51153;0.52049;0.53085;0.54271;0.55715;0.57379;0.59381;
+500;0.44114;0.44154;0.44273;0.44463;0.44703;0.44969;0.45251;0.45609;0.45988;0.46377;0.46786;0.4723;0.4784;0.48579;0.49444;0.50445;0.51591;0.5298;0.54585;0.56514;
+1000;0.41835;0.4187;0.41981;0.4216;0.42389;0.42644;0.42916;0.43263;0.43626;0.43999;0.44394;0.44825;0.454;0.46111;0.46944;0.47905;0.49019;0.50358;0.519;0.53757;
+1500;0.39656;0.39715;0.39821;0.3999;0.40202;0.4044;0.40694;0.4102;0.41367;0.4173;0.42111;0.42525;0.43111;0.43743;0.44545;0.45478;0.46552;0.47843;0.49325;0.51109;
+2000;0.37651;0.37657;0.37757;0.37918;0.38119;0.38347;0.3859;0.38905;0.39238;0.39578;0.39935;0.40328;0.4088;0.41481;0.42246;0.43145;0.44184;0.45427;0.46856;0.48566;
+2500;0.35656;0.35688;0.35784;0.35938;0.36129;0.36347;0.3658;0.36885;0.37206;0.37534;0.37883;0.38256;0.38764;0.39323;0.40053;0.40911;0.41913;0.43109;0.44485;0.46131;
+3000;0.33751;0.33802;0.33894;0.34041;0.34223;0.34433;0.34658;0.3495;0.35262;0.35581;0.35918;0.36277;0.36755;0.37291;0.37975;0.38817;0.39737;0.40884;0.42209;0.43791;
+3500;0.31965;0.31994;0.32081;0.32222;0.32395;0.32596;0.32813;0.33095;0.33397;0.33707;0.34036;0.34385;0.34837;0.35348;0.36037;0.36808;0.37707;0.38758;0.40025;0.41546;
+4000;0.30258;0.30265;0.30348;0.30482;0.30645;0.30838;0.31048;0.3132;0.31613;0.31914;0.32235;0.32572;0.33001;0.33491;0.34118;0.34889;0.35749;0.3676;0.37957;0.39392;
+4500;0.28594;0.28621;0.28698;0.28824;0.28976;0.29159;0.2936;0.29622;0.29906;0.30198;0.3051;0.30838;0.31243;0.31713;0.32348;0.33054;0.33882;0.34848;0.35995;0.37366;
+5000;0.27037;0.27061;0.27134;0.27255;0.27398;0.27571;0.2776;0.28008;0.28277;0.28557;0.2886;0.29179;0.29564;0.30014;0.3062;0.31297;0.32092;0.33021;0.34119;0.35426;
+5500;0.25552;0.25571;0.25641;0.25756;0.25891;0.26057;0.26238;0.26477;0.26737;0.27006;0.27293;0.27595;0.2796;0.2839;0.28969;0.29616;0.30378;0.3127;0.32324;0.33572;
+6000;0.24136;0.24143;0.24216;0.24325;0.24453;0.2461;0.24785;0.25014;0.25266;0.25527;0.25807;0.261;0.26412;0.26843;0.27366;0.2801;0.28738;0.29593;0.30602;0.31793;
+6500;0.22771;0.22792;0.22855;0.22959;0.23079;0.2323;0.23397;0.23617;0.23859;0.24113;0.24384;0.2467;0.24976;0.2541;0.25903;0.26483;0.27172;0.27991;0.28956;0.30087;
+7000;0.21472;0.21498;0.21557;0.21655;0.21769;0.21914;0.22073;0.22283;0.22517;0.22762;0.23027;0.23307;0.23606;0.24014;0.24485;0.2504;0.25693;0.26463;0.27381;0.28455;
+7500;0.20239;0.20265;0.20321;0.20415;0.20523;0.2066;0.20812;0.21012;0.21237;0.21476;0.21732;0.22005;0.22297;0.2268;0.23131;0.23661;0.24285;0.2502;0.25891;0.26894;
+8000;0.19066;0.19089;0.19143;0.19232;0.19334;0.19465;0.19612;0.19804;0.2002;0.20251;0.20495;0.20762;0.21046;0.21408;0.21837;0.22344;0.22939;0.23641;0.24473;0.25424;
+8500;0.1795;0.17969;0.1802;0.18105;0.18202;0.18328;0.18469;0.18653;0.1886;0.19085;0.19319;0.19577;0.19852;0.20193;0.20604;0.21087;0.21655;0.22324;0.23117;0.24018;
+9000;0.1689;0.16903;0.16952;0.17032;0.17125;0.17244;0.1738;0.17556;0.17755;0.17974;0.18199;0.18448;0.18716;0.19036;0.19427;0.19889;0.20429;0.21067;0.21821;0.22672;
+9500;0.15873;0.15889;0.15936;0.16011;0.16099;0.16212;0.16342;0.16512;0.16703;0.16915;0.17131;0.17372;0.17633;0.17936;0.18308;0.18746;0.19261;0.19868;0.20583;0.21385;
+10000;0.14908;0.14924;0.14969;0.1504;0.15123;0.15231;0.15356;0.15517;0.15701;0.15898;0.16115;0.16347;0.16601;0.1688;0.17243;0.17659;0.18148;0.18725;0.19402;0.20157;
+10500;0.13991;0.14006;0.14048;0.14115;0.14193;0.14296;0.14415;0.14569;0.14747;0.14937;0.15147;0.15371;0.15618;0.15891;0.16233;0.16611;0.1709;0.17637;0.18276;0.18986;
+11000;0.1313;0.13143;0.13183;0.13245;0.13318;0.13414;0.13526;0.13669;0.13837;0.14022;0.14224;0.1444;0.14681;0.14947;0.15269;0.15645;0.16085;0.16603;0.17204;0.1787;
+11500;0.12211;0.12224;0.12261;0.12318;0.12387;0.12476;0.1258;0.12714;0.1287;0.13039;0.13222;0.13419;0.13637;0.1388;0.14181;0.14529;0.14937;0.15418;0.15975;0.16594;
+12000;0.11356;0.1137;0.11405;0.11458;0.11522;0.11605;0.11701;0.11827;0.11972;0.12129;0.123;0.12482;0.12685;0.12909;0.13182;0.13499;0.13872;0.14318;0.14835;0.15409;
+12500;0.1056;0.10578;0.1061;0.10659;0.10719;0.10796;0.10886;0.11003;0.11138;0.11283;0.11442;0.11611;0.118;0.12008;0.12262;0.12557;0.12903;0.13311;0.13785;0.1431;
+13000;0.098318;0.098416;0.098717;0.09917;0.099723;0.10044;0.10128;0.10237;0.10362;0.10497;0.10645;0.10803;0.10978;0.11171;0.11407;0.11681;0.12003;0.12383;0.12824;0.13312;
+13500;0.091534;0.09156;0.091857;0.09228;0.092795;0.093466;0.094241;0.095254;0.096421;0.097678;0.099053;0.10052;0.10215;0.10394;0.10614;0.10868;0.11167;0.1152;0.11931;0.12385;
+14000;0.085147;0.085232;0.085493;0.085883;0.086362;0.086986;0.087707;0.08865;0.089735;0.090903;0.092182;0.093544;0.095057;0.096716;0.098763;0.10113;0.10391;0.10719;0.11101;0.11523;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.39057;0.39098;0.3919;0.39329;0.39498;0.39677;0.39863;0.40066;0.40272;0.40516;0.40782;0.4117;0.41624;0.42092;0.42634;0.43249;0.44018;0.44935;0.46019;0.47305;
+500;0.37077;0.371;0.37184;0.37314;0.37469;0.37633;0.37804;0.38;0.38203;0.38393;0.38692;0.3906;0.39497;0.39959;0.40487;0.41087;0.41823;0.42705;0.43765;0.45011;
+1000;0.35182;0.35194;0.35275;0.35399;0.35549;0.35708;0.35873;0.36057;0.36243;0.36418;0.36691;0.37038;0.37458;0.37912;0.38423;0.39013;0.39718;0.40566;0.416;0.42807;
+1500;0.33343;0.33369;0.33447;0.33566;0.33709;0.33863;0.34025;0.34205;0.34386;0.3456;0.34811;0.35123;0.35509;0.3595;0.36445;0.37023;0.37739;0.38555;0.3952;0.40689;
+2000;0.31602;0.31628;0.31702;0.31816;0.31953;0.32099;0.32255;0.32432;0.32609;0.32782;0.33019;0.33314;0.33684;0.34097;0.3456;0.35117;0.35803;0.3659;0.37524;0.38654;
+2500;0.29937;0.2996;0.30031;0.30141;0.30272;0.30415;0.30565;0.30738;0.30912;0.31081;0.31304;0.31615;0.31937;0.3234;0.3279;0.33316;0.33959;0.34706;0.35609;0.36699;
+3000;0.28348;0.28364;0.28432;0.28537;0.28663;0.28801;0.28947;0.29117;0.29287;0.29454;0.29666;0.2996;0.30268;0.30654;0.31095;0.31604;0.32184;0.32928;0.33781;0.34824;
+3500;0.2683;0.26837;0.26905;0.27003;0.27124;0.27257;0.27398;0.27565;0.27732;0.27897;0.28098;0.28376;0.28671;0.29048;0.29475;0.29963;0.30528;0.31238;0.32056;0.33048;
+4000;0.2537;0.25391;0.25452;0.25546;0.25659;0.25784;0.25918;0.2608;0.26243;0.26407;0.266;0.26862;0.27144;0.27508;0.27923;0.28397;0.28943;0.2962;0.30408;0.31359;
+4500;0.23997;0.24016;0.24074;0.24164;0.24271;0.24391;0.24519;0.24674;0.24828;0.24983;0.25167;0.25414;0.25685;0.26035;0.26436;0.26896;0.27426;0.28077;0.2883;0.29744;
+5000;0.22687;0.22704;0.22759;0.22845;0.22948;0.23064;0.23187;0.23337;0.23487;0.23638;0.2381;0.24037;0.2429;0.24627;0.25015;0.25458;0.25971;0.26597;0.27322;0.28198;
+5500;0.21439;0.21445;0.21503;0.21585;0.21683;0.21794;0.21914;0.22061;0.22208;0.22357;0.2252;0.22733;0.22973;0.2329;0.23654;0.24084;0.24577;0.25179;0.25876;0.26718;
+6000;0.20234;0.20252;0.20302;0.20381;0.20475;0.20582;0.20697;0.20841;0.20985;0.2113;0.21286;0.21486;0.21713;0.22016;0.22371;0.22778;0.23242;0.23822;0.24492;0.253;
+6500;0.19087;0.19106;0.19154;0.1923;0.19319;0.19422;0.19532;0.19672;0.19813;0.19955;0.20106;0.20295;0.20514;0.20802;0.21142;0.21536;0.21986;0.22533;0.23166;0.23943;
+7000;0.17996;0.18012;0.18058;0.1813;0.18215;0.18314;0.1842;0.18556;0.18694;0.18833;0.1898;0.19158;0.19367;0.19645;0.19971;0.20348;0.20782;0.21309;0.21916;0.2265;
+7500;0.16958;0.1697;0.17013;0.17082;0.17162;0.17257;0.17359;0.17491;0.17626;0.17761;0.17904;0.18073;0.18294;0.18539;0.18853;0.19216;0.19632;0.20137;0.20722;0.21425;
+8000;0.15973;0.15978;0.16018;0.16083;0.1616;0.16251;0.16348;0.16477;0.16608;0.1674;0.16879;0.17022;0.1723;0.17484;0.17785;0.18135;0.18536;0.1902;0.19579;0.20253;
+8500;0.15018;0.15032;0.15071;0.15132;0.15205;0.15292;0.15386;0.1551;0.15638;0.15766;0.15902;0.16042;0.16254;0.16479;0.16766;0.17102;0.1749;0.17954;0.18489;0.19133;
+9000;0.14113;0.14133;0.1417;0.14228;0.14297;0.1438;0.1447;0.1459;0.14715;0.14839;0.1497;0.15107;0.15306;0.15521;0.15795;0.16117;0.16492;0.16936;0.17449;0.18064;
+9500;0.13266;0.13278;0.13313;0.13368;0.13434;0.13513;0.13599;0.13715;0.13836;0.13956;0.14084;0.14218;0.14404;0.14608;0.1487;0.15177;0.15538;0.15964;0.16456;0.17044;
+10000;0.12463;0.12474;0.12506;0.12557;0.12618;0.12691;0.12771;0.12882;0.13;0.13116;0.13241;0.13371;0.13545;0.13741;0.14005;0.14285;0.14629;0.15038;0.15509;0.1607;
+10500;0.11703;0.11714;0.11745;0.11792;0.1185;0.1192;0.11996;0.12101;0.12212;0.12322;0.1244;0.12567;0.12731;0.12917;0.13168;0.13448;0.13775;0.14155;0.14605;0.1514;
+11000;0.10984;0.10993;0.11022;0.11067;0.11122;0.11188;0.11261;0.11362;0.11469;0.11576;0.11691;0.11811;0.11961;0.12147;0.1236;0.12638;0.1295;0.13314;0.13743;0.14252;
+11500;0.10221;0.1023;0.10257;0.10298;0.10349;0.10411;0.1048;0.10574;0.10673;0.10773;0.10879;0.1099;0.1113;0.11303;0.11508;0.1175;0.12034;0.12367;0.12765;0.13237;
+12000;0.095116;0.095212;0.095464;0.095847;0.096324;0.096905;0.097542;0.098417;0.099344;0.10026;0.10125;0.10228;0.10358;0.10519;0.1071;0.10934;0.11198;0.11505;0.11869;0.12299;
+12500;0.088515;0.088634;0.088869;0.089227;0.089672;0.090212;0.090803;0.091616;0.092477;0.09333;0.094249;0.095199;0.09641;0.097904;0.099679;0.10177;0.10422;0.10708;0.11045;0.11445;
+13000;0.082456;0.082529;0.082747;0.083079;0.083493;0.083994;0.084545;0.0853;0.086098;0.086889;0.087743;0.088624;0.089751;0.091139;0.092789;0.094731;0.09701;0.099663;0.1028;0.10652;
+13500;0.076815;0.076837;0.077062;0.077369;0.077754;0.07822;0.078733;0.079432;0.080172;0.080908;0.081701;0.082516;0.083566;0.084855;0.086388;0.088193;0.09031;0.092774;0.09569;0.099142;
+14000;0.071565;0.071585;0.071781;0.072066;0.072424;0.072856;0.073333;0.073981;0.074669;0.075352;0.076087;0.076845;0.07782;0.079018;0.080441;0.082119;0.084084;0.086375;0.089083;0.092289;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.32568;0.32581;0.32643;0.32731;0.32834;0.3293;0.33023;0.33088;0.33219;0.33413;0.33619;0.33864;0.34061;0.34317;0.34679;0.35067;0.35479;0.3594;0.36477;0.37137;
+500;0.30885;0.30916;0.30975;0.31059;0.31156;0.31246;0.31335;0.31399;0.31523;0.31699;0.31884;0.32118;0.32313;0.3256;0.32907;0.33284;0.33693;0.34149;0.34682;0.35338;
+1000;0.293;0.29319;0.29376;0.29457;0.2955;0.29639;0.29726;0.29788;0.29905;0.30068;0.30245;0.30486;0.30661;0.30889;0.31209;0.3157;0.3198;0.32431;0.32959;0.33607;
+1500;0.27778;0.27796;0.27849;0.27926;0.28014;0.28099;0.28184;0.28249;0.28328;0.28483;0.2868;0.28905;0.29082;0.29303;0.29609;0.2994;0.30334;0.30778;0.313;0.31941;
+2000;0.26324;0.26342;0.26393;0.26466;0.26551;0.26632;0.26714;0.26776;0.26849;0.26991;0.27176;0.27392;0.27572;0.27784;0.28075;0.28394;0.28786;0.29207;0.29705;0.30336;
+2500;0.24935;0.24948;0.24997;0.25067;0.25148;0.25226;0.25305;0.25368;0.25441;0.2557;0.25741;0.25948;0.26128;0.26333;0.26612;0.26914;0.27302;0.27716;0.28206;0.28807;
+3000;0.23596;0.23612;0.23658;0.23725;0.23803;0.23879;0.23957;0.24021;0.24094;0.24214;0.24375;0.24572;0.2475;0.24943;0.25214;0.25504;0.25882;0.26287;0.26769;0.27358;
+3500;0.2235;0.22349;0.22393;0.22455;0.22528;0.22598;0.22669;0.22733;0.22806;0.2292;0.23069;0.2326;0.23435;0.23616;0.23855;0.24158;0.24528;0.24917;0.25391;0.25968;
+4000;0.2113;0.21144;0.21186;0.21246;0.21316;0.21384;0.21456;0.21517;0.21584;0.21686;0.21847;0.22004;0.22182;0.22355;0.22587;0.22873;0.23228;0.23609;0.24071;0.24634;
+4500;0.19967;0.19992;0.20032;0.2009;0.20158;0.20225;0.20296;0.20358;0.20426;0.20521;0.20671;0.20816;0.20983;0.21152;0.21379;0.21649;0.21984;0.22357;0.22809;0.23354;
+5000;0.18879;0.18892;0.1893;0.18986;0.19052;0.19117;0.19187;0.19249;0.19317;0.19407;0.19549;0.19688;0.19853;0.20019;0.20229;0.20478;0.20799;0.21161;0.21601;0.2213;
+5500;0.17841;0.17842;0.17878;0.17932;0.17995;0.18058;0.18127;0.18191;0.18258;0.18344;0.18478;0.1861;0.18773;0.18939;0.19142;0.194;0.19677;0.20027;0.20445;0.20957;
+6000;0.16827;0.16839;0.16874;0.16926;0.16986;0.17048;0.17116;0.17179;0.17246;0.17327;0.17454;0.17581;0.17741;0.17907;0.18105;0.18351;0.18617;0.18956;0.19336;0.19835;
+6500;0.15864;0.15882;0.15916;0.15965;0.16024;0.16084;0.1615;0.16214;0.16281;0.16356;0.16477;0.16598;0.16756;0.16919;0.17112;0.17349;0.17605;0.17934;0.18303;0.18776;
+7000;0.14959;0.14971;0.15003;0.1505;0.15106;0.15164;0.15229;0.15293;0.15359;0.15429;0.15545;0.15661;0.15815;0.15975;0.16163;0.16373;0.16637;0.16953;0.17314;0.17773;
+7500;0.14099;0.14103;0.14134;0.14178;0.14232;0.14288;0.14352;0.14415;0.14481;0.14547;0.14658;0.14768;0.14917;0.15076;0.15257;0.15464;0.15715;0.16018;0.16383;0.16814;
+8000;0.13265;0.13275;0.13304;0.13348;0.13399;0.13454;0.13516;0.13579;0.13644;0.13708;0.13796;0.13917;0.14061;0.14216;0.14392;0.14595;0.14836;0.15125;0.1548;0.15896;
+8500;0.12479;0.12489;0.12516;0.12558;0.12607;0.1266;0.12721;0.12783;0.12847;0.12908;0.12993;0.13107;0.13244;0.13397;0.13568;0.13765;0.13997;0.14274;0.14607;0.15019;
+9000;0.11734;0.11745;0.11771;0.11809;0.11855;0.11905;0.11964;0.12025;0.12088;0.12148;0.12228;0.12335;0.12466;0.12615;0.12781;0.12973;0.13195;0.13462;0.13794;0.14181;
+9500;0.11036;0.11045;0.11069;0.11106;0.1115;0.11197;0.11253;0.1131;0.11369;0.11423;0.11499;0.11598;0.11724;0.11867;0.12029;0.12215;0.12427;0.12687;0.13007;0.1338;
+10000;0.10375;0.10379;0.10402;0.10437;0.10479;0.10524;0.10577;0.10633;0.1069;0.10745;0.10813;0.10914;0.11018;0.11156;0.11314;0.11493;0.11699;0.11947;0.12254;0.12613;
+10500;0.097373;0.09745;0.09767;0.098004;0.098401;0.09884;0.099353;0.0999;0.10046;0.10101;0.10165;0.1026;0.10359;0.10488;0.10637;0.10805;0.11005;0.11242;0.11536;0.11881;
+11000;0.091339;0.091434;0.091643;0.09196;0.09234;0.092761;0.093258;0.093792;0.094342;0.094885;0.0955;0.096383;0.097324;0.098571;0.10001;0.10164;0.10351;0.10572;0.10853;0.11183;
+11500;0.085072;0.085139;0.085333;0.085627;0.08598;0.086371;0.086833;0.087329;0.087838;0.088338;0.08891;0.089733;0.090608;0.091766;0.093098;0.094611;0.096354;0.098404;0.10096;0.10396;
+12000;0.079238;0.079293;0.079473;0.079746;0.080073;0.080435;0.080866;0.081325;0.081796;0.082259;0.082789;0.083555;0.084366;0.085443;0.086679;0.088085;0.089702;0.091608;0.093987;0.096765;
+12500;0.073806;0.073864;0.074032;0.074284;0.074588;0.074923;0.075322;0.075749;0.076186;0.076614;0.077103;0.077817;0.078568;0.079569;0.080716;0.082021;0.083518;0.085293;0.087502;0.090081;
+13000;0.068755;0.068812;0.068967;0.069202;0.069485;0.069799;0.070172;0.070571;0.070977;0.071372;0.071823;0.072487;0.073183;0.074111;0.075177;0.076387;0.077777;0.079422;0.081476;0.083865;
+13500;0.06407;0.06412;0.064264;0.064482;0.064744;0.065034;0.065381;0.065751;0.06613;0.066502;0.066924;0.067537;0.068183;0.069043;0.070032;0.071153;0.072442;0.073966;0.075871;0.078079;
+14000;0.059712;0.059763;0.059897;0.060098;0.060343;0.060611;0.060932;0.061275;0.061625;0.061969;0.062361;0.062937;0.063539;0.064336;0.065251;0.06629;0.067481;0.068958;0.070655;0.072704;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.26757;0.26794;0.2684;0.26901;0.26971;0.27028;0.27064;0.27091;0.27229;0.27376;0.27489;0.27559;0.27658;0.2784;0.28039;0.2818;0.28281;0.28337;0.28351;0.28344;
+500;0.25409;0.25428;0.25471;0.25529;0.25593;0.25647;0.2568;0.25703;0.25831;0.25967;0.26084;0.26156;0.26246;0.26412;0.26604;0.26738;0.26845;0.26923;0.26969;0.27008;
+1000;0.24118;0.24119;0.24163;0.24214;0.24274;0.24325;0.24357;0.24382;0.24496;0.2462;0.24737;0.24813;0.24898;0.25049;0.25237;0.25376;0.25487;0.2557;0.25639;0.25716;
+1500;0.22854;0.22868;0.22907;0.22958;0.23015;0.23062;0.23094;0.23116;0.23222;0.23337;0.23453;0.23524;0.23605;0.23777;0.23933;0.24071;0.2419;0.2429;0.24377;0.24473;
+2000;0.21647;0.2167;0.21707;0.21755;0.21808;0.21854;0.21885;0.2191;0.22006;0.22111;0.22226;0.22294;0.22373;0.2253;0.22685;0.22825;0.22949;0.2306;0.23169;0.23294;
+2500;0.20494;0.20523;0.20558;0.20604;0.20655;0.20698;0.20729;0.20753;0.20842;0.20941;0.21054;0.2112;0.21196;0.21343;0.21494;0.21632;0.21762;0.21884;0.22008;0.22158;
+3000;0.1942;0.1944;0.19472;0.19514;0.1956;0.19598;0.19623;0.19647;0.1973;0.19821;0.19934;0.19999;0.20072;0.2021;0.20357;0.20494;0.20626;0.20757;0.20896;0.21062;
+3500;0.18395;0.18406;0.18436;0.18475;0.1852;0.18556;0.18583;0.18604;0.18677;0.18756;0.18863;0.18928;0.18997;0.19129;0.19272;0.19407;0.19541;0.19676;0.19828;0.20011;
+4000;0.17415;0.17416;0.17444;0.17482;0.17525;0.1756;0.17588;0.17608;0.17676;0.1775;0.17857;0.17914;0.17968;0.18096;0.18232;0.18368;0.18502;0.18641;0.18797;0.18992;
+4500;0.1646;0.1647;0.16497;0.16533;0.16575;0.16608;0.16636;0.16656;0.16719;0.16788;0.1689;0.1695;0.1702;0.1712;0.17241;0.17372;0.17504;0.17646;0.17808;0.1801;
+5000;0.15556;0.15565;0.15591;0.15625;0.15665;0.15698;0.15725;0.15747;0.15803;0.15867;0.15964;0.16025;0.16095;0.1619;0.16305;0.16436;0.16559;0.16694;0.1686;0.17069;
+5500;0.14695;0.14701;0.14725;0.14758;0.14796;0.14828;0.14854;0.14874;0.14927;0.14985;0.15078;0.15141;0.15211;0.15302;0.15411;0.15544;0.15668;0.15802;0.15957;0.16165;
+6000;0.13874;0.13877;0.13898;0.13928;0.13963;0.13993;0.1402;0.14041;0.1409;0.14145;0.14233;0.14298;0.14367;0.14435;0.14558;0.14692;0.14816;0.14952;0.1511;0.1531;
+6500;0.13093;0.13083;0.13105;0.13135;0.13169;0.13198;0.13225;0.13246;0.13291;0.13358;0.13427;0.13495;0.13544;0.1363;0.13745;0.13877;0.14002;0.14139;0.14299;0.145;
+7000;0.12322;0.1233;0.12351;0.12379;0.12412;0.12441;0.12467;0.12488;0.12531;0.12594;0.12659;0.12728;0.1278;0.12861;0.1297;0.131;0.13224;0.13362;0.13523;0.13726;
+7500;0.11605;0.11612;0.11632;0.11659;0.11691;0.11718;0.11745;0.11766;0.11806;0.11866;0.11928;0.11997;0.12051;0.12129;0.1223;0.12359;0.12482;0.12619;0.12781;0.12984;
+8000;0.10924;0.1093;0.10948;0.10974;0.11004;0.11031;0.11058;0.11079;0.11117;0.11172;0.11231;0.11301;0.11356;0.11431;0.11524;0.11654;0.11774;0.11911;0.12073;0.12274;
+8500;0.10286;0.10292;0.10309;0.10333;0.1036;0.10385;0.10409;0.10427;0.10461;0.10513;0.10569;0.10638;0.10694;0.10766;0.10869;0.10979;0.11101;0.11235;0.11396;0.11595;
+9000;0.096798;0.096844;0.09701;0.097239;0.097502;0.097738;0.097981;0.098171;0.098486;0.098945;0.099436;0.10013;0.10064;0.10134;0.10232;0.10336;0.10458;0.10591;0.10749;0.10946;
+9500;0.091053;0.091075;0.091235;0.091449;0.091702;0.091932;0.092176;0.092365;0.092667;0.092998;0.093565;0.094226;0.094744;0.095385;0.096272;0.097245;0.098478;0.099774;0.10133;0.10327;
+10000;0.085542;0.085595;0.085745;0.085955;0.086196;0.086419;0.086659;0.086851;0.087044;0.087461;0.08798;0.088613;0.08915;0.089782;0.09063;0.091534;0.092685;0.093918;0.095467;0.097362;
+10500;0.080335;0.080407;0.080549;0.08075;0.080982;0.0812;0.081438;0.081625;0.081826;0.082199;0.082675;0.083284;0.083836;0.084452;0.085268;0.086135;0.08727;0.088472;0.08993;0.091727;
+11000;0.075438;0.075486;0.075621;0.075815;0.076037;0.076249;0.076484;0.076676;0.076881;0.077223;0.077748;0.078235;0.078785;0.079372;0.080089;0.081005;0.082118;0.083284;0.084724;0.086473;
+11500;0.070297;0.070343;0.070468;0.070647;0.070853;0.071048;0.071265;0.071443;0.071628;0.071946;0.072433;0.072884;0.073392;0.073938;0.074602;0.075454;0.076486;0.077563;0.078895;0.080513;
+12000;0.065516;0.065568;0.065684;0.065849;0.066039;0.066219;0.06642;0.066583;0.066751;0.067046;0.067498;0.067914;0.068384;0.068891;0.069502;0.070298;0.071254;0.072247;0.073478;0.074974;
+12500;0.06107;0.061134;0.061241;0.061394;0.061569;0.061735;0.06192;0.062071;0.062224;0.062493;0.062915;0.063299;0.063734;0.064203;0.064767;0.065505;0.066393;0.067307;0.068445;0.069828;
+13000;0.056937;0.057018;0.057117;0.057258;0.05742;0.057573;0.057742;0.057881;0.058021;0.058273;0.05866;0.059013;0.059414;0.05985;0.060369;0.061053;0.061877;0.062719;0.063769;0.065047;
+13500;0.053215;0.053197;0.053288;0.053419;0.053568;0.053708;0.053865;0.053992;0.054118;0.054351;0.054709;0.055035;0.055403;0.055807;0.056283;0.056917;0.05768;0.058455;0.059425;0.060605;
+14000;0.04962;0.049649;0.049734;0.049855;0.049993;0.050121;0.050265;0.050382;0.050496;0.05071;0.051041;0.051343;0.051679;0.052053;0.052556;0.053079;0.053771;0.054509;0.05539;0.056479;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.21629;0.21641;0.21685;0.21741;0.21806;0.21846;0.21882;0.21957;0.2208;0.2218;0.22219;0.22262;0.22371;0.22454;0.22446;0.22325;0.22034;0.21498;0.2064;0.19219;
+500;0.21056;0.20532;0.20578;0.20631;0.20691;0.20725;0.20757;0.20824;0.20939;0.21037;0.21075;0.21117;0.21218;0.21303;0.21301;0.21203;0.20957;0.205;0.1976;0.18558;
+1000;0.19479;0.19484;0.19522;0.1957;0.19625;0.19656;0.19686;0.19746;0.19851;0.19942;0.19976;0.20016;0.20108;0.20197;0.20205;0.20126;0.19921;0.19532;0.18903;0.1792;
+1500;0.18474;0.18476;0.18512;0.18555;0.18606;0.18634;0.18659;0.18712;0.18809;0.18896;0.18926;0.18963;0.1907;0.19137;0.19154;0.19094;0.18922;0.18594;0.18051;0.17243;
+2000;0.17493;0.17505;0.17538;0.17579;0.17627;0.17653;0.17676;0.17724;0.17815;0.17899;0.17926;0.17962;0.18059;0.18124;0.18148;0.18104;0.17963;0.17688;0.17231;0.16558;
+2500;0.16585;0.16589;0.16618;0.16655;0.16697;0.16718;0.16736;0.1678;0.16865;0.16945;0.16973;0.17006;0.17095;0.1716;0.17186;0.17155;0.17041;0.16813;0.16431;0.15874;
+3000;0.15713;0.15715;0.15743;0.15776;0.15816;0.15835;0.15852;0.15889;0.15965;0.16037;0.16061;0.16086;0.16176;0.1624;0.16269;0.16249;0.16157;0.15969;0.15653;0.15194;
+3500;0.1487;0.1488;0.14905;0.14936;0.14973;0.14991;0.15007;0.15041;0.15112;0.15182;0.15204;0.15215;0.15301;0.15362;0.15394;0.15381;0.15309;0.15153;0.14897;0.14522;
+4000;0.14068;0.1408;0.14104;0.14133;0.14168;0.14185;0.142;0.1423;0.14297;0.14365;0.14385;0.14415;0.14478;0.14535;0.14564;0.14553;0.14494;0.14368;0.14155;0.13849;
+4500;0.13308;0.13317;0.13339;0.13366;0.13398;0.13414;0.13428;0.13455;0.13518;0.13581;0.13603;0.13632;0.1369;0.13748;0.1378;0.13776;0.13722;0.13612;0.13439;0.13189;
+5000;0.12584;0.12587;0.12608;0.12633;0.12663;0.12678;0.12691;0.12716;0.12774;0.12832;0.12857;0.12885;0.12938;0.12996;0.13031;0.13034;0.12994;0.12902;0.1275;0.12547;
+5500;0.11884;0.11891;0.1191;0.11933;0.11961;0.11975;0.11988;0.1201;0.12064;0.12119;0.12144;0.12172;0.12221;0.12278;0.12314;0.12324;0.12297;0.12225;0.12103;0.11931;
+6000;0.11218;0.11226;0.11244;0.11266;0.11292;0.11305;0.11317;0.11337;0.11387;0.11438;0.11465;0.11492;0.11537;0.11593;0.11631;0.11646;0.1163;0.11575;0.1148;0.11342;
+6500;0.10587;0.10593;0.1061;0.1063;0.10654;0.10672;0.10677;0.10696;0.10742;0.1079;0.10818;0.10843;0.10885;0.10938;0.10979;0.10999;0.10992;0.10953;0.10879;0.10772;
+7000;0.099866;0.099906;0.10005;0.10023;0.10046;0.10063;0.10068;0.10085;0.10128;0.10174;0.10202;0.10226;0.10264;0.10314;0.10358;0.10382;0.10383;0.10356;0.103;0.10221;
+7500;0.094222;0.09427;0.094406;0.094569;0.094762;0.0949;0.094931;0.094957;0.095439;0.095873;0.096158;0.096263;0.09673;0.097196;0.097659;0.097928;0.09799;0.097821;0.097439;0.096903;
+8000;0.08886;0.088899;0.089028;0.089181;0.089363;0.08949;0.089529;0.089558;0.089992;0.09037;0.090621;0.090706;0.090986;0.091541;0.092006;0.092287;0.092411;0.092346;0.092113;0.091784;
+8500;0.083742;0.083788;0.083907;0.084051;0.084222;0.084341;0.084385;0.084414;0.084812;0.085172;0.085423;0.085509;0.085723;0.086185;0.086627;0.086918;0.087094;0.08712;0.087016;0.086861;
+9000;0.078885;0.078925;0.079035;0.07917;0.07933;0.079442;0.079489;0.079521;0.07987;0.080204;0.080457;0.080564;0.080761;0.081169;0.081611;0.081886;0.082063;0.082134;0.082145;0.082137;
+9500;0.074261;0.074297;0.074402;0.074529;0.074679;0.074777;0.074818;0.074842;0.075168;0.075482;0.075738;0.075861;0.076041;0.076408;0.076856;0.077139;0.077345;0.077474;0.077535;0.077609;
+10000;0.069881;0.069888;0.069987;0.070104;0.070242;0.070338;0.070383;0.070412;0.070705;0.070993;0.071255;0.071391;0.071559;0.071982;0.072337;0.072633;0.072869;0.073048;0.073194;0.073376;
+10500;0.065673;0.065708;0.065799;0.06591;0.066039;0.066128;0.066177;0.066208;0.066471;0.066729;0.066998;0.067146;0.067303;0.067693;0.068048;0.068352;0.068613;0.068841;0.069057;0.069324;
+11000;0.061714;0.061744;0.061829;0.061935;0.062055;0.062139;0.062191;0.062224;0.062458;0.06269;0.062963;0.063113;0.06327;0.063629;0.063981;0.064291;0.064571;0.064835;0.065113;0.065459;
+11500;0.057573;0.057607;0.057686;0.057783;0.057893;0.05797;0.058015;0.058044;0.058261;0.058475;0.058724;0.058859;0.059002;0.059335;0.059692;0.059939;0.06019;0.060425;0.060673;0.06098;
+12000;0.053724;0.053768;0.05384;0.05393;0.05403;0.0541;0.054139;0.054163;0.054365;0.054562;0.054787;0.054912;0.055039;0.055347;0.05564;0.055895;0.056122;0.056329;0.056547;0.056819;
+12500;0.050148;0.050205;0.05027;0.050353;0.050445;0.050511;0.050542;0.050562;0.050749;0.050929;0.051134;0.051244;0.05136;0.051643;0.05191;0.05214;0.052342;0.052525;0.052714;0.052954;
+13000;0.046876;0.046898;0.04696;0.047036;0.047118;0.047177;0.047202;0.04722;0.047393;0.047558;0.047742;0.047839;0.047944;0.048205;0.048447;0.048653;0.048833;0.048992;0.049155;0.049365;
+13500;0.043833;0.04384;0.043884;0.043951;0.04403;0.044087;0.04411;0.04412;0.044279;0.04443;0.044594;0.044679;0.044773;0.045013;0.045231;0.045416;0.045574;0.045712;0.045851;0.046032;
+14000;0.040953;0.040972;0.041024;0.041089;0.04116;0.041212;0.041234;0.041248;0.04139;0.041528;0.041675;0.041748;0.041831;0.04205;0.042247;0.042411;0.042549;0.042667;0.042784;0.042936;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.19773;0.19789;0.19833;0.19888;0.19956;0.19997;0.2003;0.20126;0.20247;0.20315;0.20334;0.20422;0.20498;0.20511;0.20422;0.20166;0.1964;0.18693;0.16925;0.13732;
+500;0.19459;0.18774;0.18816;0.18867;0.18928;0.18964;0.18992;0.19078;0.19191;0.1926;0.19284;0.1936;0.19436;0.19455;0.19383;0.19163;0.18708;0.1789;0.16387;0.13733;
+1000;0.17804;0.17804;0.17843;0.1789;0.17948;0.1798;0.18005;0.18083;0.18173;0.18252;0.18277;0.18344;0.1842;0.18444;0.18387;0.18199;0.17806;0.17101;0.15824;0.13626;
+1500;0.16865;0.16878;0.16914;0.16958;0.1701;0.1704;0.17063;0.17134;0.17217;0.17293;0.17317;0.17372;0.17444;0.17476;0.17432;0.17273;0.16934;0.16328;0.15244;0.13418;
+2000;0.15981;0.15992;0.16025;0.16065;0.16115;0.16141;0.16164;0.16228;0.16304;0.16379;0.16402;0.16449;0.16513;0.1655;0.16518;0.16384;0.16093;0.15561;0.14653;0.13118;
+2500;0.1516;0.15158;0.15188;0.15224;0.15268;0.1529;0.15308;0.15363;0.15432;0.15505;0.15527;0.15551;0.1563;0.15668;0.15644;0.15531;0.15283;0.14828;0.14076;0.12773;
+3000;0.1435;0.1436;0.14388;0.14421;0.14462;0.14482;0.14498;0.14549;0.14612;0.14678;0.14694;0.14714;0.14787;0.14827;0.14808;0.14715;0.14503;0.14116;0.13475;0.1239;
+3500;0.13578;0.13596;0.13622;0.13653;0.13691;0.1371;0.13724;0.13771;0.13829;0.13894;0.1391;0.13927;0.13989;0.14027;0.14012;0.13931;0.13752;0.13419;0.12879;0.11977;
+4000;0.12857;0.12866;0.1289;0.12919;0.12955;0.12971;0.12985;0.13027;0.13093;0.13144;0.13159;0.13177;0.13233;0.13274;0.13263;0.13188;0.13026;0.12743;0.12277;0.11538;
+4500;0.1217;0.12169;0.12191;0.12218;0.12251;0.12266;0.12279;0.12317;0.12379;0.12428;0.12443;0.1246;0.12512;0.12555;0.12549;0.12488;0.12346;0.12089;0.1169;0.1108;
+5000;0.11496;0.11503;0.11524;0.11548;0.11579;0.11593;0.11604;0.11639;0.11697;0.11745;0.11759;0.11777;0.11823;0.11868;0.11867;0.11817;0.11698;0.11474;0.11116;0.10606;
+5500;0.10855;0.10868;0.10887;0.1091;0.10938;0.10951;0.10961;0.10993;0.11046;0.11093;0.11107;0.11125;0.11167;0.11212;0.11216;0.11177;0.11073;0.10883;0.10579;0.10142;
+6000;0.10257;0.10263;0.10281;0.10301;0.10327;0.10339;0.10348;0.10377;0.10426;0.10471;0.10484;0.10501;0.10554;0.10586;0.10594;0.10561;0.10473;0.10313;0.10057;0.096921;
+6500;0.096883;0.096871;0.097031;0.097223;0.097463;0.097569;0.097655;0.097907;0.098362;0.09878;0.098912;0.099075;0.099551;0.099868;0.099971;0.099723;0.099005;0.09766;0.095519;0.092478;
+7000;0.09143;0.09148;0.091622;0.091787;0.091995;0.092076;0.092135;0.092338;0.092751;0.093145;0.093255;0.093362;0.093833;0.094155;0.094282;0.094113;0.093526;0.092409;0.090624;0.088117;
+7500;0.086251;0.086343;0.086475;0.086627;0.086819;0.08689;0.086938;0.08711;0.087472;0.08782;0.087901;0.087925;0.088403;0.088718;0.08887;0.088766;0.088297;0.087375;0.085899;0.083844;
+8000;0.081398;0.081444;0.081563;0.081701;0.081873;0.081934;0.081979;0.082131;0.082467;0.082801;0.082883;0.083009;0.083315;0.083596;0.083728;0.083671;0.083306;0.082557;0.08135;0.079644;
+8500;0.076791;0.07677;0.076879;0.077006;0.077164;0.077221;0.077261;0.077397;0.077707;0.078015;0.07811;0.078235;0.078509;0.078796;0.078938;0.078891;0.078571;0.077949;0.076976;0.075608;
+9000;0.072289;0.072325;0.072427;0.072544;0.07269;0.072742;0.072781;0.0729;0.073186;0.07347;0.073575;0.073698;0.073945;0.074231;0.074389;0.074384;0.074155;0.073637;0.072817;0.071699;
+9500;0.06803;0.068105;0.0682;0.068307;0.068441;0.06849;0.068527;0.06863;0.068893;0.069154;0.069272;0.06939;0.069612;0.069894;0.070064;0.070096;0.069942;0.06955;0.068902;0.068022;
+10000;0.064068;0.064102;0.064188;0.064288;0.064411;0.06449;0.064489;0.064581;0.064824;0.065063;0.065196;0.065302;0.065502;0.065765;0.065957;0.06602;0.06593;0.065646;0.065149;0.064483;
+10500;0.06032;0.060305;0.060384;0.060476;0.060589;0.060662;0.060665;0.060746;0.060969;0.061191;0.06133;0.061427;0.061607;0.061849;0.062061;0.06215;0.062112;0.061921;0.061558;0.061069;
+11000;0.056681;0.056708;0.056782;0.056868;0.056973;0.057039;0.057046;0.057115;0.057319;0.05753;0.05767;0.057688;0.057921;0.05814;0.058369;0.058478;0.058483;0.05837;0.058123;0.057785;
+11500;0.052907;0.052942;0.05301;0.053089;0.053184;0.053244;0.053246;0.05331;0.053497;0.053688;0.053814;0.053828;0.054042;0.054242;0.054447;0.05454;0.054535;0.054417;0.054174;0.053837;
+12000;0.049401;0.049448;0.049511;0.049583;0.04967;0.049723;0.049722;0.049779;0.04995;0.050123;0.050235;0.050242;0.050441;0.050623;0.050805;0.050883;0.050869;0.050746;0.050506;0.050172;
+12500;0.046186;0.046207;0.046264;0.04633;0.046409;0.046456;0.046452;0.046504;0.04666;0.046815;0.046915;0.046978;0.0471;0.047264;0.047425;0.047489;0.047465;0.047338;0.0471;0.046771;
+13000;0.043198;0.043202;0.043254;0.043314;0.043385;0.043427;0.04342;0.043467;0.043608;0.043747;0.043835;0.043889;0.043999;0.044148;0.044288;0.044339;0.044306;0.044175;0.04394;0.043615;
+13500;0.040423;0.040426;0.040467;0.040517;0.040581;0.040619;0.040608;0.04065;0.040778;0.040902;0.040978;0.041024;0.041122;0.041257;0.041378;0.041416;0.041375;0.041239;0.041005;0.040686;
+14000;0.037816;0.037832;0.037876;0.037926;0.037983;0.038014;0.038002;0.038039;0.038155;0.038265;0.038329;0.038368;0.038454;0.038574;0.038678;0.038705;0.038656;0.038517;0.038283;0.037968;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.18022;0.18042;0.18089;0.18143;0.18214;0.1826;0.18295;0.18412;0.1853;0.18568;0.18612;0.18687;0.18719;0.18673;0.18481;0.18031;0.17145;0.15281;0.1122;-9999;
+500;0.17097;0.17113;0.17158;0.17209;0.17274;0.17315;0.17344;0.1745;0.17562;0.17599;0.17641;0.17713;0.17749;0.17715;0.17549;0.17157;0.16386;0.1479;0.11453;-9999;
+1000;0.16212;0.1623;0.16269;0.16317;0.16377;0.16414;0.1644;0.16538;0.1664;0.16674;0.16712;0.1678;0.1682;0.16796;0.16654;0.16313;0.15642;0.14274;0.11505;-9999;
+1500;0.15367;0.15385;0.1542;0.15464;0.1552;0.15554;0.15578;0.15667;0.15763;0.15796;0.15828;0.15888;0.15931;0.15916;0.15795;0.155;0.14917;0.13743;0.11429;-9999;
+2000;0.14568;0.14579;0.14612;0.14652;0.14702;0.14731;0.14753;0.14836;0.14925;0.14959;0.14988;0.15042;0.15083;0.15073;0.14972;0.14717;0.14199;0.13203;0.11277;-9999;
+2500;0.13798;0.13817;0.13849;0.13885;0.13932;0.13957;0.13974;0.14047;0.14127;0.14159;0.14185;0.14235;0.14277;0.1427;0.14184;0.13964;0.13516;0.1266;0.1105;-9999;
+3000;0.13078;0.1309;0.13119;0.13153;0.13196;0.13219;0.13234;0.13301;0.13376;0.13408;0.13428;0.13469;0.13507;0.13505;0.1343;0.13238;0.12849;0.12133;0.10766;-9999;
+3500;0.12393;0.12396;0.12421;0.12452;0.12493;0.12513;0.12527;0.12589;0.12658;0.1269;0.12708;0.12747;0.12785;0.12782;0.12712;0.12542;0.12196;0.11581;0.10444;0.08532;
+4000;0.11722;0.11729;0.11754;0.11783;0.1182;0.11839;0.11852;0.11908;0.11973;0.12005;0.12009;0.12057;0.12095;0.12096;0.12038;0.11881;0.11569;0.11036;0.10065;0.083963;
+4500;0.11083;0.11094;0.11117;0.11144;0.11179;0.11195;0.11207;0.11258;0.11319;0.11351;0.11356;0.11398;0.11436;0.1144;0.11389;0.11252;0.10981;0.10508;0.096761;0.082812;
+5000;0.10482;0.1049;0.10511;0.10536;0.10568;0.10582;0.10593;0.10638;0.10689;0.10727;0.10734;0.10769;0.10805;0.10811;0.10768;0.1065;0.10416;0.10007;0.092894;0.081145;
+5500;0.099115;0.099142;0.09933;0.099555;0.099851;0.099984;0.10008;0.10048;0.10093;0.1013;0.10136;0.10166;0.10202;0.1021;0.10176;0.10075;0.098709;0.095185;0.089077;0.079193;
+6000;0.093573;0.093632;0.093808;0.094012;0.09428;0.094391;0.094466;0.094839;0.095256;0.095606;0.095676;0.095924;0.09625;0.096377;0.096104;0.095234;0.093483;0.090387;0.085374;0.076946;
+6500;0.0884;0.088457;0.088611;0.088787;0.08902;0.0891;0.089145;0.089461;0.089845;0.090189;0.090276;0.090482;0.090772;0.090924;0.090711;0.089975;0.088464;0.085814;0.081538;0.074496;
+7000;0.083486;0.083529;0.083671;0.083833;0.084047;0.084118;0.084158;0.084441;0.084763;0.08508;0.085133;0.085303;0.085568;0.085749;0.085582;0.08495;0.083655;0.081375;0.077747;0.071872;
+7500;0.078822;0.078837;0.078967;0.079116;0.079313;0.079376;0.079415;0.079665;0.079955;0.080269;0.080318;0.080374;0.080677;0.080843;0.080707;0.080179;0.079065;0.077111;0.074035;0.069141;
+8000;0.074329;0.074373;0.074493;0.074628;0.074809;0.074865;0.074898;0.075122;0.075381;0.075691;0.075737;0.075799;0.076066;0.076252;0.076142;0.075673;0.074687;0.073019;0.070416;0.066341;
+8500;0.070073;0.070128;0.070239;0.070362;0.070527;0.070577;0.070606;0.070805;0.071109;0.07134;0.071385;0.071447;0.071687;0.071886;0.071812;0.071429;0.070594;0.069153;0.066928;0.063584;
+9000;0.066044;0.066095;0.066197;0.06631;0.06646;0.066505;0.06653;0.066705;0.066985;0.067211;0.067254;0.067311;0.06753;0.067734;0.067691;0.067384;0.066687;0.065465;0.063559;0.060823;
+9500;0.062232;0.062269;0.062362;0.062465;0.062602;0.062641;0.062663;0.062817;0.063075;0.063293;0.063333;0.063386;0.063577;0.06379;0.063776;0.063532;0.062956;0.061926;0.060337;0.058063;
+10000;0.058629;0.058642;0.058727;0.05882;0.058944;0.058979;0.058998;0.059132;0.05937;0.059578;0.059616;0.059664;0.05991;0.060049;0.060058;0.059867;0.059395;0.058538;0.057219;0.055336;
+10500;0.055179;0.055208;0.055284;0.055369;0.055482;0.055514;0.055529;0.055645;0.055863;0.05606;0.056096;0.056136;0.056361;0.056504;0.05653;0.056386;0.056005;0.055303;0.054211;0.052658;
+11000;0.051927;0.05196;0.05203;0.052108;0.052209;0.052237;0.05225;0.052349;0.052547;0.052732;0.052767;0.052768;0.053003;0.053147;0.053188;0.053084;0.052782;0.05221;0.051307;0.050044;
+11500;0.048512;0.048547;0.048611;0.048682;0.048775;0.048797;0.048806;0.048897;0.049077;0.049245;0.049274;0.049278;0.049487;0.049613;0.049643;0.049536;0.049242;0.048697;0.047837;0.046626;
+12000;0.045341;0.045381;0.045441;0.045505;0.045589;0.045608;0.045612;0.045696;0.045859;0.046011;0.046033;0.046039;0.046223;0.046334;0.046354;0.046244;0.045957;0.045435;0.044613;0.043458;
+12500;0.042428;0.042448;0.042501;0.042559;0.042636;0.042651;0.042651;0.042727;0.042876;0.043011;0.043027;0.043031;0.043194;0.043291;0.043302;0.04319;0.04291;0.042409;0.041622;0.040519;
+13000;0.039722;0.03973;0.039777;0.039829;0.039899;0.03991;0.039907;0.039976;0.04011;0.04023;0.040239;0.040242;0.040386;0.040468;0.04047;0.040357;0.040084;0.039601;0.038849;0.037795;
+13500;0.037194;0.03721;0.037254;0.0373;0.037363;0.03737;0.037364;0.037426;0.037546;0.037652;0.037656;0.037659;0.037781;0.03785;0.037844;0.037729;0.037464;0.036998;0.036277;0.035272;
+14000;0.034851;0.034877;0.034918;0.034959;0.035016;0.035019;0.03501;0.035065;0.035172;0.035264;0.035262;0.035262;0.035368;0.035423;0.035409;0.035292;0.035034;0.034585;0.033894;0.032932;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.16409;0.16428;0.16469;0.16536;0.16609;0.16661;0.16725;0.16826;0.16926;0.16957;0.17;0.17056;0.1705;0.16923;0.16569;0.15828;0.14097;0.096471;-9999;-9999;
+500;0.15566;0.15581;0.15608;0.15657;0.15727;0.15784;0.15842;0.15937;0.16037;0.16067;0.1611;0.16167;0.16167;0.1606;0.15751;0.15102;0.13611;0.099094;-9999;-9999;
+1000;0.14742;0.14762;0.14809;0.14854;0.14919;0.14961;0.15014;0.15102;0.15194;0.15219;0.15253;0.15315;0.15321;0.15231;0.14963;0.14394;0.1311;0.10098;-9999;-9999;
+1500;0.13975;0.13992;0.14034;0.14076;0.14137;0.14175;0.14223;0.14306;0.14392;0.14415;0.14443;0.145;0.14511;0.14438;0.14205;0.13705;0.126;0.10099;-9999;-9999;
+2000;0.13233;0.13264;0.13301;0.1334;0.13394;0.13427;0.13468;0.13545;0.13626;0.13649;0.13668;0.13728;0.13739;0.13677;0.13476;0.13022;0.12085;0.099912;-9999;-9999;
+2500;0.12557;0.12571;0.12604;0.12641;0.12692;0.12721;0.12759;0.12828;0.12902;0.12919;0.12946;0.12993;0.13006;0.12951;0.12773;0.12375;0.11571;0.098234;-9999;-9999;
+3000;0.11895;0.11909;0.11938;0.11973;0.12021;0.12047;0.12081;0.12145;0.12215;0.12232;0.12257;0.12298;0.12308;0.12257;0.12097;0.11748;0.11069;0.095921;-9999;-9999;
+3500;0.11267;0.11277;0.11304;0.11336;0.11379;0.11403;0.11433;0.11493;0.11559;0.11576;0.11597;0.11636;0.11647;0.11603;0.11458;0.11144;0.10551;0.093058;0.067789;-9999;
+4000;0.10668;0.10668;0.10694;0.10728;0.10769;0.10789;0.10815;0.1087;0.10931;0.10945;0.10965;0.11003;0.11016;0.1098;0.10854;0.10577;0.10049;0.089787;0.067211;-9999;
+4500;0.10085;0.10095;0.10118;0.10145;0.10183;0.10201;0.10224;0.10275;0.10332;0.10345;0.10363;0.10399;0.10413;0.10384;0.10275;0.10032;0.095716;0.086476;0.067667;-9999;
+5000;0.095317;0.095425;0.095641;0.095889;0.096233;0.096396;0.096601;0.09707;0.097608;0.097734;0.0979;0.098228;0.098383;0.098149;0.097207;0.095087;0.091072;0.083152;0.06765;-9999;
+5500;0.090053;0.090159;0.090359;0.090586;0.090903;0.091047;0.091229;0.091663;0.092166;0.092286;0.09244;0.092746;0.092914;0.092725;0.091908;0.090053;0.086566;0.079782;0.066637;-9999;
+6000;0.085166;0.085232;0.085409;0.085605;0.085881;0.085992;0.086134;0.086512;0.086982;0.087108;0.087243;0.087526;0.087705;0.087562;0.086862;0.085237;0.082206;0.076396;0.065401;-9999;
+6500;0.080518;0.080523;0.080723;0.080882;0.081136;0.081233;0.081278;0.081697;0.082109;0.082221;0.082309;0.082557;0.082743;0.082641;0.082044;0.080633;0.077924;0.073013;0.063781;-9999;
+7000;0.076018;0.076073;0.076221;0.076386;0.076619;0.076702;0.076743;0.07712;0.0775;0.077622;0.077699;0.077904;0.078065;0.077965;0.077449;0.076226;0.073877;0.06976;0.061911;-9999;
+7500;0.071749;0.071822;0.071958;0.072109;0.072322;0.072393;0.072425;0.072767;0.073117;0.073248;0.073314;0.073497;0.073663;0.073595;0.073137;0.072051;0.069982;0.066451;0.05983;-9999;
+8000;0.067732;0.067779;0.067903;0.068041;0.068236;0.068296;0.068324;0.06863;0.068956;0.06909;0.069055;0.069306;0.069474;0.069433;0.069051;0.068116;0.066326;0.063268;0.057687;0.048201;
+8500;0.063928;0.06393;0.064065;0.064175;0.064354;0.064406;0.064431;0.064703;0.064978;0.065141;0.065118;0.065326;0.065494;0.065474;0.065158;0.064357;0.062812;0.060179;0.055482;0.047659;
+9000;0.060254;0.060291;0.060394;0.06051;0.060671;0.060713;0.060735;0.060976;0.061226;0.061391;0.06138;0.06155;0.061715;0.061712;0.06145;0.060769;0.059442;0.057175;0.053223;0.046799;
+9500;0.056785;0.056832;0.056927;0.05703;0.057177;0.057214;0.05723;0.057448;0.057675;0.057835;0.057834;0.057969;0.058121;0.058141;0.057925;0.057351;0.056216;0.054228;0.050939;0.045637;
+10000;0.053512;0.053556;0.053643;0.053735;0.05387;0.053904;0.053915;0.054105;0.054308;0.054466;0.054472;0.054578;0.054712;0.054756;0.054581;0.054096;0.053121;0.051407;0.048724;0.044282;
+10500;0.050426;0.050461;0.050539;0.050623;0.050743;0.050771;0.050777;0.050944;0.051122;0.05128;0.051296;0.051373;0.051489;0.05155;0.051409;0.051001;0.050152;0.0487;0.046444;0.042792;
+11000;0.047522;0.047537;0.047608;0.047683;0.04779;0.047812;0.047816;0.047959;0.048114;0.04827;0.04828;0.048289;0.048449;0.048518;0.048403;0.048042;0.047323;0.046098;0.044207;0.041208;
+11500;0.044419;0.044458;0.044522;0.04459;0.044688;0.044706;0.044706;0.044837;0.044978;0.045116;0.045121;0.045123;0.045269;0.045325;0.045211;0.044874;0.044187;0.043023;0.041221;0.038355;
+12000;0.041541;0.041605;0.041664;0.041725;0.041814;0.041827;0.041822;0.041943;0.042071;0.042191;0.042192;0.042188;0.042319;0.042364;0.042248;0.04193;0.041294;0.040172;0.038454;0.035716;
+12500;0.038942;0.038962;0.039015;0.03907;0.039151;0.039161;0.039152;0.039262;0.039377;0.039481;0.039477;0.039467;0.039585;0.039617;0.039501;0.039193;0.038589;0.037528;0.035891;0.033276;
+13000;0.036532;0.036515;0.036563;0.036612;0.036685;0.036691;0.036679;0.036779;0.036882;0.036971;0.036961;0.036992;0.037048;0.037071;0.036954;0.036657;0.036086;0.03508;0.033519;0.03102;
+13500;0.034234;0.03425;0.034294;0.034337;0.034403;0.034405;0.034389;0.03448;0.034572;0.034647;0.034632;0.034655;0.034701;0.034712;0.034594;0.034306;0.033761;0.032817;0.031323;0.028937;
+14000;0.032109;0.032157;0.032196;0.032234;0.032293;0.032291;0.032272;0.032354;0.032434;0.032496;0.032476;0.032491;0.032529;0.032529;0.032408;0.032129;0.031607;0.030716;0.029292;0.027015;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.14886;0.14908;0.14955;0.15026;0.15104;0.15162;0.15239;0.1535;0.15444;0.15477;0.15517;0.15537;0.15467;0.15216;0.14625;0.13193;0.09003;-9999;-9999;-9999;
+500;0.14125;0.14126;0.14184;0.1425;0.14322;0.14374;0.14442;0.14542;0.14631;0.14663;0.14703;0.14727;0.14671;0.14453;0.13927;0.12694;0.092242;-9999;-9999;-9999;
+1000;0.13389;0.13409;0.13448;0.13508;0.13576;0.13623;0.13686;0.13777;0.1386;0.13886;0.13923;0.13951;0.13907;0.13716;0.13252;0.1219;0.093248;-9999;-9999;-9999;
+1500;0.12687;0.12709;0.12744;0.12799;0.12863;0.12906;0.12963;0.13048;0.13127;0.13151;0.13183;0.13208;0.13171;0.13005;0.126;0.11683;0.092977;-9999;-9999;-9999;
+2000;0.12035;0.12051;0.12082;0.12132;0.12189;0.12227;0.12277;0.12352;0.12425;0.12447;0.12476;0.12502;0.12469;0.12324;0.11956;0.1118;0.091865;-9999;-9999;-9999;
+2500;0.11414;0.11415;0.1145;0.11496;0.11549;0.11581;0.11626;0.11696;0.11764;0.1178;0.11805;0.11828;0.11802;0.11673;0.1135;0.10679;0.090084;-9999;-9999;-9999;
+3000;0.10804;0.10819;0.10855;0.10886;0.10936;0.10965;0.11006;0.11071;0.11134;0.11149;0.11172;0.11196;0.11171;0.11055;0.10767;0.10177;0.087735;-9999;-9999;-9999;
+3500;0.10224;0.10243;0.10274;0.10304;0.1035;0.10376;0.10413;0.10474;0.10535;0.10548;0.10569;0.10593;0.10574;0.10472;0.10217;0.096912;0.084956;-9999;-9999;-9999;
+4000;0.096799;0.096922;0.097201;0.097481;0.09791;0.098141;0.098479;0.099051;0.099622;0.099751;0.099945;0.10018;0.10003;0.099143;0.096915;0.0923;0.081977;0.055389;-9999;-9999;
+4500;0.091622;0.091627;0.091851;0.092183;0.092578;0.092782;0.093087;0.093623;0.094159;0.094277;0.094459;0.094702;0.094598;0.093845;0.091878;0.087832;0.078968;0.057003;-9999;-9999;
+5000;0.086557;0.086561;0.086849;0.087039;0.087467;0.087663;0.087947;0.088449;0.088955;0.089067;0.089233;0.089477;0.089411;0.088766;0.08705;0.083505;0.075873;0.057597;-9999;-9999;
+5500;0.081838;0.081924;0.082122;0.08235;0.082684;0.082843;0.083078;0.083522;0.083997;0.084101;0.08421;0.084497;0.084463;0.083913;0.082414;0.07931;0.072729;0.05758;-9999;-9999;
+6000;0.077382;0.077463;0.077645;0.077854;0.078161;0.0783;0.07851;0.078922;0.07934;0.079413;0.079483;0.079755;0.079746;0.079281;0.077978;0.075264;0.069572;0.056979;-9999;-9999;
+6500;0.073148;0.073211;0.07338;0.07357;0.073853;0.073975;0.074166;0.074546;0.074938;0.075004;0.075056;0.075309;0.075292;0.074867;0.073732;0.071363;0.066544;0.055889;-9999;-9999;
+7000;0.069128;0.069132;0.069286;0.069498;0.069754;0.069865;0.070033;0.070382;0.070748;0.07081;0.070906;0.071101;0.071104;0.070746;0.069736;0.06757;0.063455;0.054544;-9999;-9999;
+7500;0.06526;0.065318;0.065462;0.06562;0.065858;0.065957;0.066104;0.066425;0.066765;0.066823;0.066909;0.067097;0.067115;0.066816;0.065944;0.064065;0.060481;0.053051;-9999;-9999;
+8000;0.061597;0.061662;0.061795;0.061939;0.062156;0.062246;0.062373;0.062665;0.062982;0.063034;0.063112;0.06329;0.063319;0.063074;0.062322;0.060694;0.057572;0.051296;0.039296;-9999;
+8500;0.05813;0.058193;0.058315;0.058445;0.058646;0.058724;0.058833;0.059099;0.059391;0.059439;0.059509;0.059676;0.059715;0.059513;0.058866;0.057442;0.05474;0.049436;0.038707;-9999;
+9000;0.054851;0.054906;0.055017;0.055138;0.05532;0.055384;0.055477;0.055718;0.055988;0.056032;0.056092;0.056246;0.056293;0.056128;0.055572;0.054316;0.051992;0.047507;0.038725;-9999;
+9500;0.051755;0.051796;0.051897;0.052005;0.052169;0.052224;0.052302;0.052519;0.052766;0.052806;0.052855;0.052994;0.053049;0.052911;0.052416;0.051337;0.049334;0.045539;0.038368;-9999;
+10000;0.048833;0.048835;0.048957;0.049042;0.04919;0.049235;0.049298;0.049493;0.049719;0.049757;0.049795;0.04991;0.049965;0.049844;0.049423;0.048494;0.046768;0.043558;0.03766;-9999;
+10500;0.046047;0.046078;0.046159;0.046245;0.046376;0.046411;0.046462;0.046632;0.046837;0.04687;0.046891;0.046987;0.047043;0.046944;0.046584;0.045785;0.044265;0.041586;0.036748;-9999;
+11000;0.04343;0.043458;0.04353;0.043606;0.043723;0.043743;0.043777;0.043925;0.044105;0.044141;0.044151;0.044229;0.044286;0.044204;0.043895;0.04321;0.04191;0.03969;0.035629;-9999;
+11500;0.040646;0.040692;0.040758;0.040827;0.040933;0.040955;0.040947;0.041119;0.041282;0.041309;0.041313;0.041382;0.041427;0.041343;0.041045;0.040394;0.039162;0.037053;0.033185;-9999;
+12000;0.038109;0.038132;0.038192;0.038253;0.03835;0.038367;0.038357;0.038517;0.038667;0.038686;0.038684;0.038743;0.038777;0.038691;0.038403;0.037782;0.036616;0.034611;0.03093;-9999;
+12500;0.035757;0.035764;0.035817;0.035872;0.03596;0.035972;0.03596;0.036104;0.036238;0.036251;0.036247;0.036297;0.036321;0.036232;0.035954;0.035363;0.034257;0.032305;0.028849;-9999;
+13000;0.033555;0.033573;0.033622;0.03367;0.033749;0.033757;0.033743;0.033872;0.03399;0.033995;0.033989;0.034032;0.034047;0.033955;0.033685;0.033122;0.032072;0.030218;0.026932;-9999;
+13500;0.03152;0.031549;0.031593;0.031636;0.031707;0.031711;0.031694;0.031808;0.031912;0.031908;0.031896;0.031931;0.031939;0.031848;0.031584;0.031047;0.030052;0.02829;0.025161;-9999;
+14000;0.029667;0.029683;0.029722;0.029759;0.029821;0.029821;0.029802;0.029902;0.029992;0.02998;0.029963;0.029988;0.029986;0.029894;0.029644;0.029128;0.028184;0.02651;0.023537;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.1347;0.13496;0.13546;0.13609;0.13721;0.13796;0.13887;0.14004;0.14073;0.14105;0.14127;0.1409;0.13917;0.13468;0.12342;0.089239;-9999;-9999;-9999;-9999;
+500;0.12783;0.12785;0.12844;0.12902;0.13005;0.13073;0.13154;0.13262;0.13327;0.13356;0.13381;0.13354;0.13205;0.12795;0.11831;0.09011;-9999;-9999;-9999;-9999;
+1000;0.12127;0.12133;0.12175;0.12228;0.12321;0.12383;0.12457;0.12558;0.12619;0.12643;0.12666;0.12648;0.12522;0.12164;0.11325;0.089828;-9999;-9999;-9999;-9999;
+1500;0.11483;0.11502;0.11539;0.11586;0.1167;0.11727;0.11794;0.11887;0.11946;0.11969;0.1199;0.11974;0.11866;0.11556;0.10846;0.088554;-9999;-9999;-9999;-9999;
+2000;0.10862;0.10906;0.10939;0.10984;0.11061;0.11111;0.1117;0.11255;0.11308;0.11325;0.11347;0.11336;0.1124;0.10967;0.10349;0.086654;-9999;-9999;-9999;-9999;
+2500;0.10319;0.10335;0.10366;0.10407;0.10478;0.10524;0.10578;0.10658;0.10709;0.10724;0.10741;0.1073;0.10645;0.10405;0.098577;0.084574;-9999;-9999;-9999;-9999;
+3000;0.097996;0.097898;0.098177;0.098676;0.099229;0.099647;0.10013;0.10088;0.10137;0.10151;0.10168;0.10162;0.10087;0.09872;0.093834;0.08194;-9999;-9999;-9999;-9999;
+3500;0.092546;0.092696;0.092944;0.093403;0.093921;0.094298;0.094738;0.095436;0.09591;0.096047;0.096215;0.096189;0.09555;0.093657;0.08933;0.079041;-9999;-9999;-9999;-9999;
+4000;0.087595;0.087726;0.08795;0.088372;0.088857;0.089196;0.089596;0.090247;0.090702;0.090828;0.090993;0.091001;0.090458;0.088805;0.084979;0.076129;-9999;-9999;-9999;-9999;
+4500;0.082885;0.082986;0.083188;0.083576;0.084027;0.084332;0.084688;0.085299;0.085733;0.085851;0.086012;0.086048;0.085591;0.084151;0.080809;0.07315;0.050751;-9999;-9999;-9999;
+5000;0.078438;0.078546;0.078728;0.079062;0.079464;0.079729;0.080022;0.080587;0.081;0.081108;0.081261;0.081323;0.080941;0.079685;0.076762;0.070124;0.051732;-9999;-9999;-9999;
+5500;0.07421;0.074318;0.074491;0.074796;0.075175;0.075405;0.075661;0.076177;0.076545;0.076621;0.07674;0.076817;0.076501;0.07541;0.072788;0.066989;0.051893;-9999;-9999;-9999;
+6000;0.070194;0.070289;0.07052;0.070728;0.071081;0.071285;0.071509;0.071994;0.072344;0.072411;0.072523;0.072585;0.072296;0.071331;0.069037;0.063994;0.051525;-9999;-9999;-9999;
+6500;0.066382;0.066462;0.066665;0.06686;0.067184;0.067365;0.06756;0.068011;0.068343;0.068403;0.06851;0.068587;0.06835;0.067508;0.06549;0.061184;0.050679;-9999;-9999;-9999;
+7000;0.062738;0.062819;0.062996;0.063179;0.063477;0.063637;0.063862;0.064226;0.06454;0.064595;0.064693;0.06478;0.064588;0.063861;0.062083;0.058334;0.04952;-9999;-9999;-9999;
+7500;0.059286;0.059354;0.059512;0.059684;0.059956;0.060098;0.060297;0.060632;0.060927;0.060975;0.061065;0.061159;0.061004;0.060372;0.0588;0.055548;0.048152;-9999;-9999;-9999;
+8000;0.056001;0.056068;0.056208;0.056366;0.056614;0.056738;0.056915;0.057221;0.057497;0.057538;0.057619;0.057717;0.057589;0.057027;0.055656;0.052837;0.046609;-9999;-9999;-9999;
+8500;0.052896;0.052951;0.053078;0.05322;0.053446;0.053552;0.053708;0.053986;0.054244;0.054279;0.054343;0.054435;0.054328;0.053838;0.052635;0.050206;0.044948;0.031803;-9999;-9999;
+9000;0.049946;0.049996;0.050112;0.050241;0.050445;0.050536;0.050665;0.050917;0.051152;0.051174;0.051229;0.051313;0.051229;0.050813;0.049788;0.047665;0.043207;0.032826;-9999;-9999;
+9500;0.047165;0.047191;0.047298;0.047411;0.047594;0.047667;0.047779;0.048;0.048216;0.048233;0.048246;0.048364;0.048296;0.047941;0.047053;0.045224;0.041431;0.032916;-9999;-9999;
+10000;0.044501;0.04454;0.044634;0.044734;0.044892;0.044954;0.045049;0.045251;0.045448;0.045458;0.045466;0.045576;0.045522;0.045218;0.04445;0.042833;0.039645;0.032687;-9999;-9999;
+10500;0.042;0.042037;0.042121;0.04221;0.042355;0.042402;0.04248;0.04266;0.042839;0.042843;0.042844;0.042945;0.042902;0.04264;0.041977;0.040586;0.03787;0.032159;-9999;-9999;
+11000;0.039655;0.039684;0.03976;0.039837;0.039966;0.040002;0.040064;0.040223;0.040384;0.040382;0.040358;0.040467;0.040432;0.040206;0.039632;0.038436;0.036123;0.031435;-9999;-9999;
+11500;0.0372;0.037224;0.037293;0.037363;0.037479;0.03751;0.037564;0.037706;0.03785;0.037842;0.03782;0.037908;0.037868;0.037648;0.037102;0.035969;0.033774;0.029321;-9999;-9999;
+12000;0.034928;0.03495;0.035012;0.035074;0.03518;0.035204;0.035218;0.035375;0.035504;0.035491;0.035469;0.035539;0.035493;0.035278;0.034758;0.033686;0.031602;0.027374;-9999;-9999;
+12500;0.032826;0.032849;0.032903;0.032956;0.033055;0.033073;0.033083;0.033222;0.033335;0.033316;0.033293;0.033346;0.033294;0.033085;0.032588;0.031573;0.029596;0.025583;-9999;-9999;
+13000;0.030885;0.030913;0.030962;0.031011;0.031097;0.031106;0.031114;0.031233;0.03133;0.031306;0.031277;0.031318;0.03126;0.031055;0.030581;0.02962;0.027744;0.023938;-9999;-9999;
+13500;0.029095;0.029124;0.029167;0.029209;0.029286;0.029294;0.029296;0.029398;0.02948;0.029447;0.029414;0.029444;0.029381;0.029179;0.028725;0.027815;0.026038;0.022431;-9999;-9999;
+14000;0.027448;0.027476;0.027514;0.027551;0.027618;0.02762;0.027619;0.027709;0.027777;0.027739;0.027703;0.027716;0.027645;0.027447;0.027013;0.026151;0.024467;0.021058;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.12813;0.12828;0.1289;0.12956;0.13075;0.13155;0.13253;0.13367;0.13421;0.13437;0.13454;0.13381;0.13136;0.12525;0.10912;-9999;-9999;-9999;-9999;-9999;
+500;0.12144;0.12146;0.1222;0.12282;0.1239;0.12462;0.1255;0.12655;0.12707;0.12725;0.12744;0.12685;0.12473;0.11938;0.10553;-9999;-9999;-9999;-9999;-9999;
+1000;0.11505;0.11531;0.11583;0.11639;0.11739;0.11805;0.11885;0.11982;0.12031;0.12046;0.12064;0.12017;0.11835;0.11369;0.10174;0.098501;-9999;-9999;-9999;-9999;
+1500;0.10911;0.10932;0.10978;0.1103;0.11119;0.11179;0.11251;0.11343;0.1139;0.11404;0.11421;0.11379;0.11221;0.10817;0.097856;-9999;-9999;-9999;-9999;-9999;
+2000;0.10339;0.10365;0.10407;0.10456;0.10538;0.10593;0.10657;0.10741;0.10784;0.10793;0.1081;0.10776;0.10635;0.1028;0.093935;0.066999;-9999;-9999;-9999;-9999;
+2500;0.098056;0.098231;0.098618;0.099177;0.099824;0.10033;0.10091;0.1017;0.10212;0.10224;0.10237;0.10205;0.10078;0.097658;0.089919;0.067649;-9999;-9999;-9999;-9999;
+3000;0.092889;0.093057;0.093407;0.093921;0.094521;0.09498;0.095517;0.096258;0.096663;0.096807;0.096916;0.096664;0.095565;0.092658;0.085945;0.067348;-9999;-9999;-9999;-9999;
+3500;0.08797;0.088117;0.088434;0.088906;0.08946;0.089879;0.090369;0.091064;0.091456;0.091592;0.091709;0.091515;0.090567;0.088019;0.082291;0.066235;-9999;-9999;-9999;-9999;
+4000;0.08329;0.083298;0.083684;0.084123;0.084634;0.085016;0.085461;0.08611;0.086489;0.086617;0.086741;0.086596;0.08578;0.083551;0.078504;0.064795;-9999;-9999;-9999;-9999;
+4500;0.078813;0.078942;0.079193;0.079576;0.080045;0.080384;0.080785;0.081391;0.081756;0.081874;0.082;0.081898;0.081194;0.079254;0.074793;0.063155;-9999;-9999;-9999;-9999;
+5000;0.07456;0.074745;0.07497;0.075322;0.075752;0.076038;0.076377;0.076919;0.07725;0.077355;0.077483;0.077417;0.07682;0.075126;0.071175;0.061363;-9999;-9999;-9999;-9999;
+5500;0.070632;0.070741;0.070944;0.071264;0.071658;0.071919;0.072221;0.072729;0.073042;0.073117;0.073214;0.07315;0.072642;0.07117;0.067689;0.059358;-9999;-9999;-9999;-9999;
+6000;0.066823;0.066925;0.067107;0.067398;0.067768;0.067997;0.068272;0.06874;0.06904;0.06911;0.069207;0.069172;0.068716;0.067406;0.06434;0.057251;-9999;-9999;-9999;-9999;
+6500;0.063209;0.063296;0.063459;0.063724;0.064063;0.064267;0.064514;0.064948;0.065234;0.065298;0.065392;0.06538;0.064994;0.063839;0.061166;0.055079;-9999;-9999;-9999;-9999;
+7000;0.059782;0.059785;0.059985;0.06023;0.060541;0.060722;0.060941;0.061342;0.061616;0.061671;0.06176;0.061768;0.061433;0.060411;0.058098;0.05286;0.03844;-9999;-9999;-9999;
+7500;0.056486;0.056565;0.056746;0.056908;0.057196;0.057355;0.05755;0.057919;0.058177;0.058226;0.058302;0.058316;0.058028;0.057144;0.055073;0.05062;0.038924;-9999;-9999;-9999;
+8000;0.053369;0.053451;0.053606;0.053759;0.054021;0.05416;0.05433;0.054663;0.054903;0.054938;0.055007;0.055033;0.054792;0.054026;0.052229;0.048446;0.038801;-9999;-9999;-9999;
+8500;0.050425;0.050484;0.05062;0.050761;0.050998;0.051116;0.051259;0.051569;0.051794;0.051821;0.051883;0.051919;0.051717;0.051055;0.049497;0.046142;0.038211;-9999;-9999;-9999;
+9000;0.047647;0.047672;0.04779;0.047921;0.048136;0.048237;0.048357;0.048642;0.048851;0.048872;0.048926;0.048968;0.048799;0.048227;0.046876;0.044043;0.037402;-9999;-9999;-9999;
+9500;0.044964;0.045014;0.045121;0.045238;0.045432;0.045517;0.045616;0.045877;0.046071;0.046085;0.04613;0.046176;0.046035;0.045541;0.044372;0.041921;0.036413;-9999;-9999;-9999;
+10000;0.042443;0.042508;0.042604;0.042708;0.042882;0.042953;0.043033;0.043269;0.043448;0.043455;0.043491;0.043538;0.04342;0.042993;0.041981;0.03987;0.035274;-9999;-9999;-9999;
+10500;0.040111;0.040149;0.040235;0.040327;0.040481;0.040539;0.040601;0.040815;0.040978;0.040979;0.041005;0.04105;0.04095;0.040581;0.039699;0.037895;0.034033;0.02433;-9999;-9999;
+11000;0.037928;0.037933;0.038011;0.038091;0.038227;0.038273;0.038319;0.038509;0.038657;0.03865;0.038667;0.038708;0.038623;0.038297;0.037538;0.035992;0.032743;0.025105;-9999;-9999;
+11500;0.035585;0.035614;0.035683;0.035754;0.035878;0.035916;0.035957;0.036127;0.036257;0.036245;0.036255;0.036285;0.036198;0.03589;0.035166;0.033704;0.03062;0.02336;-9999;-9999;
+12000;0.033418;0.03347;0.033531;0.033595;0.033707;0.033738;0.033773;0.033924;0.034036;0.03402;0.034022;0.034042;0.033952;0.033656;0.03297;0.031588;0.028661;-9999;-9999;-9999;
+12500;0.031464;0.031486;0.031544;0.0316;0.031702;0.031726;0.031755;0.031887;0.031984;0.031962;0.031957;0.031967;0.031874;0.031588;0.030943;0.029631;0.026858;0.020542;-9999;-9999;
+13000;0.029662;0.029659;0.029712;0.029761;0.029852;0.02987;0.029893;0.030008;0.030089;0.030061;0.030049;0.03005;0.029953;0.029677;0.029065;0.027826;0.025199;-9999;-9999;-9999;
+13500;0.028002;0.027978;0.028026;0.028068;0.028149;0.02816;0.028178;0.028276;0.028342;0.028308;0.028289;0.028279;0.028179;0.027911;0.02733;0.026162;0.023676;0.017425;-9999;-9999;
+14000;0.02642;0.026436;0.026477;0.026512;0.026583;0.026588;0.0266;0.026682;0.026734;0.026694;0.026667;0.026647;0.026543;0.026283;0.025731;0.02463;0.022281;0.016698;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.12172;0.12173;0.12265;0.12333;0.12458;0.12544;0.12648;0.12757;0.12802;0.12822;0.128;0.12682;0.12359;0.11496;0.089948;-9999;-9999;-9999;-9999;-9999;
+500;0.11546;0.11548;0.11627;0.1169;0.11805;0.11883;0.11977;0.12076;0.12119;0.12139;0.12125;0.12026;0.11729;0.10994;0.088635;-9999;-9999;-9999;-9999;-9999;
+1000;0.10949;0.1095;0.11019;0.11078;0.11183;0.11255;0.11341;0.11435;0.11473;0.11491;0.11479;0.11396;0.11139;0.10499;0.086917;-9999;-9999;-9999;-9999;-9999;
+1500;0.10374;0.10396;0.10445;0.10498;0.10593;0.10658;0.10735;0.10823;0.10861;0.10879;0.1087;0.10795;0.1057;0.10016;0.084854;-9999;-9999;-9999;-9999;-9999;
+2000;0.098235;0.098562;0.099017;0.09951;0.10039;0.10098;0.10168;0.10249;0.10282;0.10297;0.1029;0.10227;0.10029;0.095431;0.082497;-9999;-9999;-9999;-9999;-9999;
+2500;0.093221;0.093408;0.093822;0.094283;0.095086;0.09563;0.096272;0.097042;0.097362;0.097508;0.097467;0.096897;0.09512;0.090851;0.079719;-9999;-9999;-9999;-9999;-9999;
+3000;0.088434;0.088484;0.088862;0.089291;0.090029;0.090527;0.091113;0.091839;0.092149;0.09219;0.092288;0.091812;0.090261;0.08648;0.076776;-9999;-9999;-9999;-9999;-9999;
+3500;0.083627;0.083787;0.08413;0.084621;0.085206;0.085662;0.0862;0.086879;0.087184;0.087232;0.087343;0.086947;0.085596;0.082291;0.073848;-9999;-9999;-9999;-9999;-9999;
+4000;0.079159;0.079307;0.079618;0.080068;0.080608;0.081024;0.081511;0.082151;0.08245;0.082507;0.082622;0.082295;0.081126;0.078237;0.070876;-9999;-9999;-9999;-9999;-9999;
+4500;0.074974;0.075107;0.07538;0.075782;0.076259;0.07662;0.077046;0.077647;0.077937;0.078001;0.078119;0.077857;0.076847;0.074303;0.067883;0.049077;-9999;-9999;-9999;-9999;
+5000;0.070994;0.071119;0.071366;0.071732;0.072174;0.072501;0.072879;0.073414;0.073671;0.073715;0.073832;0.07362;0.072747;0.070437;0.06491;0.049331;-9999;-9999;-9999;-9999;
+5500;0.067212;0.06732;0.067542;0.067877;0.068283;0.06858;0.068925;0.069425;0.069675;0.069726;0.069809;0.069614;0.068839;0.066775;0.061974;0.049116;-9999;-9999;-9999;-9999;
+6000;0.0636;0.063704;0.063904;0.06421;0.064596;0.064852;0.065158;0.065625;0.065867;0.065922;0.066002;0.065848;0.065154;0.063348;0.059244;0.048268;-9999;-9999;-9999;-9999;
+6500;0.060174;0.060261;0.06044;0.060718;0.061076;0.061302;0.061578;0.062012;0.062247;0.062308;0.062365;0.062236;0.06164;0.060068;0.056465;0.047224;-9999;-9999;-9999;-9999;
+7000;0.0569;0.056988;0.057148;0.0574;0.057727;0.057929;0.05817;0.05857;0.05879;0.058839;0.058898;0.058799;0.058288;0.056921;0.0538;0.046068;-9999;-9999;-9999;-9999;
+7500;0.053783;0.053864;0.054006;0.054233;0.054533;0.054708;0.054924;0.055293;0.055503;0.055546;0.055604;0.055531;0.055093;0.053906;0.051205;0.044691;-9999;-9999;-9999;-9999;
+8000;0.050837;0.0509;0.051025;0.051231;0.051504;0.051658;0.051848;0.052187;0.052387;0.052423;0.052478;0.052426;0.052053;0.051023;0.048688;0.043173;-9999;-9999;-9999;-9999;
+8500;0.048057;0.048059;0.0482;0.048388;0.048636;0.04877;0.048937;0.049247;0.049435;0.049464;0.049516;0.049482;0.049163;0.04827;0.046254;0.041562;-9999;-9999;-9999;-9999;
+9000;0.045431;0.045439;0.045575;0.045698;0.045926;0.046041;0.046186;0.046468;0.046645;0.046666;0.046712;0.046692;0.04642;0.045646;0.043906;0.039902;0.028731;-9999;-9999;-9999;
+9500;0.042877;0.042932;0.043047;0.043162;0.043367;0.043465;0.04359;0.043845;0.044009;0.044024;0.044063;0.044054;0.043822;0.043151;0.041649;0.038224;0.029246;-9999;-9999;-9999;
+10000;0.040518;0.040567;0.040667;0.040772;0.040956;0.041039;0.041145;0.041374;0.041525;0.041532;0.041565;0.041562;0.041364;0.040784;0.039447;0.036551;0.029298;-9999;-9999;-9999;
+10500;0.038309;0.038345;0.038433;0.038527;0.03869;0.038758;0.038846;0.03905;0.039189;0.039188;0.039212;0.039214;0.039044;0.03854;0.037387;0.034901;0.028983;-9999;-9999;-9999;
+11000;0.036246;0.036246;0.03632;0.036423;0.036565;0.036619;0.036691;0.036871;0.036996;0.036988;0.037002;0.037006;0.036858;0.036421;0.035426;0.033343;0.028447;-9999;-9999;-9999;
+11500;0.034022;0.034069;0.034145;0.034218;0.034349;0.034395;0.034456;0.034618;0.034726;0.034713;0.03472;0.034715;0.034569;0.034152;0.033211;0.031247;0.026599;-9999;-9999;-9999;
+12000;0.032025;0.032054;0.032119;0.032183;0.032302;0.032339;0.032391;0.032536;0.032628;0.032609;0.032609;0.032595;0.03245;0.032052;0.031162;0.029309;0.024912;-9999;-9999;-9999;
+12500;0.030181;0.030199;0.03025;0.030307;0.030414;0.030443;0.030486;0.030614;0.030691;0.030666;0.030658;0.030636;0.030491;0.03011;0.029269;0.027485;0.023361;-9999;-9999;-9999;
+13000;0.028461;0.028479;0.02853;0.028579;0.028674;0.028697;0.02873;0.028841;0.028904;0.028873;0.028857;0.028827;0.028682;0.028317;0.027521;0.025841;0.021945;-9999;-9999;-9999;
+13500;0.026882;0.026901;0.02695;0.026992;0.027076;0.027091;0.027115;0.027211;0.027259;0.027222;0.027198;0.02716;0.027014;0.026663;0.025912;0.024329;0.020658;-9999;-9999;-9999;
+14000;0.025445;0.025463;0.025502;0.025537;0.02561;0.025618;0.025633;0.025713;0.025747;0.025703;0.025672;0.025625;0.025478;0.025141;0.02443;0.022942;0.019498;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.11571;0.11604;0.11689;0.11742;0.11874;0.11965;0.12066;0.12173;0.12211;0.12217;0.12164;0.11989;0.11538;0.10309;0.089875;-9999;-9999;-9999;-9999;-9999;
+500;0.10977;0.10979;0.11064;0.11128;0.11249;0.11333;0.11425;0.11525;0.11559;0.11565;0.11524;0.11373;0.1098;0.09912;0.088442;-9999;-9999;-9999;-9999;-9999;
+1000;0.1041;0.10411;0.10483;0.10543;0.10655;0.10732;0.10818;0.10911;0.10943;0.10949;0.10913;0.10783;0.10442;0.095121;0.086991;-9999;-9999;-9999;-9999;-9999;
+1500;0.098622;0.098849;0.099384;0.099924;0.10093;0.10163;0.10246;0.10328;0.10358;0.10365;0.10335;0.1022;0.099219;0.091342;0.066692;-9999;-9999;-9999;-9999;-9999;
+2000;0.093389;0.093712;0.094197;0.094703;0.095633;0.096271;0.097036;0.097809;0.098068;0.098129;0.097856;0.096858;0.094239;0.087346;0.066762;-9999;-9999;-9999;-9999;-9999;
+2500;0.088611;0.088805;0.089249;0.08972;0.090575;0.091162;0.091862;0.092597;0.092852;0.09293;0.092712;0.09182;0.089358;0.083413;0.066052;-9999;-9999;-9999;-9999;-9999;
+3000;0.084051;0.084122;0.084528;0.084966;0.08575;0.08629;0.08693;0.087626;0.087874;0.087964;0.087799;0.087034;0.084883;0.079633;0.064615;-9999;-9999;-9999;-9999;-9999;
+3500;0.07949;0.079656;0.080026;0.080433;0.081152;0.081646;0.082234;0.082887;0.08313;0.083227;0.083104;0.082457;0.080581;0.07597;0.063188;-9999;-9999;-9999;-9999;-9999;
+4000;0.075263;0.075412;0.075737;0.076111;0.07677;0.077221;0.077755;0.078372;0.078604;0.078712;0.078629;0.07808;0.076443;0.072397;0.061484;-9999;-9999;-9999;-9999;-9999;
+4500;0.071415;0.071444;0.071739;0.072157;0.072663;0.073055;0.073518;0.074078;0.074303;0.07441;0.074359;0.073895;0.072458;0.068914;0.059574;-9999;-9999;-9999;-9999;-9999;
+5000;0.067532;0.067659;0.067927;0.06831;0.068775;0.069132;0.069549;0.070072;0.070263;0.070342;0.070292;0.06989;0.068617;0.065538;0.057562;-9999;-9999;-9999;-9999;-9999;
+5500;0.063848;0.064053;0.064295;0.064644;0.065073;0.065398;0.065776;0.066265;0.066448;0.066518;0.066485;0.066117;0.064991;0.062295;0.055461;0.052561;-9999;-9999;-9999;-9999;
+6000;0.060503;0.060612;0.060831;0.06115;0.061544;0.061835;0.062173;0.06263;0.062803;0.062868;0.062854;0.062546;0.061569;0.059221;0.053309;0.052382;-9999;-9999;-9999;-9999;
+6500;0.05723;0.057329;0.057525;0.057816;0.058176;0.058439;0.058744;0.059169;0.059339;0.059334;0.059399;0.059142;0.058297;0.056254;0.051137;-9999;-9999;-9999;-9999;-9999;
+7000;0.054131;0.054136;0.054384;0.054652;0.05498;0.055216;0.055489;0.055883;0.056049;0.056051;0.056114;0.055901;0.055172;0.053396;0.048961;0.036212;-9999;-9999;-9999;-9999;
+7500;0.0512;0.051204;0.051408;0.05165;0.051965;0.052161;0.052403;0.052768;0.052928;0.052936;0.052994;0.052819;0.05219;0.050588;0.0468;0.036469;-9999;-9999;-9999;-9999;
+8000;0.048427;0.048453;0.048591;0.048806;0.049094;0.049267;0.049481;0.049817;0.049971;0.049983;0.050035;0.049891;0.04935;0.047962;0.044764;0.03616;-9999;-9999;-9999;-9999;
+8500;0.045732;0.045801;0.045924;0.046117;0.046379;0.04653;0.046718;0.047026;0.047173;0.047187;0.047231;0.047114;0.046648;0.045447;0.042697;0.035477;-9999;-9999;-9999;-9999;
+9000;0.043233;0.043297;0.043403;0.043577;0.043814;0.043944;0.044109;0.04439;0.044528;0.04455;0.044578;0.044484;0.044083;0.043044;0.040681;0.034695;-9999;-9999;-9999;-9999;
+9500;0.040885;0.040935;0.041027;0.041183;0.041396;0.041507;0.041649;0.041904;0.042033;0.042048;0.042073;0.041997;0.041652;0.040752;0.038724;0.033739;-9999;-9999;-9999;-9999;
+10000;0.038683;0.038684;0.038789;0.038928;0.03912;0.039214;0.039335;0.039565;0.039684;0.039691;0.039712;0.039651;0.039353;0.038574;0.036834;0.032656;-9999;-9999;-9999;-9999;
+10500;0.036578;0.036625;0.036722;0.036812;0.036984;0.037062;0.037164;0.037368;0.037477;0.037477;0.037491;0.03744;0.037183;0.036507;0.035014;0.031493;-9999;-9999;-9999;-9999;
+11000;0.034621;0.034674;0.034755;0.034834;0.034985;0.035048;0.035131;0.035312;0.03541;0.035401;0.035408;0.035365;0.03514;0.034555;0.033274;0.030288;0.022174;-9999;-9999;-9999;
+11500;0.03258;0.032614;0.032687;0.032758;0.032897;0.03295;0.033022;0.033183;0.033266;0.033251;0.033251;0.033202;0.032984;0.032428;0.031219;0.028397;0.020804;-9999;-9999;-9999;
+12000;0.030697;0.030696;0.030761;0.030846;0.03097;0.031014;0.031074;0.031218;0.031286;0.031265;0.031258;0.031203;0.03099;0.030461;0.029321;0.026656;-9999;-9999;-9999;-9999;
+12500;0.028962;0.028961;0.029009;0.029084;0.029195;0.02923;0.02928;0.029406;0.02946;0.029433;0.029417;0.029356;0.029149;0.028646;0.027571;0.025057;-9999;-9999;-9999;-9999;
+13000;0.027337;0.027364;0.027415;0.027463;0.027563;0.027589;0.027629;0.027737;0.027778;0.027745;0.027721;0.027654;0.02745;0.026973;0.025958;0.023591;-9999;-9999;-9999;-9999;
+13500;0.02585;0.025895;0.025938;0.025979;0.026067;0.026084;0.026113;0.026205;0.026232;0.026191;0.026159;0.026085;0.025885;0.025432;0.024476;0.022259;-9999;-9999;-9999;-9999;
+14000;0.024533;0.024552;0.02459;0.024623;0.024697;0.024708;0.024726;0.024801;0.024813;0.024765;0.024724;0.024644;0.024446;0.024014;0.023116;0.021039;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10999;0.11039;0.11128;0.11183;0.11322;0.1142;0.11517;0.11617;0.11645;0.11626;0.11534;0.11284;0.10657;0.088314;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.10438;0.1044;0.10546;0.10596;0.10724;0.10814;0.10905;0.10997;0.11024;0.1101;0.10933;0.10716;0.10169;0.086036;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.099017;0.099142;0.099907;0.10037;0.10155;0.10237;0.10323;0.10411;0.10436;0.10425;0.10358;0.1017;0.096939;0.083474;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.093768;0.093785;0.094565;0.095127;0.096197;0.096943;0.097723;0.098543;0.098773;0.098699;0.098128;0.096465;0.092305;0.08072;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.088765;0.089109;0.08963;0.090146;0.091131;0.091819;0.09255;0.093325;0.093531;0.093462;0.092946;0.091477;0.087835;0.077781;0.066209;-9999;-9999;-9999;-9999;-9999;
+2500;0.084234;0.084437;0.084912;0.085394;0.0863;0.086934;0.087616;0.088345;0.088548;0.088514;0.088085;0.08679;0.083523;0.07467;0.065554;-9999;-9999;-9999;-9999;-9999;
+3000;0.079793;0.07998;0.080414;0.080863;0.081694;0.082276;0.082912;0.083599;0.0838;0.083794;0.083442;0.082317;0.079427;0.071648;0.064265;-9999;-9999;-9999;-9999;-9999;
+3500;0.075567;0.075579;0.076122;0.076546;0.07731;0.077843;0.07848;0.079084;0.079278;0.079292;0.079001;0.078029;0.075476;0.068696;0.063056;-9999;-9999;-9999;-9999;-9999;
+4000;0.071549;0.071728;0.072078;0.072452;0.073133;0.073621;0.074201;0.074776;0.074961;0.074994;0.074759;0.07389;0.071665;0.065883;0.048266;-9999;-9999;-9999;-9999;-9999;
+4500;0.06781;0.067954;0.068273;0.068619;0.06924;0.069666;0.07017;0.070694;0.070853;0.070882;0.070684;0.069937;0.068;0.06297;0.048162;-9999;-9999;-9999;-9999;-9999;
+5000;0.064254;0.064338;0.064629;0.065029;0.065522;0.065908;0.066364;0.06686;0.066997;0.067016;0.066832;0.066169;0.064397;0.060117;0.047644;-9999;-9999;-9999;-9999;-9999;
+5500;0.060773;0.060897;0.06116;0.061526;0.061978;0.062329;0.062742;0.063208;0.063343;0.063372;0.063225;0.062656;0.0611;0.057381;0.046798;-9999;-9999;-9999;-9999;-9999;
+6000;0.05751;0.057623;0.05786;0.058194;0.058609;0.058928;0.059301;0.059738;0.059869;0.059904;0.059789;0.059304;0.057952;0.054722;0.045841;-9999;-9999;-9999;-9999;-9999;
+6500;0.054419;0.054425;0.054723;0.055031;0.055411;0.055698;0.056034;0.056443;0.056569;0.056608;0.056521;0.056107;0.054934;0.052132;0.044609;-9999;-9999;-9999;-9999;-9999;
+7000;0.051493;0.051498;0.05175;0.052029;0.052376;0.052635;0.052936;0.053318;0.053437;0.053477;0.053414;0.053063;0.052046;0.049617;0.043239;-9999;-9999;-9999;-9999;-9999;
+7500;0.048678;0.048764;0.048935;0.049184;0.0495;0.049733;0.050002;0.050356;0.050469;0.050508;0.050464;0.050167;0.049287;0.047184;0.04175;-9999;-9999;-9999;-9999;-9999;
+8000;0.046022;0.046116;0.046268;0.046493;0.046779;0.046987;0.047225;0.047553;0.047659;0.047695;0.047667;0.047416;0.046656;0.044836;0.040191;0.038572;-9999;-9999;-9999;-9999;
+8500;0.043521;0.043612;0.043746;0.043949;0.044224;0.044393;0.044603;0.044904;0.045005;0.045036;0.045019;0.044806;0.04415;0.042578;0.038582;0.038127;-9999;-9999;-9999;-9999;
+9000;0.041169;0.04125;0.041368;0.041549;0.041799;0.041946;0.042129;0.042404;0.042502;0.042478;0.042515;0.042335;0.041768;0.040411;0.036977;0.026882;-9999;-9999;-9999;-9999;
+9500;0.038963;0.039027;0.03913;0.03929;0.039516;0.039642;0.039799;0.040051;0.040142;0.04012;0.040152;0.039999;0.039509;0.038339;0.035421;0.027404;-9999;-9999;-9999;-9999;
+10000;0.036896;0.036897;0.037024;0.037169;0.03737;0.037477;0.037613;0.037839;0.037923;0.037902;0.037927;0.037795;0.037372;0.036324;0.033934;0.027277;-9999;-9999;-9999;-9999;
+10500;0.034937;0.034984;0.03506;0.035183;0.035361;0.035449;0.035564;0.035765;0.035842;0.035821;0.035836;0.035722;0.035355;0.03445;0.03241;0.026959;-9999;-9999;-9999;-9999;
+11000;0.033122;0.033167;0.033231;0.033339;0.033494;0.033564;0.033656;0.033829;0.033895;0.033874;0.033877;0.033778;0.033457;0.032677;0.030934;0.026451;-9999;-9999;-9999;-9999;
+11500;0.031196;0.031232;0.031291;0.031386;0.031527;0.031586;0.031666;0.031819;0.031873;0.031844;0.031841;0.03174;0.031433;0.030695;0.029059;0.024836;-9999;-9999;-9999;-9999;
+12000;0.029421;0.029421;0.029503;0.029588;0.029715;0.029763;0.02983;0.029966;0.030008;0.02997;0.029961;0.029857;0.029562;0.028866;0.027331;0.023344;-9999;-9999;-9999;-9999;
+12500;0.027788;0.027819;0.027885;0.027934;0.028048;0.028087;0.028141;0.02826;0.028288;0.028243;0.028226;0.028119;0.027834;0.027178;0.025736;0.021986;-9999;-9999;-9999;-9999;
+13000;0.026293;0.02632;0.026377;0.026418;0.026519;0.026548;0.026589;0.026691;0.026705;0.026652;0.026628;0.026518;0.026243;0.025624;0.024271;0.020757;-9999;-9999;-9999;-9999;
+13500;0.024927;0.024951;0.024999;0.025033;0.02512;0.02514;0.025169;0.025252;0.025253;0.025193;0.025161;0.025047;0.024781;0.024195;0.02293;0.019652;-9999;-9999;-9999;-9999;
+14000;0.023687;0.023706;0.023746;0.023772;0.023845;0.023854;0.023885;0.023936;0.023925;0.023857;0.023816;0.023698;0.023439;0.022887;0.021706;0.018668;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.10471;0.10473;0.10597;0.10653;0.10794;0.10895;0.10986;0.11077;0.11094;0.11048;0.10908;0.10575;0.096811;0.079131;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.09927;0.099287;0.10025;0.10093;0.10224;0.10316;0.10401;0.10486;0.10504;0.10464;0.10345;0.10055;0.092711;0.068471;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.094051;0.094069;0.094961;0.095591;0.096817;0.097671;0.098462;0.099275;0.099439;0.099096;0.098042;0.095516;0.088667;0.067921;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.089228;0.089438;0.09017;0.090607;0.091733;0.092509;0.093235;0.093979;0.094123;0.093843;0.092926;0.0907;0.084677;0.066876;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.084539;0.084554;0.085314;0.085853;0.086896;0.087622;0.088302;0.089013;0.089157;0.088907;0.088079;0.085965;0.080783;0.06553;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.080071;0.080317;0.080825;0.081319;0.082278;0.082949;0.083594;0.084258;0.08442;0.084221;0.083508;0.081627;0.077024;0.063841;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.075873;0.075885;0.076524;0.076993;0.077875;0.078498;0.079105;0.079739;0.07989;0.079745;0.079108;0.077456;0.073434;0.062079;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.071878;0.072007;0.072432;0.072861;0.073675;0.074253;0.074821;0.075414;0.075553;0.075432;0.074902;0.073464;0.069945;0.060153;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.068029;0.06804;0.068564;0.068954;0.069678;0.070191;0.070723;0.071282;0.071417;0.071328;0.070879;0.069627;0.066558;0.05807;0.048471;-9999;-9999;-9999;-9999;-9999;
+4500;0.064374;0.064584;0.064929;0.065286;0.065948;0.06641;0.066889;0.067385;0.06749;0.06742;0.067043;0.065957;0.063279;0.055948;0.047838;-9999;-9999;-9999;-9999;-9999;
+5000;0.06101;0.06115;0.061463;0.061793;0.062399;0.062821;0.063269;0.063735;0.063837;0.063773;0.063434;0.062473;0.060131;0.053764;0.047383;-9999;-9999;-9999;-9999;-9999;
+5500;0.057815;0.057883;0.058167;0.058472;0.059025;0.059409;0.059858;0.060266;0.060362;0.060317;0.060034;0.059203;0.05716;0.051659;0.04651;-9999;-9999;-9999;-9999;-9999;
+6000;0.054663;0.05478;0.055037;0.055386;0.055823;0.056169;0.056576;0.056967;0.057059;0.057029;0.056794;0.056077;0.0543;0.049562;0.045698;-9999;-9999;-9999;-9999;-9999;
+6500;0.051681;0.051834;0.052065;0.052382;0.052783;0.053096;0.053464;0.053836;0.053923;0.053907;0.053712;0.053095;0.051551;0.047544;0.035164;-9999;-9999;-9999;-9999;-9999;
+7000;0.048941;0.04904;0.049248;0.049535;0.049902;0.050184;0.050515;0.050867;0.050949;0.050942;0.050782;0.050252;0.048863;0.045461;0.035116;-9999;-9999;-9999;-9999;-9999;
+7500;0.046352;0.046394;0.04658;0.04684;0.047174;0.047427;0.047724;0.048056;0.048132;0.048132;0.048;0.047546;0.046342;0.04341;0.034799;-9999;-9999;-9999;-9999;-9999;
+8000;0.04381;0.043892;0.044057;0.044292;0.044595;0.044821;0.045085;0.045396;0.045467;0.045471;0.045364;0.044974;0.043932;0.041407;0.034198;-9999;-9999;-9999;-9999;-9999;
+8500;0.041419;0.04153;0.041676;0.041887;0.042161;0.042362;0.042595;0.042883;0.042949;0.042955;0.042867;0.042534;0.041633;0.039461;0.033443;-9999;-9999;-9999;-9999;-9999;
+9000;0.039237;0.039304;0.039433;0.039621;0.039868;0.040045;0.04025;0.040513;0.040575;0.040581;0.040509;0.040223;0.039445;0.037578;0.032537;-9999;-9999;-9999;-9999;-9999;
+9500;0.037191;0.037212;0.037324;0.037492;0.037712;0.037867;0.038045;0.038285;0.038341;0.038345;0.038285;0.038039;0.037367;0.035765;0.031514;-9999;-9999;-9999;-9999;-9999;
+10000;0.035201;0.035255;0.035352;0.035498;0.035707;0.035827;0.035978;0.036195;0.036244;0.036244;0.036194;0.03598;0.035399;0.034026;0.030422;-9999;-9999;-9999;-9999;-9999;
+10500;0.033354;0.033432;0.033516;0.033644;0.033829;0.033926;0.03405;0.034239;0.03428;0.034275;0.034231;0.034046;0.033541;0.032364;0.029285;0.028786;-9999;-9999;-9999;-9999;
+11000;0.031693;0.031736;0.031807;0.031918;0.03208;0.03216;0.032261;0.032427;0.032458;0.03244;0.032397;0.032233;0.031796;0.030756;0.028195;0.028064;-9999;-9999;-9999;-9999;
+11500;0.029897;0.029924;0.029987;0.030085;0.030231;0.030299;0.030385;0.030531;0.030549;0.030524;0.030476;0.030314;0.029898;0.028947;0.026521;0.026365;-9999;-9999;-9999;-9999;
+12000;0.028245;0.028244;0.028312;0.028399;0.028531;0.028586;0.028657;0.028781;0.028789;0.028757;0.028704;0.028544;0.028146;0.027256;0.024984;0.024811;-9999;-9999;-9999;-9999;
+12500;0.02673;0.026732;0.026779;0.026853;0.026967;0.027012;0.027068;0.027173;0.02717;0.027132;0.027072;0.026913;0.026533;0.025698;0.023576;0.023353;-9999;-9999;-9999;-9999;
+13000;0.02531;0.025337;0.025377;0.025438;0.025537;0.025569;0.025611;0.025698;0.025684;0.025639;0.025573;0.025414;0.025051;0.024269;0.022291;-9999;-9999;-9999;-9999;-9999;
+13500;0.024021;0.024067;0.0241;0.024149;0.024231;0.024252;0.02428;0.024348;0.024324;0.024272;0.024198;0.024039;0.023691;0.022958;0.021124;0.020704;-9999;-9999;-9999;-9999;
+14000;0.022899;0.022918;0.022942;0.02298;0.023046;0.023056;0.02307;0.02312;0.023085;0.023024;0.022942;0.022783;0.022449;0.021762;0.02007;0.019728;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.099534;0.099925;0.10088;0.10143;0.10291;0.10398;0.10483;0.10564;0.10568;0.10486;0.10287;0.098222;0.084689;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.094411;0.094427;0.095583;0.096092;0.097449;0.098432;0.099221;0.099994;0.10005;0.099336;0.097614;0.093511;0.081771;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.089474;0.089491;0.090556;0.091025;0.092268;0.093172;0.093918;0.094654;0.094709;0.094091;0.092565;0.088933;0.078799;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.084926;0.085092;0.085834;0.086279;0.087429;0.088256;0.088942;0.089619;0.089661;0.089112;0.087748;0.084544;0.075762;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.080404;0.080418;0.08134;0.081751;0.082813;0.083576;0.084224;0.084872;0.084927;0.084426;0.083185;0.080328;0.072787;0.057887;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.076099;0.076374;0.077015;0.077405;0.078388;0.079093;0.079704;0.080316;0.080376;0.079958;0.078876;0.076366;0.069768;0.057042;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.072106;0.072118;0.072797;0.073266;0.07417;0.074818;0.075393;0.075974;0.076044;0.075695;0.074752;0.072555;0.066784;0.049139;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.068307;0.068438;0.068991;0.069324;0.070155;0.07075;0.071291;0.07184;0.071919;0.071628;0.07081;0.068887;0.063845;0.048746;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.064662;0.064673;0.065232;0.065627;0.066369;0.06689;0.067389;0.067907;0.067991;0.067751;0.067045;0.065364;0.060956;0.047953;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.061207;0.061401;0.061771;0.062133;0.062813;0.0633;0.063748;0.064211;0.064275;0.064059;0.06345;0.061986;0.058149;0.04698;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.05799;0.057999;0.058465;0.058811;0.059434;0.059875;0.060296;0.060733;0.060806;0.060627;0.060084;0.058796;0.055465;0.045987;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.054937;0.055034;0.055339;0.055655;0.056224;0.056626;0.057017;0.057428;0.057498;0.057357;0.056897;0.055776;0.052876;0.044757;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.051966;0.051973;0.052359;0.052655;0.053177;0.053542;0.053906;0.05429;0.054358;0.054246;0.053853;0.052823;0.050369;0.043418;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.049156;0.049295;0.049544;0.049811;0.050288;0.050619;0.050956;0.051313;0.051379;0.05129;0.050957;0.050067;0.047939;0.041973;0.035282;-9999;-9999;-9999;-9999;-9999;
+7000;0.046546;0.046649;0.046873;0.047173;0.047553;0.047851;0.048162;0.048493;0.048554;0.048485;0.048203;0.047434;0.045591;0.040448;0.034943;-9999;-9999;-9999;-9999;-9999;
+7500;0.044083;0.044146;0.044347;0.044618;0.044966;0.045233;0.045518;0.045824;0.045881;0.045827;0.045589;0.044925;0.043331;0.038939;0.034442;-9999;-9999;-9999;-9999;-9999;
+8000;0.041697;0.041782;0.041961;0.042206;0.042522;0.042762;0.04304;0.043304;0.043354;0.043312;0.043112;0.04254;0.041162;0.037413;0.033899;-9999;-9999;-9999;-9999;-9999;
+8500;0.039455;0.039554;0.039713;0.039932;0.040219;0.040432;0.040678;0.040925;0.040969;0.040936;0.040767;0.040275;0.039085;0.035886;0.033323;-9999;-9999;-9999;-9999;-9999;
+9000;0.037388;0.037458;0.037598;0.037793;0.038053;0.038241;0.038456;0.038687;0.038725;0.038696;0.038553;0.038129;0.037103;0.034419;0.026174;-9999;-9999;-9999;-9999;-9999;
+9500;0.035462;0.035496;0.035618;0.03579;0.036019;0.036184;0.036371;0.036584;0.036615;0.036589;0.036467;0.036101;0.035217;0.032918;0.026151;-9999;-9999;-9999;-9999;-9999;
+10000;0.033611;0.033667;0.033773;0.033924;0.034127;0.034266;0.034423;0.034614;0.034638;0.034613;0.034507;0.034192;0.033395;0.031461;0.025864;-9999;-9999;-9999;-9999;-9999;
+10500;0.031894;0.031963;0.032055;0.032187;0.032364;0.032483;0.032615;0.032785;0.032799;0.032768;0.032672;0.032398;0.031709;0.03005;0.025492;-9999;-9999;-9999;-9999;-9999;
+11000;0.030342;0.030385;0.030463;0.030577;0.030743;0.030831;0.030938;0.031086;0.031093;0.031059;0.030969;0.030724;0.030113;0.028709;0.024947;-9999;-9999;-9999;-9999;-9999;
+11500;0.028647;0.028689;0.028757;0.028856;0.029004;0.029076;0.029168;0.029297;0.029294;0.029253;0.02916;0.028923;0.028354;0.027038;0.023506;-9999;-9999;-9999;-9999;-9999;
+12000;0.027093;0.027132;0.027193;0.027276;0.027406;0.027464;0.02754;0.02765;0.027637;0.02759;0.027494;0.027264;0.02673;0.025502;0.022196;-9999;-9999;-9999;-9999;-9999;
+12500;0.025679;0.02571;0.025758;0.025829;0.025942;0.025987;0.026047;0.026138;0.026116;0.026062;0.025961;0.025737;0.025234;0.024094;0.021012;-9999;-9999;-9999;-9999;-9999;
+13000;0.024391;0.024388;0.024451;0.02451;0.024606;0.024639;0.024683;0.024755;0.024723;0.02466;0.024556;0.024337;0.023862;0.022806;0.019962;-9999;-9999;-9999;-9999;-9999;
+13500;0.023216;0.023236;0.023267;0.023313;0.023393;0.023413;0.023441;0.023494;0.023452;0.023381;0.023271;0.023058;0.022608;0.021632;0.019021;-9999;-9999;-9999;-9999;-9999;
+14000;0.022165;0.022179;0.022202;0.022236;0.022298;0.022305;0.022317;0.02235;0.022298;0.022218;0.022102;0.021892;0.021467;0.020569;0.018199;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.094774;0.095144;0.096138;0.096701;0.098256;0.099497;0.10033;0.10111;0.10097;0.099498;0.095901;0.087305;0.068386;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.089824;0.089838;0.090883;0.09157;0.092995;0.094096;0.094862;0.095604;0.095505;0.094307;0.091635;0.084131;0.067175;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.085081;0.085096;0.08607;0.086706;0.088014;0.089;0.089709;0.090391;0.0903;0.089239;0.087109;0.081893;0.065934;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.080526;0.080903;0.081692;0.082137;0.083347;0.084247;0.084902;0.085508;0.085417;0.084452;0.082597;0.078008;0.065006;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.076385;0.076399;0.077226;0.077779;0.078894;0.079717;0.080336;0.080895;0.080841;0.080104;0.078257;0.074282;0.062921;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.072436;0.072571;0.073126;0.073628;0.074656;0.075408;0.075994;0.076518;0.076492;0.075878;0.074248;0.070753;0.060777;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.068488;0.068499;0.069197;0.069677;0.070624;0.071318;0.071857;0.072365;0.072352;0.071746;0.070416;0.067343;0.058731;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.064741;0.064751;0.065473;0.065919;0.066793;0.067428;0.067932;0.068418;0.068419;0.067909;0.066747;0.064043;0.056581;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.061428;0.061438;0.062008;0.062406;0.063182;0.063743;0.064208;0.06467;0.064683;0.064256;0.063234;0.060867;0.054405;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.058275;0.05835;0.058731;0.059092;0.059805;0.060319;0.060743;0.061155;0.061155;0.060774;0.05988;0.057811;0.052255;0.04144;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.055108;0.055116;0.055598;0.05594;0.056594;0.057065;0.057462;0.057854;0.057865;0.05754;0.056751;0.054942;0.050142;0.040955;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.052109;0.052117;0.052629;0.052946;0.053544;0.053974;0.054346;0.054717;0.054736;0.054462;0.053775;0.052197;0.048113;0.040449;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.049407;0.049413;0.049813;0.050105;0.05065;0.051042;0.051389;0.051738;0.051763;0.051533;0.050937;0.049563;0.046024;0.034987;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.046847;0.046885;0.047144;0.047412;0.047908;0.048263;0.048586;0.048913;0.048942;0.04875;0.048236;0.04704;0.043978;0.034565;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.044275;0.04428;0.044607;0.044856;0.045306;0.045629;0.045928;0.046237;0.046269;0.046109;0.045666;0.044627;0.041984;0.033985;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.041856;0.04186;0.042216;0.042443;0.04285;0.04314;0.043416;0.0437;0.043734;0.043605;0.043225;0.042325;0.040046;0.033309;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.039694;0.039698;0.039962;0.040213;0.040535;0.040794;0.041045;0.041307;0.041339;0.04123;0.040907;0.040134;0.038168;0.032445;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.037661;0.037678;0.037844;0.038065;0.038356;0.038586;0.038813;0.039054;0.039082;0.03899;0.038713;0.038009;0.036348;0.031501;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.035642;0.035711;0.035855;0.036049;0.03631;0.036513;0.036717;0.036935;0.036958;0.036881;0.036644;0.036036;0.034594;0.030502;0.026282;-9999;-9999;-9999;-9999;-9999;
+9500;0.033766;0.033768;0.034;0.034174;0.034404;0.034578;0.034756;0.034951;0.034968;0.034901;0.034696;0.034172;0.032919;0.029482;0.025984;-9999;-9999;-9999;-9999;-9999;
+10000;0.03211;0.032165;0.032275;0.032425;0.032629;0.032779;0.032949;0.033105;0.03311;0.033045;0.032867;0.032404;0.031324;0.028443;0.025422;-9999;-9999;-9999;-9999;-9999;
+10500;0.030575;0.030576;0.030671;0.030801;0.030979;0.031106;0.031249;0.031389;0.031386;0.03132;0.031152;0.030745;0.029821;0.027405;0.025268;-9999;-9999;-9999;-9999;-9999;
+11000;0.029063;0.029106;0.029186;0.029296;0.02945;0.029554;0.029669;0.029791;0.029777;0.029711;0.02956;0.029204;0.02841;0.026382;0.024898;-9999;-9999;-9999;-9999;-9999;
+11500;0.027476;0.027521;0.027591;0.027686;0.027822;0.027912;0.028009;0.028111;0.02809;0.028018;0.027869;0.027528;0.026783;0.024894;0.023473;-9999;-9999;-9999;-9999;-9999;
+12000;0.026034;0.026069;0.026126;0.026208;0.026326;0.0264;0.026481;0.026566;0.026539;0.026462;0.026313;0.025987;0.025287;0.023533;0.022173;-9999;-9999;-9999;-9999;-9999;
+12500;0.02472;0.024741;0.024791;0.024859;0.024959;0.025019;0.025081;0.025148;0.025112;0.025034;0.024885;0.024572;0.023916;0.022294;0.020997;-9999;-9999;-9999;-9999;-9999;
+13000;0.023526;0.023539;0.02358;0.023634;0.023728;0.023761;0.023806;0.023853;0.023809;0.023724;0.023578;0.023278;0.022663;0.02117;0.019941;-9999;-9999;-9999;-9999;-9999;
+13500;0.022437;0.022457;0.022488;0.022529;0.022603;0.022622;0.022649;0.022677;0.022623;0.02253;0.022382;0.022099;0.021522;0.020158;0.019014;-9999;-9999;-9999;-9999;-9999;
+14000;0.021472;0.021468;0.021513;0.02154;0.021594;0.021599;0.021606;0.021615;0.02155;0.021449;0.021297;0.021024;0.020491;0.019256;0.018178;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.08954;0.089553;0.090946;0.091586;0.093092;0.094249;0.094721;0.09493;0.09386;0.091267;0.08567;0.073238;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.085047;0.085059;0.086186;0.086971;0.088345;0.089449;0.089922;0.090166;0.089272;0.08701;0.082102;0.071355;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.080887;0.0809;0.081905;0.08272;0.083887;0.08493;0.085388;0.085639;0.084896;0.082924;0.078657;0.069247;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.076695;0.076708;0.077679;0.078346;0.079734;0.08068;0.081146;0.081423;0.080775;0.079037;0.075277;0.067048;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.072699;0.07271;0.073532;0.074132;0.075394;0.076361;0.076945;0.077382;0.076858;0.075362;0.072079;0.064801;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.06889;0.06901;0.069596;0.070134;0.07127;0.072168;0.072723;0.073238;0.073052;0.071752;0.069019;0.062557;0.048814;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.065089;0.065099;0.065836;0.066343;0.067358;0.068187;0.068716;0.069207;0.069066;0.068123;0.065974;0.060308;0.047892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.061486;0.061806;0.062294;0.06274;0.063665;0.064415;0.064912;0.065381;0.06527;0.064455;0.062779;0.058045;0.047026;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.058368;0.058376;0.058972;0.059386;0.0602;0.060844;0.061306;0.061748;0.061672;0.060964;0.059503;0.056035;0.046114;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.0554;0.055456;0.055857;0.056228;0.056971;0.05755;0.057966;0.058354;0.058278;0.057645;0.056386;0.053371;0.045028;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.052361;0.052368;0.052873;0.053227;0.053909;0.054427;0.054824;0.055183;0.055126;0.054581;0.053488;0.050856;0.043621;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.049488;0.049494;0.050049;0.050379;0.051003;0.051472;0.05184;0.052175;0.052136;0.051663;0.050725;0.048467;0.042256;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.046953;0.046959;0.047377;0.047679;0.048249;0.04867;0.049008;0.049322;0.049301;0.048893;0.048086;0.046115;0.040781;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.044553;0.044577;0.044851;0.045122;0.045642;0.046024;0.046328;0.04662;0.046615;0.046271;0.04551;0.043852;0.039275;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.0421;0.042104;0.04245;0.042705;0.043176;0.043522;0.043801;0.044067;0.044065;0.043779;0.043126;0.041684;0.037752;0.030088;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.039795;0.039799;0.040188;0.040423;0.040849;0.041161;0.041419;0.041668;0.041664;0.04142;0.040862;0.039609;0.036231;0.029856;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.037778;0.037781;0.038062;0.038274;0.038658;0.038936;0.039174;0.039405;0.0394;0.039195;0.038715;0.037616;0.034775;0.029533;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.035885;0.035892;0.036067;0.036297;0.036599;0.036846;0.037062;0.037276;0.03727;0.037098;0.036683;0.035718;0.033285;0.025728;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.033976;0.033977;0.034197;0.034403;0.03467;0.034887;0.035081;0.035275;0.035272;0.035123;0.03475;0.033915;0.031832;0.02547;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.032202;0.032203;0.032452;0.032634;0.032873;0.03306;0.03323;0.033398;0.033389;0.033254;0.032931;0.03221;0.030426;0.025161;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.030653;0.030709;0.030827;0.030981;0.031192;0.031353;0.0315;0.031648;0.031633;0.031511;0.03123;0.030606;0.029084;0.02473;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.029222;0.02922;0.029321;0.029453;0.029636;0.029771;0.029897;0.030025;0.030005;0.029893;0.029645;0.029079;0.027809;0.024177;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.027811;0.027854;0.027937;0.02805;0.028207;0.028318;0.028421;0.028528;0.0285;0.028396;0.028174;0.027683;0.0266;0.023586;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.026345;0.026343;0.026449;0.026546;0.026683;0.026777;0.026863;0.026949;0.026915;0.026807;0.026592;0.026128;0.025119;0.022327;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.025006;0.025004;0.02509;0.025172;0.02529;0.025366;0.025435;0.025502;0.025457;0.025347;0.025137;0.024722;0.023761;0.021191;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.023778;0.023806;0.023856;0.023922;0.024021;0.02408;0.024131;0.024179;0.024132;0.02402;0.023812;0.023417;0.022524;0.020174;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.022677;0.022702;0.022742;0.022793;0.022871;0.022914;0.022946;0.022982;0.022928;0.022813;0.022608;0.022223;0.021402;0.019275;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.021698;0.021716;0.021745;0.02178;0.021837;0.021862;0.021882;0.021902;0.021838;0.021717;0.021515;0.021126;0.020372;0.018494;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.020832;0.020826;0.020862;0.020881;0.020926;0.020927;0.020932;0.020932;0.020856;0.020729;0.020529;0.02016;0.019463;0.017833;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.083482;0.083971;0.085176;0.085811;0.087364;0.088358;0.088509;0.088309;0.086607;0.082565;0.074541;0.058962;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.079368;0.079774;0.080881;0.081329;0.082904;0.083853;0.08404;0.083914;0.082455;0.078912;0.07185;0.057606;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.075512;0.075524;0.076765;0.077315;0.078759;0.079647;0.07986;0.079764;0.078478;0.075375;0.06917;0.056314;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.071823;0.072144;0.073067;0.073491;0.074828;0.075672;0.075927;0.075891;0.074775;0.072018;0.066494;0.054986;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.068299;0.068572;0.069428;0.069838;0.07105;0.071865;0.072152;0.072171;0.071226;0.068819;0.063945;0.05361;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.064876;0.064885;0.065771;0.066347;0.067423;0.068223;0.068535;0.068601;0.067717;0.065714;0.061429;0.052182;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.061629;0.061637;0.062452;0.063026;0.06397;0.064745;0.065067;0.065177;0.064437;0.062702;0.058922;0.050835;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.058535;0.058543;0.059276;0.059836;0.060689;0.061421;0.061748;0.061892;0.061282;0.059785;0.056486;0.049416;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.055542;0.055549;0.056252;0.05673;0.057573;0.05825;0.058575;0.058746;0.058252;0.056967;0.054128;0.047994;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.052584;0.052591;0.05324;0.053675;0.054534;0.05519;0.055572;0.055772;0.05536;0.054255;0.05183;0.046478;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.049797;0.049803;0.050477;0.050781;0.051567;0.052169;0.052525;0.052847;0.052659;0.051718;0.049638;0.044939;0.03495;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.047155;0.047161;0.047672;0.048041;0.048758;0.049309;0.049646;0.04995;0.04981;0.049112;0.047501;0.04337;0.03437;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.044657;0.044791;0.045117;0.045448;0.046101;0.046604;0.046921;0.047208;0.047096;0.046491;0.045267;0.04179;0.033842;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.042298;0.042414;0.042701;0.042999;0.043592;0.044048;0.044347;0.044617;0.044528;0.044004;0.042943;0.040388;0.033241;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.040075;0.04017;0.040429;0.040687;0.041225;0.041638;0.041918;0.042171;0.042102;0.041648;0.04072;0.038477;0.032429;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.037949;0.037952;0.03828;0.038519;0.038995;0.039369;0.039628;0.039866;0.039812;0.039417;0.038602;0.036658;0.031539;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.035953;0.036056;0.036267;0.03648;0.036899;0.037235;0.037476;0.037696;0.037648;0.037295;0.036592;0.034913;0.030595;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.034104;0.034106;0.034369;0.034563;0.034923;0.035221;0.035444;0.035643;0.035602;0.035299;0.034658;0.033243;0.029624;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.032383;0.032444;0.032607;0.032816;0.033092;0.033346;0.033545;0.033721;0.033687;0.033425;0.032873;0.031651;0.028603;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.030753;0.030754;0.030959;0.031147;0.031392;0.031604;0.031781;0.031938;0.031905;0.031674;0.031195;0.030147;0.02758;0.022645;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.029248;0.029314;0.029438;0.029597;0.029813;0.02999;0.030139;0.03028;0.030249;0.03005;0.029631;0.02873;0.026566;0.022581;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.027877;0.027876;0.028031;0.028171;0.028357;0.028501;0.028628;0.028748;0.028711;0.028539;0.028175;0.027401;0.025611;0.022379;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.026639;0.026637;0.02675;0.026872;0.027025;0.027142;0.027243;0.027342;0.0273;0.027146;0.026825;0.026177;0.024649;0.020094;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.025255;0.025253;0.025363;0.025466;0.025599;0.025702;0.02579;0.025871;0.025823;0.02567;0.025365;0.024743;0.023306;0.019229;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.023994;0.02399;0.024101;0.024185;0.0243;0.024392;0.024463;0.024525;0.02447;0.024318;0.024026;0.02343;0.022115;0.018488;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.02288;0.022907;0.022958;0.023027;0.023128;0.023202;0.023254;0.023297;0.023236;0.023082;0.022803;0.022246;0.021034;0.0179;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.021893;0.021893;0.02193;0.021988;0.022071;0.022126;0.022159;0.022182;0.022114;0.021958;0.02169;0.021171;0.020063;0.017479;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.020979;0.020973;0.021024;0.021059;0.021127;0.021161;0.021177;0.021178;0.021099;0.020942;0.020684;0.020201;0.019201;0.017768;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.020204;0.020216;0.020235;0.020253;0.020293;0.020305;0.0203;0.02028;0.02019;0.020031;0.019782;0.019335;0.018448;0.017272;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.077932;0.078416;0.079616;0.080677;0.082047;0.082837;0.082684;0.081954;0.079201;0.073229;0.062031;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.074027;0.074037;0.075598;0.07652;0.077826;0.078597;0.078622;0.077885;0.075508;0.070319;0.060332;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.070433;0.070896;0.071873;0.072684;0.073942;0.074694;0.074588;0.074077;0.071962;0.067396;0.058618;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.067049;0.067059;0.068299;0.069021;0.070234;0.070958;0.070913;0.070507;0.068672;0.06461;0.056796;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.063814;0.064085;0.065028;0.065425;0.066692;0.067389;0.067396;0.067081;0.065496;0.061931;0.054992;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.060595;0.060603;0.061643;0.062117;0.06331;0.063981;0.064031;0.063799;0.06243;0.059306;0.053161;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.057528;0.057869;0.058657;0.05899;0.060081;0.060726;0.060812;0.060652;0.059475;0.056751;0.051306;0.040846;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.054703;0.054709;0.055587;0.055993;0.057003;0.057621;0.057736;0.057634;0.05663;0.054263;0.049448;0.039958;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.052037;0.052043;0.052795;0.0532;0.054052;0.054657;0.054798;0.054747;0.053897;0.051845;0.047604;0.039093;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.049496;0.049502;0.05016;0.050577;0.05135;0.051911;0.052051;0.052019;0.051293;0.049531;0.045844;0.038213;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.047077;0.047082;0.047671;0.048064;0.048775;0.04931;0.049469;0.049475;0.048862;0.047333;0.044077;0.037338;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.044752;0.044756;0.045297;0.045689;0.046325;0.046828;0.047002;0.04704;0.046465;0.045199;0.042385;0.036474;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.042544;0.042702;0.043039;0.043411;0.043987;0.044462;0.044649;0.044709;0.044231;0.043131;0.040702;0.035558;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.040378;0.040382;0.040861;0.041239;0.04176;0.04221;0.042407;0.042484;0.042081;0.041138;0.039047;0.034576;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.038214;0.038217;0.038651;0.03896;0.039537;0.039995;0.040263;0.040351;0.040021;0.039217;0.037424;0.033532;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.036184;0.036186;0.036574;0.036855;0.037379;0.037782;0.03803;0.038221;0.038059;0.037371;0.035843;0.032454;0.025549;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.03429;0.034292;0.034633;0.034883;0.035353;0.035717;0.035936;0.036116;0.035986;0.03551;0.034308;0.031362;0.025241;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.032531;0.032604;0.032832;0.033048;0.033463;0.033784;0.033978;0.034145;0.034038;0.033593;0.032703;0.03027;0.024951;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.030866;0.030866;0.031143;0.031385;0.03171;0.031992;0.032165;0.032312;0.032217;0.03183;0.031061;0.029269;0.024564;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.029326;0.029417;0.029586;0.029786;0.030081;0.030328;0.030484;0.030615;0.030532;0.030194;0.02953;0.027979;0.02403;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.02791;0.028001;0.028144;0.02832;0.028578;0.028789;0.028926;0.029041;0.028966;0.02867;0.028098;0.026772;0.023514;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.02665;0.026648;0.026825;0.026982;0.027199;0.027377;0.027494;0.027591;0.027521;0.02726;0.026767;0.02565;0.022958;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.025498;0.025495;0.025637;0.025766;0.025946;0.026093;0.026188;0.026266;0.026196;0.025965;0.025539;0.024585;0.022381;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.024231;0.024228;0.024355;0.024465;0.024623;0.024747;0.024824;0.024884;0.024809;0.024587;0.024183;0.023298;0.021281;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.023086;0.023082;0.023191;0.023282;0.023417;0.023519;0.023579;0.02362;0.02354;0.023325;0.022921;0.022125;0.020299;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.02206;0.022088;0.022145;0.022213;0.022326;0.022406;0.022446;0.022469;0.022383;0.022175;0.021796;0.021061;0.019431;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.021151;0.021166;0.02121;0.021255;0.021345;0.021402;0.021423;0.021427;0.021334;0.021132;0.020776;0.020102;0.018679;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.02034;0.020334;0.020385;0.020412;0.020473;0.020506;0.020507;0.020491;0.020391;0.020193;0.019859;0.019247;0.018044;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.019639;0.019631;0.019672;0.019679;0.019709;0.019716;0.019696;0.019658;0.019549;0.019356;0.019043;0.018495;0.017532;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;0.073546;0.073552;0.074965;0.076255;0.077494;0.078341;0.077668;0.076085;0.071591;0.063149;0.050411;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;0.069769;0.069776;0.071183;0.072327;0.073498;0.074288;0.073507;0.072323;0.068381;0.060912;0.04892;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;0.066142;0.066328;0.067601;0.068734;0.069803;0.070517;0.070046;0.068827;0.065326;0.058695;0.047556;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;0.062834;0.062841;0.064165;0.065132;0.066249;0.066968;0.066569;0.065525;0.062473;0.056552;0.046229;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;0.059628;0.059634;0.060929;0.061771;0.062807;0.063481;0.063266;0.062294;0.059668;0.05446;0.044969;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;0.056576;0.056956;0.057816;0.058587;0.059562;0.060112;0.060039;0.059245;0.057003;0.052374;0.043771;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;0.053674;0.05405;0.054887;0.055564;0.056492;0.057057;0.056986;0.056308;0.054426;0.050324;0.042673;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;0.051095;0.0511;0.052094;0.052686;0.053574;0.054114;0.054082;0.053551;0.051893;0.048286;0.041588;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;0.048635;0.048852;0.049486;0.049974;0.050809;0.051319;0.051271;0.050905;0.049455;0.046303;0.040467;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;0.046235;0.04624;0.047042;0.047471;0.048253;0.048705;0.04867;0.048369;0.047134;0.044421;0.039268;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;0.043949;0.044188;0.044777;0.045087;0.045834;0.046273;0.046263;0.046034;0.044965;0.04263;0.038045;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;0.041828;0.041832;0.042501;0.042764;0.043531;0.043953;0.043967;0.043798;0.042879;0.040845;0.0368;0.029383;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;0.039815;0.039953;0.040424;0.040643;0.041338;0.041739;0.041779;0.041656;0.040872;0.039108;0.035549;0.028799;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;0.03783;0.037832;0.038361;0.038632;0.039256;0.039632;0.039696;0.039612;0.038946;0.037419;0.034292;0.028254;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;0.035956;0.035958;0.036437;0.036722;0.03726;0.037633;0.037714;0.037664;0.037102;0.035786;0.033087;0.027715;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;0.034232;0.034234;0.034638;0.034922;0.03538;0.03574;0.035835;0.035811;0.035339;0.034209;0.031885;0.027157;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;0.032622;0.032704;0.032954;0.033207;0.033621;0.033952;0.034054;0.034053;0.033659;0.032692;0.030698;0.02664;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;0.031048;0.031048;0.031353;0.0316;0.031974;0.032271;0.032374;0.032389;0.032028;0.03124;0.02954;0.026061;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;0.029584;0.02966;0.029865;0.030074;0.030432;0.030701;0.030806;0.030826;0.030526;0.029859;0.028415;0.025415;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;0.028111;0.02811;0.028367;0.028556;0.028903;0.029176;0.029311;0.029364;0.029114;0.028548;0.027326;0.024739;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;0.026766;0.026851;0.027007;0.027164;0.027461;0.027697;0.027814;0.027905;0.027765;0.027307;0.026281;0.024067;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;0.025569;0.025567;0.025758;0.025898;0.026148;0.026345;0.026453;0.02652;0.026394;0.026048;0.025287;0.023383;0.019806;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;0.024502;0.024539;0.024647;0.024782;0.024968;0.025125;0.025213;0.025263;0.025149;0.024825;0.024232;0.022919;0.019718;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;0.023312;0.023309;0.023445;0.023561;0.023721;0.023854;0.023926;0.023959;0.023843;0.023553;0.022983;0.021753;0.018973;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;0.022247;0.022243;0.022358;0.022453;0.022587;0.022698;0.022749;0.022768;0.022649;0.022374;0.021843;0.020722;0.018369;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;0.021295;0.021324;0.021383;0.021444;0.021561;0.021649;0.021681;0.021684;0.021565;0.021301;0.02081;0.019796;0.017893;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;0.020456;0.020472;0.020514;0.020556;0.020645;0.020705;0.020716;0.020705;0.020584;0.02033;0.019877;0.018975;0.017589;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;0.019713;0.019707;0.019751;0.019774;0.019831;0.019865;0.019856;0.019826;0.019701;0.019449;0.019043;0.018257;0.017475;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;0.019079;0.019092;0.019099;0.019099;0.019123;0.019127;0.019095;0.019046;0.018916;0.018678;0.018308;0.017649;0.017595;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/test-engineV2/test-engineV2.xml b/engine/test/stubs/test-engineV2/test-engineV2.xml
new file mode 100644
index 00000000..7ca7e361
--- /dev/null
+++ b/engine/test/stubs/test-engineV2/test-engineV2.xml
@@ -0,0 +1,186 @@
+<EngineDataFile>
+    <EngineDesignCondition Desc="Flight conditions for creating the bucket curve">
+        <flightAltitude Desc="Flight altitude for bucket curve" Unit="ft">35000</flightAltitude>
+        <flightMachNumber Desc="Mach number for bucket curve" Unit="-">0.8</flightMachNumber>
+        <thrust Desc="thrust at design point, ISA (value from source)" Unit="kN">17.01</thrust>
+        <SLST Desc="Sea level static thrust measured at SL, Mach 0, ISA (value from source)" Unit="kN">110.31</SLST>
+        <MCT Desc="Maximum continuous thrust measured at SL, Mach 0, ISA (value from source)" Unit="kN">98.92</MCT>
+        <FlatRatingTemp_MTO Desc="Delta ISA Temperature until the Maximum Takeoff Thrust (MTO) can be reached at sea level" Unit="K">31</FlatRatingTemp_MTO>
+        <FlatRatingTemp_MCT Desc="Delta ISA Temperature until the Maximum Continuous Thrust (MCT) can be reached at sea level" Unit="K">10</FlatRatingTemp_MCT>
+        <OPRMax_Climb Desc="Maximum overall pressure ratio in rating TO" Unit="-">32.8</OPRMax_Climb>
+    </EngineDesignCondition>
+    <MassProperties>
+        <DryMass Desc="Dry weight of the engine (value from source) excludes starter, exhaust nozzle and power source for ignition system" Unit="kg">2404</DryMass>
+    </MassProperties>
+    <Geometry Desc="Dimensions of the engine">
+        <OuterDimensions Desc="External dimensions of the engine">
+            <w_Engine Desc="Engine width" Unit="m">1.829</w_Engine>
+            <h_Engine Desc="Height of the engine" Unit="m">2.118</h_Engine>
+            <l_Engine Desc="Length of the engine" Unit="m">2.508</l_Engine>
+        </OuterDimensions>
+        <jetSpecific>
+            <FanDiameter Desc="Diameter of the fan" Unit="m">1.613</FanDiameter>
+            <turbineNoise>
+                <turbineRotorDiameter Desc="Diameter of LP Turbine rotor blades" Unit="m">0</turbineRotorDiameter>
+                <turbineInletArea Desc="Inlet area of LP turbine" Unit="m2">0</turbineInletArea>
+                <turbineRotorBladeNo Desc="No of rotor blades of LP turbine" Unit="-">0</turbineRotorBladeNo>
+            </turbineNoise>
+            <fanNoise>
+                <fanInletArea Desc="Inlet area of the fan of the engine" Unit="m2">0</fanInletArea>
+                <fanExhaustArea Desc="Inlet area of the fan of the engine" Unit="m2">0</fanExhaustArea>
+                <fanRotorBladeNo Desc="Number of fan rotor blades" Unit="-">0</fanRotorBladeNo>
+                <fanStatorVaneNo Desc="Number of stator vanes in fan section of engine" Unit="-">0</fanStatorVaneNo>
+                <fanRotorStatorSpacing Desc="The spacing between rotor blades and stator vanes, actually the ratio spacing/rotorChord (s/C)" Unit="-">0</fanRotorStatorSpacing>
+                <fanInletRotorDiameter Desc="Diameter of the fan inlet rotor" Unit="m">0</fanInletRotorDiameter>
+                <fanExhaustRotorDiameter Desc="Diameter of the fan exhaust rotor" Unit="m">0</fanExhaustRotorDiameter>
+                <fanTipDesignMach Desc="Design Mach number of the fan rotors tip" Unit="-">0</fanTipDesignMach>
+                <IGV Desc="Whether engine has Inlet Guide Vanes or not: 1:No 2:Yes" Unit="-">0</IGV>
+                <IFD Desc="Whether Inlet Flow Distortion is present or not: 1:No 2:Yes" Unit="-">0</IFD>
+                <INBB Desc="Calculate inlet broadband noise or not: 0:No 1:Yes" Unit="-">0</INBB>
+                <INTON Desc="Calculate inlet tonal noise or not: 0:No 1:Yes" Unit="-">0</INTON>
+                <DISBB Desc="Calculate exhaust broadband noise or not: 0:No 1:Yes" Unit="-">0</DISBB>
+                <DISTON Desc="Calculate exhaust tonal noise or not: 0:No 1:Yes" Unit="-">0</DISTON>
+            </fanNoise>
+            <combustorNoise>
+                <combustorEntranceArea Desc="Cross-sectional area of the entrance of combustor" Unit="m2">0</combustorEntranceArea>
+            </combustorNoise>
+            <jetNoise>
+                <flightVectorEngineAxisAngle Desc="Distance from source to observer in dimensionless form" Unit="-">0</flightVectorEngineAxisAngle>
+                <plugNozzle Desc="Boolean for whether there is a plug at nozzle or not: 1: Yes 0: No" Unit="-">0</plugNozzle>
+                <plugDiameter Desc="Diameter of plug at nozzle" Unit="m">0</plugDiameter>
+                <coaxialNozzle Desc="Boolean for whether the nozzles are coaxial or a single nozzle is present: 1: Yes 0: No" Unit="-">0</coaxialNozzle>
+                <actualPrimaryArea Desc="Geometrical area of the primary jet" Unit="m2">0</actualPrimaryArea>
+                <actualSecondaryArea Desc="Geometrical area of the secondary jet" Unit="m2">0</actualSecondaryArea>
+            </jetNoise>
+        </jetSpecific>
+        <propSpecific>
+            <PropDiameter Desc="Diameter of the propeller" Unit="m">0.0</PropDiameter>
+            <PropBlades Desc="Number of propeller blades" Unit="---">0</PropBlades>
+        </propSpecific>
+    </Geometry>
+    <Deck Desc="Engine performance map (Performance Deck). All values apply to the unscaled deck!">
+        <UnscaledSLST Desc="Unscaled Flat-Rated static thrust of the deck" Unit="kN" ValueFromSource="110.31">110.3126953</UnscaledSLST>
+        <UnscaledRatedPower Desc="Unscaled Flat-Rated static power of the deck (Shaft power)" Unit="kW">0</UnscaledRatedPower>
+        <ThrustDeckName Desc="Name of the engine deck containing the thrust values as a function of N1, Mach, and altitude" Unit="-">V2527-A5_FN.csv</ThrustDeckName>
+        <FuelDeckName Desc="Name of the engine deck containing the fuel flow values as a function of N1, Mach, and altitude" Unit="-">V2527-A5_WF.csv</FuelDeckName>
+        <CoreMassFlowDeckName Desc="Name of the engine deck containing the air mass flow values through the engine core as a function of N1, Mach, and altitude" Unit="-">V2527-A5_W25.csv</CoreMassFlowDeckName>
+        <OPRDeckName Desc="Name of the engine deck containing the OPR values (p3/p2) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_P3q2.csv</OPRDeckName>
+        <EPRDeckName Desc="Name of the engine deck containing the EPR values (p5/p2) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_P5q2.csv</EPRDeckName>
+        <TemperatureLimitDeckName Desc="Name of the engine deck containing the temperature limit values (GE uses TIT (turbine inlet temperature) where PW/IAE uses EGT (exhaust gas temperature measured at LP turbine exit) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_St5_T.csv</TemperatureLimitDeckName>
+        <EGTDeckName Desc="Name of the engine deck containing the EGT values (exhaust gas temperature at LP turbine exit) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_St5_T.csv</EGTDeckName>
+        <NLimitDeckName Desc="Name of the engine deck containing the rel. N2 values (maximum rel. rotation speed of HP shaft) as a function of N1, Mach, and altitude" Unit="-">V2527-A5_XN_HPC.csv</NLimitDeckName>
+        <WFToP3LimitDeckName Desc="Name of the engine deck containing the fraction values of fuel flow to p3 as a function of N1, Mach, and altitude" Unit="-">V2527-A5_WFqP3.csv</WFToP3LimitDeckName>
+        <N1nominal Desc="Maximum rotational speed for low pressure rotor - Limit in TCDS" Unit="1/min">5650</N1nominal>
+        <N2nominal Desc="Maximum rotational speed for high pressure rotor - Limit in TCDS" Unit="1/min">14950</N2nominal>
+        <WFToP3min Desc="Minimum fraction of fuel flow and p3 to prevent flame-out" Unit="-">45</WFToP3min>
+        <WFToP3max_MTO Desc="Maximum ratio of fuel flow to flow pressure after compression in rating TO" Unit="-">101.83</WFToP3max_MTO>
+        <WFToP3max_MCT Desc="Maximum ratio of fuel flow to flow pressure after compression in rating MCT" Unit="-">98.74</WFToP3max_MCT>
+        <TempMax_MTO Desc="Temperature limit at turbine exit (T49 or T5). Calculated by returning UnscaledSLST at TO-rating and ambient conditions at FlatRatingTemp_MTO" Unit="K">848.69</TempMax_MTO>
+        <TempMax_MCT Desc="Temperature limit at turbine exit (T49 or T5). Calculated by returning Maximum Continuous Thrust at MCT-rating and ambient conditions at FlatRatingTemp_MCT" Unit="K">772.35</TempMax_MCT>
+        <N2max Desc="Maximum relative rotational speed for high pressure rotor - Limit in TCDS" Unit="-">1.034</N2max>
+        <RelBleedMax Desc="Maximum bleed air extraction of the engine for aircraft onboard systems as a fraction of core mass flow" Unit="-">0.3</RelBleedMax>
+        <ShaftPowerExtractionMax Desc="Maximum shaft power extraction of the engine for aircraft onboard systems" Unit="kW">150</ShaftPowerExtractionMax>
+        <NfractionClimbRating Desc="Fraction of N_Climb/N_MCT; calculated such that N_Climb is about 0.9*N1 at SL, Ma=0, and ISA conditions" Unit="-">0.97</NfractionClimbRating>
+        <NfractionCruiseRating Desc="Fraction of N_Cruise/N_MCT; calculated such that Cruise thrust is met at design point (cf. EngineDesignCondition)" Unit="-">0.875</NfractionCruiseRating>
+        <St2FuelAirDeckName Unit="-">V2527-A5_St2_fa.csv</St2FuelAirDeckName>
+        <St2MachDeckName Unit="-">V2527-A5_St2_Mn.csv</St2MachDeckName>
+        <St2TotalPressureDeckName Unit="-">V2527-A5_St2_P.csv</St2TotalPressureDeckName>
+        <St2TotalTemperatureDeckName Unit="-">V2527-A5_St2_T.csv</St2TotalTemperatureDeckName>
+        <St2StaticTemperatureDeckName Unit="-">V2527-A5_St2_Ts.csv</St2StaticTemperatureDeckName>
+        <St2MassFlowDeckName Unit="-">V2527-A5_St2_W.csv</St2MassFlowDeckName>
+        <St3FuelAirDeckName Unit="-">V2527-A5_St3_fa.csv</St3FuelAirDeckName>
+        <St3MachDeckName Unit="-">V2527-A5_St3_Mn.csv</St3MachDeckName>
+        <St3TotalPressureDeckName Unit="-">V2527-A5_St3_P.csv</St3TotalPressureDeckName>
+        <St3TotalTemperatureDeckName Unit="-">V2527-A5_St3_T.csv</St3TotalTemperatureDeckName>
+        <St3StaticTemperatureDeckName Unit="-">V2527-A5_St3_Ts.csv</St3StaticTemperatureDeckName>
+        <St3MassFlowDeckName Unit="-">V2527-A5_St3_W.csv</St3MassFlowDeckName>
+        <St4FuelAirDeckName Unit="-">V2527-A5_St4_fa.csv</St4FuelAirDeckName>
+        <St4MachDeckName Unit="-">V2527-A5_St4_Mn.csv</St4MachDeckName>
+        <St4TotalPressureDeckName Unit="-">V2527-A5_St4_P.csv</St4TotalPressureDeckName>
+        <St4TotalTemperatureDeckName Unit="-">V2527-A5_St4_T.csv</St4TotalTemperatureDeckName>
+        <St4StaticTemperatureDeckName Unit="-">V2527-A5_St4_Ts.csv</St4StaticTemperatureDeckName>
+        <St4MassFlowDeckName Unit="-">V2527-A5_St4_W.csv</St4MassFlowDeckName>
+        <St5FuelAirDeckName Unit="-">V2527-A5_St5_fa.csv</St5FuelAirDeckName>
+        <St5MachDeckName Unit="-">V2527-A5_St5_Mn.csv</St5MachDeckName>
+        <St5TotalPressureDeckName Unit="-">V2527-A5_St5_P.csv</St5TotalPressureDeckName>
+        <St5TotalTemperatureDeckName Unit="-">V2527-A5_St5_T.csv</St5TotalTemperatureDeckName>
+        <St5StaticTemperatureDeckName Unit="-">V2527-A5_St5_Ts.csv</St5StaticTemperatureDeckName>
+        <St5MassFlowDeckName Unit="-">V2527-A5_St5_W.csv</St5MassFlowDeckName>
+        <St13FuelAirDeckName Unit="-">V2527-A5_St13_fa.csv</St13FuelAirDeckName>
+        <St13MachDeckName Unit="-">V2527-A5_St13_Mn.csv</St13MachDeckName>
+        <St13TotalPressureDeckName Unit="-">V2527-A5_St13_P.csv</St13TotalPressureDeckName>
+        <St13TotalTemperatureDeckName Unit="-">V2527-A5_St13_T.csv</St13TotalTemperatureDeckName>
+        <St13StaticTemperatureDeckName Unit="-">V2527-A5_St13_Ts.csv</St13StaticTemperatureDeckName>
+        <St13MassFlowDeckName Unit="-">V2527-A5_St13_W.csv</St13MassFlowDeckName>
+        <St22FuelAirDeckName Unit="-">V2527-A5_St22_fa.csv</St22FuelAirDeckName>
+        <St22MachDeckName Unit="-">V2527-A5_St22_Mn.csv</St22MachDeckName>
+        <St22TotalPressureDeckName Unit="-">V2527-A5_St22_P.csv</St22TotalPressureDeckName>
+        <St22TotalTemperatureDeckName Unit="-">V2527-A5_St22_T.csv</St22TotalTemperatureDeckName>
+        <St22StaticTemperatureDeckName Unit="-">V2527-A5_St22_Ts.csv</St22StaticTemperatureDeckName>
+        <St22MassFlowDeckName Unit="-">V2527-A5_St22_W.csv</St22MassFlowDeckName>
+        <St25FuelAirDeckName Unit="-">V2527-A5_St25_fa.csv</St25FuelAirDeckName>
+        <St25MachDeckName Unit="-">V2527-A5_St25_Mn.csv</St25MachDeckName>
+        <St25TotalPressureDeckName Unit="-">V2527-A5_St25_P.csv</St25TotalPressureDeckName>
+        <St25TotalTemperatureDeckName Unit="-">V2527-A5_St25_T.csv</St25TotalTemperatureDeckName>
+        <St25StaticTemperatureDeckName Unit="-">V2527-A5_St25_Ts.csv</St25StaticTemperatureDeckName>
+        <St25MassFlowDeckName Unit="-">V2527-A5_St25_W.csv</St25MassFlowDeckName>
+        <St45FuelAirDeckName Unit="-">V2527-A5_St45_fa.csv</St45FuelAirDeckName>
+        <St45MachDeckName Unit="-">V2527-A5_St45_Mn.csv</St45MachDeckName>
+        <St45TotalPressureDeckName Unit="-">V2527-A5_St45_P.csv</St45TotalPressureDeckName>
+        <St45TotalTemperatureDeckName Unit="-">V2527-A5_St45_T.csv</St45TotalTemperatureDeckName>
+        <St45StaticTemperatureDeckName Unit="-">V2527-A5_St45_Ts.csv</St45StaticTemperatureDeckName>
+        <St45MassFlowDeckName Unit="-">V2527-A5_St45_W.csv</St45MassFlowDeckName>
+        <St18MachDeckName Unit="-">V2527-A5_St8_Mn.csv</St18MachDeckName>
+        <St18TotalTemperatureDeckName Unit="-">V2527-A5_St8_T.csv</St18TotalTemperatureDeckName>
+        <St18JetVelocityDeckName Unit="-">V2527-A5_St8_V.csv</St18JetVelocityDeckName>
+        <St18JetDensityDeckName Unit="-">V2527-A5_St8_Rh.csv</St18JetDensityDeckName>
+        <St18MassFlowDeckName Unit="-">V2527-A5_St8_W.csv</St18MassFlowDeckName>
+        <St8MachDeckName Unit="-">V2527-A5_St8_Mn.csv</St8MachDeckName>
+        <St8TotalTemperatureDeckName Unit="-">V2527-A5_St8_T.csv</St8TotalTemperatureDeckName>
+        <St8JetVelocityDeckName Unit="-">V2527-A5_St8_V.csv</St8JetVelocityDeckName>
+        <St8JetDensityDeckName Unit="-">V2527-A5_St8_Rh.csv</St8JetDensityDeckName>
+        <St8MassFlowDeckName Unit="-">V2527-A5_St8_W.csv</St8MassFlowDeckName>
+        <SNoxDeckName Unit="-">V2527-A5_sNOx.csv</SNoxDeckName>
+    </Deck>
+    <EmissionFactors Desc="Data for the emission calculation">
+        <NOxFactor Desc="Combustion chamber factor NOx Severity Parameter * x = EI_NOx 23 - 32">32</NOxFactor>
+        <CO2Factor Desc="Stoichiometric factor for the combustion of the fuel" Unit="kg/kgFuel">3.149</CO2Factor>
+        <H2OFactor Desc="Stoichiometric factor for the combustion of the fuel" Unit="kg/kgFuel">1.2</H2OFactor>
+        <SO2Factor Desc="Stoichiometric factor for fuel combustion" Unit="kg/kgFuel">0.84e-3</SO2Factor>
+        <PM10Factor Desc="Factor for the combustion of the fuel" Unit="kg/kgFuel">0.025e-3</PM10Factor>
+    </EmissionFactors>
+    <ICAOEngineData>
+        <LTOFuelFlow Desc=" Fuel Flow according to ICAO Aircraft Engine Emissions Databank for LTO phases">
+            <Taxi Desc="Fuel Flow for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/s">0.128</Taxi>
+            <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/s">1.053</Takeoff>
+            <ClimbOut Desc="EI Index for ClimbOut phase according to ICAO" Unit="kg/s">0.88</ClimbOut>
+            <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/s">0.319</Approach>
+        </LTOFuelFlow>
+        <LTOEmissions Desc="EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+            <HCFactor Desc=" EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="EI Index for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/kgFuel">0.105e-3</Taxi>
+                <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/kgFuel">0.041e-3</Takeoff>
+                <ClimbOut Desc="EI Index for ClimbOut Phase according to ICAO" Unit="kg/kgFuel">0.041e-3</ClimbOut>
+                <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/kgFuel">0.061e-3</Approach>
+            </HCFactor>
+            <COFactor Desc=" EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="EI Index for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/kgFuel">12.43e-3</Taxi>
+                <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/kgFuel">0.53e-3</Takeoff>
+                <ClimbOut Desc="EI Index for ClimbOut Phase according to ICAO" Unit="kg/kgFuel">0.62e-3</ClimbOut>
+                <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/kgFuel">2.44e-3</Approach>
+            </COFactor>
+            <NOxFactor Desc=" EI Index according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="EI Index for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="kg/kgFuel">4.7e-3</Taxi>
+                <Takeoff Desc="EI Index for Takeoff Phase according to ICAO" Unit="kg/kgFuel">26.5e-3</Takeoff>
+                <ClimbOut Desc="EI Index for ClimbOut Phase according to ICAO" Unit="kg/kgFuel">22.3e-3</ClimbOut>
+                <Approach Desc="EI Index for Approach Phase according to ICAO" Unit="kg/kgFuel">8.9e-3</Approach>
+            </NOxFactor>
+            <SNFactor Desc=" Smoke Number according to ICAO Aircraft Engine Emissions Database for LTO phases">
+                <Taxi Desc="Smoke Number for Taxi Phase according to ICAO (Idle, 7% Thrust Setting)" Unit="-">2.6</Taxi>
+                <Takeoff Desc="Smoke Number for Takeoff Phase according to ICAO" Unit="-">5.2</Takeoff>
+                <ClimbOut Desc="Smoke Number for ClimbOut Phase according to ICAO" Unit="-">7.2</ClimbOut>
+                <Approach Desc="Smoke Number for Approach Phase according to ICAO" Unit="-">4.2</Approach>
+            </SNFactor>
+        </LTOEmissions>
+    </ICAOEngineData>
+</EngineDataFile>
diff --git a/engine/test/stubs/test-engineV2/thrust.csv b/engine/test/stubs/test-engineV2/thrust.csv
new file mode 100644
index 00000000..82cde459
--- /dev/null
+++ b/engine/test/stubs/test-engineV2/thrust.csv
@@ -0,0 +1,870 @@
+1.1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1255.2;1255.5;1255.8;1256.5;1257.5;1259.1;1261.3;1264.1;1267.5;1271.7;1276.9;1282.7;1289.3;1296.6;1304.6;1313.2;1322.4;1331.9;1341.5;1350.9;
+500;1250.4;1250.8;1251.2;1251.8;1252.9;1254.3;1256.3;1258.8;1262;1265.9;1270.6;1276.1;1282.4;1289.5;1297.3;1305.8;1314.9;1324.5;1334.4;1344.2;
+1000;1245.6;1246;1246.5;1247.2;1248.3;1249.8;1251.8;1254.1;1257;1260.6;1264.7;1269.8;1275.7;1282.5;1290;1298.4;1307.3;1316.9;1326.9;1337.1;
+1500;1240.8;1241;1241.5;1242.3;1243.5;1245.2;1247.2;1249.6;1252.5;1255.8;1259.8;1264.2;1269.4;1275.7;1282.9;1291;1299.8;1309.3;1319.3;1329.7;
+2000;1235.3;1235.5;1236.1;1237;1238.4;1240.2;1242.4;1245;1248;1251.2;1255;1259.2;1263.9;1269.4;1276.1;1283.8;1292.3;1301.6;1311.5;1322;
+2500;1229.3;1229.6;1230.2;1231.3;1232.9;1234.9;1237.2;1240;1243.2;1246.6;1250.2;1254.4;1258.9;1263.9;1269.8;1276.8;1284.9;1294;1303.8;1314.1;
+3000;1222.8;1223.1;1223.8;1225;1226.8;1229;1231.6;1234.7;1238.1;1241.7;1245.5;1249.8;1254.1;1258.9;1264.2;1270.5;1278;1286.5;1296;1306.2;
+3500;1215.9;1216.2;1217;1218.3;1220.2;1222.5;1225.4;1228.7;1232.4;1236.3;1240.4;1245;1249.4;1254;1259.1;1264.8;1271.6;1279.5;1288.3;1298.3;
+4000;1208.7;1209;1209.8;1211.2;1213.2;1215.6;1218.7;1222.2;1226.2;1230.5;1234.9;1239.8;1244.5;1249.3;1254.2;1259.6;1265.7;1272.9;1281.3;1290.6;
+4500;1201.5;1202.1;1203;1204.3;1206.3;1208.7;1211.7;1215.3;1219.4;1224;1229.1;1234.1;1239.2;1244.3;1249.4;1254.7;1260.4;1266.8;1274.5;1283.4;
+5000;1194.2;1194.9;1195.8;1197.3;1199.3;1201.9;1205;1208.7;1212.7;1217.2;1222.4;1227.8;1233.4;1238.9;1244.3;1249.8;1255.3;1261.4;1268.2;1276.4;
+5500;1187;1187.3;1188.2;1189.7;1191.9;1194.6;1197.9;1201.7;1206;1210.7;1215.9;1221.3;1226.9;1233;1238.8;1244.6;1250.4;1256.2;1262.6;1269.9;
+6000;1179.7;1179.8;1180.2;1181.8;1184;1186.9;1190.3;1194.4;1198.8;1203.7;1209.2;1214.8;1220.7;1226.7;1232.8;1239.1;1245.2;1251.2;1257.3;1264;
+6500;1172.2;1172.4;1173.2;1174;1176.1;1178.9;1182.3;1186.5;1191.2;1196.5;1202.1;1207.9;1214.1;1220.4;1226.9;1233.3;1239.6;1246;1252.2;1258.6;
+7000;1166.2;1166.5;1167.2;1168.5;1170.2;1172.5;1174.9;1178.9;1183.4;1188.6;1194.4;1200.6;1207;1213.7;1220.5;1227.3;1234.1;1240.5;1246.9;1253.4;
+7500;1160.2;1160.5;1161.3;1162.5;1164.3;1166.5;1169.3;1172.6;1176;1181.3;1186.9;1192.9;1199.6;1206.5;1213.6;1220.8;1228.1;1235.1;1241.8;1248.1;
+8000;1154.3;1154.4;1155.3;1156.5;1158.3;1160.6;1163.3;1166.6;1170.3;1174.6;1179.5;1185.7;1192.3;1199.1;1206.3;1213.9;1221.5;1229.1;1236.4;1243.2;
+8500;1148.3;1148.4;1149.3;1150.5;1152.3;1154.5;1157.3;1160.5;1164.2;1168.4;1173.2;1178;1184.9;1192;1199.3;1206.7;1214.5;1222.5;1230.4;1237.9;
+9000;1142.6;1142.7;1143.4;1144.6;1146.4;1148.6;1151.3;1154.4;1158.1;1162.3;1167;1172.2;1177.8;1184.4;1192.1;1199.9;1207.7;1215.4;1223.7;1231.8;
+9500;1136.9;1136.7;1137.6;1138.7;1140.4;1142.6;1145.3;1148.4;1152.1;1156.2;1160.9;1165.9;1171.5;1177.5;1184.3;1192.5;1200.8;1208.9;1217;1225.1;
+10000;1131.1;1131.3;1132;1133.1;1134.7;1136.7;1139.3;1142.6;1146.2;1150.3;1154.8;1159.8;1165.2;1171.1;1177.5;1184.6;1193.3;1201.9;1210.4;1218.8;
+10500;1125.3;1125.9;1126.6;1127.7;1129.3;1131.2;1133.7;1136.5;1140.2;1144.2;1148.7;1153.7;1159.1;1164.9;1171.1;1177.9;1185.2;1194.3;1203.4;1212.2;
+11000;1120.4;1120.6;1121.3;1122.3;1123.9;1125.8;1128.2;1131;1134.3;1138.1;1142.6;1147.5;1152.9;1158.7;1164.9;1171.5;1178.6;1186.2;1195.7;1205;
+11500;1123.9;1124.2;1124.8;1125.9;1127.5;1129.4;1131.8;1134.6;1137.9;1141.6;1146.3;1151.2;1156.6;1162.3;1168.6;1175.2;1182.3;1189.9;1199.3;1208.5;
+12000;1127.4;1127.8;1128.5;1129.5;1131.1;1133;1135.4;1138.3;1141.5;1145.3;1149.9;1154.9;1160.2;1166;1172.3;1179;1186.1;1193.7;1203.1;1212.3;
+12500;1131.2;1131.4;1132.1;1133.2;1134.7;1136.7;1139.1;1141.9;1145.2;1148.9;1153.6;1158.6;1164;1169.8;1176;1182.7;1189.9;1197.5;1206.9;1216.2;
+13000;1135;1135.1;1135.8;1136.9;1138.4;1140.4;1142.8;1145.6;1148.9;1152.6;1157.3;1162.3;1167.7;1173.5;1179.8;1186.5;1193.7;1201.4;1210.7;1220;
+13500;1138.6;1138.8;1139.5;1140.6;1142.1;1144.1;1146.5;1149.4;1152.7;1156.4;1161.1;1166.1;1171.5;1177.3;1183.6;1190.4;1197.6;1205.2;1214.6;1223.9;
+14000;1142.6;1142.8;1143.5;1144.5;1146.1;1148;1150.4;1153.2;1156.5;1160.2;1164.8;1169.8;1175.3;1181.2;1187.5;1194.2;1201.4;1209.1;1218.5;1227.9;
+1.05;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1200.2;1200.4;1200.9;1201.7;1203.1;1204.9;1207.3;1210.3;1214.2;1218.8;1224.2;1230;1236;1242.4;1249.2;1256.5;1264.3;1272.8;1282.1;1292.4;
+500;1193.4;1193.4;1193.9;1194.8;1196;1197.8;1200.1;1203.1;1207.1;1212;1217.4;1223.4;1229.7;1236.2;1243;1250.2;1257.9;1266.1;1275.1;1285;
+1000;1186.3;1186.5;1187;1187.9;1189.1;1190.8;1193.2;1196.3;1200.2;1204.8;1210.4;1216.5;1223;1229.8;1236.7;1243.9;1251.5;1259.6;1268.3;1277.8;
+1500;1179.2;1179.8;1180.3;1181.1;1182.3;1184;1186.3;1189.4;1193.3;1198.2;1203.5;1209.5;1216;1223;1230.2;1237.5;1245.1;1253.2;1261.6;1270.8;
+2000;1173.2;1173.3;1173.7;1174.5;1175.7;1177.3;1179.6;1182.6;1186.5;1191.3;1196.7;1202.7;1209.1;1216;1223.4;1231;1238.7;1246.7;1255.1;1264;
+2500;1167;1167.1;1167.6;1168.3;1169.4;1170.9;1173.1;1176.1;1179.8;1184.5;1189.8;1195.7;1202.2;1209.1;1216.5;1224.1;1232.1;1240.2;1248.5;1257.3;
+3000;1160.9;1161.5;1161.9;1162.5;1163.5;1164.9;1167;1169.9;1173.4;1177.7;1183;1188.8;1195.2;1202.1;1209.5;1217.3;1225.3;1233.5;1241.9;1250.6;
+3500;1156.1;1156.3;1156.6;1157.2;1158.1;1159.5;1161.4;1164;1167.3;1171.3;1176.4;1181.9;1188.1;1195;1202.4;1210.3;1218.5;1226.9;1235.2;1243.9;
+4000;1151.5;1151.6;1151.9;1152.4;1153.2;1154.4;1156.2;1158.6;1161.6;1165.3;1170.1;1175.3;1181.2;1187.9;1195.2;1203.1;1211.4;1220;1228.7;1237.2;
+4500;1146.8;1147.4;1147.7;1148.2;1149.1;1150.3;1151.9;1153.9;1156.5;1159.8;1164.1;1168.9;1174.6;1180.9;1188;1195.8;1204.1;1212.8;1221.8;1230.7;
+5000;1143;1143.1;1143.4;1144;1145;1146.3;1148;1150;1152.4;1155.3;1158.7;1163;1168.2;1174.2;1181;1188.5;1196.7;1205.4;1214.5;1223.8;
+5500;1138.3;1138.4;1138.8;1139.6;1140.6;1142.1;1143.9;1146;1148.5;1151.3;1154.5;1158.3;1162.6;1167.8;1174.1;1181.3;1189.3;1198;1207.1;1216.5;
+6000;1133.2;1133.4;1133.9;1134.7;1135.9;1137.5;1139.5;1141.8;1144.4;1147.3;1150.5;1154.1;1158;1162.5;1168;1174.4;1182;1190.4;1199.5;1209;
+6500;1128.2;1128.8;1129.3;1130.2;1131.4;1133;1134.9;1137.2;1140.1;1143.1;1146.4;1149.9;1153.8;1157.9;1162.8;1168.5;1175.2;1183;1191.8;1201.3;
+7000;1123.6;1123.8;1124.3;1125.3;1126.7;1128.5;1130.6;1133.2;1135.9;1138.9;1142.1;1145.9;1149.7;1153.7;1158.1;1163.2;1169.3;1176.4;1184.4;1193.5;
+7500;1118.2;1118.4;1119;1120.1;1121.6;1123.5;1125.8;1128.6;1131.6;1134.9;1138.3;1142;1145.6;1149.6;1153.9;1158.5;1163.9;1170.3;1177.8;1186.2;
+8000;1112.4;1112.7;1113.4;1114.5;1116.1;1118.1;1120.6;1123.5;1126.8;1130.3;1134;1138.1;1142;1145.9;1149.8;1154.2;1159.1;1164.8;1171.6;1179.4;
+8500;1106.5;1106.6;1107.3;1108.5;1110.1;1112.3;1114.9;1118;1121.5;1125.2;1129.2;1133.6;1137.9;1142.2;1146.5;1150.6;1154.8;1159.9;1165.9;1173.1;
+9000;1099.9;1100.2;1101;1102.2;1104;1106.2;1109;1112.2;1115.7;1119.7;1124.1;1128.6;1133.3;1138;1142.6;1147.2;1151.6;1156;1160.9;1167.2;
+9500;1093.2;1093.3;1094.1;1095.4;1097.3;1099.7;1102.6;1106;1109.8;1113.9;1118.5;1123.2;1128.1;1133.2;1138.3;1143.3;1148.1;1152.7;1157.3;1162.4;
+10000;1087.1;1087.3;1088;1089.1;1090.7;1092.7;1095.8;1099.4;1103.3;1107.8;1112.5;1117.4;1122.6;1127.9;1133.4;1138.9;1144.1;1149.2;1154;1158.8;
+10500;1080.9;1081.5;1082.2;1083.3;1084.9;1086.9;1089.5;1092.1;1096.3;1101.1;1106;1111.2;1116.7;1122.3;1128.1;1133.8;1139.6;1145.1;1150.5;1155.4;
+11000;1075.5;1075.7;1076.4;1077.5;1079.1;1081.1;1083.7;1086.6;1090.1;1093.6;1099;1104.5;1110.3;1116.2;1122.3;1128.5;1134.6;1140.6;1146.4;1151.9;
+11500;1078.9;1079.2;1079.9;1081;1082.6;1084.6;1087.2;1090.1;1093.6;1097.2;1102.5;1108;1113.8;1119.8;1125.9;1132.1;1138.2;1144.2;1149.9;1155.3;
+12000;1082.3;1082.7;1083.4;1084.5;1086.1;1088.1;1090.7;1093.7;1097.1;1100.7;1106.1;1111.6;1117.4;1123.4;1129.5;1135.7;1141.8;1147.9;1153.6;1158.9;
+12500;1086;1086.2;1086.9;1088;1089.6;1091.7;1094.3;1097.3;1100.7;1104.3;1109.6;1115.2;1121;1127;1133.1;1139.3;1145.5;1151.6;1157.3;1162.6;
+13000;1089.7;1089.8;1090.5;1091.6;1093.2;1095.3;1097.8;1100.8;1104.3;1107.8;1113.2;1118.8;1124.6;1130.7;1136.8;1143;1149.2;1155.3;1161;1166.4;
+13500;1093.2;1093.5;1094.1;1095.3;1096.8;1098.9;1101.4;1104.4;1107.9;1111.4;1116.8;1122.4;1128.3;1134.3;1140.5;1146.7;1152.9;1159;1164.7;1170.1;
+14000;1097.1;1097.4;1098;1099.2;1100.7;1102.8;1105.3;1108.2;1111.6;1115.2;1120.5;1126.1;1132;1138;1144.2;1150.5;1156.7;1162.8;1168.5;1173.9;
+1;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1150.6;1150.7;1150.9;1151.4;1152.3;1153.4;1154.9;1156.9;1159.5;1163.2;1167.8;1173.3;1179.7;1186.8;1194.5;1202.7;1211.3;1220.5;1230.3;1240.6;
+500;1144.7;1144.8;1145.1;1145.6;1146.4;1147.5;1148.9;1150.7;1153.3;1156.9;1161.2;1166.6;1172.8;1179.8;1187.4;1195.6;1204.2;1213.3;1223;1233.2;
+1000;1138.8;1139;1139.3;1139.8;1140.6;1141.7;1143.1;1145;1147.4;1150.6;1154.9;1160;1166;1172.9;1180.4;1188.5;1197.1;1206.2;1215.7;1225.8;
+1500;1132.8;1133;1133.3;1133.9;1134.7;1135.8;1137.3;1139.3;1141.7;1144.9;1149;1153.9;1159.5;1166;1173.4;1181.3;1189.9;1198.9;1208.4;1218.4;
+2000;1126.6;1126.7;1127.1;1127.7;1128.6;1129.9;1131.4;1133.5;1136;1139.2;1143.4;1148.1;1153.5;1159.5;1166.4;1174.2;1182.6;1191.6;1201.1;1211;
+2500;1120.4;1120.4;1120.6;1121.3;1122.3;1123.6;1125.4;1127.5;1130.2;1133.5;1137.7;1142.4;1147.7;1153.6;1160;1167.1;1175.4;1184.3;1193.7;1203.6;
+3000;1113.2;1113.3;1113.7;1114.5;1115.6;1117;1118.9;1121.3;1124.2;1127.7;1132;1136.8;1142;1147.7;1153.9;1160.8;1168.4;1176.9;1186.2;1196.1;
+3500;1106;1106.3;1106.8;1107.5;1108.7;1110.2;1112.2;1114.8;1117.9;1121.7;1126.2;1131;1136.3;1141.9;1148;1154.6;1161.9;1169.9;1178.8;1188.5;
+4000;1099.6;1099.8;1100.2;1100.9;1102;1103.5;1105.4;1107.9;1111.3;1115.4;1120.1;1125.1;1130.5;1136.1;1142.2;1148.6;1155.6;1163.3;1171.8;1181;
+4500;1093.2;1093.3;1093.6;1094.4;1095.4;1096.9;1099;1101.6;1104.8;1108.9;1113.6;1118.9;1124.5;1130.2;1136.3;1142.7;1149.5;1156.9;1165;1173.9;
+5000;1086.6;1086.7;1087.1;1087.8;1088.9;1090.4;1092.4;1095.1;1098.5;1102.6;1107.4;1112.7;1118.2;1124.2;1130.3;1136.7;1143.5;1150.7;1158.4;1166.9;
+5500;1080;1080.4;1080.8;1081.5;1082.5;1084;1086;1088.6;1092;1096.2;1101.1;1106.4;1112.1;1118.1;1124.2;1130.7;1137.5;1144.5;1152.1;1160.2;
+6000;1074.9;1075;1075.3;1075.8;1076.7;1077.9;1079.7;1082.3;1085.7;1089.7;1094.7;1100;1105.8;1111.9;1118.3;1124.8;1131.3;1138.4;1145.8;1153.7;
+6500;1070.2;1070.3;1070.6;1071;1071.8;1072.9;1074.6;1076.8;1079.8;1083.5;1088.2;1093.5;1099.3;1105.5;1112;1118.8;1125.6;1132.5;1139.6;1147.4;
+7000;1066.2;1066.2;1066.5;1066.8;1067.5;1068.5;1070;1072.1;1074.9;1078.3;1082.6;1087.3;1092.7;1098.9;1105.5;1112.4;1119.6;1126.8;1133.9;1141.2;
+7500;1062.1;1062.7;1062.9;1063.2;1063.8;1064.7;1066;1067.9;1070.4;1073.5;1077.4;1081.9;1086.9;1092.6;1098.8;1105.8;1113.1;1120.6;1128.1;1135.5;
+8000;1059.3;1059.4;1059.6;1059.9;1060.5;1061.4;1062.7;1064.3;1066.5;1069.2;1072.8;1076.8;1081.5;1086.9;1092.9;1099.5;1106.5;1114.1;1122;1129.6;
+8500;1056.2;1056.1;1056.4;1056.8;1057.4;1058.3;1059.6;1061.2;1063.2;1065.6;1068.5;1072.2;1076.5;1081.5;1087.2;1093.5;1100.5;1107.8;1115.3;1123.5;
+9000;1052.6;1052.6;1052.9;1053.5;1054.2;1055.3;1056.7;1058.3;1060.2;1062.5;1065;1068.3;1072;1076.5;1081.7;1087.7;1094.4;1101.7;1109.3;1117.2;
+9500;1048.6;1048.8;1049.1;1049.7;1050.7;1052;1053.5;1055.3;1057.4;1059.7;1062.1;1064.8;1068.1;1072;1076.7;1082.2;1088.5;1095.5;1103.1;1111.1;
+10000;1044.2;1044.4;1044.8;1045.6;1046.7;1048.1;1049.8;1051.9;1054.2;1056.7;1059.3;1061.9;1065.1;1068.4;1072.3;1077.2;1082.9;1089.6;1096.9;1104.8;
+10500;1039.4;1039.5;1040;1040.9;1042.1;1043.7;1045.7;1048;1050.5;1053.2;1056.1;1059;1062.2;1065.3;1068.8;1072.9;1077.9;1083.9;1090.8;1098.5;
+11000;1034.1;1034.3;1034.9;1035.8;1037.2;1038.9;1041;1043.5;1046.3;1049.3;1052.6;1055.9;1059.1;1062.4;1065.8;1069.4;1073.7;1078.9;1085.1;1092.3;
+11500;1037.4;1037.7;1038.2;1039.2;1040.5;1042.3;1044.4;1046.8;1049.7;1052.7;1056;1059.3;1062.6;1065.8;1069.2;1072.9;1077.1;1082.4;1088.6;1095.7;
+12000;1040.7;1041;1041.6;1042.6;1043.9;1045.7;1047.8;1050.3;1053.1;1056.1;1059.4;1062.7;1066;1069.3;1072.6;1076.3;1080.6;1085.9;1092.1;1099.3;
+12500;1044.3;1044.5;1045;1046;1047.3;1049.1;1051.2;1053.7;1056.5;1059.5;1062.9;1066.2;1069.5;1072.7;1076.1;1079.8;1084.1;1089.4;1095.7;1102.9;
+13000;1047.8;1047.9;1048.5;1049.4;1050.8;1052.5;1054.7;1057.2;1060;1063;1066.4;1069.7;1073;1076.2;1079.6;1083.3;1087.7;1093;1099.3;1106.5;
+13500;1051.3;1051.5;1052.1;1053;1054.4;1056.1;1058.2;1060.7;1063.5;1066.5;1069.9;1073.2;1076.5;1079.8;1083.2;1086.9;1091.2;1096.6;1102.9;1110.1;
+14000;1055.2;1055.3;1055.9;1056.9;1058.2;1059.9;1062;1064.5;1067.2;1070.2;1073.5;1076.7;1080;1083.3;1086.7;1090.5;1094.9;1100.2;1106.6;1113.8;
+0.95;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1101.4;1101.5;1101.9;1102.5;1103.5;1104.8;1106.6;1109;1111.8;1115.3;1119.4;1124.4;1130.2;1137.1;1144.7;1153;1162;1171.4;1181.4;1191.7;
+500;1095;1095;1095.4;1096;1096.9;1098.1;1099.8;1102;1104.9;1108.4;1112.5;1117.4;1123.2;1130;1137.6;1145.8;1154.7;1164;1173.9;1184.3;
+1000;1088.5;1088.5;1088.9;1089.4;1090.3;1091.5;1093.2;1095.4;1098.2;1101.6;1105.6;1110.6;1116.3;1123;1130.5;1138.6;1147.4;1156.6;1166.4;1176.8;
+1500;1082;1082.1;1082.4;1082.9;1083.8;1085;1086.6;1088.8;1091.6;1095;1099.1;1103.8;1109.4;1116.1;1123.4;1131.4;1140;1149.2;1158.9;1169.2;
+2000;1075.4;1075.6;1075.9;1076.5;1077.3;1078.4;1080;1082.2;1085;1088.4;1092.6;1097.4;1102.9;1109.3;1116.4;1124.2;1132.7;1141.8;1151.4;1161.6;
+2500;1069.2;1069.3;1069.6;1070.1;1070.9;1072;1073.5;1075.7;1078.5;1081.9;1086;1090.9;1096.5;1102.8;1109.7;1117.1;1125.4;1134.4;1143.9;1153.9;
+3000;1063.1;1063.2;1063.4;1063.9;1064.6;1065.6;1067.1;1069.2;1071.9;1075.3;1079.5;1084.4;1090;1096.3;1103.2;1110.5;1118.4;1127;1136.4;1146.3;
+3500;1057.4;1057.5;1057.7;1058.1;1058.7;1059.6;1060.8;1062.8;1065.5;1068.8;1073;1077.9;1083.5;1089.8;1096.6;1103.9;1111.6;1119.9;1128.8;1138.6;
+4000;1051.8;1052.2;1052.4;1052.8;1053.3;1054.2;1055.3;1057;1059.4;1062.4;1066.5;1071.4;1077;1083.2;1090;1097.3;1104.9;1113.1;1121.8;1131.1;
+4500;1046.8;1046.9;1047.1;1047.5;1048;1048.9;1050;1051.6;1053.8;1056.7;1060.5;1065;1070.5;1076.7;1083.4;1090.6;1098.2;1106.3;1114.8;1123.9;
+5000;1041.8;1041.9;1041.8;1042.2;1042.8;1043.6;1044.7;1046.2;1048.5;1051.3;1054.9;1059.3;1064.4;1070.3;1076.8;1083.9;1091.4;1099.5;1107.9;1116.8;
+5500;1036.8;1036.8;1037;1037.4;1037.9;1038.7;1039.7;1041;1043.2;1046;1049.4;1053.8;1058.7;1064.3;1070.5;1077.3;1084.7;1092.6;1101;1109.8;
+6000;1031.9;1032;1032.2;1032.6;1033.2;1034;1035.1;1036.5;1038.5;1041;1044.2;1048.4;1053.1;1058.5;1064.4;1071.1;1078.2;1085.8;1094;1102.8;
+6500;1026.6;1026.7;1027;1027.5;1028.2;1029.1;1030.4;1031.9;1034;1036.6;1039.8;1043.7;1048;1052.9;1058.6;1064.9;1071.9;1079.4;1087.3;1095.7;
+7000;1021.4;1021.4;1021.5;1022;1022.8;1023.9;1025.3;1027.1;1029.3;1032;1035.5;1039.3;1043.5;1048.2;1053.3;1059;1065.7;1073;1080.8;1089.1;
+7500;1015.3;1015.4;1015.7;1016.3;1017.1;1018.3;1019.8;1021.8;1024.3;1027.3;1031;1034.9;1039.1;1043.7;1048.6;1054;1059.9;1066.7;1074.4;1082.5;
+8000;1009.5;1009.6;1010;1010.5;1011.3;1012.5;1014.1;1016.3;1018.9;1022.2;1026.2;1030.3;1034.6;1039.2;1044;1049.3;1054.9;1061.2;1068.1;1076;
+8500;1003.9;1004;1004.3;1004.8;1005.7;1006.9;1008.5;1010.6;1013.4;1016.8;1020.9;1025.3;1029.9;1034.6;1039.5;1044.7;1050.2;1056.1;1062.7;1069.9;
+9000;998.17;998.43;998.74;999.28;1000.1;1001.3;1002.9;1005.1;1007.9;1011.4;1015.6;1020.1;1024.8;1029.8;1034.9;1040.1;1045.5;1051.3;1057.5;1064.4;
+9500;992.36;993.11;993.39;993.89;994.67;995.8;997.41;999.6;1002.6;1005.9;1010.1;1014.7;1019.6;1024.7;1030;1035.4;1040.9;1046.5;1052.6;1059.1;
+10000;988.15;988.24;988.48;988.92;989.62;990.67;992.19;994.29;997.1;1000.5;1004.6;1009.1;1014.1;1019.4;1024.9;1030.6;1036.2;1041.8;1047.8;1054.1;
+10500;983.97;984.03;984.21;984.56;985.14;986.06;987.43;989.41;992.01;995.21;999.25;1003.6;1008.5;1013.7;1019.4;1025.3;1031.4;1037.2;1043.1;1049.2;
+11000;980.41;980.46;980.62;980.92;981.41;982.18;983.37;985.11;987.41;990.32;994.08;998.23;1002.9;1008.1;1013.7;1019.7;1026;1032.3;1038.5;1044.6;
+11500;983.63;983.7;983.86;984.15;984.65;985.43;986.62;988.37;990.68;993.6;997.38;1001.5;1006.2;1011.4;1017.1;1023.1;1029.4;1035.8;1041.9;1048;
+12000;986.84;986.96;987.11;987.41;987.91;988.7;989.89;991.65;993.98;996.92;1000.7;1004.8;1009.5;1014.7;1020.4;1026.5;1032.8;1039.2;1045.4;1051.5;
+12500;990.2;990.25;990.41;990.71;991.21;992;993.2;994.97;997.31;1000.3;1004;1008.2;1012.9;1018.1;1023.8;1029.9;1036.3;1042.7;1048.9;1055;
+13000;993.56;993.63;993.73;994.04;994.54;995.33;996.54;998.32;1000.7;1003.6;1007.4;1011.5;1016.3;1021.5;1027.3;1033.4;1039.8;1046.2;1052.4;1058.5;
+13500;997.19;997.23;997.37;997.66;998.13;998.89;1000.1;1001.8;1004;1007.1;1010.7;1014.9;1019.7;1025;1030.7;1036.9;1043.3;1049.7;1055.9;1062.1;
+14000;1000.9;1000.9;1001.1;1001.4;1001.8;1002.6;1003.8;1005.5;1007.8;1010.8;1014.4;1018.5;1023.2;1028.4;1034.2;1040.4;1046.8;1053.2;1059.5;1065.7;
+0.9;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1057.5;1057.6;1058;1058.8;1060;1061.6;1063.2;1065.3;1067.8;1071;1074.7;1079.3;1084.6;1090.5;1097.2;1104.9;1113.1;1121.8;1130.8;1140.3;
+500;1050.7;1050.8;1051.2;1052;1053.1;1054.6;1056.1;1058.1;1060.6;1063.8;1067.6;1072.2;1077.5;1083.5;1090.3;1098;1106.3;1115;1124.1;1133.5;
+1000;1043.9;1044.1;1044.5;1045.2;1046.3;1047.7;1049.3;1051.3;1053.7;1056.6;1060.4;1065.1;1070.4;1076.4;1083.3;1091.1;1099.5;1108.2;1117.2;1126.7;
+1500;1037;1037.4;1037.8;1038.5;1039.5;1041;1042.5;1044.5;1046.9;1049.8;1053.6;1058.1;1063.2;1069.4;1076.3;1084.1;1092.4;1101.2;1110.3;1119.7;
+2000;1030.7;1030.8;1031.2;1031.8;1032.8;1034.2;1035.7;1037.7;1040.2;1043.1;1046.9;1051.3;1056.4;1062.3;1069.3;1077;1085.3;1094.1;1103.3;1112.7;
+2500;1024.3;1024.2;1024.6;1025.2;1026.1;1027.5;1029;1031;1033.4;1036.3;1040.1;1044.5;1049.6;1055.6;1062.4;1069.9;1078.2;1086.9;1096.1;1105.6;
+3000;1017.7;1017.8;1018.1;1018.7;1019.5;1020.8;1022.3;1024.3;1026.7;1029.6;1033.4;1037.7;1042.9;1048.8;1055.7;1063.1;1071.1;1079.7;1088.9;1098.4;
+3500;1011.5;1011.7;1012;1012.5;1013.3;1014.5;1015.9;1017.8;1020;1022.9;1026.7;1031;1036.1;1042.1;1048.9;1056.3;1064.3;1072.7;1081.5;1091.1;
+4000;1005.5;1005.6;1005.9;1006.4;1007.2;1008.3;1009.7;1011.6;1013.9;1016.6;1020.1;1024.3;1029.4;1035.4;1042.1;1049.5;1057.4;1065.7;1074.5;1083.7;
+4500;999.74;999.82;1000.1;1000.5;1001.2;1002.1;1003.6;1005.5;1007.7;1010.5;1013.9;1018;1022.9;1028.6;1035.3;1042.6;1050.4;1058.7;1067.4;1076.6;
+5000;994.27;994.35;994.59;995.01;995.66;996.58;997.94;999.68;1001.8;1004.4;1007.8;1011.9;1016.7;1022.4;1028.8;1035.8;1043.5;1051.7;1060.4;1069.4;
+5500;988.82;988.94;989.16;989.56;990.18;991.06;992.42;994.18;996.34;998.98;1002.1;1005.9;1010.6;1016.2;1022.4;1029.3;1036.7;1044.7;1053.2;1062.3;
+6000;983.37;983.61;983.82;984.19;984.77;985.61;986.94;988.71;990.88;993.55;996.75;1000.6;1005.1;1010.3;1016.2;1022.9;1030.2;1037.9;1046.1;1055;
+6500;978.31;978.37;978.56;978.91;979.46;980.25;981.53;983.28;985.46;988.14;991.39;995.27;999.8;1004.9;1010.6;1016.8;1023.7;1031.3;1039.4;1048;
+7000;973.26;973.36;973.53;973.82;974.3;975.01;976.2;977.92;980.07;982.76;986.11;989.96;994.51;999.65;1005.2;1011.3;1017.8;1024.9;1032.7;1041.2;
+7500;969.3;968.79;968.91;969.15;969.52;970.1;971.08;972.68;974.75;977.42;980.79;984.69;989.24;994.34;999.93;1005.9;1012.2;1019.1;1026.5;1034.4;
+8000;964.44;964.48;964.6;964.82;965.17;965.7;966.55;967.98;969.82;972.25;975.49;979.42;984;989.04;994.57;1000.5;1006.7;1013.4;1020.6;1028.3;
+8500;959.59;960.22;960.35;960.57;960.92;961.44;962.21;963.54;965.3;967.59;970.64;974.39;978.8;983.77;989.22;995.07;1001.3;1007.8;1014.8;1022.3;
+9000;955.88;955.93;956.07;956.31;956.68;957.23;958;959.24;960.96;963.16;966.08;969.66;973.92;978.76;984.01;989.66;995.82;1002.3;1009.2;1016.5;
+9500;951.45;951.5;951.66;951.94;952.36;952.96;953.79;955;956.7;958.87;961.65;965.19;969.23;973.85;979.02;984.58;990.48;996.8;1003.6;1010.7;
+10000;947;947.07;946.99;947.33;947.83;948.52;949.45;950.71;952.45;954.66;957.44;960.91;964.79;969.18;974.07;979.53;985.39;991.58;998.14;1005;
+10500;941.54;941.62;941.87;942.29;942.91;943.76;944.86;946.24;948.09;950.42;953.3;956.75;960.53;964.73;969.37;974.53;980.27;986.42;992.9;999.73;
+11000;936.07;936.07;936.34;936.82;937.53;938.5;939.8;941.44;943.51;946.04;949.17;952.58;956.35;960.44;964.9;969.79;975.21;981.23;987.65;994.41;
+11500;939.13;939.24;939.51;939.99;940.7;941.68;942.98;944.63;946.69;949.24;952.39;955.81;959.59;963.69;968.16;973.07;978.5;984.54;990.97;997.74;
+12000;942.19;942.43;942.71;943.19;943.9;944.88;946.18;947.84;949.92;952.48;955.63;959.06;962.86;966.97;971.45;976.38;981.83;987.87;994.32;1001.1;
+12500;945.57;945.66;945.93;946.41;947.13;948.12;949.42;951.07;953.17;955.73;958.9;962.34;966.15;970.27;974.77;979.71;985.17;991.24;997.7;1004.4;
+13000;949.08;949.16;949.42;949.88;950.57;951.53;952.78;954.39;956.45;959.02;962.19;965.65;969.46;973.61;978.12;983.07;988.54;994.63;1001.1;1007.8;
+13500;952.77;952.85;953.12;953.59;954.28;955.24;956.51;958.13;960.17;962.68;965.78;969.14;972.84;976.96;981.49;986.45;991.94;998.04;1004.4;1011.1;
+14000;956.48;956.61;956.88;957.35;958.05;959.02;960.3;961.94;963.99;966.52;969.65;973.03;976.76;980.8;985.19;989.99;995.36;1001.5;1007.8;1014.5;
+0.85;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;1017;1017;1017.5;1018.2;1019.5;1020.8;1021.9;1023.5;1025.6;1028.1;1031.2;1034.4;1038;1042.1;1047;1052.7;1059.5;1067.1;1075.1;1083.8;
+500;1010.2;1010.3;1010.7;1011.5;1012.7;1013.9;1015;1016.5;1018.6;1021.1;1024.3;1027.7;1031.4;1035.6;1040.6;1046.5;1053.4;1061;1069.1;1077.6;
+1000;1003.4;1003.5;1004;1004.7;1005.9;1007.1;1008.2;1009.7;1011.8;1014.2;1017.4;1020.9;1024.7;1029.1;1034.2;1040.2;1047.2;1054.9;1063;1071.4;
+1500;996.58;996.72;997.15;997.94;999.15;1000.3;1001.5;1003;1005.1;1007.6;1010.7;1014.3;1018;1022.5;1027.7;1033.9;1041;1048.7;1056.8;1065.3;
+2000;989.7;989.84;990.28;991.06;992.26;993.36;994.6;996.2;998.32;1000.9;1004;1007.7;1011.5;1015.9;1021.1;1027.4;1034.6;1042.4;1050.5;1059;
+2500;982.82;982.97;983.39;984.17;985.35;986.43;987.7;989.32;991.23;994.06;997.3;1001.1;1005;1009.5;1014.8;1021;1028.2;1036;1044.2;1052.7;
+3000;976.33;976.46;976.86;977.58;978.69;979.68;980.9;982.46;984.39;987.21;990.47;994.31;998.52;1003.1;1008.5;1014.7;1021.8;1029.6;1037.7;1046.2;
+3500;969.82;970.01;970.37;971.07;972.14;973.12;974.36;975.94;977.8;980.5;983.64;987.5;991.84;996.58;1002.1;1008.5;1015.5;1023.2;1031.2;1039.7;
+4000;964;964.12;964.47;965.1;966.06;966.94;968.07;969.52;971.32;974;977.15;980.88;985.19;989.95;995.63;1002.2;1009.2;1016.8;1024.8;1033.1;
+4500;958.18;958.24;958.58;959.2;960.12;961.01;962.16;963.62;965.37;967.82;970.8;974.5;978.8;983.54;989.12;995.69;1002.9;1010.4;1018.4;1026.7;
+5000;952.31;952.41;952.74;953.33;954.22;955.12;956.28;957.76;959.55;961.95;964.96;968.55;972.61;977.21;982.87;989.35;996.4;1004;1011.9;1020.2;
+5500;946.45;946.65;946.97;947.53;948.38;949.29;950.45;951.94;953.74;956.27;959.13;962.73;966.81;971.48;976.9;983.09;990.14;997.6;1005.4;1013.6;
+6000;940.86;940.96;941.26;941.79;942.59;943.5;944.66;946.15;947.96;950.47;953.32;956.93;961.05;965.77;971.25;977.43;984.12;991.26;999.06;1007.1;
+6500;935.28;935.36;935.63;936.12;936.87;937.77;938.93;940.4;942.22;944.7;947.55;951.15;955.29;960.08;965.6;971.76;978.4;985.45;992.84;1000.7;
+7000;930.72;930.19;930.44;930.87;931.54;932.36;933.42;934.8;936.54;938.98;941.82;945.4;949.54;954.37;959.94;966.07;972.68;979.66;987.02;994.71;
+7500;925;925.07;925.31;925.72;926.34;927.16;928.23;929.6;931.29;933.59;936.24;939.7;943.82;948.67;954.26;960.37;966.93;973.86;981.16;988.82;
+8000;919.28;919.98;920.2;920.59;921.18;922.01;923.09;924.46;926.16;928.24;931.13;934.45;938.39;943.04;948.56;954.65;961.16;968.04;975.27;982.87;
+8500;914.84;914.92;915.13;915.49;916.05;916.88;917.98;919.38;921.1;923.19;926;929.27;933.2;937.85;943.17;949;955.36;962.19;969.38;976.91;
+9000;910.41;909.9;910.09;910.44;910.97;911.79;912.91;914.33;916.08;918.2;920.96;924.18;928.06;932.7;937.96;943.72;949.89;956.42;963.45;970.93;
+9500;904.86;904.91;905.09;905.41;905.91;906.72;907.86;909.3;911.09;913.27;916;919.2;923.03;927.6;932.78;938.45;944.54;951.02;957.84;964.98;
+10000;899.28;899.98;900.15;900.45;900.92;901.7;902.85;904.29;906.11;908.34;911.01;914.29;918.12;922.61;927.65;933.21;939.19;945.58;952.36;959.47;
+10500;894.96;895.02;895.18;895.46;895.91;896.65;897.83;899.3;901.15;903.42;906.15;909.42;913.27;917.71;922.64;928.02;933.88;940.16;946.84;953.91;
+11000;890.64;890.28;890.4;890.63;891.02;891.67;892.8;894.26;896.14;898.47;901.34;904.59;908.46;912.86;917.71;922.96;928.62;934.76;941.33;948.3;
+11500;893.29;893.32;893.45;893.69;894.07;894.73;895.88;897.34;899.23;901.54;904.38;907.63;911.51;915.92;920.78;926.04;931.72;937.87;944.45;951.44;
+12000;895.93;896.4;896.53;896.77;897.15;897.82;898.98;900.43;902.29;904.59;907.44;910.71;914.59;919.01;923.87;929.14;934.83;940.99;947.6;954.61;
+12500;899.76;899.8;899.91;900.12;900.46;901.07;902.13;903.49;905.35;907.67;910.47;913.8;917.69;922.12;926.99;932.27;937.97;944.16;950.78;957.8;
+13000;903.41;903.44;903.55;903.76;904.11;904.73;905.81;907.19;908.97;911.19;913.95;917.08;920.81;925.25;930.14;935.43;941.14;947.34;953.98;961.03;
+13500;907.06;907.14;907.26;907.47;907.83;908.47;909.56;910.95;912.75;914.98;917.75;920.91;924.67;928.94;933.64;938.72;944.34;950.56;957.21;964.28;
+14000;910.72;910.89;911.01;911.23;911.59;912.24;913.34;914.75;916.56;918.82;921.61;924.8;928.58;932.88;937.61;942.73;948.26;954.24;960.63;967.56;
+0.8;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;977.16;977.31;977.65;978.27;979.22;979.75;980.5;981.25;982.77;984.4;985.97;987.59;989.48;991.67;994.63;998.83;1004.1;1010.6;1018.4;1026.9;
+500;970.18;970.48;970.85;971.49;972.13;972.9;973.61;974.36;975.92;977.63;979.37;981.05;983.06;985.43;988.24;992.64;997.99;1004.6;1012.4;1020.8;
+1000;963.55;963.69;964.06;964.72;965.37;966.16;966.92;967.7;969.23;970.91;972.57;974.51;976.62;979.15;982.14;986.48;991.84;998.58;1006.3;1014.7;
+1500;956.92;956.9;957.28;957.95;958.6;959.41;960.21;961.04;962.62;964.38;966.1;968.02;970.18;972.86;976.03;980.34;985.74;992.48;1000.3;1008.5;
+2000;950;950.12;950.5;951.2;951.85;952.68;953.5;954.39;956.01;957.85;959.67;961.7;963.91;966.6;969.88;974.2;979.69;986.41;994.1;1002.4;
+2500;943.39;943.52;943.9;944.58;945.18;945.98;946.8;947.73;949.41;951.31;953.24;955.37;957.68;960.49;963.92;968.05;973.64;980.37;987.97;996.15;
+3000;937.35;937.47;937.82;938.45;939.28;939.7;940.42;941.27;942.89;944.76;946.8;949.02;951.45;954.37;957.98;962.17;967.66;974.35;981.86;989.92;
+3500;931.35;931.51;931.87;932.52;933.35;933.79;934.54;935.35;936.86;938.61;940.52;942.74;945.21;948.21;952.01;956.37;961.82;968.47;975.76;983.71;
+4000;925.38;925.58;925.94;926.6;927.42;927.88;928.66;929.53;931.06;932.87;934.83;936.93;939.22;942.13;945.93;950.54;956;962.65;969.9;977.56;
+4500;919.41;919.67;920.04;920.7;921.51;921.98;922.78;923.69;925.24;927.12;929.34;931.38;933.79;936.62;940.23;944.73;950.26;956.82;964.03;971.6;
+5000;913.67;913.78;914.15;914.81;915.6;916.1;916.92;917.86;919.39;921.35;923.65;925.83;928.34;931.28;934.98;939.47;944.74;951.01;958.13;965.65;
+5500;907.92;907.92;908.28;908.94;909.71;910.23;911.07;912.05;913.56;915.58;917.93;920.28;922.89;925.96;929.84;934.36;939.77;945.83;952.31;959.67;
+6000;902.24;902.34;902.68;903.28;903.98;904.43;905.23;906.24;907.73;909.8;912.19;914.73;917.4;920.58;924.57;929.22;934.75;940.84;947.31;954.07;
+6500;896.8;896.9;897.24;897.85;898.54;899.03;899.84;900.78;902.12;904.07;906.45;909.15;911.89;915.19;919.27;924.04;929.66;935.8;942.26;948.99;
+7000;891.3;891.41;891.74;892.34;893.02;893.54;894.38;895.37;896.73;898.78;901.1;903.75;906.35;909.77;913.92;918.84;924.52;930.68;937.16;943.88;
+7500;885.8;885.91;886.24;886.83;887.49;888.05;888.91;889.95;891.53;893.39;895.77;898.61;901.33;904.63;908.58;913.57;919.32;925.5;931.97;938.71;
+8000;880.29;880.38;880.73;881.31;881.96;882.55;883.45;884.51;886.12;888;890.42;893.3;896.23;899.73;903.77;908.61;914.1;920.25;926.74;933.47;
+8500;874.82;874.92;875.23;875.79;876.43;877.06;877.99;879.1;880.72;882.62;885.06;887.96;891.07;894.71;898.93;903.83;909.35;915.27;921.43;928.17;
+9000;869.35;869.46;869.76;870.3;870.93;871.59;872.53;873.68;875.31;877.24;879.7;882.63;885.9;889.61;893.96;899.04;904.55;910.47;916.66;923.07;
+9500;863.93;864.03;864.31;864.82;865.44;866.13;867.09;868.27;869.9;871.85;874.33;877.28;880.69;884.47;888.93;894.1;899.73;905.6;911.79;918.23;
+10000;858.51;858.6;858.9;859.38;859.99;860.69;861.67;862.87;864.32;866.47;868.96;872.02;875.44;879.33;883.87;889.09;894.75;900.71;906.85;913.29;
+10500;853.2;853.28;853.54;853.99;854.58;855.29;856.27;857.49;858.97;861.08;863.6;866.68;870.16;874.16;878.8;884.02;889.69;895.67;901.87;908.28;
+11000;847.9;847.99;848.23;848.64;849.22;849.94;850.92;852.14;853.65;855.7;858.27;861.34;864.88;868.97;873.69;878.93;884.56;890.53;896.79;903.22;
+11500;850.82;850.87;851.1;851.52;852.09;852.82;853.8;855.03;856.54;858.62;861.17;864.27;867.82;871.91;876.65;881.89;887.53;893.51;899.77;906.15;
+12000;854.07;854.14;854.36;854.74;855.25;855.91;856.8;857.93;859.46;861.55;864.11;867.22;870.78;874.89;879.63;884.87;890.52;896.51;902.72;909.11;
+12500;857.75;857.82;858.03;858.42;858.94;859.61;860.51;861.65;863.06;865.03;867.54;870.4;873.77;877.88;882.63;887.88;893.54;899.54;905.69;912.09;
+13000;861.47;861.56;861.78;862.17;862.7;863.37;864.28;865.43;866.85;868.85;871.39;874.28;877.68;881.6;886.11;891.1;896.59;902.54;908.69;915.1;
+13500;865.21;865.33;865.55;865.95;866.48;867.17;868.1;869.27;870.71;872.73;875.3;878.22;881.65;885.6;890.14;895.16;900.54;906.12;911.93;918.15;
+14000;869.1;869.17;869.4;869.81;870.35;871.05;871.99;873.18;874.63;876.69;879.28;882.23;885.69;889.67;894.25;899.3;904.62;910.23;916.08;922.15;
+0.75;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;937.9;937.94;938.15;938.49;938.9;939.06;939.18;939.48;939.93;940.27;940.47;940.69;940.98;942.71;945.1;948.37;952.6;957.92;964.46;972.44;
+500;931.11;931.35;931.56;931.9;932.28;932.41;932.5;932.76;933.29;933.74;934.01;934.34;934.72;936.39;938.82;942.12;946.39;951.76;958.39;966.36;
+1000;924.68;924.75;924.97;925.32;925.7;925.85;925.97;926.27;926.79;927.25;927.55;927.99;928.46;930.08;932.53;935.87;940.18;945.6;952.31;960.27;
+1500;918.05;918.13;918.36;918.73;919.1;919.28;919.44;919.78;920.35;920.91;921.24;921.69;922.2;923.78;926.26;929.63;933.97;939.44;946.22;954.17;
+2000;911.42;911.77;911.96;912.27;912.57;912.7;912.9;913.28;913.92;914.39;914.99;915.52;916.08;917.51;919.99;923.4;927.78;933.28;940.11;948.05;
+2500;905.99;905.83;906.03;906.36;906.65;906.75;906.82;907.07;907.59;908.03;908.7;909.34;910;911.43;913.87;917.2;921.61;927.15;934;941.91;
+3000;899.8;899.88;900.09;900.45;900.74;900.88;900.98;901.27;901.85;902.24;902.73;903.23;903.95;905.37;907.84;911.2;915.52;921.03;927.91;935.74;
+3500;893.49;893.77;894.01;894.39;894.71;894.87;895.03;895.36;896.03;896.56;897.14;897.7;898.33;899.22;901.83;904.99;909.56;915.04;921.81;929.59;
+4000;887.63;887.69;887.94;888.34;888.66;888.86;889.06;889.43;890.21;890.84;891.5;892.14;892.9;893.88;896.28;899.41;903.62;909.12;915.89;923.47;
+4500;881.75;881.64;881.9;882.34;882.65;882.87;883.12;883.53;884.4;885.29;885.86;886.6;887.46;888.57;890.9;894.04;898.16;903.36;909.98;917.49;
+5000;875.53;875.66;875.9;876.37;876.68;876.93;877.2;877.64;878.58;879.56;880.23;881.07;882.06;883.29;885.57;888.71;892.87;898.13;904.45;911.53;
+5500;870.12;870.2;870.45;870.88;871.13;871.3;871.48;871.78;872.76;873.82;874.6;875.54;876.66;878.02;880.28;883.43;887.61;892.92;899.3;906.18;
+6000;864.71;864.74;865;865.46;865.71;865.91;866.14;866.47;867.41;868.37;869.06;870.02;871.26;872.78;875.03;878.22;882.39;887.73;894.08;900.99;
+6500;859.29;859.39;859.55;860.05;860.29;860.53;860.8;861.16;862.17;863.22;864.03;864.94;866.02;867.53;869.59;873.06;877.24;882.56;888.87;895.72;
+7000;853.75;853.85;854.13;854.64;854.88;855.15;855.46;855.85;856.94;858.07;859.01;860.02;861.23;862.83;864.75;867.93;872.14;877.47;883.67;890.43;
+7500;848.22;848.41;848.7;849.23;849.47;849.76;850.12;850.79;851.7;852.9;854.01;855.1;856.43;858.19;860.3;863.41;867.35;872.43;878.53;885.15;
+8000;842.87;842.97;843.28;843.82;844.06;844.39;844.78;845.5;846.46;847.73;849;850.17;851.62;853.54;855.81;858.95;862.99;867.99;873.65;879.93;
+8500;837.53;837.63;837.83;838.41;838.64;839.01;839.45;840.2;841.21;842.55;843.99;845.23;846.8;848.84;851.33;854.32;858.64;863.65;869.26;875.24;
+9000;831.97;832.08;832.4;832.97;833.21;833.61;834.1;834.9;835.96;837.37;838.74;840.28;841.96;844.1;846.78;849.99;854.28;859.35;864.88;870.78;
+9500;826.41;826.62;826.94;827.51;827.77;828.2;828.74;829.57;830.68;832.16;833.66;835.32;837.13;839.51;842.2;845.59;849.92;855.03;860.53;866.33;
+10000;821.06;821.16;821.49;822.03;822.31;822.78;823.35;824;825.38;826.92;828.77;830.32;832.27;834.76;837.61;841.28;845.62;850.66;856.16;861.91;
+10500;815.7;815.79;816.02;816.56;816.86;817.35;817.97;818.67;820.07;821.67;823.58;825.31;827.39;829.97;833.09;836.81;841.29;846.31;851.74;857.48;
+11000;810.16;810.26;810.58;811.08;811.4;811.93;812.58;813.34;814.75;816.38;818.36;820.26;822.48;825.04;828.41;832.29;836.9;841.97;847.32;853;
+11500;813.42;813.47;813.77;814.21;814.46;814.91;815.47;816.1;817.49;819.12;821.11;822.99;825.2;827.89;831.15;835.02;839.63;844.7;850.06;855.75;
+12000;816.99;817.08;817.38;817.82;818.07;818.53;819.1;819.75;821.04;822.55;824.36;826.04;828.01;830.65;833.92;837.78;842.38;847.46;852.82;858.53;
+12500;820.57;820.75;821.05;821.49;821.75;822.22;822.8;823.46;824.79;826.33;828.18;829.87;831.86;834.3;837.28;840.83;845.17;850.24;855.6;861.34;
+13000;824.14;824.5;824.8;825.24;825.5;826;826.59;827.28;828.63;830.18;832.05;833.76;835.77;838.22;841.22;844.79;849.04;853.74;858.71;864.17;
+13500;828.23;828.33;828.64;829.08;829.35;829.85;830.46;831.16;832.53;834.1;835.98;837.7;839.73;842.21;845.22;848.8;853.08;857.77;862.77;868.1;
+14000;832.32;832.23;832.54;832.99;833.26;833.78;834.4;835.11;836.49;838.08;839.98;841.71;843.75;846.26;849.29;852.89;857.18;861.89;866.9;872.25;
+0.7;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;898.64;898.69;898.78;898.89;898.93;898.72;898.25;897.96;897.44;896.7;895.94;895.33;895.86;896.98;898.7;900.99;903.82;907.5;912.16;918.15;
+500;892.06;892.1;892.2;892.33;892.34;892.11;891.64;891.35;890.91;890.25;889.54;888.96;889.45;890.61;892.39;894.77;897.76;901.59;906.32;912.39;
+1000;885.48;885.56;885.64;885.75;885.78;885.58;885.15;884.92;884.48;883.82;883.13;882.59;883.04;884.24;886.07;888.48;891.59;895.57;900.49;906.62;
+1500;878.88;879.39;879.48;879.59;879.56;879.3;878.81;878.53;878.1;877.51;876.85;876.27;876.9;877.84;879.72;882.24;885.43;889.49;894.51;900.86;
+2000;873.45;873.38;873.46;873.56;873.52;873.25;872.75;872.53;872.1;871.43;870.67;870.05;870.62;871.49;873.36;875.95;879.24;883.38;888.5;894.96;
+2500;867.38;867.42;867.51;867.62;867.59;867.36;866.88;866.67;866.25;865.58;864.87;864.2;864.57;865.28;867.11;869.67;873.04;877.26;882.47;889.03;
+3000;861.31;861.44;861.55;861.68;861.66;861.45;861.03;860.86;860.51;859.91;859.23;858.53;858.8;859.52;861.18;863.71;866.85;871.12;876.43;883.08;
+3500;855.43;855.47;855.58;855.73;855.72;855.55;855.17;855.05;854.78;854.24;853.64;852.97;853.2;853.86;855.68;858.04;861.13;865.06;870.35;877.1;
+4000;849.54;849.5;849.62;849.78;849.78;849.63;849.3;849.24;849.03;848.58;848.04;847.44;847.62;848.3;849.96;852.47;855.54;859.54;864.62;871.12;
+4500;843.74;843.77;843.86;843.97;843.89;843.72;843.42;843.41;843.28;842.9;842.45;841.91;842.05;842.74;844.65;847;850.12;854.08;859.16;865.63;
+5000;838.38;838.4;838.49;838.61;838.53;838.34;837.94;837.83;837.6;837.22;836.85;836.38;836.49;837.2;839.14;841.52;844.71;848.74;853.85;860.23;
+5500;833.01;833.04;833.14;833.27;833.19;833.02;832.67;832.61;832.44;832.04;831.53;830.92;830.96;831.69;833.64;836.06;839.29;843.39;848.57;854.98;
+6000;827.63;827.74;827.79;827.94;827.86;827.71;827.39;827.39;827.29;826.97;826.56;826.03;825.54;826.3;827.96;830.61;833.87;838.04;843.28;849.72;
+6500;822.29;822.34;822.45;822.61;822.53;822.4;822.12;822.16;822.13;821.89;821.56;821.13;820.74;821.74;823.2;825.37;828.5;832.72;838;844.44;
+7000;816.95;816.98;817.1;817.28;817.21;817.11;816.85;816.94;816.97;816.82;816.58;816.29;815.99;816.93;818.42;820.61;823.61;827.53;832.74;839.16;
+7500;811.59;811.61;811.75;811.94;811.88;811.81;811.59;811.72;811.84;811.79;811.64;811.45;811.25;812.13;813.64;815.88;818.91;822.87;827.92;833.9;
+8000;806.21;806.23;806.38;806.58;806.55;806.5;806.34;806.53;806.71;806.77;806.69;806.61;806.52;807.36;808.89;811.16;814.23;818.23;823.34;829.31;
+8500;800.83;800.86;801.02;801.24;801.23;801.23;801.11;801.33;801.6;801.76;801.75;801.78;801.8;802.61;804.17;806.47;809.56;813.61;818.75;824.7;
+9000;795.32;795.4;795.58;795.82;795.82;795.85;795.77;796.05;796.38;796.67;796.72;796.86;797.01;797.82;799.46;801.81;804.94;809.01;814.18;820.09;
+9500;789.84;789.91;790.11;790.35;790.37;790.44;790.4;790.74;791.14;791.56;791.67;791.91;792.19;792.98;794.67;797.1;800.34;804.45;809.62;815.47;
+10000;784.36;784.41;784.63;784.88;784.92;785.01;785.02;785.42;785.89;786.25;786.63;786.97;787.41;788;789.91;792.37;795.67;799.91;805.09;810.86;
+10500;778.85;778.93;779.15;779.4;779.46;779.59;779.64;780.09;780.65;781.1;781.59;782.03;782.62;783.37;785.24;787.47;791.03;795.32;800.58;806.27;
+11000;774.02;774.08;774.29;774.5;774.5;774.56;774.54;774.87;775.35;775.95;776.54;777.1;777.84;778.76;780.58;783.08;786.43;790.75;795.99;801.71;
+11500;777.64;777.7;777.91;778.11;778.13;778.2;778.19;778.54;779.03;779.42;779.77;780.07;780.53;781.22;783.13;785.63;788.98;793.31;798.55;804.22;
+12000;781.26;781.39;781.6;781.8;781.82;781.91;781.92;782.3;782.81;783.19;783.54;783.84;784.28;784.87;786.42;788.58;791.57;795.89;801.11;806.75;
+12500;784.88;785.19;785.4;785.6;785.63;785.72;785.73;786.12;786.63;787.03;787.38;787.66;788.1;788.67;790.22;792.38;795.38;799.33;804.08;809.3;
+13000;789;789.07;789.29;789.48;789.51;789.6;789.62;790.02;790.52;790.92;791.26;791.55;791.97;792.53;794.09;796.25;799.24;803.13;807.87;813.11;
+13500;793.14;793.24;793.23;793.43;793.46;793.55;793.56;793.97;794.47;794.87;795.21;795.49;795.92;796.46;798.02;800.16;803.08;806.96;811.72;816.98;
+14000;796.96;797.04;797.26;797.45;797.48;797.57;797.58;797.99;798.49;798.88;799.22;799.49;799.91;800.44;801.95;804.04;806.97;810.85;815.63;820.91;
+0.65;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;859.04;859.08;859.01;858.82;858.43;857.72;856.77;855.66;854.33;853.19;852.16;851.94;852.1;852.29;852.85;853.75;855.44;857.82;860.73;864.79;
+500;853.04;852.89;852.78;852.56;852.12;851.37;850.34;849.25;847.99;846.55;845.84;845.61;845.8;846.1;846.72;847.71;849.42;851.85;854.91;859.1;
+1000;847.02;846.83;846.75;846.56;846.16;845.45;844.45;843.31;841.93;840.37;839.54;839.28;839.5;839.89;840.56;841.67;843.4;845.88;849.07;853.36;
+1500;840.87;840.85;840.78;840.6;840.21;839.52;838.58;837.5;836.15;834.64;833.68;833.2;833.23;833.68;834.41;835.62;837.48;839.96;843.23;847.63;
+2000;835.02;835.02;834.96;834.79;834.41;833.72;832.77;831.72;830.41;828.94;827.95;827.46;827.49;827.78;828.37;829.57;831.48;834.02;837.39;841.88;
+2500;829.17;829.18;829.14;828.99;828.63;827.98;827.06;826.07;824.8;823.34;822.27;821.97;821.77;822.14;822.77;823.84;825.61;828.09;831.55;836.13;
+3000;823.3;823.35;823.31;823.18;822.84;822.23;821.36;820.41;819.21;817.8;816.71;816.37;816.15;816.49;817.22;818.36;819.94;822.48;825.79;830.36;
+3500;817.42;817.52;817.51;817.38;817.06;816.47;815.64;814.77;813.62;812.27;811.16;810.8;810.59;811.01;811.75;812.87;814.53;817.07;820.38;824.86;
+4000;812.11;812.1;812.04;811.88;811.5;810.82;809.94;809.11;808.02;806.74;805.63;805.25;805.05;805.51;806.32;807.53;809.21;811.71;815.08;819.56;
+4500;806.87;806.86;806.81;806.68;806.31;805.67;804.79;803.88;802.67;801.25;800.12;799.69;799.5;800.02;800.89;802.18;803.95;806.5;809.84;814.35;
+5000;801.62;801.62;801.58;801.47;801.12;800.52;799.66;798.81;797.62;796.23;794.89;794.2;793.82;794.4;795.35;796.73;798.62;801.28;804.7;809.23;
+5500;796.27;796.38;796.26;796.15;795.81;795.22;794.4;793.62;792.51;791.18;789.86;789.13;788.7;789.06;789.76;791.24;793.2;795.95;799.52;804.16;
+6000;790.88;790.88;790.86;790.78;790.46;789.91;789.13;788.41;787.39;786.12;784.82;784.07;783.65;784.04;784.87;786.1;787.76;790.58;794.23;799.05;
+6500;785.51;785.48;785.47;785.41;785.11;784.6;783.85;783.21;782.25;781.06;779.8;779.01;778.61;779.02;779.92;781.25;783.03;785.57;788.93;793.82;
+7000;780.18;780.07;780.08;780.04;779.76;779.28;778.57;778;777.12;775.99;774.78;773.95;773.56;774.02;774.97;776.38;778.25;780.88;784.29;788.83;
+7500;774.83;774.67;774.68;774.66;774.39;773.95;773.28;772.78;771.98;770.91;769.76;768.9;768.81;769;770.01;771.5;773.46;776.19;779.69;784.31;
+8000;769.44;769.54;769.29;769.27;769.02;768.61;767.99;767.55;766.84;765.84;764.74;763.61;763.51;764.01;765.05;766.61;768.67;771.49;775.08;779.79;
+8500;763.83;763.85;763.88;763.88;763.65;763.26;762.68;762.32;761.69;760.76;759.73;758.64;758.77;759.01;760.09;761.72;763.89;766.78;770.47;775.27;
+9000;758.21;758.44;758.48;758.49;758.28;757.92;757.37;757.07;756.54;755.67;754.72;753.69;753.76;754.02;755.14;756.82;759.11;762.06;765.85;770.75;
+9500;753;753.03;753.08;753.09;752.9;752.57;752.05;751.82;751.36;750.59;749.72;748.74;748.77;749.05;750.19;751.91;754.31;757.35;761.22;766.21;
+10000;748.09;748.09;748.11;748.06;747.79;747.37;746.75;746.56;746.19;745.49;744.72;743.81;743.8;744.1;745.49;747.05;749.49;752.65;756.6;761.67;
+10500;743.17;743.42;743.44;743.4;743.16;742.76;742.18;741.92;741.44;740.61;739.71;738.9;738.86;739.17;740.6;742.38;744.81;747.95;751.99;757.11;
+11000;738.74;738.74;738.78;738.75;738.53;738.18;737.63;737.44;737.04;736.32;735.51;734.53;734.18;734.53;735.5;737.54;740.03;743.24;747.36;752.54;
+11500;742.34;742.33;742.37;742.34;742.12;741.78;741.25;741.06;740.65;739.9;739.06;738.05;737.71;738.03;738.92;740.42;742.57;745.58;749.71;754.9;
+12000;745.95;746;746.04;746.01;745.79;745.45;744.92;744.73;744.31;743.54;742.68;741.63;741.29;741.6;742.49;743.99;746.14;748.97;752.71;757.47;
+12500;749.55;749.75;749.79;749.75;749.54;749.19;748.64;748.44;748.02;747.24;746.35;745.28;744.92;745.23;746.12;747.61;749.76;752.6;756.34;761.12;
+13000;753.54;753.56;753.6;753.56;753.34;752.98;752.43;752.22;751.79;750.98;750.08;748.98;748.62;748.91;749.79;751.28;753.43;756.27;760.02;764.81;
+13500;757.54;757.63;757.48;757.43;757.21;756.84;756.29;756.06;755.62;754.79;753.87;752.75;752.37;752.65;753.53;755.01;757.16;760;763.75;768.55;
+14000;761.53;761.62;761.41;761.36;761.14;760.76;760.2;759.97;759.51;758.66;757.71;756.57;756.19;756.46;757.32;758.8;760.94;763.78;767.54;772.34;
+0.6;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;821.16;820.96;820.71;820.2;819.44;818.28;816.81;814.94;813.47;812.47;811.59;810.86;809.95;809.32;809.24;809.37;809.56;809.94;810.73;812.23;
+500;815.09;814.98;814.74;814.25;813.48;812.32;810.85;808.99;807.52;806.41;805.41;804.65;803.78;803.18;803.16;803.46;803.66;804.18;805.12;806.8;
+1000;809.1;809.02;808.78;808.31;807.56;806.44;805;803.16;801.66;800.5;799.48;798.93;797.83;797.12;797;797.33;797.7;798.36;799.48;801.35;
+1500;803.12;803.18;802.94;802.47;801.71;800.59;799.14;797.32;795.5;794.34;793.53;792.91;791.88;791.23;791.14;791.33;791.65;792.43;793.71;795.77;
+2000;797.35;797.29;797.06;796.59;795.85;794.72;793.29;791.47;789.64;788.42;787.57;786.99;786.08;785.42;785.32;785.54;786;786.72;787.93;790.15;
+2500;791.54;791.34;791.11;790.67;789.94;788.84;787.45;785.67;783.88;782.64;781.75;781.17;780.33;779.71;779.59;779.76;780.36;781.19;782.53;784.68;
+3000;785.46;785.38;785.17;784.75;784.05;782.97;781.62;779.9;778.14;776.86;775.99;775.45;774.71;774.02;773.93;774.12;774.76;775.67;777.15;779.44;
+3500;780.19;779.97;779.74;779.27;778.5;777.33;775.86;774.13;772.43;771.16;770.26;769.76;769.09;768.41;768.23;768.57;769.41;770.33;771.77;774.21;
+4000;774.71;774.66;774.44;773.98;773.24;772.11;770.72;768.96;767.1;765.61;764.82;764.08;763.5;762.85;762.73;763.09;763.96;764.96;766.45;768.97;
+4500;769.22;769.36;769.14;768.72;768.03;766.94;765.61;763.9;762.09;760.57;759.69;758.73;757.97;757.32;757.27;757.61;758.5;759.63;761.23;763.8;
+5000;764.16;764.1;763.91;763.51;762.84;761.8;760.5;758.85;757.08;755.54;754.64;753.7;753.01;752.27;751.98;752.12;753.07;754.31;756.02;758.7;
+5500;759.09;758.86;758.68;758.31;757.65;756.64;755.4;753.8;752.07;750.53;749.61;748.68;748.06;747.41;747.16;747.35;747.84;749.04;750.81;753.6;
+6000;753.67;753.62;753.45;753.1;752.47;751.5;750.3;748.76;747.07;745.5;744.57;743.64;743.11;742.56;742.35;742.57;743.09;744.26;745.77;748.49;
+6500;748.23;748.38;748.22;747.88;747.28;746.34;745.19;743.71;742.07;740.46;739.53;738.61;738.16;737.69;737.54;737.8;738.37;739.62;741.24;743.74;
+7000;743.17;743.13;742.98;742.67;742.09;741.19;740.08;738.66;737.07;735.44;734.51;733.59;733.21;732.82;732.72;732.86;733.65;734.95;736.71;739.33;
+7500;738.1;738.2;737.77;737.45;736.9;736.03;734.97;733.61;732.07;730.44;729.48;728.56;728.22;727.94;727.89;728.11;728.92;730.28;732.15;734.92;
+8000;732.66;732.63;732.5;732.23;731.7;730.86;729.84;728.54;727.05;725.41;724.17;723.54;723.23;723.03;723.04;723.38;724.21;725.62;727.62;730.5;
+8500;727.38;727.35;727.24;726.98;726.47;725.66;724.7;723.47;722.03;720.4;719.17;718.51;718.23;718.14;718.22;718.63;719.5;720.97;723.14;726.07;
+9000;722.09;722.33;722.18;721.87;721.28;720.44;719.56;718.4;717.01;715.41;714.18;713.5;713.24;713.22;713.4;713.89;714.77;716.34;718.56;721.64;
+9500;717.84;717.79;717.66;717.37;716.81;715.95;714.93;713.66;712.18;710.4;709.19;708.47;708.24;708.29;708.57;709.14;710.06;711.7;714.05;717.21;
+10000;713.57;713.26;713.14;712.87;712.33;711.51;710.54;709.33;707.88;706.19;704.7;703.98;703.26;703.36;703.74;704.39;705.41;707.08;709.52;712.78;
+10500;708.76;708.73;708.62;708.37;707.86;707.08;706.16;705.01;703.62;702;700.49;699.73;699.01;698.91;699.1;699.56;700.74;702.47;704.99;708.35;
+11000;703.94;704.21;704.11;703.88;703.4;702.65;701.78;700.69;699.35;697.76;696.21;695.39;694.67;694.62;694.89;695.45;696.37;697.84;700.47;703.92;
+11500;707.7;707.67;707.57;707.33;706.84;706.08;705.2;704.11;702.76;701.16;699.63;698.81;698.08;698.02;698.27;698.83;699.76;701.19;703.42;706.46;
+12000;711.47;711.18;711.08;710.83;710.34;709.56;708.68;707.57;706.19;704.57;703.03;702.22;701.48;701.42;701.65;702.18;703.08;704.52;706.74;709.78;
+12500;714.79;714.76;714.65;714.4;713.89;713.1;712.2;711.08;709.68;708.04;706.46;705.65;704.89;704.82;705.04;705.55;706.42;707.89;710.09;713.13;
+13000;718.16;718.39;718.28;718.02;717.5;716.7;715.79;714.65;713.24;711.56;709.95;709.13;708.34;708.26;708.46;708.96;709.83;711.27;713.49;716.53;
+13500;722.11;722.07;721.96;721.69;721.17;720.35;719.43;718.26;716.82;715.14;713.54;712.67;711.87;711.75;711.95;712.42;713.27;714.7;716.94;719.97;
+14000;726.06;725.81;725.7;725.42;724.89;724.06;723.13;721.94;720.48;718.77;717.12;716.27;715.45;715.31;715.48;715.94;716.76;718.29;720.42;723.45;
+0.55;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;784.08;784.15;783.83;783.2;782.3;781;779.27;777.34;776.35;775.36;774.07;772.49;771.08;770.23;769.41;768.09;766.34;764.16;761.61;759;
+500;778.1;778.05;777.73;777.1;776.2;774.9;773.16;771.21;770.19;769.19;767.98;766.44;765.05;764.19;763.36;762.01;760.35;758.4;756.16;753.92;
+1000;772.11;772.22;771.68;771.03;770.13;768.83;767.12;765.2;764.11;763.05;761.9;760.42;759.04;758.15;757.42;756.19;754.62;752.72;750.68;748.79;
+1500;766.11;766.01;765.69;765.07;764.16;762.85;761.14;759.21;758.09;757.02;755.91;754.4;753.02;752.36;751.49;750.38;748.96;747.28;745.43;743.68;
+2000;760.11;760.06;759.74;759.12;758.22;756.93;755.24;753.36;752.18;751.05;749.97;748.47;747.1;746.37;745.57;744.56;743.29;741.81;740.24;738.81;
+2500;754.1;754.12;753.81;753.2;752.32;751.03;749.36;747.49;746.3;745.17;744.13;742.64;741.26;740.49;739.71;738.75;737.63;736.36;735.05;733.93;
+3000;748.88;748.75;748.4;747.73;746.76;745.36;743.55;741.63;740.44;739.29;738.32;736.86;735.51;734.73;733.97;733.05;732;730.88;729.82;729.01;
+3500;743.57;743.46;743.11;742.45;741.49;740.11;738.34;736.34;734.97;733.61;732.52;731.11;729.76;728.99;728.35;727.42;726.46;725.43;724.57;724.05;
+4000;738.26;738.19;737.84;737.19;736.24;734.88;733.14;731.15;729.76;728.4;727.37;725.72;724.09;723.28;722.66;721.82;720.99;720.1;719.35;719.04;
+4500;733.04;732.92;732.58;731.94;731.04;729.66;727.96;725.98;724.57;723.19;722.18;720.59;719.17;718.07;717.18;716.29;715.51;714.77;714.2;714.05;
+5000;727.76;727.66;727.33;726.7;725.78;724.45;722.76;720.81;719.36;717.99;717;715.47;714.11;713.02;712.17;711.3;710.32;709.43;709.03;709.1;
+5500;722.46;722.39;722.07;721.45;720.55;719.25;717.59;715.65;714.2;712.8;711.83;710.37;709.07;708;707.16;706.42;705.53;704.66;704;704.12;
+6000;717.2;717.3;716.84;716.21;715.33;714.03;712.4;710.51;709.03;707.63;706.67;705.33;704.07;702.78;702.2;701.55;700.75;700.02;699.49;699.5;
+6500;712.05;711.87;711.56;710.98;710.11;708.83;707.23;705.37;703.88;702.69;701.56;700.31;698.81;697.79;697.17;696.59;695.88;695.26;694.89;695.06;
+7000;706.71;706.61;706.32;705.75;704.9;703.66;702.09;700.25;698.73;697.52;696.36;695.16;693.73;692.71;692.08;691.61;690.99;690.5;690.28;690.63;
+7500;701.45;701.37;701.08;700.54;699.71;698.46;696.91;695.04;693.51;692.29;691.13;690.01;688.66;687.66;687.01;686.63;686.11;685.74;685.68;686.2;
+8000;696.08;696.11;695.79;695.24;694.42;693.19;691.68;689.86;688.3;687.07;685.89;684.87;683.6;682.62;681.93;681.78;681.25;681;681.09;681.77;
+8500;691.65;691.55;691.23;690.63;689.72;688.39;686.77;684.8;683.11;681.86;680.69;679.75;678.55;677.59;677.11;676.78;676.52;676.26;676.5;677.34;
+9000;687.21;686.99;686.68;686.1;685.21;683.91;682.32;680.39;678.66;677.2;675.79;674.82;673.5;672.58;672.11;671.8;671.67;671.53;671.9;672.91;
+9500;682.75;682.84;682.17;681.59;680.73;679.45;677.9;675.99;674.27;672.54;671.39;670.41;669.09;667.94;667.21;666.82;666.88;666.83;667.32;668.48;
+10000;678.02;677.93;677.64;677.1;676.25;675;673.5;671.63;669.63;668.19;666.98;666.03;664.8;663.75;663.03;662.48;662.17;662.16;662.75;664.05;
+10500;673.28;673.42;673.14;672.62;671.79;670.57;669.11;667.26;665.32;663.82;662.59;661.66;660.55;659.55;658.86;658.34;658.15;658.23;658.51;659.61;
+11000;668.99;668.91;668.65;668.15;667.34;666.15;664.73;662.94;661.03;659.49;658.47;657.31;656.29;655.29;654.57;654.23;654.26;654.29;654.73;655.92;
+11500;672.35;672.27;672;671.49;670.67;669.46;668.01;666.2;664.26;662.7;661.67;660.49;659.44;658.43;657.69;657.36;657.36;657.36;657.78;658.94;
+12000;675.72;675.67;675.39;674.87;674.04;672.82;671.35;669.51;667.53;665.95;664.91;663.7;662.63;661.61;660.83;660.52;660.49;660.46;660.85;661.98;
+12500;679.08;679.12;678.84;678.31;677.46;676.22;674.74;672.87;670.87;669.24;668.19;666.95;665.86;664.82;664.01;663.69;663.66;663.59;663.95;665.06;
+13000;682.45;682.62;682.33;681.79;680.93;679.67;678.16;676.28;674.24;672.62;671.52;670.26;669.12;668.07;667.23;666.88;666.87;666.75;667.08;668.16;
+13500;686.71;686.16;685.87;685.32;684.45;683.17;681.65;679.74;677.67;676.02;674.91;673.61;672.44;671.36;670.48;670.11;670.09;669.95;670.24;671.29;
+14000;689.85;689.76;689.46;688.91;688.02;686.72;685.18;683.25;681.15;679.47;678.34;677.01;675.8;674.7;674;673.4;673.19;673.1;673.43;674.45;
+0.5;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;748.19;747.62;747.34;746.76;745.96;744.69;743.11;741.9;741.05;739.94;738.28;736.62;735.45;733.95;731.51;728;722.9;715.61;705.76;690.64;
+500;748.64;741.52;741.41;740.83;740.02;738.72;737.13;735.87;735.03;733.96;732.33;730.69;729.54;728.13;725.81;722.48;717.71;710.96;701.81;688.07;
+1000;736.07;735.82;735.54;734.94;734.13;732.81;731.23;729.94;729.07;728;726.37;724.77;723.6;722.32;720.1;716.96;712.5;706.23;697.78;685.72;
+1500;730.28;730;729.72;729.13;728.3;726.99;725.39;724.09;723.19;722.11;720.48;718.87;717.92;716.48;714.39;711.42;707.24;701.43;693.34;682.79;
+2000;724.27;724.18;723.89;723.3;722.49;721.18;719.59;718.27;717.36;716.31;714.68;713.06;712.07;710.66;708.68;705.88;701.97;696.5;689.05;679.59;
+2500;719.02;718.83;718.5;717.84;716.93;715.52;713.79;712.46;711.55;710.52;708.91;707.33;706.31;704.93;703;700.32;696.57;691.46;684.65;676.17;
+3000;713.71;713.63;713.29;712.63;711.72;710.31;708.6;707.12;706.05;704.87;703.15;701.52;700.59;699.23;697.33;694.7;691.11;686.37;680.16;672.56;
+3500;708.53;708.42;708.08;707.42;706.52;705.11;703.41;701.92;700.85;699.68;697.88;695.92;694.83;693.41;691.61;689.07;685.71;681.25;675.58;668.76;
+4000;703.33;703.21;702.88;702.22;701.32;699.92;698.19;696.62;695.52;694.34;692.57;690.89;689.56;688.07;686.1;683.48;680.26;676.13;670.88;664.56;
+4500;698.05;697.95;697.6;696.93;696.01;694.57;692.84;691.28;690.18;688.99;687.26;685.61;684.27;682.85;680.97;678.41;675.06;670.95;666.13;660.33;
+5000;692.69;692.61;692.26;691.58;690.66;689.24;687.52;685.94;684.83;683.64;681.96;680.33;678.99;677.63;675.83;673.43;670.25;666.26;661.36;656;
+5500;687.39;687.27;686.92;686.25;685.33;683.91;682.2;680.61;679.49;678.31;676.66;675.06;673.71;672.4;670.69;668.43;665.44;661.67;657.09;651.88;
+6000;682.08;681.94;681.59;680.92;680;678.58;676.87;675.28;674.16;672.97;671.38;669.79;668.44;667.18;665.54;663.4;660.56;656.99;652.78;648.04;
+6500;676.72;676.62;676.26;675.59;674.68;673.35;671.56;669.96;668.84;667.65;666.12;664.52;663.13;661.93;660.33;658.3;655.64;652.33;648.46;644.14;
+7000;671.34;671.35;670.96;670.23;669.36;668.03;666.26;664.65;663.5;662.35;660.8;659.18;657.79;656.56;655.11;653.19;650.71;647.66;644.07;640.18;
+7500;666.89;666.76;666.35;665.61;664.59;663.15;661.22;659.16;658.1;656.95;655.45;653.64;652.46;651.24;649.9;648.11;645.8;642.94;639.66;636.17;
+8000;662.44;662.12;661.72;660.96;659.93;658.46;656.55;654.53;653.41;652.07;650.4;648.42;646.89;645.96;644.71;643.02;640.89;638.26;635.24;632.11;
+8500;657.58;657.46;657.06;656.31;655.29;653.82;651.93;649.9;648.76;647.43;645.83;643.89;642.19;640.98;639.58;637.93;635.97;633.56;630.81;628;
+9000;652.72;652.82;652.41;651.67;650.65;649.19;647.32;645.33;644.13;642.81;641.27;639.39;637.69;636.43;635.12;633.35;631.25;628.86;626.38;623.87;
+9500;648.32;648.18;647.78;647.04;646.04;644.58;642.72;640.71;639.53;638.22;636.74;634.92;633.2;631.91;630.68;628.99;627.02;624.74;622.23;619.74;
+10000;643.98;643.55;643.17;642.44;641.44;640;638.17;636.18;634.96;633.63;632.22;630.46;628.74;627.62;626.24;624.64;622.8;620.73;618.47;616.25;
+10500;639.1;638.99;638.6;637.89;636.89;635.46;633.65;631.66;630.4;629.04;627.69;625.98;624.27;623.14;621.83;620.31;618.58;616.69;614.69;612.78;
+11000;634.56;634.44;634.05;633.35;632.35;630.92;629.13;627.15;625.85;624.46;623.17;621.5;619.84;618.69;617.45;616;614.38;612.64;610.89;609.27;
+11500;637.72;637.61;637.21;636.5;635.49;634.03;632.22;630.21;628.89;627.48;626.16;624.46;622.76;621.61;620.45;618.85;617.18;615.39;613.59;611.91;
+12000;640.89;640.82;640.42;639.7;638.67;637.2;635.35;633.32;631.98;630.54;629.19;627.47;625.72;624.57;623.25;621.72;620.01;618.16;616.31;614.57;
+12500;644.05;644.09;643.68;642.95;641.9;640.4;638.53;636.47;635.11;633.65;632.26;630.5;628.73;627.56;626.2;624.63;622.86;620.95;619.03;617.24;
+13000;647.54;647.41;647;646.26;645.18;643.66;641.74;639.66;638.29;636.8;635.38;633.57;631.77;630.58;629.19;627.57;625.75;623.78;621.78;619.94;
+13500;651.11;651.2;650.38;649.6;648.52;646.98;645.05;642.9;641.52;640;638.53;636.68;634.85;633.64;632.21;630.54;628.66;626.63;624.56;622.64;
+14000;654.34;654.2;653.78;653.01;651.91;650.34;648.37;646.23;644.79;643.25;641.74;639.84;637.98;636.74;635.27;633.56;631.62;629.51;627.36;625.36;
+0.48;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;733.46;733.39;733.14;732.6;731.87;730.66;729.13;728.2;727.42;726.11;724.3;723.12;721.69;719.55;716.34;711.44;703.91;692.34;672.48;638.26;
+500;735.38;727.52;727.26;726.71;725.97;724.73;723.17;722.2;721.41;720.16;718.44;717.21;715.84;713.8;710.74;706.13;699.07;688.29;670.4;640.49;
+1000;722.02;721.68;721.43;720.87;720.13;718.87;717.3;716.3;715.33;714.23;712.54;711.28;709.98;708.04;705.14;700.78;694.05;684.11;667.98;641.99;
+1500;715.95;715.9;715.65;715.09;714.32;713.07;711.51;710.48;709.48;708.39;706.7;705.36;704.05;702.27;699.51;695.28;688.97;679.79;665.21;642.33;
+2000;710.25;710.16;709.86;709.29;708.54;707.28;705.73;704.68;703.67;702.62;700.98;699.55;698.17;696.41;693.72;689.74;683.84;675.08;662.17;641.94;
+2500;705.26;704.97;704.67;704.04;703.19;701.84;700.16;698.94;697.83;696.78;695.11;693.42;692.28;690.58;687.97;684.17;678.67;670.58;659.13;640.98;
+3000;699.87;699.77;699.46;698.81;697.95;696.55;694.82;693.59;692.38;691.23;689.38;687.54;686.41;684.81;682.27;678.67;673.46;666;655.58;639.52;
+3500;694.33;694.44;694.12;693.48;692.61;691.21;689.5;688.25;687.04;685.92;684.1;682.23;680.86;679.12;676.61;673.14;668.27;661.29;651.83;637.61;
+4000;689.2;689.11;688.79;688.13;687.28;685.88;684.17;682.91;681.89;680.6;678.8;676.97;675.6;673.94;671.38;667.79;662.99;656.51;647.78;635.23;
+4500;684.06;683.78;683.46;682.8;681.95;680.55;678.86;677.57;676.56;675.3;673.51;671.7;670.33;668.76;666.31;662.88;658.16;651.74;643.61;632.51;
+5000;678.56;678.46;678.13;677.46;676.62;675.23;673.54;672.24;671.22;669.99;668.23;666.46;665.07;663.57;661.23;657.95;653.51;647.46;639.35;629.31;
+5500;673.05;673.14;672.81;672.16;671.3;669.92;668.23;666.9;665.89;664.68;662.94;661.2;659.82;658.38;656.14;653.02;648.82;643.14;635.66;626.32;
+6000;667.92;667.82;667.49;666.83;665.98;664.59;662.92;661.57;660.55;659.37;657.64;655.92;654.79;653.19;651.07;648.08;644.09;638.78;631.87;623.39;
+6500;662.76;662.49;662.16;661.51;660.65;659.27;657.6;656.24;655.22;654.06;652.35;650.66;649.52;647.99;645.96;643.13;639.36;634.39;628.02;620.29;
+7000;658.01;657.87;657.49;656.75;655.78;654.29;652.47;650.94;649.88;648.74;647.05;645.33;644.26;642.78;640.85;638.18;634.6;629.96;624.07;617.06;
+7500;653.24;653.26;652.88;652.14;651.17;649.68;647.87;646.32;645.12;643.8;641.94;639.94;638.99;637.58;635.74;633.23;629.85;625.5;620.05;613.68;
+8000;648.79;648.67;648.28;647.54;646.57;645.08;643.28;641.71;640.49;639.19;637.35;635.59;634.16;632.58;630.64;628.27;625.07;621.01;615.98;610;
+8500;644.38;644.09;643.69;642.96;641.98;640.49;638.69;637.1;635.88;634.57;632.77;631.04;629.57;628.07;626.14;623.68;620.41;616.49;611.87;606.39;
+9000;639.64;639.51;639.12;638.38;637.4;635.9;634.11;632.51;631.28;629.96;628.2;626.48;625.01;623.56;621.7;619.36;616.31;612.47;607.88;602.68;
+9500;634.89;634.94;634.55;633.81;632.83;631.34;629.56;627.92;626.68;625.35;623.66;621.96;620.47;619.06;617.27;615.03;612.2;608.57;604.26;599.49;
+10000;630.51;630.4;630;629.27;628.28;626.87;625;623.35;622.11;620.78;619.16;617.44;615.93;614.52;612.84;610.68;608;604.64;600.65;596.23;
+10500;626.11;625.86;625.45;624.72;623.74;622.33;620.48;618.82;617.57;616.23;614.66;612.94;611.4;610;608.37;606.3;603.78;600.7;596.96;592.91;
+11000;621.46;621.33;620.93;620.21;619.23;617.82;615.98;614.3;613.04;611.72;610.14;608.18;606.83;605.4;603.9;601.93;599.55;596.66;593.23;589.54;
+11500;624.48;624.4;624;623.26;622.27;620.83;618.96;617.26;615.98;614.63;613.05;611.08;609.71;608.26;606.7;604.69;602.25;599.36;595.85;592.06;
+12000;627.5;627.52;627.11;626.36;625.35;623.89;621.99;620.27;618.96;617.58;615.98;613.95;612.62;611.15;609.54;607.47;604.97;602.01;598.5;594.6;
+12500;630.82;630.69;630.27;629.51;628.48;627;625.07;623.32;621.99;620.57;618.94;617.14;615.53;614.02;612.41;610.29;607.72;604.67;601.13;597.16;
+13000;634.14;633.9;633.48;632.71;631.66;630.15;628.19;626.42;625.06;623.61;621.94;620.11;618.47;616.93;615.28;613.13;610.5;607.37;603.75;599.73;
+13500;637.46;637.55;636.75;635.95;634.88;633.36;631.35;629.56;628.18;626.68;624.98;623.12;621.46;619.88;618.18;615.97;613.3;610.09;606.38;602.27;
+14000;640.61;640.47;640.03;639.24;638.15;636.6;634.56;632.76;631.35;629.82;628.07;626.17;624.48;622.86;621.11;618.84;616.1;612.82;609.02;604.82;
+0.46;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;719.52;719.48;719.29;718.76;718.12;716.99;715.53;714.9;714.13;712.59;711.07;709.7;707.82;705.04;700.67;693.42;681.72;659.71;613.18;-9999;
+500;713.67;713.6;713.41;712.9;712.23;711.08;709.61;708.92;708.17;706.66;705.17;703.85;702.06;699.4;695.13;688.31;677.43;657.53;617.73;-9999;
+1000;707.84;707.81;707.59;707.08;706.4;705.24;703.75;703.04;702.27;700.75;699.23;697.91;696.18;693.58;689.55;683.14;673.03;654.98;620.3;-9999;
+1500;702;702.05;701.8;701.29;700.62;699.44;697.91;697.15;696.34;694.81;693.23;691.88;690.22;687.77;683.95;677.93;668.53;652.12;621.74;-9999;
+2000;696.48;696.39;696.12;695.52;694.74;693.48;691.96;691.2;690.4;688.92;687.33;685.96;684.32;681.94;678.32;672.67;663.64;648.97;622.27;-9999;
+2500;690.8;691.06;690.8;690.2;689.42;688.1;686.44;685.53;684.58;683.01;681.45;680.09;678.52;676.19;672.72;667.37;659.03;645.59;622.08;-9999;
+3000;685.84;685.77;685.49;684.89;684.1;682.78;681.12;680.19;679.24;677.68;675.93;674.39;672.72;670.5;667.14;662.08;654.3;642.24;620.96;-9999;
+3500;680.84;680.49;680.19;679.58;678.8;677.47;675.81;674.86;673.91;672.38;670.65;669.11;667.45;665.09;661.63;656.77;649.4;638.3;619.49;588.92;
+4000;675.27;675.17;674.89;674.28;673.49;672.16;670.5;669.53;668.58;667.1;665.15;663.83;662.23;659.96;656.65;651.79;644.49;634.21;617.15;588.7;
+4500;669.68;669.87;669.59;668.97;668.19;666.86;665.2;664.21;663.26;661.82;659.91;658.56;657.01;654.84;651.65;647.01;640.15;630.19;614.51;589.39;
+5000;664.65;664.57;664.28;663.67;662.88;661.55;659.9;658.89;657.82;656.54;654.68;653.28;651.78;649.69;646.65;642.23;635.76;626.51;611.97;589.4;
+5500;659.6;659.28;658.97;658.35;657.57;656.24;654.6;653.56;652.49;651.25;649.43;648;646.55;644.55;641.64;637.43;631.33;622.7;609.46;589.1;
+6000;654.05;653.96;653.66;653.04;652.25;650.92;649.28;648.24;647.16;645.96;644.16;642.72;641.28;639.39;636.61;632.6;626.86;618.59;606.97;588.51;
+6500;649.42;649.3;648.95;648.24;647.34;645.89;644.11;642.9;641.82;640.66;638.97;637.45;636.01;634.24;631.59;627.77;622.35;614.66;604;587.48;
+7000;644.76;644.69;644.33;643.62;642.72;641.26;639.48;638.24;636.96;635.67;633.8;632.19;630.75;629.08;626.55;622.91;617.81;610.62;600.84;586;
+7500;640.09;640.08;639.72;639.01;638.1;636.65;634.88;633.61;632.31;631.05;629.19;627.28;625.83;624.03;621.52;618.06;613.23;606.51;597.47;584.17;
+8000;635.61;635.49;635.12;634.41;633.5;632.04;630.27;628.97;627.66;626.43;624.58;622.69;621.24;619.53;617;613.48;608.66;602.37;593.95;582.04;
+8500;631.11;630.9;630.53;629.82;628.91;627.44;625.67;624.35;623.21;621.82;619.99;618.12;616.66;615.03;612.59;609.26;604.68;598.57;590.55;579.87;
+9000;626.59;626.31;625.94;625.23;624.31;622.85;621.08;619.73;618.58;617.24;615.41;613.56;612.09;610.53;608.18;605.02;600.71;594.86;587.23;577.82;
+9500;622.06;621.75;621.38;620.66;619.73;618.26;616.5;615.13;613.98;612.67;610.85;609.01;607.51;606.02;603.77;600.77;596.63;591.1;584.08;575.54;
+10000;617.52;617.19;616.82;616.1;615.16;613.69;611.93;610.53;609.39;608.1;606.29;604.45;603.2;601.52;599.34;596.39;592.48;587.32;580.85;573.08;
+10500;612.77;612.65;612.27;611.54;610.61;609.15;607.38;605.97;604.82;603.54;601.74;599.9;598.61;596.94;594.8;591.99;588.33;583.54;577.55;570.49;
+11000;608;608.13;607.75;607.03;606.09;604.63;602.86;601.42;600.26;598.96;597.12;595.14;593.94;592.32;590.26;587.59;584.17;579.71;574.2;567.77;
+11500;611.16;611.13;610.74;610.01;609.06;607.57;605.77;604.3;603.12;601.83;600.01;598.02;596.77;595.12;593;590.27;586.76;582.24;576.55;569.95;
+12000;614.33;614.17;613.78;613.03;612.06;610.55;608.72;607.23;606.03;604.71;602.86;600.9;599.64;597.94;595.78;592.98;589.38;584.79;578.93;572.13;
+12500;617.38;617.26;616.85;616.09;615.11;613.57;611.71;610.21;608.97;607.62;605.74;603.76;602.47;600.78;598.59;595.73;592.04;587.35;581.36;574.33;
+13000;620.43;620.4;619.98;619.2;618.2;616.64;614.74;613.23;611.97;610.58;608.65;606.65;605.33;603.59;601.39;598.5;594.74;589.93;583.8;576.54;
+13500;623.72;623.57;623.15;622.37;621.35;619.75;617.82;616.29;615.01;613.58;611.61;609.6;608.22;606.44;604.18;601.27;597.45;592.53;586.26;578.76;
+14000;627.01;626.79;626.37;625.57;624.54;622.91;620.94;619.4;618.08;616.63;614.62;612.59;611.15;609.32;607.01;604.02;600.19;595.16;588.73;581;
+0.44;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;706.3;706.15;705.92;705.52;704.92;703.89;702.78;701.97;701;699.35;697.76;696.18;693.81;689.94;683.3;672.65;651.01;597.29;-9999;-9999;
+500;700.63;700.44;699.82;699.22;698.59;697.67;696.53;695.75;694.9;693.25;691.75;690.25;687.99;684.31;678.08;668.1;648.43;601.7;-9999;-9999;
+1000;694.04;694.06;693.94;693.42;692.82;691.72;690.56;689.77;688.91;687.24;685.7;684.28;682.14;678.67;672.81;663.45;645.53;605.73;-9999;-9999;
+1500;688.19;688.17;688.03;687.51;686.91;685.81;684.65;683.85;682.99;681.33;679.75;678.33;676.28;673;667.49;658.75;642.37;607.63;-9999;-9999;
+2000;682.2;682.71;682.5;681.93;681.25;680.04;678.75;677.95;677.11;675.47;673.82;672.5;670.47;667.31;662.14;653.63;638.94;608.28;-9999;-9999;
+2500;677.45;677.42;677.19;676.63;675.94;674.73;673.43;672.51;671.54;669.76;668.12;666.71;664.75;661.7;656.81;648.76;635.31;608.22;-9999;-9999;
+3000;672.15;672.12;671.88;671.32;670.64;669.42;668.11;667.19;666.23;664.49;662.84;661.27;659.2;656.13;651.42;643.86;631.66;607.45;-9999;-9999;
+3500;666.84;666.81;666.56;666.01;665.33;664.11;662.79;661.87;660.93;659.22;657.59;656.06;654.05;651.04;646.3;638.92;627.53;605.74;561.9;-9999;
+4000;661.51;661.61;661.19;660.71;660.02;658.8;657.47;656.55;655.62;653.92;652.33;650.84;648.91;646.02;641.52;634.44;623.43;603.51;562.33;-9999;
+4500;656.26;656.21;655.96;655.4;654.72;653.48;652.14;651.23;650.31;648.63;647.07;645.62;643.76;640.99;636.7;630;619.7;601.28;565.1;-9999;
+5000;651.02;650.91;650.66;650.1;649.41;648.17;646.82;645.9;645;643.35;641.79;640.38;638.6;635.95;631.86;625.52;615.88;599.02;567.48;-9999;
+5500;645.76;645.61;645.36;644.79;644.1;642.85;641.5;640.58;639.68;638.05;636.51;635.12;633.41;630.88;627;620.98;611.97;596.46;568.15;-9999;
+6000;641.05;640.96;640.65;639.99;639.18;637.81;636.31;635.24;634.36;632.78;631.23;629.86;628.22;625.8;622.11;616.4;607.96;593.66;568.48;-9999;
+6500;636.32;636.42;636.06;635.36;634.55;633.16;631.45;630.54;629.47;627.77;626.02;624.6;623.02;620.71;617.19;611.79;603.58;590.63;568.22;-9999;
+7000;631.83;631.74;631.41;630.75;629.93;628.53;626.82;625.87;624.8;623.16;621.4;619.84;618.1;615.67;612.26;607.15;599.44;587.65;567.27;-9999;
+7500;627.33;627.14;626.82;626.15;625.32;623.91;622.18;621.22;620.14;618.55;616.79;615.23;613.54;611.21;607.79;602.73;595.15;584.27;565.97;-9999;
+8000;622.65;622.55;622.22;621.55;620.72;619.3;617.57;616.58;615.51;613.96;611.94;610.62;608.97;606.72;603.47;598.64;591.42;581.2;564.66;538.01;
+8500;617.95;618.04;617.67;616.95;616.12;614.69;612.97;611.95;610.81;609.38;607.39;606.01;604.41;602.23;599.12;594.45;587.64;578.15;563.17;539.58;
+9000;613.51;613.4;613.06;612.39;611.54;610.09;608.38;607.32;606.18;604.8;602.84;601.41;599.84;597.67;594.64;590.23;583.82;575;561.4;540.76;
+9500;609.05;608.82;608.48;607.79;606.95;605.52;603.79;602.74;601.57;600.23;598.26;596.73;595.1;593.05;590.15;586;579.99;571.53;559.38;540.99;
+10000;604.58;604.25;603.92;603.22;602.39;600.97;599.23;598.1;596.88;595.54;593.59;592.02;590.39;588.45;585.66;581.74;576.14;568.16;557.38;540.85;
+10500;600.09;599.72;599.37;598.67;597.79;596.33;594.55;593.4;592.15;590.86;589.01;587.34;585.7;583.84;581.16;577.48;572.18;564.78;554.9;540.23;
+11000;595.49;595.1;594.74;594.03;593.14;591.68;589.9;588.71;587.44;586.19;584.34;582.43;581.03;579.24;576.67;573.14;568.19;561.31;552.27;539.21;
+11500;598.07;598.1;597.73;597.01;596.11;594.62;592.81;591.6;590.3;589.02;587.14;585.19;583.77;581.94;579.3;575.73;570.68;563.63;554.33;540.82;
+12000;600.63;601.12;600.76;600.04;599.13;597.6;595.74;594.53;593.21;591.88;589.97;587.99;586.54;584.66;581.97;578.31;573.25;565.99;556.39;542.43;
+12500;604.25;604.13;603.76;603.03;602.12;600.61;598.74;597.5;596.16;594.79;592.84;590.81;589.34;587.42;584.67;580.93;575.76;568.35;558.47;544.03;
+13000;607.87;607.18;606.8;606.05;605.13;603.6;601.72;600.51;599.16;597.74;595.76;593.95;592.17;590.21;587.41;583.58;578.3;570.74;560.56;545.62;
+13500;610.4;610.28;609.88;609.12;608.18;606.62;604.71;603.48;602.13;600.71;598.71;596.87;595.06;593.04;590.17;586.26;580.83;573.19;562.66;547.2;
+14000;612.93;613.42;613.02;612.24;611.29;609.69;607.73;606.51;605.12;603.66;601.65;599.82;598;595.91;592.97;588.97;583.41;575.61;564.76;548.77;
+0.42;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;689.92;689.88;689.71;689.38;688.87;687.83;686.89;686.4;685.59;684.07;682.51;680.58;677.55;672.31;663.22;645.03;592.17;-9999;-9999;-9999;
+500;684.47;684.55;684.15;683.81;683.29;682.25;681.28;680.68;679.91;678.4;676.9;675.07;672.18;667.21;658.58;641.96;595.69;-9999;-9999;-9999;
+1000;678.82;678.83;678.63;678.27;677.74;676.69;675.71;675.06;674.28;672.75;671.24;669.5;666.76;662.09;653.87;638.71;598.5;-9999;-9999;-9999;
+1500;673.17;673.3;673.09;672.72;672.2;671.14;670.15;669.48;668.71;667.19;665.67;663.92;661.3;656.86;649.1;634.7;599.84;-9999;-9999;-9999;
+2000;668.32;668.3;668.05;667.62;667.02;665.87;664.76;663.94;663.14;661.64;660.15;658.46;655.89;651.62;644.07;630.96;600.12;-9999;-9999;-9999;
+2500;663.5;663.59;663.02;662.59;661.99;660.83;659.72;658.91;658.05;656.41;654.77;653;650.54;646.44;639.26;626.97;599.5;-9999;-9999;-9999;
+3000;658.26;658.24;658.09;657.53;656.93;655.76;654.65;653.85;653.01;651.39;649.79;648.04;645.47;641.35;634.37;622.77;598.23;-9999;-9999;-9999;
+3500;653.02;653.19;653.01;652.46;651.86;650.67;649.56;648.78;647.96;646.36;644.78;643.1;640.63;636.6;629.75;618.52;596.08;-9999;-9999;-9999;
+4000;648.14;648.12;647.92;647.38;646.78;645.57;644.45;643.69;642.89;641.31;639.76;638.09;635.63;631.68;625.22;614.69;593.89;542.41;-9999;-9999;
+4500;643.26;643.35;642.72;642.29;641.68;640.46;639.33;638.59;637.77;636.14;634.55;632.93;630.57;626.85;620.71;610.76;591.72;546.73;-9999;-9999;
+5000;638.01;637.35;637.51;636.63;636.34;635.16;634.03;633.3;632.48;630.87;629.31;627.75;625.49;621.95;616.14;606.77;589.25;549.92;-9999;-9999;
+5500;633.02;632.98;632.71;632.12;631.44;630.14;628.87;627.99;627.19;625.6;623.96;622.56;620.39;617.03;611.52;602.69;586.5;552.01;-9999;-9999;
+6000;628.4;628.34;628.08;627.49;626.8;625.48;624.19;623.31;622.33;620.58;618.75;617.35;615.28;612.07;606.88;598.51;583.51;553.18;-9999;-9999;
+6500;623.77;623.71;623.44;622.84;622.15;620.83;619.55;618.66;617.68;615.94;614.1;612.62;610.41;607.13;602.19;594.21;580.62;553.22;-9999;-9999;
+7000;619.12;619.21;618.73;618.22;617.51;616.21;614.91;614.01;613.04;611.31;609.62;608.04;605.92;602.78;597.85;589.78;577.37;553.11;-9999;-9999;
+7500;614.54;614.47;614.2;613.59;612.88;611.59;610.27;609.36;608.39;606.68;605;603.45;601.4;598.36;593.62;586.03;574.42;552.65;-9999;-9999;
+8000;609.95;609.86;609.59;608.97;608.26;606.99;605.64;604.71;603.75;602.04;600.38;598.82;596.78;593.85;589.35;582.27;571.35;551.68;515.79;-9999;
+8500;605.35;605.26;604.99;604.36;603.67;602.39;601.02;600.07;599.08;597.34;595.64;594.11;592.13;589.33;585.06;578.41;568.16;550.34;516.27;-9999;
+9000;600.73;600.68;600.41;599.79;599.07;597.73;596.31;595.32;594.32;592.6;590.9;589.39;587.47;584.79;580.76;574.44;564.9;548.67;518.85;-9999;
+9500;596;596.04;595.75;595.12;594.38;593.03;591.59;590.58;589.58;587.87;586.17;584.66;582.81;580.24;576.39;570.46;561.53;546.73;520.73;-9999;
+10000;591.23;591.32;591.14;590.46;589.71;588.35;586.88;585.85;584.84;583.14;581.44;579.92;578.14;575.65;572.02;566.44;558.07;544.54;521.53;-9999;
+10500;586.87;586.78;586.47;585.82;585.05;583.67;582.17;581.1;580.1;578.44;576.72;575.2;573.46;571.07;567.61;562.37;554.29;542.13;521.69;-9999;
+11000;582.49;582.17;581.85;581.18;580.41;579;577.49;576.4;575.37;573.74;572.01;570.48;568.79;566.48;563.18;558.26;550.74;539.77;521.34;-9999;
+11500;584.95;585.07;584.75;584.07;583.27;581.85;580.1;579.21;578.16;576.49;574.73;573.17;571.45;569.1;565.73;560.72;553.05;541.76;522.72;-9999;
+12000;588.13;588.03;587.7;587;586.19;584.74;582.94;582.05;580.98;579.29;577.48;575.9;574.14;571.74;568.31;563.21;555.38;543.75;524.08;-9999;
+12500;591.3;591.03;590.68;589.97;589.15;587.68;585.85;584.93;583.83;582.09;580.26;578.66;576.86;574.42;570.91;565.71;557.72;545.49;525.42;-9999;
+13000;594.17;594.06;593.71;592.99;592.15;590.65;588.8;587.86;586.73;584.94;583.09;581.44;579.62;577.12;573.54;568.24;560.07;547.49;526.75;-9999;
+13500;597.04;597.12;596.77;596.03;595.19;593.66;591.78;590.82;589.66;587.82;585.95;584.28;582.4;579.86;576.2;570.79;562.46;549.49;528.21;-9999;
+14000;600.34;600.24;599.88;599.13;598.26;596.71;594.81;593.82;592.64;590.75;588.83;587.14;585.21;582.61;578.91;573.36;564.85;551.49;529.49;-9999;
+0.4;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;672.23;672.22;672.03;671.78;671.79;671.17;670.52;670.14;669.1;667.57;665.77;663.29;659.15;651.67;636.61;593.72;-9999;-9999;-9999;-9999;
+500;667;667.08;666.73;666.44;666.4;665.76;665.08;664.67;663.67;662.15;660.43;658.06;654.12;646.86;633.01;595.85;-9999;-9999;-9999;-9999;
+1000;661.83;661.65;661.45;661.12;661.06;660.4;659.7;659.29;658.28;656.74;655.03;652.78;649.05;642.21;629.28;596.72;-9999;-9999;-9999;-9999;
+1500;656.5;656.51;656.28;655.88;655.72;655.04;654.32;653.93;652.95;651.42;649.73;647.49;643.93;637.51;625.83;596.31;-9999;-9999;-9999;-9999;
+2000;651.04;651.73;651.47;651.08;650.9;650.13;649.28;648.79;647.71;646.09;644.46;642.3;638.84;632.71;621.74;594.94;-9999;-9999;-9999;-9999;
+2500;646.89;646.91;646.64;646.26;646.07;645.28;644.42;643.93;642.88;641.24;639.48;637.23;633.8;627.98;617.5;593.94;-9999;-9999;-9999;-9999;
+3000;642.74;642.07;641.79;641.63;641.21;640.42;639.56;639.06;638.03;636.41;634.7;632.53;629.17;623.43;613.21;591.91;-9999;-9999;-9999;-9999;
+3500;637.17;637.22;636.92;636.75;636.34;635.53;634.66;634.16;633.17;631.57;629.9;627.8;624.58;619.11;609.29;589.54;-9999;-9999;-9999;-9999;
+4000;632.32;632.34;632.03;631.85;631.46;630.63;629.74;629.25;628.28;626.7;625.07;623.06;619.97;614.76;605.36;587.28;-9999;-9999;-9999;-9999;
+4500;627.46;627.43;627.11;626.93;626.54;625.7;624.79;624.31;623.37;621.81;620.21;618.28;615.33;610.38;601.54;584.77;536.28;-9999;-9999;-9999;
+5000;623.07;623.05;622.72;622.39;621.92;620.96;619.87;619.35;618.44;616.9;615.33;613.48;610.65;605.94;597.57;581.99;539.95;-9999;-9999;-9999;
+5500;618.67;618.69;618.4;618.06;617.6;616.61;615.5;614.88;613.82;612.13;610.43;608.64;605.93;601.46;593.34;578.44;542.11;-9999;-9999;-9999;
+6000;614.26;614.32;614.21;613.72;613.25;612.25;611.11;610.5;609.46;607.78;606.09;604.16;601.37;596.91;589.19;575.22;543.53;-9999;-9999;-9999;
+6500;609.83;609.99;609.86;609.38;608.9;607.88;606.7;606.1;605.08;603.41;601.75;599.89;597.14;592.81;585.47;572.44;544.09;-9999;-9999;-9999;
+7000;605.66;605.66;605.5;605.02;604.53;603.49;602.45;601.69;600.69;599.02;597.33;595.49;592.85;588.72;581.77;569.41;543.9;-9999;-9999;-9999;
+7500;601.48;601.31;601.14;600.66;600.16;599.09;598;597.21;596.2;594.52;592.86;591.07;588.53;584.6;577.96;566.26;543.39;-9999;-9999;-9999;
+8000;596.91;596.9;596.7;596.2;595.68;594.58;593.47;592.68;591.68;590;588.36;586.63;584.2;580.4;573.99;563.02;542.37;-9999;-9999;-9999;
+8500;592.29;592.44;592.23;591.72;591.18;590.06;588.93;588.13;587.15;585.47;583.84;582.16;579.81;576.06;569.75;559.67;540.79;496.26;-9999;-9999;
+9000;588;587.96;587.75;587.23;586.67;585.54;584.38;583.57;582.6;580.93;579.31;577.56;575.23;571.63;565.87;556.25;539.04;501.75;-9999;-9999;
+9500;583.75;583.48;583.26;582.73;582.16;581.01;579.83;578.93;577.94;576.24;574.41;572.88;570.61;567.21;561.77;552.82;536.99;504.51;-9999;-9999;
+10000;579.06;579;578.76;578.21;577.52;576.3;575.06;574.18;573.17;571.45;569.67;568.18;566;562.77;557.63;549.07;534.7;506.21;-9999;-9999;
+10500;574.35;574.3;574.05;573.46;572.83;571.59;570.31;569.41;568.41;566.7;564.94;563.48;561.38;558.29;553.45;545.48;532.2;506.9;-9999;-9999;
+11000;569.71;569.63;569.37;568.78;568.13;566.86;565.56;564.65;563.65;561.95;560.12;558.77;556.74;553.79;549.23;541.79;529.53;507.23;-9999;-9999;
+11500;572.58;572.46;572.19;571.58;570.92;569.63;568.3;567.37;566.35;564.62;562.79;561.38;559.32;556.32;551.67;544.09;531.47;508.44;-9999;-9999;
+12000;575.45;575.32;575.04;574.42;573.75;572.43;570.88;570.12;569.08;567.32;565.49;564.03;561.92;558.87;554.14;546.41;533.43;509.61;-9999;-9999;
+12500;578.33;578.21;577.91;577.23;576.61;575.26;573.7;572.9;571.84;570.04;568.2;566.69;564.54;561.44;556.63;548.75;535.38;510.75;-9999;-9999;
+13000;581.21;581.11;580.82;580.2;579.54;578.14;576.65;575.72;574.62;572.79;570.92;569.38;567.19;564.03;559.14;551.11;537.35;511.85;-9999;-9999;
+13500;584.1;583.92;583.63;582.99;582.32;581;579.47;578.56;577.44;575.54;573.65;572.09;569.86;566.65;561.66;553.48;539.32;512.91;-9999;-9999;
+14000;587.02;586.75;586.44;585.81;585.12;583.77;582.23;581.39;580.28;578.4;576.59;574.86;572.56;569.28;564.21;555.87;541.3;514.13;-9999;-9999;
+0.39;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;663.31;663;663.11;662.92;662.99;662.45;661.88;661.48;660.32;658.59;656.79;653.93;649.02;639.71;619.11;-9999;-9999;-9999;-9999;-9999;
+500;657.73;657.81;657.88;657.69;657.73;657.17;656.57;656.15;655.02;653.33;651.59;648.87;644.2;635.45;616.65;-9999;-9999;-9999;-9999;-9999;
+1000;652.14;652.61;652.68;652.49;652.51;651.93;651.31;650.89;649.75;648.08;646.34;643.76;639.34;631.13;613.68;606.2;-9999;-9999;-9999;-9999;
+1500;647.58;647.66;647.69;647.43;647.36;646.69;646.05;645.64;644.54;642.89;641.18;638.63;634.42;626.72;610.62;-9999;-9999;-9999;-9999;-9999;
+2000;642.91;642.97;642.98;642.73;642.64;641.96;641.2;640.69;639.5;637.7;636.04;633.6;629.53;622.21;607.34;564.31;-9999;-9999;-9999;-9999;
+2500;638.23;638.27;638.26;638.14;637.9;637.2;636.43;635.94;634.78;633.04;631.26;628.73;624.66;617.71;603.79;566.43;-9999;-9999;-9999;-9999;
+3000;633.48;633.55;633.53;633.39;633.14;632.43;631.65;631.16;630.04;628.42;626.59;624.15;620.25;613.27;600.11;567.15;-9999;-9999;-9999;-9999;
+3500;628.72;628.82;628.77;628.62;628.36;627.64;626.85;626.37;625.27;623.67;621.9;619.56;615.83;609.21;597.12;566.6;-9999;-9999;-9999;-9999;
+4000;623.95;624.03;623.99;623.84;623.57;622.83;622.03;621.55;620.49;618.91;617.19;614.93;611.37;605.1;593.49;565.78;-9999;-9999;-9999;-9999;
+4500;619.48;619.51;619.38;619.12;618.75;618;617.19;616.72;615.68;614.12;612.45;610.27;606.86;600.94;589.79;564.74;-9999;-9999;-9999;-9999;
+5000;614.99;615.31;615.16;614.89;614.49;613.6;612.63;612;610.87;609.31;607.68;605.59;602.34;596.65;585.99;563.69;-9999;-9999;-9999;-9999;
+5500;611.07;611.1;610.93;610.64;610.23;609.33;608.32;607.71;606.56;604.87;603.1;600.9;597.74;592.31;582.23;562.09;-9999;-9999;-9999;-9999;
+6000;606.84;606.87;606.68;606.38;605.97;605.04;604.03;603.4;602.28;600.62;598.86;596.68;593.45;588.13;578.56;560.1;-9999;-9999;-9999;-9999;
+6500;602.59;602.63;602.43;602.11;601.69;600.75;599.72;599.08;597.96;596.26;594.52;592.41;589.31;584.26;575.25;558.23;-9999;-9999;-9999;-9999;
+7000;598.3;598.38;598.12;597.78;597.34;596.35;595.28;594.64;593.55;591.86;590.15;588.11;585.15;580.29;571.86;556.07;514.11;-9999;-9999;-9999;
+7500;593.97;593.98;593.87;593.38;592.93;591.93;590.84;590.19;589.12;587.45;585.76;583.79;580.93;576.32;568.22;553.66;517.45;-9999;-9999;-9999;
+8000;589.62;589.59;589.45;588.96;588.5;587.49;586.39;585.72;584.67;583.01;581.35;579.45;576.69;572.31;564.7;551.09;519.31;-9999;-9999;-9999;
+8500;585.35;585.18;585.01;584.53;584.06;583.02;581.89;581.24;580.2;578.55;576.92;575.08;572.43;568.26;561.1;547.96;519.97;-9999;-9999;-9999;
+9000;581.09;580.76;580.57;580.09;579.6;578.55;577.39;576.74;575.72;574.08;572.46;570.69;568.15;564.17;557.42;545.27;520;-9999;-9999;-9999;
+9500;576.35;576.33;576.13;575.64;575.14;574.07;572.88;572.23;571.23;569.59;567.99;566.27;563.83;560.03;553.69;542.17;519.69;-9999;-9999;-9999;
+10000;571.6;571.89;571.69;571.18;570.67;569.58;568.35;567.7;566.72;565.09;563.5;561.84;559.49;555.87;549.88;539.03;518.78;-9999;-9999;-9999;
+10500;567.49;567.45;567.24;566.72;566.19;565.08;563.82;563.17;562.19;560.57;559;557.37;555.12;551.67;545.86;535.83;517.24;472.96;-9999;-9999;
+11000;563.36;563.01;562.79;562.26;561.71;560.58;559.28;558.62;557.66;556.04;554.47;552.89;550.72;547.28;541.73;532.5;515.58;478.61;-9999;-9999;
+11500;565.72;565.64;565.4;564.86;564.3;563.15;561.84;561.16;560.17;558.53;556.94;555.34;553.13;549.8;544.17;534.69;517.22;478.88;-9999;-9999;
+12000;568.08;568.28;568.04;567.49;566.91;565.74;564.43;563.72;562.7;561.04;559.43;557.8;555.56;552.19;546.57;536.89;518.87;-9999;-9999;-9999;
+12500;570.99;570.92;570.69;570.12;569.54;568.35;567.03;566.29;565.25;563.57;561.93;560.28;558.01;554.58;549.04;539.1;520.51;480.42;-9999;-9999;
+13000;573.9;573.58;573.35;572.77;572.19;570.98;569.64;568.88;567.81;566.1;564.45;562.77;560.46;556.99;551.37;541.33;522.15;-9999;-9999;-9999;
+13500;576.82;576.27;576.03;575.44;574.85;573.62;572.28;571.49;570.39;568.65;566.98;565.27;562.93;559.41;553.71;543.58;523.78;475.32;-9999;-9999;
+14000;579.03;578.97;578.72;578.12;577.52;576.27;574.92;574.11;572.99;571.22;569.52;567.79;565.41;561.84;556.06;545.83;525.41;477.61;-9999;-9999;
+0.38;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;653.73;653.8;653.83;653.66;653.8;653.34;652.85;652.37;651.14;649.51;647.29;643.99;638.26;626.09;594.82;-9999;-9999;-9999;-9999;-9999;
+500;648.54;648.61;648.73;648.56;648.67;648.18;647.67;647.19;645.98;644.37;642.26;639.1;633.52;622.34;593.82;-9999;-9999;-9999;-9999;-9999;
+1000;643.34;643.42;643.66;643.49;643.57;643.07;642.54;642.07;640.85;639.26;637.18;634.18;628.89;618.47;592.61;-9999;-9999;-9999;-9999;-9999;
+1500;638.71;638.79;638.86;638.63;638.63;638.03;637.4;636.96;635.77;634.2;632.17;629.23;624.19;614.48;591.37;-9999;-9999;-9999;-9999;-9999;
+2000;633.99;634.21;634.26;634.03;634.01;633.41;632.74;632.21;630.92;629.24;627.17;624.36;619.53;610.37;589.6;-9999;-9999;-9999;-9999;-9999;
+2500;629.53;629.61;629.64;629.41;629.37;628.75;628.07;627.56;626.3;624.65;622.6;619.72;614.92;606.23;587.15;-9999;-9999;-9999;-9999;-9999;
+3000;625.09;624.98;625;624.77;624.71;624.08;623.39;622.89;621.65;619.85;618.06;615.29;610.71;602.34;584.34;-9999;-9999;-9999;-9999;-9999;
+3500;620.27;620.35;620.35;620.24;620.04;619.4;618.7;618.2;616.99;615.23;613.49;610.84;606.46;598.54;581.62;-9999;-9999;-9999;-9999;-9999;
+4000;615.62;615.69;615.68;615.54;615.34;614.69;613.97;613.49;612.32;610.59;608.89;606.35;602.18;594.61;578.81;-9999;-9999;-9999;-9999;-9999;
+4500;611.42;611.46;611.38;611.16;610.83;610.04;609.22;608.76;607.62;605.92;604.27;601.84;597.83;590.59;575.8;535.35;-9999;-9999;-9999;-9999;
+5000;607.21;607.34;607.24;607;606.66;605.86;604.96;604.35;603.08;601.25;599.63;597.24;593.37;586.44;572.63;537.36;-9999;-9999;-9999;-9999;
+5500;602.99;603.22;603.1;602.85;602.5;601.69;600.78;600.17;598.91;597.07;595.27;592.78;588.95;582.25;569.33;538.55;-9999;-9999;-9999;-9999;
+6000;599.03;599.07;598.93;598.66;598.29;597.44;596.48;595.87;594.63;592.83;591.05;588.66;584.95;578.55;566.59;538.6;-9999;-9999;-9999;-9999;
+6500;595;594.81;594.66;594.37;594.01;593.12;592.16;591.54;590.33;588.64;586.81;584.49;580.94;574.88;563.45;538.12;-9999;-9999;-9999;-9999;
+7000;590.51;590.54;590.37;590.07;589.69;588.8;587.82;587.2;586.01;584.34;582.55;580.31;576.9;571.16;560.49;537.92;-9999;-9999;-9999;-9999;
+7500;586.23;586.25;586.06;585.75;585.36;584.44;583.45;582.83;581.67;580.02;578.27;576.1;572.84;567.39;557.42;537.04;-9999;-9999;-9999;-9999;
+8000;581.94;581.94;581.74;581.41;581.01;580.07;579.07;578.45;577.31;575.67;573.96;571.86;568.73;563.57;554.25;535.67;-9999;-9999;-9999;-9999;
+8500;577.65;577.73;577.39;577.06;576.64;575.69;574.67;574.04;572.93;571.3;569.63;567.6;564.6;559.7;550.99;533.74;-9999;-9999;-9999;-9999;
+9000;573.38;573.28;573.16;572.68;572.26;571.29;570.25;569.62;568.54;566.92;565.27;563.32;560.45;555.78;547.63;531.68;489.02;-9999;-9999;-9999;
+9500;568.92;568.92;568.76;568.29;567.87;566.88;565.82;565.18;564.12;562.51;560.9;559;556.25;551.82;544.18;529.35;492.84;-9999;-9999;-9999;
+10000;564.54;564.54;564.36;563.89;563.45;562.45;561.37;560.73;559.69;558.09;556.5;554.67;552.03;547.82;540.5;526.81;495.23;-9999;-9999;-9999;
+10500;560.16;560.15;559.97;559.49;559.03;558.01;556.9;556.26;555.23;553.64;552.07;550.3;547.77;543.77;536.9;524.07;496.35;-9999;-9999;-9999;
+11000;555.77;555.84;555.49;555.08;554.6;553.55;552.43;551.77;550.77;549.18;547.62;545.91;543.48;539.68;533.23;521.46;496.62;-9999;-9999;-9999;
+11500;558.06;558.24;558.07;557.56;557.08;556.02;554.87;554.21;553.18;551.57;550;548.26;545.8;541.96;535.41;523.47;497.78;-9999;-9999;-9999;
+12000;560.81;560.79;560.58;560.07;559.57;558.49;557.33;556.65;555.6;553.98;552.38;550.63;548.13;544.24;537.6;525.45;499.07;-9999;-9999;-9999;
+12500;563.58;563.35;563.1;562.58;562.09;560.98;559.8;559.11;558.03;556.39;554.78;553;550.48;546.54;539.8;527.2;500.19;-9999;-9999;-9999;
+13000;565.93;565.86;565.64;565.11;564.6;563.49;562.29;561.58;560.48;558.82;557.19;555.39;552.83;548.84;542.01;529.18;501.25;-9999;-9999;-9999;
+13500;568.29;568.39;568.19;567.64;567.13;566;564.79;564.07;562.94;561.26;559.61;557.78;555.2;551.15;544.23;531.15;502.3;-9999;-9999;-9999;
+14000;571.01;570.97;570.74;570.19;569.67;568.52;567.3;566.56;565.41;563.7;562.04;560.19;557.57;553.48;546.46;533.12;503.32;-9999;-9999;-9999;
+0.37;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;644.01;643.94;644.24;643.95;644.11;643.72;643.26;642.72;641.45;639.7;637.23;633.44;626.39;610.26;592.45;-9999;-9999;-9999;-9999;-9999;
+500;638.92;638.99;639.16;639;639.14;638.73;638.26;637.71;636.46;634.73;632.37;628.73;622.1;607.04;591.53;-9999;-9999;-9999;-9999;-9999;
+1000;633.83;633.89;634.22;634.06;634.19;633.76;633.29;632.75;631.49;629.78;627.46;623.98;617.74;603.64;590.4;-9999;-9999;-9999;-9999;-9999;
+1500;629.41;629.51;629.62;629.41;629.46;628.94;628.37;627.8;626.56;624.88;622.62;619.22;613.3;600.47;563.76;-9999;-9999;-9999;-9999;-9999;
+2000;624.95;625.03;625.12;624.91;624.95;624.42;623.85;623.26;621.91;620.14;617.81;614.53;608.88;596.78;564.31;-9999;-9999;-9999;-9999;-9999;
+2500;620.46;620.54;620.61;620.4;620.42;619.88;619.29;618.73;617.41;615.69;613.43;610.13;604.39;593.04;563.74;-9999;-9999;-9999;-9999;-9999;
+3000;615.96;616.03;616.09;615.87;615.88;615.33;614.72;614.18;612.89;611.21;609.03;605.86;600.41;589.55;562.21;-9999;-9999;-9999;-9999;-9999;
+3500;611.41;611.5;611.55;611.33;611.31;610.75;610.15;609.61;608.34;606.7;604.59;601.57;596.31;586.1;561.35;-9999;-9999;-9999;-9999;-9999;
+4000;606.98;607.03;607.01;606.76;606.73;606.15;605.53;605.02;603.77;602.18;600.15;597.19;592.15;582.55;560.17;-9999;-9999;-9999;-9999;-9999;
+4500;603.28;603.03;602.99;602.8;602.52;601.81;601.04;600.42;599.18;597.58;595.57;592.73;587.98;578.9;558.47;-9999;-9999;-9999;-9999;-9999;
+5000;598.94;598.99;598.93;598.72;598.43;597.69;596.86;596.21;594.82;593.09;590.97;588.25;583.67;575.17;556.52;-9999;-9999;-9999;-9999;-9999;
+5500;594.52;594.85;594.78;594.55;594.25;593.5;592.66;592.02;590.65;588.94;586.89;584.1;579.6;571.51;554.42;544.24;-9999;-9999;-9999;-9999;
+6000;590.65;590.69;590.6;590.37;590.06;589.29;588.43;587.8;586.47;584.78;582.78;580.1;575.8;568.16;552.06;546.8;-9999;-9999;-9999;-9999;
+6500;586.48;586.52;586.42;586.17;585.84;585.07;584.19;583.58;582.27;580.41;578.65;576.07;571.96;564.74;549.67;-9999;-9999;-9999;-9999;-9999;
+7000;582.3;582.38;582.21;581.96;581.62;580.83;579.94;579.33;578.05;576.23;574.5;572.01;568.09;561.26;547.11;510.43;-9999;-9999;-9999;-9999;
+7500;578.12;578.19;577.99;577.72;577.39;576.57;575.66;575.06;573.81;572.03;570.33;567.92;564.17;557.57;544.37;512.72;-9999;-9999;-9999;-9999;
+8000;573.94;573.91;573.76;573.48;573.14;572.29;571.37;570.77;569.56;567.81;566.13;563.81;560.23;554.01;541.92;513.46;-9999;-9999;-9999;-9999;
+8500;569.66;569.68;569.51;569.21;568.87;568;567.07;566.47;565.28;563.57;561.91;559.67;556.24;550.37;539.16;513.4;-9999;-9999;-9999;-9999;
+9000;565.4;565.42;565.24;564.93;564.57;563.68;562.74;562.14;560.97;559.38;557.67;555.5;552.22;546.67;536.26;513.34;-9999;-9999;-9999;-9999;
+9500;561.14;561.15;560.95;560.63;560.26;559.35;558.39;557.79;556.64;555.07;553.4;551.31;548.17;542.91;533.24;512.68;-9999;-9999;-9999;-9999;
+10000;556.87;556.94;556.64;556.31;555.93;555;554.02;553.42;552.3;550.73;549.1;547.09;544.08;539.1;530.11;511.46;-9999;-9999;-9999;-9999;
+10500;552.55;552.56;552.43;551.97;551.58;550.64;549.64;549.03;547.94;546.38;544.77;542.83;539.96;535.24;526.86;509.79;-9999;-9999;-9999;-9999;
+11000;548.24;548.24;548.08;547.62;547.21;546.26;545.24;544.62;543.55;542;540.43;538.55;535.8;531.33;523.51;507.64;464.93;-9999;-9999;-9999;
+11500;550.63;550.62;550.45;549.99;549.58;548.6;547.57;546.95;545.86;544.29;542.7;540.8;538.02;533.49;525.56;509.23;465.64;-9999;-9999;-9999;
+12000;553.03;553.1;552.75;552.37;551.95;550.96;549.91;549.28;548.17;546.58;544.98;543.06;540.26;535.67;527.62;510.82;-9999;-9999;-9999;-9999;
+12500;555.44;555.51;555.15;554.76;554.33;553.32;552.26;551.62;550.49;548.89;547.27;545.33;542.5;537.87;529.69;512.4;-9999;-9999;-9999;-9999;
+13000;557.83;557.82;557.63;557.14;556.72;555.7;554.62;553.96;552.81;551.2;549.56;547.6;544.74;540.07;531.76;513.98;-9999;-9999;-9999;-9999;
+13500;560.24;560.25;560.04;559.54;559.12;558.08;556.99;556.32;555.15;553.51;551.84;549.85;546.96;542.28;533.83;515.72;-9999;-9999;-9999;-9999;
+14000;562.68;562.66;562.46;561.95;561.52;560.47;559.35;558.68;557.45;555.8;554.12;552.1;549.19;544.45;535.91;517.3;-9999;-9999;-9999;-9999;
+0.36;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;633.71;633.63;633.92;633.66;633.84;633.51;632.95;632.18;630.82;628.88;626.17;622.01;613.46;590.74;-9999;-9999;-9999;-9999;-9999;-9999;
+500;628.78;628.84;629.15;628.88;629.04;628.69;628.21;627.42;626.05;624.15;621.55;617.56;609.47;588.77;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;623.83;624.1;624.38;624.1;624.26;623.89;623.42;622.73;621.35;619.45;616.88;613.06;605.42;586.42;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;619.63;619.69;619.85;619.66;619.75;619.3;618.75;618.06;616.67;614.81;612.29;608.5;601.28;583.75;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;615.4;615.38;615.5;615.3;615.38;614.92;614.37;613.71;612.29;610.36;607.78;604.05;597.08;580.75;561.81;-9999;-9999;-9999;-9999;-9999;
+2500;610.92;611.01;611.11;610.92;610.98;610.52;609.98;609.34;607.96;606.1;603.6;599.94;592.98;577.32;560.83;-9999;-9999;-9999;-9999;-9999;
+3000;606.54;606.63;606.72;606.52;606.57;606.09;605.56;604.93;603.6;601.81;599.39;595.79;589.15;574.29;559.65;-9999;-9999;-9999;-9999;-9999;
+3500;602.14;602.21;602.3;602.11;602.15;601.66;601.13;600.53;599.22;597.44;595.06;591.6;585.27;571.37;558.77;-9999;-9999;-9999;-9999;-9999;
+4000;597.68;598.02;598.02;597.74;597.65;597.14;596.58;595.99;594.7;592.97;590.7;587.31;581.33;568.59;533.46;-9999;-9999;-9999;-9999;-9999;
+4500;593.95;594.01;594;593.71;593.59;592.95;592.22;591.52;590.15;588.45;586.25;583.01;577.33;565.46;533.8;-9999;-9999;-9999;-9999;-9999;
+5000;590.3;589.98;589.96;589.79;589.54;588.88;588.13;587.46;586.03;584.23;581.94;578.69;573.19;562.22;533.72;-9999;-9999;-9999;-9999;-9999;
+5500;585.89;585.94;585.91;585.72;585.47;584.79;584.04;583.37;581.96;580.2;577.98;574.85;569.53;559.27;533.33;-9999;-9999;-9999;-9999;-9999;
+6000;581.83;581.88;581.83;581.64;581.37;580.69;579.92;579.26;577.88;576.15;574;570.98;565.93;556.3;533.19;-9999;-9999;-9999;-9999;-9999;
+6500;577.77;577.84;577.74;577.54;577.26;576.57;575.78;575.14;573.77;572.08;569.99;567.09;562.28;553.24;532.33;-9999;-9999;-9999;-9999;-9999;
+7000;573.69;573.76;573.63;573.42;573.14;572.42;571.63;571;569.65;567.98;565.95;563.17;558.59;550.09;531.03;-9999;-9999;-9999;-9999;-9999;
+7500;569.56;569.6;569.51;569.28;568.99;568.26;567.45;566.83;565.51;563.87;561.89;559.22;554.86;546.87;529.31;-9999;-9999;-9999;-9999;-9999;
+8000;565.42;565.47;565.37;565.12;564.82;564.08;563.25;562.65;561.35;559.73;557.81;555.24;551.08;543.57;527.29;519.03;-9999;-9999;-9999;-9999;
+8500;561.27;561.32;561.2;560.94;560.65;559.88;559.04;558.45;557.17;555.57;553.71;551.23;547.27;540.2;524.85;520.51;-9999;-9999;-9999;-9999;
+9000;557.11;557.16;557.02;556.75;556.45;555.66;554.8;554.22;552.97;551.22;549.58;547.2;543.42;536.76;522.4;483.86;-9999;-9999;-9999;-9999;
+9500;552.94;552.98;552.83;552.55;552.24;551.43;550.55;549.97;548.75;547.03;545.43;543.12;539.52;533.26;520.09;487.26;-9999;-9999;-9999;-9999;
+10000;548.76;548.83;548.61;548.32;548;547.17;546.28;545.7;544.51;542.82;541.25;539.02;535.58;529.57;517.79;488.38;-9999;-9999;-9999;-9999;
+10500;544.56;544.58;544.39;544.09;543.76;542.9;542;541.42;540.24;538.6;537.04;534.9;531.61;525.94;515.07;488.91;-9999;-9999;-9999;-9999;
+11000;540.36;540.34;540.14;539.82;539.48;538.61;537.7;537.1;535.96;534.35;532.8;530.74;527.6;522.26;512.22;488.91;-9999;-9999;-9999;-9999;
+11500;542.45;542.59;542.39;542.06;541.72;540.83;539.91;539.31;538.14;536.51;534.97;532.89;529.72;524.33;514.12;490.27;-9999;-9999;-9999;-9999;
+12000;544.55;544.62;544.64;544.31;543.96;543.06;542.13;541.52;540.35;538.67;537.12;535;531.82;526.41;516.02;491.43;-9999;-9999;-9999;-9999;
+12500;547.12;547.13;547.02;546.55;546.21;545.29;544.35;543.73;542.51;540.83;539.24;537.11;533.9;528.47;517.92;492.56;-9999;-9999;-9999;-9999;
+13000;549.4;549.41;549.29;548.81;548.46;547.54;546.55;545.92;544.66;542.95;541.37;539.22;535.99;530.52;519.82;493.66;-9999;-9999;-9999;-9999;
+13500;551.68;551.68;551.55;551.07;550.71;549.79;548.76;548.08;546.81;545.08;543.49;541.33;538.07;532.55;521.73;494.73;-9999;-9999;-9999;-9999;
+14000;553.98;553.96;553.81;553.31;552.94;551.98;551.06;550.24;548.95;547.21;545.61;543.43;540.16;534.59;523.63;495.77;-9999;-9999;-9999;-9999;
+0.35;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;622.78;622.84;623.09;622.86;622.78;622.31;621.63;620.75;619.35;617.29;614.36;609.69;598.94;577.68;-9999;-9999;-9999;-9999;-9999;-9999;
+500;618.11;618.17;618.36;618.24;618.24;617.75;617.08;616.21;614.83;612.8;609.97;605.5;595.36;565.45;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;613.51;613.57;613.73;613.59;613.69;613.2;612.53;611.69;610.31;608.31;605.53;601.26;591.65;563.71;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;609.52;609.37;609.61;609.32;609.43;608.88;608.16;607.25;605.8;603.85;601.15;596.94;587.83;561.62;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;605.06;605.13;605.27;605.09;605.18;604.67;603.97;603.1;601.66;599.64;596.82;592.52;583.95;559.98;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;600.59;600.94;601.06;600.87;600.96;600.46;599.75;598.85;597.45;595.45;592.7;588.55;580.21;558.17;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;596.54;596.61;596.73;596.55;596.63;596.17;595.47;594.61;593.17;591.23;588.55;584.52;576.65;556.42;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;592.54;592.27;592.38;592.19;592.26;591.84;591.16;590.32;588.9;586.97;584.36;580.48;573.03;554.41;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;588.2;588.27;588.28;588.02;587.96;587.44;586.81;585.99;584.6;582.71;580.19;576.4;569.34;552.02;532.35;-9999;-9999;-9999;-9999;-9999;
+4500;583.85;584.36;584.38;584.11;584.04;583.47;582.76;581.81;580.3;578.42;575.98;572.34;565.61;549.48;531.38;-9999;-9999;-9999;-9999;-9999;
+5000;580.38;580.44;580.45;580.18;580.09;579.52;578.84;577.91;576.43;574.49;571.99;568.37;561.94;546.8;531.24;-9999;-9999;-9999;-9999;-9999;
+5500;576.89;576.5;576.5;576.23;576.13;575.54;574.82;574;572.53;570.63;568.2;564.71;558.59;544.54;530.71;-9999;-9999;-9999;-9999;-9999;
+6000;572.51;572.56;572.55;572.38;572.16;571.55;570.83;570.05;568.6;566.74;564.38;561.02;555.2;542.21;530.35;-9999;-9999;-9999;-9999;-9999;
+6500;568.11;568.59;568.57;568.39;568.16;567.54;566.82;566.08;564.64;562.82;560.53;557.3;551.77;539.9;506.78;-9999;-9999;-9999;-9999;-9999;
+7000;564.55;564.61;564.57;564.38;564.15;563.52;562.8;562.08;560.65;558.88;556.65;553.54;548.31;537.26;507.2;-9999;-9999;-9999;-9999;-9999;
+7500;560.99;560.6;560.55;560.35;560.11;559.47;558.74;558.06;556.65;554.91;552.75;549.76;544.78;534.48;507.33;-9999;-9999;-9999;-9999;-9999;
+8000;556.53;556.57;556.51;556.3;556.05;555.39;554.66;554.01;552.62;550.91;548.82;545.94;541.2;531.59;507.37;-9999;-9999;-9999;-9999;-9999;
+8500;552.05;552.53;552.45;552.22;551.97;551.3;550.55;549.93;548.56;546.88;544.85;542.08;537.57;528.61;506.99;-9999;-9999;-9999;-9999;-9999;
+9000;548.42;548.46;548.37;548.13;547.87;547.19;546.42;545.82;544.48;542.83;540.86;538.19;533.89;525.53;505.98;-9999;-9999;-9999;-9999;-9999;
+9500;544.78;544.38;544.27;544.03;543.75;543.05;542.27;541.68;540.37;538.75;536.84;534.27;530.17;522.37;504.48;-9999;-9999;-9999;-9999;-9999;
+10000;540.25;540.28;540.16;539.9;539.64;538.9;538.1;537.52;536.23;534.65;532.79;530.32;526.41;519.12;502.62;-9999;-9999;-9999;-9999;-9999;
+10500;535.71;536.16;536.02;535.75;535.49;534.73;533.91;533.34;532.08;530.52;528.71;526.33;522.61;515.79;500.3;495.51;-9999;-9999;-9999;-9999;
+11000;531.99;532.02;531.87;531.59;531.31;530.54;529.7;529.14;527.9;526.37;524.61;522.32;518.76;512.43;498.27;495.31;-9999;-9999;-9999;-9999;
+11500;534.18;534.15;533.98;533.7;533.42;532.63;531.77;531.18;529.91;528.36;526.59;524.29;520.7;514.3;499.97;496.87;-9999;-9999;-9999;-9999;
+12000;536.38;536.45;536.1;535.81;535.53;534.74;533.83;533.19;531.9;530.35;528.58;526.25;522.64;516.23;501.65;498.53;-9999;-9999;-9999;-9999;
+12500;538.58;538.4;538.23;537.91;537.6;536.8;535.87;535.2;533.9;532.34;530.56;528.22;524.57;518.15;503.33;499.92;-9999;-9999;-9999;-9999;
+13000;540.51;540.53;540.35;540;539.67;538.82;537.88;537.21;535.9;534.33;532.54;530.19;526.51;520.07;504.99;-9999;-9999;-9999;-9999;-9999;
+13500;542.45;542.64;542.46;542.08;541.71;540.84;539.89;539.21;537.89;536.31;534.51;532.15;528.46;521.97;506.65;501.74;-9999;-9999;-9999;-9999;
+14000;544.72;544.72;544.49;544.1;543.73;542.85;541.89;541.21;539.88;538.29;536.49;534.11;530.39;523.84;508.3;504.14;-9999;-9999;-9999;-9999;
+0.34;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;611.56;610.87;610.95;610.59;610.44;609.97;609.25;608.28;606.87;604.68;601.56;596.19;581.16;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;606.58;606.64;606.62;606.3;606.16;605.68;604.96;604.01;602.62;600.49;597.41;592.21;578.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;602.37;602.43;602.4;602.06;601.89;601.4;600.7;599.76;598.34;596.21;593.18;588.16;575.3;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;598.76;598.37;598.42;598.06;597.89;597.36;596.59;595.59;594.09;591.92;588.97;584.1;572.14;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;594.22;594.28;594.29;593.98;593.82;593.3;592.54;591.56;590.11;587.93;584.9;580.06;568.94;547.48;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;589.75;590.1;590.2;589.86;589.72;589.19;588.45;587.5;586.06;583.94;581;576.32;565.82;545.35;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;585.84;585.91;585.99;585.71;585.57;585.05;584.33;583.41;581.98;579.91;577.05;572.55;562.68;533.67;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;581.93;581.66;581.82;581.52;581.39;580.87;580.17;579.27;577.87;575.85;573.06;568.73;559.45;532.13;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;577.78;577.84;577.88;577.57;577.32;576.68;575.96;575.1;573.72;571.75;569.05;564.87;556.11;530.63;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;573.59;574.04;574.09;573.79;573.52;572.88;572.08;571.11;569.62;567.61;564.98;560.97;552.72;529.36;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;570.2;570.26;570.29;570.03;569.77;569.11;568.29;567.31;565.86;563.87;561.21;557.27;549.56;528.51;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;566.8;566.46;566.48;566.24;565.98;565.32;564.52;563.55;562.08;560.11;557.54;553.74;546.45;527.23;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;562.58;562.64;562.64;562.4;562.17;561.51;560.71;559.77;558.32;556.39;553.85;550.09;543.31;525.61;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;558.34;558.78;558.79;558.54;558.34;557.67;556.88;555.96;554.53;552.64;550.18;546.55;540.1;523.62;505.48;-9999;-9999;-9999;-9999;-9999;
+7000;554.87;554.92;554.91;554.73;554.48;553.8;553.02;552.13;550.71;548.87;546.47;542.98;536.88;521.47;504.71;-9999;-9999;-9999;-9999;-9999;
+7500;551.38;551.03;551.02;550.83;550.59;549.91;549.14;548.26;546.86;545.06;542.74;539.38;533.6;519.47;504.53;-9999;-9999;-9999;-9999;-9999;
+8000;547.08;547.13;547.1;546.91;546.68;545.99;545.19;544.36;542.98;541.22;538.97;535.74;530.27;517.29;504.06;-9999;-9999;-9999;-9999;-9999;
+8500;542.77;543.2;543.16;542.97;542.74;542.05;541.24;540.44;539.08;537.35;535.17;532.07;526.87;514.94;503.89;-9999;-9999;-9999;-9999;-9999;
+9000;539.21;539.26;539.2;539;538.78;538.08;537.27;536.5;535.14;533.45;531.33;528.36;523.42;512.58;480.43;-9999;-9999;-9999;-9999;-9999;
+9500;535.64;535.29;535.22;535.01;534.78;534.08;533.26;532.52;531.18;529.52;527.47;524.61;519.92;509.89;481.3;-9999;-9999;-9999;-9999;-9999;
+10000;531.26;531.3;531.21;530.99;530.76;530.06;529.24;528.52;527.2;525.57;523.58;520.84;516.29;507.09;481.39;-9999;-9999;-9999;-9999;-9999;
+10500;526.86;527.28;527.19;526.96;526.71;526.01;525.19;524.49;523.19;521.59;519.66;517.02;512.75;504.17;481.58;-9999;-9999;-9999;-9999;-9999;
+11000;523.22;523.25;523.14;522.9;522.64;521.94;521.11;520.43;519.15;517.58;515.71;513.18;509.08;501.15;480.81;-9999;-9999;-9999;-9999;-9999;
+11500;525.28;525.23;525.12;524.83;524.56;523.81;522.97;522.29;521;519.43;517.55;514.99;510.89;502.92;482.06;-9999;-9999;-9999;-9999;-9999;
+12000;527.34;527.19;527.1;526.77;526.45;525.68;524.83;524.15;522.84;521.27;519.39;516.81;512.68;504.68;483.3;-9999;-9999;-9999;-9999;-9999;
+12500;529.13;529.16;528.98;528.64;528.31;527.54;526.68;526;524.69;523.11;521.22;518.63;514.44;506.45;484.51;-9999;-9999;-9999;-9999;-9999;
+13000;530.93;531;530.85;530.51;530.18;529.4;528.54;527.84;526.53;524.94;523.05;520.45;516.22;508.21;485.8;-9999;-9999;-9999;-9999;-9999;
+13500;532.91;532.91;532.72;532.37;532.04;531.25;530.38;529.69;528.37;526.77;524.87;522.27;518.01;509.97;486.98;-9999;-9999;-9999;-9999;-9999;
+14000;534.91;534.77;534.57;534.21;533.89;533.09;532.22;531.52;530.2;528.6;526.7;524.08;519.79;511.7;488.12;-9999;-9999;-9999;-9999;-9999;
+0.33;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;597.53;597.49;597.45;597.09;596.91;596.76;596.27;595.53;594.11;591.42;587.02;579.41;559.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;593.43;593.49;593.38;593.05;592.84;592.5;591.99;591.27;589.88;587.38;583.51;576.3;557.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;589.49;589.55;589.44;589.09;588.84;588.38;587.81;587.02;585.63;583.15;579.8;573.99;555.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;585.48;585.68;585.67;585.3;585.06;584.58;583.9;583;581.54;578.99;575.82;570.17;553.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;581.83;581.89;581.79;581.46;581.24;580.74;580.02;579.04;577.62;575.27;571.88;566.46;550.91;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;578.19;577.94;577.9;577.59;577.38;576.86;576.14;575.13;573.71;571.53;568.21;562.98;548.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;573.99;574.05;573.97;573.67;573.48;572.97;572.23;571.24;569.78;567.57;564.55;559.46;545.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;569.79;569.85;570.01;569.71;569.53;569.03;568.3;567.33;565.92;563.77;560.83;555.88;543.39;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;566.45;566.51;566.36;566;565.71;565.09;564.32;563.39;562;559.93;557.03;552.26;540.68;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;563.11;562.82;562.75;562.39;562.11;561.5;560.68;559.63;558.15;556.03;553.19;548.6;538.02;517.52;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;559.16;559.22;559.1;558.74;558.47;557.87;557.06;556.04;554.58;552.5;549.68;545.24;535.47;516.03;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;555.21;555.27;555.42;555.07;554.81;554.2;553.42;552.42;550.98;548.95;546.19;541.91;532.92;515.38;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;551.78;551.83;551.71;551.37;551.11;550.51;549.74;548.77;547.35;545.36;542.67;538.55;530.13;503.91;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;548.32;548.05;547.96;547.64;547.39;546.79;546.03;545.08;543.68;541.75;539.13;535.15;527.25;502.58;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;544.35;544.41;544.27;543.92;543.65;543.03;542.26;541.37;539.99;538.1;535.56;531.72;524.31;501.84;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;540.38;540.44;540.54;540.2;539.93;539.31;538.55;537.63;536.24;534.42;531.95;528.25;521.31;501.06;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;536.89;536.95;536.8;536.51;536.19;535.56;534.8;533.91;532.54;530.71;528.29;524.76;518.22;499.77;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;533.4;533.13;533.03;532.74;532.42;531.78;531.03;530.15;528.8;527.02;524.67;521.18;515.04;498.1;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;529.33;529.34;529.23;528.94;528.62;527.98;527.23;526.37;525.03;523.29;521.02;517.67;511.82;496.24;479.21;-9999;-9999;-9999;-9999;-9999;
+9500;525.26;525.32;525.41;525.12;524.8;524.15;523.41;522.57;521.25;519.54;517.34;514.14;508.57;494.41;478.63;-9999;-9999;-9999;-9999;-9999;
+10000;521.67;521.68;521.56;521.26;520.94;520.29;519.53;518.74;517.42;515.76;513.63;510.57;505.26;492.34;477.6;-9999;-9999;-9999;-9999;-9999;
+10500;518.08;517.81;517.68;517.38;517.06;516.4;515.63;514.87;513.57;511.94;509.87;506.91;501.91;490.07;477.72;-9999;-9999;-9999;-9999;-9999;
+11000;513.9;513.9;513.77;513.46;513.14;512.48;511.7;510.97;509.69;508.08;506.08;503.24;498.47;487.62;478.04;-9999;-9999;-9999;-9999;-9999;
+11500;515.57;515.63;515.49;515.17;514.85;514.19;513.42;512.67;511.39;509.78;507.77;504.91;500.15;489.24;479.34;-9999;-9999;-9999;-9999;-9999;
+12000;517.34;517.36;517.2;516.88;516.56;515.89;515.11;514.37;513.09;511.47;509.45;506.59;501.8;490.85;480.61;-9999;-9999;-9999;-9999;-9999;
+12500;519.13;519.06;518.91;518.59;518.27;517.59;516.81;516.06;514.77;513.16;511.15;508.26;503.44;492.46;481.86;-9999;-9999;-9999;-9999;-9999;
+13000;520.95;520.76;520.61;520.28;519.99;519.29;518.5;517.75;516.46;514.85;512.83;509.94;505.08;494.06;483.09;-9999;-9999;-9999;-9999;-9999;
+13500;522.45;522.46;522.3;521.97;521.68;520.97;520.19;519.43;518.14;516.53;514.5;511.61;506.71;495.65;484.4;-9999;-9999;-9999;-9999;-9999;
+14000;523.97;524.03;523.98;523.64;523.36;522.64;521.86;521.11;519.81;518.18;516.13;513.18;508.33;497.23;485.44;-9999;-9999;-9999;-9999;-9999;
+0.32;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;582.31;582.37;582.33;582.31;582.36;582.08;581.37;580.31;578.33;575.16;570.03;559.56;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;578.6;578.66;578.75;578.62;578.69;578.41;577.73;576.7;574.82;571.72;566.65;557.29;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;575.23;575.29;575.22;575.08;575.15;574.85;574.15;573.09;571.28;568.26;563.35;554.6;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;571.71;571.78;571.67;571.52;571.7;571.45;570.79;569.77;567.93;564.9;560.02;551.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;568.19;568.25;568.07;567.83;567.98;567.84;567.31;566.44;564.66;561.76;556.98;549.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;564.67;564.51;564.43;564.15;564.19;564.08;563.57;562.78;561.33;558.52;554.1;546.44;528.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;560.85;560.91;560.78;560.47;560.36;560.28;559.78;559.02;557.6;555.08;551.04;543.69;525.34;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;557.03;557.14;557.08;556.76;556.58;556.44;555.94;555.21;553.81;551.36;547.72;540.88;523.49;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;553.79;553.85;553.66;553.28;552.96;552.58;552.06;551.35;549.99;547.6;544.08;538.41;521.92;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;550.55;550.37;550.26;549.89;549.56;549.09;548.48;547.66;546.22;543.8;540.48;535.1;520.55;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;546.94;547;546.83;546.46;546.15;545.61;545.02;544.16;542.74;540.4;537.21;532.05;518.51;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;543.32;543.37;543.36;543.01;542.7;542.14;541.5;540.63;539.24;536.96;533.94;529.12;516.78;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;539.96;540.02;539.86;539.51;539.22;538.64;537.93;537.07;535.71;533.5;530.63;525.95;514.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;536.59;536.41;536.32;535.98;535.7;535.13;534.37;533.47;532.15;530.03;527.06;522.73;512.36;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;532.83;532.89;532.75;532.42;532.15;531.58;530.83;529.85;528.56;526.52;523.7;519.51;509.93;489.83;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;529.06;529.12;529.15;528.83;528.56;528;527.25;526.3;524.98;522.98;520.31;516.26;507.38;488.7;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;525.6;525.65;525.52;525.21;524.95;524.38;523.65;522.72;521.37;519.44;516.89;512.96;504.81;488.07;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;522.12;521.95;521.87;521.6;521.31;520.74;520.02;519.12;517.76;515.92;513.45;509.63;502.04;476.06;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;518.28;518.34;518.19;517.92;517.61;517.06;516.35;515.47;514.16;512.37;509.95;506.27;499.13;474.84;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;514.48;514.54;514.55;514.26;513.96;513.37;512.66;511.78;510.51;508.76;506.41;502.88;496.06;474.43;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;510.97;510.97;510.87;510.58;510.28;509.69;508.98;508.12;506.83;505.1;502.85;499.43;492.93;473.62;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;507.45;507.26;507.15;506.86;506.57;505.97;505.26;504.42;503.15;501.46;499.23;495.83;489.76;472.24;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;503.51;503.52;503.4;503.12;502.82;502.22;501.52;500.7;499.42;497.75;495.57;492.31;486.53;470.59;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;505.03;505.08;504.96;504.67;504.37;503.77;503.07;502.24;500.98;499.32;497.12;493.85;488.05;471.93;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;506.55;506.61;506.51;506.21;505.92;505.31;504.61;503.79;502.48;500.83;498.63;495.5;489.57;473.25;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;508.18;508.18;508.05;507.75;507.46;506.85;506.15;505.33;504.14;502.51;500.3;497.1;491.09;474.56;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;509.82;509.72;509.59;509.28;508.99;508.38;507.68;507;505.85;504.25;502.02;498.63;492.67;475.85;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;511.24;511.24;511.11;510.8;510.51;509.91;509.32;508.73;507.58;505.97;503.74;500.12;493.99;477.13;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;512.68;512.74;512.62;512.31;512.06;511.49;511.02;510.46;509.3;507.69;505.46;501.8;495.47;478.38;-9999;-9999;-9999;-9999;-9999;-9999;
+0.31;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;566.26;566.24;566.24;565.99;565.98;565.64;564.82;563.57;561.38;557.79;552.55;544.8;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;562.74;562.82;562.85;562.66;562.57;562.26;561.48;560.26;558.13;554.64;549.39;539.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;559.6;559.66;559.73;559.51;559.37;559.04;558.26;557;554.85;551.45;546.22;536.01;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;556.45;556.42;556.53;556.32;556.22;555.9;555.17;553.96;551.82;548.41;543.05;532.66;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;553.28;553.16;553.32;553.1;552.98;552.71;552.02;550.86;548.8;545.5;540.17;529.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;549.81;549.87;549.98;549.84;549.79;549.48;548.84;547.74;545.71;542.55;537.3;527.15;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;546.47;546.53;546.66;546.54;546.56;546.23;545.62;544.56;542.62;539.57;534.33;524.94;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;543.12;543.18;543.3;543.2;543.25;542.95;542.35;541.34;539.49;536.55;531.42;522.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;539.93;540;540.1;539.94;539.96;539.63;539.04;538.09;536.31;533.5;528.62;520.61;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;536.66;536.72;536.85;536.69;536.74;536.48;535.91;534.92;533.16;530.44;525.87;518.48;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;533.48;533.54;533.48;533.39;533.47;533.21;532.63;531.77;530.32;527.68;523.35;516.17;499.79;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;530.3;530.36;530.24;530.07;530.15;529.91;529.34;528.5;527.08;524.68;520.8;513.75;496.84;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;527.1;526.94;526.86;526.7;526.8;526.56;526;525.19;523.79;521.45;517.98;511.29;495.13;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;523.9;523.64;523.52;523.31;523.4;523.17;522.63;521.84;520.47;518.18;514.83;509.15;493.55;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;520.69;520.3;520.19;519.88;519.96;519.74;519.22;518.45;517.1;514.87;511.63;506.05;492.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;516.94;517;516.82;516.49;516.48;516.27;515.76;515.03;513.71;511.53;508.4;503.04;490.34;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;513.24;513.52;513.42;513.09;512.97;512.75;512.27;511.56;510.28;508.14;505.13;499.99;488.47;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;510.07;510.12;509.97;509.65;509.44;509.21;508.75;508.05;506.78;504.71;501.77;496.86;486.5;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;506.89;506.58;506.48;506.21;505.91;505.62;505.17;504.5;503.27;501.27;498.42;493.68;484.18;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;503.06;503.12;502.97;502.69;502.41;502.02;501.57;500.91;499.71;497.76;494.99;490.47;481.73;462.14;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;499.2;499.49;499.4;499.13;498.84;498.38;497.88;497.24;496.06;494.2;491.52;487.2;479.11;461.63;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;495.83;495.89;495.75;495.48;495.21;494.66;494.17;493.53;492.36;490.59;488.01;483.9;476.41;460.77;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;492.45;492.5;492.05;491.81;491.53;490.98;490.42;489.79;488.65;486.93;484.46;480.71;473.49;448.48;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;493.52;493.57;493.47;493.22;492.94;492.49;492.01;491.41;490.26;488.55;486.07;482.09;474.69;449.51;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;494.59;494.65;494.87;494.63;494.4;494.07;493.62;493.01;491.87;490.15;487.67;483.46;476.11;450.4;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;496.37;496.38;496.28;496.07;495.98;495.67;495.22;494.61;493.48;491.75;489.27;485.05;477.45;451.3;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;498.17;497.78;497.65;497.58;497.57;497.27;496.82;496.22;495.09;493.35;490.87;486.62;478.78;452.15;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;499.19;499.25;499.19;499.08;499.15;498.85;498.42;497.83;496.69;494.93;492.46;488.19;480.1;465.54;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;500.63;500.71;500.74;500.64;500.7;500.41;500.01;499.42;498.28;496.51;494.03;489.75;481.4;466.53;-9999;-9999;-9999;-9999;-9999;-9999;
+0.3;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;548.6;548.49;548.49;548.23;548.09;547.71;546.83;545.46;543.11;539.43;535.32;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;545.45;545.51;545.32;545.25;545.1;544.68;543.78;542.48;540.2;536.56;532.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;542.86;542.66;542.67;542.42;542.31;541.89;541;539.62;537.27;533.61;528.92;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;539.79;539.85;539.82;539.54;539.48;539.07;538.2;536.85;534.55;530.82;525.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;536.7;536.83;536.78;536.74;536.6;536.19;535.36;534.04;531.8;528.12;523.03;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;533.84;533.9;533.89;533.77;533.66;533.28;532.5;531.21;529.01;525.4;520.19;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;530.96;530.81;530.8;530.71;530.67;530.33;529.55;528.33;526.17;522.66;517.36;509.87;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;527.71;527.77;527.8;527.69;527.63;527.32;526.58;525.41;523.3;519.89;514.53;505.89;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;524.88;524.94;524.89;524.56;524.47;524.27;523.56;522.43;520.4;517.09;511.74;502.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;522.04;522.1;522.07;521.78;521.76;521.45;520.69;519.53;517.54;514.38;509.24;500.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;519.19;519.25;519.22;519.04;518.97;518.67;517.95;516.84;514.91;511.82;506.64;497.66;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;516.29;516.35;516.34;516.15;516.2;515.85;515.18;514.12;512.2;509.26;504.29;495.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;513.38;513.41;513.42;513.25;513.32;513;512.37;511.36;509.52;506.68;501.91;493.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;510.35;510.41;510.48;510.34;510.38;510.11;509.53;508.58;506.82;504.08;499.49;491.83;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;507.17;507.23;507.31;507.17;507.22;507.1;506.67;505.75;504.06;501.44;497.01;489.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;503.98;504.04;504.09;503.97;504.02;503.85;503.44;502.69;501.31;498.75;494.49;487.14;471.35;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;500.78;500.84;500.85;500.73;500.79;500.6;500.14;499.41;498.06;495.81;491.95;484.71;468.54;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;497.52;497.36;497.5;497.39;497.47;497.25;496.79;496.07;494.76;492.5;489.13;482.24;466.86;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;493.93;493.99;494.1;494.04;494.09;493.88;493.42;492.7;491.42;489.21;485.98;480.02;465.5;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;490.33;490.57;490.65;490.57;490.66;490.45;489.97;489.29;488.03;485.88;482.78;476.95;463.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;486.72;487.1;487.16;487.09;487.18;486.97;486.51;485.83;484.6;482.52;479.55;473.98;462.17;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;483.52;483.57;483.65;483.58;483.66;483.44;483;482.34;481.13;479.14;476.27;471.05;460.37;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;480.11;480.16;480.11;480.03;480.08;479.87;479.44;478.81;477.63;475.71;472.95;467.95;458.27;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;481.34;481.4;481.52;481.46;481.53;481.32;480.89;480.26;479.08;477.15;474.4;469.37;459.53;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;482.83;482.89;482.94;482.88;482.97;482.76;482.34;481.73;480.56;478.62;475.69;470.78;460.74;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;484.33;484.31;484.36;484.28;484.4;484.2;483.81;483.22;482.06;480.13;477.14;472.19;461.93;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;485.83;485.72;485.77;485.7;485.82;485.64;485.27;484.71;483.55;481.62;478.64;473.6;463.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;487.04;487.1;487.18;487.12;487.23;487.1;486.74;486.18;485.03;483.11;480.12;475;464.23;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;488.27;488.33;488.57;488.51;488.68;488.56;488.2;487.64;486.5;484.58;481.6;476.38;465.3;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+0.29;0;0.05;0.1;0.15;0.2;0.25;0.3;0.35;0.4;0.45;0.5;0.55;0.6;0.65;0.7;0.75;0.8;0.85;0.9;0.95;
+0;528.94;529.01;528.62;528.45;528.05;527.46;526.69;525.41;523.23;521.11;532.1;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+500;526.42;526.49;526.02;526.07;525.73;525.13;524.32;522.95;520.69;518.16;524.55;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1000;523.82;523.9;523.68;523.55;523.43;522.87;521.99;520.57;518.18;515.27;517.49;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+1500;521.45;521.52;521.34;521.08;521.03;520.57;519.63;518.19;515.79;512.57;512.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2000;518.87;518.93;518.81;518.56;518.46;518.04;517.21;515.74;513.32;509.97;507.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+2500;516.26;516.2;516.2;515.98;515.87;515.56;514.61;513.23;510.89;507.34;503.96;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3000;513.65;513.47;513.54;513.33;513.24;512.91;511.99;510.61;508.37;504.79;500.76;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+3500;510.75;510.81;510.85;510.61;510.56;510.21;509.33;508.05;505.8;502.13;497.99;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4000;507.91;508.16;508.16;507.87;507.83;507.48;506.74;505.48;503.19;499.53;495.38;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+4500;505.61;505.68;505.67;505.36;505.3;504.87;504.08;502.81;500.62;497.11;492.65;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5000;503.31;503;502.97;502.82;502.78;502.39;501.61;500.39;498.21;494.82;489.99;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+5500;500.39;500.45;500.5;500.3;500.22;499.86;499.09;497.9;495.76;492.45;487.38;482.07;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6000;497.41;497.71;497.72;497.63;497.58;497.26;496.52;495.37;493.29;490.05;484.81;477.45;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+6500;494.95;495.01;495.1;494.98;494.82;494.61;493.91;492.8;490.78;487.62;482.23;474.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7000;492.48;492.54;492.33;492.27;492.15;491.92;491.25;490.19;488.24;485.16;479.84;471.21;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+7500;489.37;489.44;489.51;489.44;489.45;489.18;488.55;487.54;485.66;482.68;477.54;468.84;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8000;486.25;486.6;486.66;486.57;486.68;486.4;485.81;484.86;483.05;480.17;475.21;466.97;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+8500;483.65;483.72;483.78;483.7;483.86;483.59;483.04;482.13;480.36;477.64;472.84;465.11;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9000;481.04;480.75;480.86;480.8;480.99;480.75;480.25;479.36;477.68;475.06;470.46;462.88;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+9500;477.53;477.6;477.71;477.63;477.82;477.75;477.37;476.57;474.95;472.44;468.04;460.49;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10000;474.02;474.4;474.48;474.41;474.57;474.51;474.1;473.45;472.14;469.78;465.62;458.2;-9999;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+10500;471.07;471.13;471.22;471.14;471.29;471.2;470.85;470.18;468.91;466.78;463.21;455.72;440.73;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11000;468.12;467.83;467.91;467.87;467.98;467.85;467.5;466.87;465.64;463.54;460.3;454.27;439.04;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+11500;468.96;469.02;469.16;469.15;469.28;469.17;468.85;468.21;466.97;464.92;461.63;455.36;440.02;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12000;470.25;470.31;470.45;470.45;470.58;470.5;470.17;469.57;468.32;466.26;462.95;456.58;441.07;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+12500;471.55;471.6;471.72;471.7;471.86;471.82;471.54;470.95;469.73;467.58;464.28;457.79;441.91;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13000;472.85;472.88;472.99;472.97;473.17;473.16;472.86;472.34;471.14;468.96;465.59;458.99;442.85;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+13500;474.04;474.11;474.24;474.24;474.48;474.52;474.23;473.72;472.52;470.27;466.9;460.18;443.77;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
+14000;475.25;475.37;475.49;475.48;475.83;475.87;475.58;475.08;473.89;471.66;468.2;461.41;444.64;-9999;-9999;-9999;-9999;-9999;-9999;-9999;
diff --git a/engine/test/stubs/value.csv b/engine/test/stubs/value.csv
new file mode 100644
index 00000000..416999d8
--- /dev/null
+++ b/engine/test/stubs/value.csv
@@ -0,0 +1,8 @@
+1.00;0.0;0.5;1.0;
+00.0;1.0;2.0;3.0;
+10.0;4.0;5.0;6.0;
+20.0;7.0;8.0;9.0;
+0.90;0.0;0.5;1.0;
+00.0;10.0;11.0;12.0;
+10.0;13.0;14.0;15.0;
+20.0;16.0;17.0;18.0;
diff --git a/engine/test/test_engine.cpp b/engine/test/test_engine.cpp
new file mode 100644
index 00000000..ba8d2fe5
--- /dev/null
+++ b/engine/test/test_engine.cpp
@@ -0,0 +1,846 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <filesystem>
+#include <gtest/gtest.h>
+
+/* Unit Under Test */
+#include "engine/engine.h"
+
+/* === Fixtures === */
+class V2725_A5 : public ::testing::Test
+{
+  protected:
+
+    /* Test setup */
+    void SetUp() override
+    {
+        engine_path /=  "V2527-A5";
+        if (!std::filesystem::exists(engine_path))
+        {
+            FAIL() << "The engine directory" << engine_path << "does not exist!";
+        }
+    }
+    std::filesystem::path engine_path{CMAKE_TEST_STUBS_DIR};
+
+};
+
+
+/**
+ * @struct Parameter for penalty calculations
+ * @brief Struct to hold test parameters
+ * @param flight_level: Current flight level [m]
+ * @param mach_number: Current mach_number number [-]
+ * @param derate: Value between 1.0 and 0.1 to artificially throttle the engine [-]
+ * @param thrust_rating: Current rating [takeoff, maximum_continuous, climb, cruise, idle]
+ * @param bleed_air_offtake: Current bleed air offtake [kg/s]
+ * @param shaft_power_offtake: Current shaft power offtake [W]
+ * @param thrust_limit: Aircraft thrust limitation. The resulting thrust is not allowed to exceed the thrust_limit, except if thrust_limit is lower than the thrust at the lowest possible shaft speed. [N]
+ * @param scale_factor The thrust scaling to apply to this engine.
+ */
+struct PenaltyTestParams {
+    double flight_level, mach_number, derate;
+    std::string thrust_rating;
+    double bleed_air_offtake, shaft_power_offtake, thrust_limit, scale_factor;
+    double expected_N1_with_penalties, expected_N1_with_thrust_limit;
+};
+
+class V2725_A5_ParameterizedTestFixture : public ::testing::TestWithParam<PenaltyTestParams>
+{
+  protected:
+
+    /* Test setup */
+    void SetUp() override
+    {
+        engine_path /=  "V2527-A5";
+        if (!std::filesystem::exists(engine_path))
+        {
+            FAIL() << "The engine directory" << engine_path << "does not exist!";
+        }
+    }
+    std::filesystem::path engine_path{CMAKE_TEST_STUBS_DIR};
+
+};
+
+/* ============ Instantiate the test suite with test cases ============== */
+INSTANTIATE_TEST_SUITE_P(
+    N1WithPenaltiesCheckAbsValues_Instantiate,
+    V2725_A5_ParameterizedTestFixture,
+    ::testing::Values(
+        PenaltyTestParams{10000, 0.8, 1.0, "cruise", 1.0, 5000.0, 10000.0, 1.0, 0.973989, 0.823579},
+        PenaltyTestParams{ 5000, 0.8, 1.0, "cruise", 1.0, 5000.0, 10000.0, 1.0, 0.884718, 0.707300},
+        PenaltyTestParams{    0, 0.8, 1.0, "cruise", 1.0, 5000.0, 10000.0, 1.0, 0.780151, 0.639215},
+        PenaltyTestParams{10000, 0.4, 1.0, "cruise", 1.0, 5000.0, 10000.0, 1.0, 0.983613, 0.769528},
+        PenaltyTestParams{10000, 0.0, 1.0, "cruise", 1.0, 5000.0, 10000.0, 1.0, 0.986063, 0.627450},
+        PenaltyTestParams{10000, 0.8, 1.0, "cruise", 0.5, 5000.0, 10000.0, 1.0, 0.971545, 0.820755},
+        PenaltyTestParams{10000, 0.8, 1.0, "cruise", 0.0, 5000.0, 10000.0, 1.0, 0.969100, 0.817931},
+        PenaltyTestParams{10000, 0.8, 1.0, "cruise", 1.0, 2500.0, 10000.0, 1.0, 0.974162, 0.823725},
+        PenaltyTestParams{10000, 0.8, 1.0, "cruise", 1.0,    0.0, 10000.0, 1.0, 0.974335, 0.823871},
+        PenaltyTestParams{10000, 0.8, 1.0, "cruise", 1.0, 5000.0,  5000.0, 1.0, 0.973989, 0.714144},
+        PenaltyTestParams{10000, 0.8, 1.0, "cruise", 1.0, 5000.0,   500.0, 1.0, 0.973989, 0.568585}
+    )
+);
+
+/* ======= Test Default Values ======== */
+
+/**
+ * @brief Test construction of the V2 engine.
+ */
+TEST_F(V2725_A5, Constructor)
+{
+    /* Create an existing engine */
+    Engine engine{engine_path};
+
+    /* Check the resulting properties */
+    EXPECT_EQ(engine.get_unscaled_engine().name(), "V2527-A5");
+    EXPECT_DOUBLE_EQ(engine.get_scale_factor(), 1.0);
+    EXPECT_NEAR(engine.get_engine_dimensions().width, 1.829, 1e-3);
+    EXPECT_NEAR(engine.get_engine_dimensions().height, 2.118, 1e-3);
+    EXPECT_NEAR(engine.get_engine_dimensions().length, 2.508, 1e-3);
+    EXPECT_NEAR(engine.get_engine_dimensions().diameter, 1.613, 1e-3);
+
+    /* Test the copy constructor */
+    Engine engine_copy{engine};
+    EXPECT_NE(&engine, &engine_copy);
+    EXPECT_EQ(engine_copy.get_unscaled_engine().name(), "V2527-A5");
+    EXPECT_EQ(engine_copy.get_scale_factor(), 1.0);
+}
+
+/**
+ * @brief Test getting the operating point of the engine when not set.
+ */
+TEST_F(V2725_A5, DefaultOperatingPoint)
+{
+    /* Create an existing engine */
+    Engine engine{engine_path};
+
+    /* Get the operating point */
+    OperatingPoint op = engine.get_operating_point();
+
+    /* Check if the operating point is the default one */
+    EXPECT_NEAR(op.altitude, engine.get_unscaled_engine().design_point().altitude, 1e-3);
+    EXPECT_NEAR(op.Mach, engine.get_unscaled_engine().design_point().Mach, 1e-3);
+    EXPECT_NEAR(op.N, 1.0, 1e-3);
+};
+
+
+/* ========== Test Setter functions ============ */
+
+/**
+ * @brief Test setting & getting the operating point of the engine.
+ */
+TEST_F(V2725_A5, SetNGetOperatingPoint)
+{
+    /* Create an existing engine */
+    Engine engine{engine_path};
+
+    /* Set the operating point */
+    OperatingPoint op;
+    op.altitude = 10668.0;
+    op.Mach = 0.8;
+    op.N = 1.0;
+    engine.set_operating_point(op);
+
+    /* Check if the operating point was set */
+    EXPECT_NEAR(engine.get_operating_point().altitude, 10668.0, 1e-3);
+    EXPECT_NEAR(engine.get_operating_point().Mach, 0.8, 1e-3);
+    EXPECT_NEAR(engine.get_operating_point().N, 1.0, 1e-3);
+}
+
+/**
+ * @brief Test setting & getting the amount of engines
+ */
+TEST_F(V2725_A5, SetNGetSameEngineTypeQuantity)
+{
+    /* Create the test engine */
+    Engine engine{engine_path};
+    
+    /* check if int works */
+    engine.set_same_engine_type_quantity(2);
+    EXPECT_NEAR(engine.get_same_engine_type_quantity(), 2, 1e-6);
+
+    /* check if a double is cut off */
+    engine.set_same_engine_type_quantity(5.6789);
+    EXPECT_NEAR(engine.get_same_engine_type_quantity(), 5, 1e-6);
+
+    /* check that negative numbers don't work*/
+    engine.set_same_engine_type_quantity(-5.3415);
+    EXPECT_NEAR(engine.get_same_engine_type_quantity(), 5, 1e-6);
+}
+
+/**
+ * @brief test N1 calculation while idle 
+ */
+TEST_F(V2725_A5, CalculateN1WithPenalties)
+{
+    /* Define input parameters */
+    double scale_factor{1.3};
+    OperatingPoint op{0.6, 0.0, 0.0};
+    atmosphere atm{};
+    atm.setAtmosphere(0, ISA_TEMPERATURE, ISA_PRESSURE);
+    double derate{1.0};
+    std::string thrust_rating{"takeoff"};
+    double bleed_air_offtake{1.0}; // kg/s
+    double shaft_power_offtake{5000.0}; // W
+
+    /* Create the test engines */
+    Engine engine_unscaled_without_penalties{engine_path};
+    Engine engine_unscaled_with_penalties{engine_path};
+    Engine engine_scaled_without_penalties{engine_path, scale_factor};
+    Engine engine_scaled_with_penalties{engine_path, scale_factor};
+
+    /* Set operating point */
+    engine_unscaled_without_penalties.set_operating_point(op);
+    engine_unscaled_with_penalties.set_operating_point(op);
+    engine_scaled_without_penalties.set_operating_point(op);
+    engine_scaled_with_penalties.set_operating_point(op);
+
+    /* call the function to test */
+    engine_unscaled_without_penalties.calculate_N1_with_penalties(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                0.0,
+                                                                0.0);
+    engine_unscaled_with_penalties.calculate_N1_with_penalties(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                bleed_air_offtake,
+                                                                shaft_power_offtake);
+    engine_scaled_without_penalties.calculate_N1_with_penalties(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                0.0,
+                                                                0.0);
+    engine_scaled_with_penalties.calculate_N1_with_penalties(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                bleed_air_offtake,
+                                                                shaft_power_offtake);
+
+    /* compare relative shaft speeds */
+    EXPECT_GT(engine_unscaled_with_penalties.get_operating_point().N, 
+              engine_unscaled_without_penalties.get_operating_point().N);
+    EXPECT_GT(engine_scaled_with_penalties.get_operating_point().N, 
+              engine_scaled_without_penalties.get_operating_point().N);
+
+    /* compare relative fuel flows */
+    EXPECT_GT(engine_unscaled_with_penalties.get_aircraft_fuelflow(), 
+              engine_unscaled_without_penalties.get_aircraft_fuelflow());
+    EXPECT_GT(engine_scaled_with_penalties.get_aircraft_fuelflow(), 
+              engine_scaled_without_penalties.get_aircraft_fuelflow());
+    EXPECT_GT(engine_scaled_with_penalties.get_aircraft_fuelflow(), 
+              engine_unscaled_with_penalties.get_aircraft_fuelflow());
+    EXPECT_GT(engine_scaled_without_penalties.get_aircraft_fuelflow(), 
+              engine_unscaled_without_penalties.get_aircraft_fuelflow());
+}
+
+/**
+ * @brief test absolute values of CalculateN1WithPenalties
+ */
+TEST_P(V2725_A5_ParameterizedTestFixture, N1WithPenaltiesCheckAbsValues) {
+    PenaltyTestParams params = GetParam();
+    Engine engine{engine_path};
+    OperatingPoint op{0.0 ,params.flight_level, params.mach_number};
+    atmosphere atm{};
+
+    atm.setAtmosphere(params.flight_level, ISA_TEMPERATURE, ISA_PRESSURE);
+    engine.set_operating_point(op);
+    engine.calculate_N1_with_penalties(params.flight_level, params.mach_number, atm, params.derate, params.thrust_rating, params.bleed_air_offtake, params.shaft_power_offtake);
+
+    // check absoliute values
+    EXPECT_NEAR(engine.get_operating_point().N, params.expected_N1_with_penalties, 1e-6);
+}
+
+/**
+ * @brief test if thrust is below the thrust limit
+ */
+TEST_F(V2725_A5, CalculateN1WithThrustLimitWithoutPenalties)
+{
+    /* Define input parameters */
+    double scale_factor{1.0};
+    OperatingPoint op{0.8, 0.0, 0.0};
+    atmosphere atm{};
+    atm.setAtmosphere(0, ISA_TEMPERATURE, ISA_PRESSURE);
+    double derate{1.0};
+    std::string thrust_rating{"takeoff"};
+    double bleed_air_offtake{1.0}; // kg/s
+    double shaft_power_offtake{8000.0}; // W
+    double thrust_limit{80000}; // [N]
+
+    /* Create the test engines */
+    Engine engine_unscaled_without_penalties{engine_path};
+    Engine engine_scaled_without_penalties{engine_path, scale_factor};
+
+    /* Set operating point */
+    engine_unscaled_without_penalties.set_operating_point(op);
+    engine_scaled_without_penalties.set_operating_point(op);
+
+    /* call the function to test */
+    engine_unscaled_without_penalties.calculate_N1_with_thrustlimit(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                0.0,
+                                                                0.0,
+                                                                thrust_limit);
+    engine_scaled_without_penalties.calculate_N1_with_thrustlimit(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                0.0,
+                                                                0.0,
+                                                                thrust_limit);
+
+    /* check that no thrust limits are exceeded */
+    EXPECT_GT(thrust_limit, engine_unscaled_without_penalties.get_thrust_aircraft());
+    EXPECT_GT(thrust_limit, engine_scaled_without_penalties.get_thrust_aircraft());
+}
+
+/**
+ * @brief test if thrust is below the thrust limit
+ */
+TEST_F(V2725_A5, CalculateN1WithThrustLimitAndPenalties)
+{
+    /* Define input parameters */
+    double scale_factor{1.3};
+    OperatingPoint op{0.8, 0.0, 0.0};
+    atmosphere atm{};
+    atm.setAtmosphere(0, ISA_TEMPERATURE, ISA_PRESSURE);
+    double derate{1.0};
+    std::string thrust_rating{"takeoff"};
+    double bleed_air_offtake{1.0}; // kg/s
+    double shaft_power_offtake{8000.0}; // W
+    double thrust_limit{80000}; // [N]
+
+    /* Create the test engines */
+    Engine engine_unscaled_without_penalties{engine_path};
+    Engine engine_unscaled_with_penalties{engine_path};
+    Engine engine_scaled_without_penalties{engine_path, scale_factor};
+    Engine engine_scaled_with_penalties{engine_path, scale_factor};
+
+    engine_unscaled_without_penalties.set_same_engine_type_quantity(2);
+    engine_unscaled_with_penalties.set_same_engine_type_quantity(2);
+    engine_scaled_without_penalties.set_same_engine_type_quantity(2);
+    engine_scaled_with_penalties.set_same_engine_type_quantity(2);
+
+    /* Set operating point */
+    engine_unscaled_without_penalties.set_operating_point(op);
+    engine_unscaled_with_penalties.set_operating_point(op);
+    engine_scaled_without_penalties.set_operating_point(op);
+    engine_scaled_with_penalties.set_operating_point(op);
+
+    /* call the function to test */
+    engine_unscaled_without_penalties.calculate_N1_with_thrustlimit(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                0.0,
+                                                                0.0,
+                                                                thrust_limit);
+    engine_unscaled_with_penalties.calculate_N1_with_thrustlimit(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                bleed_air_offtake,
+                                                                shaft_power_offtake,
+                                                                thrust_limit);
+    engine_scaled_without_penalties.calculate_N1_with_thrustlimit(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                0.0,
+                                                                0.0,
+                                                                thrust_limit);
+    engine_scaled_with_penalties.calculate_N1_with_thrustlimit(op.altitude,
+                                                                op.Mach,
+                                                                atm,
+                                                                derate,
+                                                                thrust_rating,
+                                                                bleed_air_offtake,
+                                                                shaft_power_offtake,
+                                                                thrust_limit);
+
+    /* check that no thrust limits are exceeded */
+    EXPECT_NEAR(thrust_limit, engine_unscaled_without_penalties.get_thrust_aircraft(),1e-5);
+    EXPECT_NEAR(thrust_limit, engine_unscaled_with_penalties.get_thrust_aircraft(),1e-5);
+    EXPECT_NEAR(thrust_limit, engine_scaled_without_penalties.get_thrust_aircraft(),1e-5);
+    EXPECT_NEAR(thrust_limit, engine_scaled_with_penalties.get_thrust_aircraft(),1e-5);
+
+    /*Check the operating points */
+    EXPECT_NEAR(engine_unscaled_without_penalties.get_operating_point().N, 0.6359, 1e-3);
+    EXPECT_NEAR(engine_unscaled_with_penalties.get_operating_point().N, 0.6362, 1e-3);
+    EXPECT_NEAR(engine_scaled_without_penalties.get_operating_point().N, 0.5661, 1e-3);
+    EXPECT_NEAR(engine_scaled_with_penalties.get_operating_point().N, 0.5664, 1e-3);
+
+    /* compare relative shaft speeds */
+    EXPECT_GT(engine_unscaled_with_penalties.get_operating_point().N, 
+              engine_unscaled_without_penalties.get_operating_point().N);
+    EXPECT_GT(engine_scaled_with_penalties.get_operating_point().N, 
+              engine_scaled_without_penalties.get_operating_point().N);
+    
+    /* compare relative fuel flows */
+    EXPECT_GT(engine_unscaled_with_penalties.get_aircraft_fuelflow(), 
+              engine_unscaled_without_penalties.get_aircraft_fuelflow());
+    EXPECT_GT(engine_scaled_with_penalties.get_aircraft_fuelflow(), 
+              engine_scaled_without_penalties.get_aircraft_fuelflow());
+    EXPECT_GT(engine_scaled_with_penalties.get_aircraft_fuelflow(), 
+              engine_unscaled_with_penalties.get_aircraft_fuelflow());
+    EXPECT_NEAR(engine_scaled_without_penalties.get_aircraft_fuelflow(), 
+              engine_unscaled_without_penalties.get_aircraft_fuelflow(),1e-3);
+}
+
+/**
+ * @brief test absolute values of CalculateN1WithThrustLimit
+ */
+TEST_P(V2725_A5_ParameterizedTestFixture, N1WithThrustLimitCheckAbsValues) {
+    PenaltyTestParams params = GetParam();
+    Engine engine{engine_path};
+    OperatingPoint op{0.0 ,params.flight_level, params.mach_number};
+    atmosphere atm{};
+
+    atm.setAtmosphere(params.flight_level, ISA_TEMPERATURE, ISA_PRESSURE);
+    engine.set_operating_point(op);
+    engine.calculate_N1_with_thrustlimit(params.flight_level, 
+                                        params.mach_number, 
+                                        atm, 
+                                        params.derate, 
+                                        params.thrust_rating, 
+                                        params.bleed_air_offtake, 
+                                        params.shaft_power_offtake,
+                                        params.thrust_limit);
+
+    // check absoliute values
+    EXPECT_NEAR(engine.get_operating_point().N, params.expected_N1_with_thrust_limit, 1e-6);
+}
+
+/* ========= Test Getter Functions ========== */
+
+/**
+ * @brief Test getting the scale factor.
+ */
+TEST_F(V2725_A5, GetScaleFactor)
+{
+    /* Create a scaled engine */
+    Engine engine0{engine_path, 1.2345678};
+    Engine engine1{engine_path, 6};
+    //Engine engine2{engine_path, -1.2345678};
+  
+    EXPECT_NEAR(engine0.get_scale_factor(), 1.2345678, 1e-3);
+    EXPECT_NEAR(engine1.get_scale_factor(), 6, 1e-3);
+    //EXPECT_NEAR(engine2.get_scale_factor(), -1.2345678, 1e-3);
+}
+
+/**
+ * @brief Test getting the scaled engine dimensions.
+ */
+TEST_F(V2725_A5, GetScaledDimensions)
+{
+    /* Create a scaled engine */
+    Engine engine{engine_path, 2.0};
+
+    /* Check the resulting dimensions */
+    auto result = engine.get_engine_dimensions();
+    EXPECT_NEAR(result.height, 2.995, 1e-3);
+    EXPECT_NEAR(result.width, 2.586, 1e-3);
+    EXPECT_NEAR(result.length, 3.309, 1e-3);
+    EXPECT_NEAR(result.diameter, 2.281, 1e-3);
+}
+
+
+/* ================ Test Getting Deck Values =============== */
+
+/**
+ * @brief Test getting the thrust of the engine.
+ */
+TEST_F(V2725_A5, GetThrust)
+{
+    /* Create the test engine */
+    Engine engine{engine_path};
+    Engine engine_scaled{engine_path, 2.0};
+
+    /* Create operating point */
+    OperatingPoint op{1.0, 1000.0, 0.8};
+
+    /* Test the unscaled thrust */
+    engine.set_operating_point(op);
+    engine_scaled.set_operating_point(op);
+
+    EXPECT_NEAR(engine.get_thrust_aircraft(), 74.989*1000, 0.1);
+    EXPECT_NEAR(engine_scaled.get_thrust_aircraft(), 2.0 * 74.989*1000, 0.1);
+    EXPECT_NEAR(engine_scaled.get_thrust(), engine_scaled.get_thrust_aircraft(), 0.001);
+}
+
+/**
+ * @brief Test getting the fuel flow of the engine.
+ */
+TEST_F(V2725_A5, GetFuelFlow)
+{
+    double scale_factor{2.0};
+    int number_of_engines{3};
+
+    /* Create the test engines */
+    Engine engine_unscaled{engine_path};
+    Engine engine_scaled{engine_path, scale_factor};
+    Engine multiple_engines_unscaled{engine_path};
+    Engine multiple_engines_scaled{engine_path, scale_factor};
+
+    /* Create operating point */
+    OperatingPoint op{1.0, 1000.0, 0.8};
+
+    /* Set operating point */
+    engine_unscaled.set_operating_point(op);
+    engine_scaled.set_operating_point(op);
+    multiple_engines_unscaled.set_operating_point(op);
+    multiple_engines_scaled.set_operating_point(op);
+
+    multiple_engines_unscaled.set_same_engine_type_quantity(number_of_engines);
+    multiple_engines_scaled.set_same_engine_type_quantity(number_of_engines);
+    
+    /* check fuel flow */
+    EXPECT_NEAR(engine_unscaled.get_aircraft_fuelflow(), 1.4581, 1e-3);
+    EXPECT_NEAR(engine_scaled.get_aircraft_fuelflow(), scale_factor * 1.4581, 1e-3);
+    EXPECT_NEAR(multiple_engines_unscaled.get_aircraft_fuelflow(), number_of_engines * engine_unscaled.get_aircraft_fuelflow(), 1e-3);
+    EXPECT_NEAR(multiple_engines_scaled.get_aircraft_fuelflow(), number_of_engines * engine_scaled.get_aircraft_fuelflow(), 1e-3);
+}
+
+///**
+// * @brief Test getting the convergence.
+// */
+//TEST_F(V2725_A5, GetConvergence)
+//{
+//    /* Create the test engine */
+//    Engine engine{engine_path};
+//
+//    /* Create operating point */
+//    OperatingPoint op{1.0, 0.0, 0.8};
+//
+//    double testvalue = engine.converge_value(op, 100000, 0.05, "_FN");
+//    /* Test the unscaled thrust */
+//    EXPECT_NEAR(testvalue,0.9,0.01);
+//}
+
+// /**
+//  * @brief Tests gettig the engine's EGT.
+//  */
+// TEST_F(V2725_A5, GetEngineEGT)
+// {
+//     /* Create the test engines */
+//     Engine engine{engine_path};
+// 
+//     /* Create operating point */
+//     OperatingPoint op{1.0, 1000.0, 0.8};
+// 
+//     /* Set operating point */
+//     engine.set_operating_point(op);
+// 
+//     EXPECT_NEAR(engine.get_engine_EGT(), 9999, 1e-6);
+// 
+//     // TODO: Tobi: Add EGT.csv file
+//     // TODO: Oli: Add values from .csv
+// }
+// 
+// /**
+//  * @brief Tests gettig the engine's EPR.
+//  */
+// TEST_F(V2725_A5, GetEngineEPR)
+// {
+//     /* Create the test engines */
+//     Engine engine{engine_path};
+// 
+//     /* Create operating point */
+//     OperatingPoint op{1.0, 1000.0, 0.8};
+// 
+//     /* Set operating point */
+//     engine.set_operating_point(op);
+// 
+//     EXPECT_NEAR(engine.get_engine_EPR(), 9999, 1e-6);
+// 
+//     // TODO: Tobi: Add EPR.csv file
+//     // TODO: Oli: Add values from .csv
+// }
+// 
+// /**
+//  * @brief Tests gettig the engine's OPR.
+//  */
+// TEST_F(V2725_A5, GetEngineOPR)
+// {
+//     /* Create the test engines */
+//     Engine engine{engine_path};
+// 
+//     /* Create operating point */
+//     OperatingPoint op{1.0, 1000.0, 0.8};
+// 
+//     /* Set operating point */
+//     engine.set_operating_point(op);
+// 
+//     EXPECT_NEAR(engine.get_engine_OPR(), 9999, 1e-6); 
+//     
+//     // TODO: Tobi: Add OPR.csv file
+//     // TODO: Oli: Add values from .csv
+// }
+
+/**
+ * @brief Tests gettig the engine's sNOx factor.
+ */
+TEST_F(V2725_A5, GetEngineSNOxEmissionIndex)
+{
+    /* Create the test engines */
+    Engine engine{engine_path};
+
+    /* Create operating point */
+    OperatingPoint op{1.0, 1000.0, 0.8};
+
+    /* Set operating point */
+    engine.set_operating_point(op);
+
+    EXPECT_NEAR(engine.get_engine_NOx_emission_index(), 32 * 1551.8, 1e-6);
+}
+
+/**
+ * @brief Tests the emissions factors for all LTO cycles according to ICAO.
+ */
+TEST_F(V2725_A5, GetLTOEmissionIndex)
+{
+    /* Create the test engines */
+    Engine engine{engine_path};
+
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::taxi,  EngineEmissions::HC), 0.105e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::taxi,  EngineEmissions::CO), 12.43e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::taxi,  EngineEmissions::NOx), 4.7e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::taxi,  EngineEmissions::SN), 2.6, 1e-6);
+
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::takeoff,  EngineEmissions::HC), 0.041e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::takeoff,  EngineEmissions::CO), 0.53e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::takeoff,  EngineEmissions::NOx), 26.5e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::takeoff,  EngineEmissions::SN), 5.2, 1e-6);
+
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::climb,  EngineEmissions::HC), 0.041e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::climb,  EngineEmissions::CO), 0.62e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::climb,  EngineEmissions::NOx), 22.3e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::climb,  EngineEmissions::SN), 7.2, 1e-6);
+
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::approach,  EngineEmissions::HC), 0.061e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::approach,  EngineEmissions::CO), 2.44e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::approach,  EngineEmissions::NOx), 8.9e-3, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_emission_index(LTOPhases::approach,  EngineEmissions::SN), 4.2, 1e-6);
+}
+
+/**
+ * @brief Tests the fuel flow factors for the LTO cycles according to ICAO.
+ */
+TEST_F(V2725_A5, GetLTOFuelFlow)
+{
+    /* Create the test engines */
+    Engine engine{engine_path};
+
+    EXPECT_NEAR(engine.get_LTO_fuelflow(LTOPhases::taxi), 0.128, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_fuelflow(LTOPhases::takeoff), 1.053, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_fuelflow(LTOPhases::climb), 0.88, 1e-6);
+    EXPECT_NEAR(engine.get_LTO_fuelflow(LTOPhases::approach), 0.319, 1e-6);
+}
+
+/**
+ * @brief Test getting the maximal shaft power offtake.
+ */
+TEST_F(V2725_A5, GetMaxShaftPowerOfftake)
+{
+    /* Create the test engines */
+    Engine engine{engine_path};
+    Engine engine_scaled{engine_path, 1.3};
+
+    /* Test the unscaled max shaft power extration */
+    EXPECT_NEAR(engine.get_max_shaft_power_offtake_engine(), 150000.0, 1e-3);
+    /* Test the scaled max shaft power extration */
+    EXPECT_NEAR(engine_scaled.get_max_shaft_power_offtake_engine(), 150000.0 * 1.3, 1e-3);
+}
+
+/**
+ * @brief Test getting the maximal bleed air offtake at a specified operating point.
+ */
+TEST_F(V2725_A5, GetMaxBleedAirOfftake)
+{
+    /* Create the test engines */
+    Engine engine{engine_path};
+    Engine engine_scaled{engine_path, 1.3};
+
+    /* Create operating point */
+    OperatingPoint op{0.8, 10000.0, 0.8};
+
+    /* Set operating point */
+    engine.set_operating_point(op);
+    engine_scaled.set_operating_point(op);
+
+    /* Test the unscaled max shaft power extration */
+    EXPECT_NEAR(engine.get_max_bleed_offtake_at_current_operating_point(), 0.3 * 19.415, 1e-3);
+    /* Test the scaled max shaft power extration */
+    EXPECT_NEAR(engine_scaled.get_max_bleed_offtake_at_current_operating_point(), 0.3 * 19.415 * 1.3, 1e-3);
+
+    // from .xml      -> relMaxBleed = 0.3
+    // from .csv @ OP -> core_mass_flow = 19.415 kg/s
+}
+
+/**
+ * @brief Test getting the maximal bleed air offtake at a specified operating point.
+ */
+TEST_F(V2725_A5, GetMaxBleedAirOfftakeAtOP)
+{
+    /* Define scale factor */
+    double scale_factor = 1.45;
+
+    /* Create the test engines */
+    Engine engine{engine_path, scale_factor};
+
+    /* Create operating point */
+    OperatingPoint op{0.8, 10000.0, 0.8};
+
+    /* Set operating point */
+    engine.set_operating_point(op);
+
+    EXPECT_NEAR(engine.get_max_bleed_offtake_at_current_operating_point(), 0.3 * 19.415 * scale_factor, 1e-6);
+}
+
+/**
+ * @brief Tests getting the physical properties from the defined engine stage.
+ */
+TEST_F(V2725_A5, GetPhysicalPropertiesStage)
+{
+    /* Create the test engines */
+    Engine engine{engine_path};
+
+    /* Create operating point */
+    OperatingPoint op{0.8, 10000.0, 0.8};
+
+    /* Set operating point */
+    engine.set_operating_point(op);
+
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St2), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St3), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St4), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St5), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St13), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St22), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St25), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St45), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St18), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::FuelToAirRatio, EngineStage::St8), 9999, 1e-6);
+// 
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St2), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St3), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St4), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St5), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St13), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St22), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St25), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St45), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St18), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MachNumber, EngineStage::St8), 9999, 1e-6);
+// 
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St2), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St3), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St4), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St5), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St13), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St22), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St25), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St45), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St18), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalPressure, EngineStage::St8), 9999, 1e-6);
+// 
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St2), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St3), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St4), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St5), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St13), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St22), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St25), 9999, 1e-6);
+    EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St45), 894.75, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St18), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::TotalTemperature, EngineStage::St8), 9999, 1e-6);
+// 
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St2), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St3), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St4), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St5), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St13), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St22), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St25), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St45), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St18), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::StaticTemperature, EngineStage::St8), 9999, 1e-6);
+// 
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St2), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St3), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St4), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St5), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St13), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St22), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St25), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St45), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St18), 9999, 1e-6);
+    // EXPECT_NEAR(engine.get_physical_properties_stage(StageProperties::MassFlow, EngineStage::St8), 9999, 1e-6);
+
+    // TODO(Tobi): Add .csv decks
+    // TODO(Oli): Add values from .csv decks
+}
+
+/**
+ * @brief Test getting the scaled SLST.
+ */
+TEST_F(V2725_A5, GetScaledSLST)
+{
+    /* Define scale factor */
+    double scale_factor = 1.45;
+
+    /* Create the test engines */
+    Engine engine{engine_path, scale_factor};
+
+
+    EXPECT_NEAR(engine.get_scaled_SLST(),  110312.6953 * scale_factor, 1e-6);
+}
+
+
+/**
+ * @brief Test getting the scaled SLST.
+ */
+TEST_F(V2725_A5, GetScaledMass)
+{
+    /* Define scale factor */
+    double scale_factor = 1.45;
+
+    /* Create the test engines */
+    Engine engine{engine_path, scale_factor};
+
+    EXPECT_NEAR(engine.get_dry_mass(), 2404 * 1.50489016, 1e-6);
+}
\ No newline at end of file
diff --git a/engine/test/test_engine_data.cpp b/engine/test/test_engine_data.cpp
new file mode 100644
index 00000000..8c78c94d
--- /dev/null
+++ b/engine/test/test_engine_data.cpp
@@ -0,0 +1,169 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <filesystem>
+#include <gtest/gtest.h>
+
+/* Unit Under Test */
+#include "engine/engine_data.h"
+
+/* === Fixtures === */
+class EngineDataV2 : public ::testing::Test
+{
+  protected:
+
+    /* Test setup */
+    void SetUp() override
+    {
+        std::filesystem::path xml_path{CMAKE_TEST_STUBS_DIR};
+        xml_path /= "V2527-A5/V2527-A5.xml";
+        if (!std::filesystem::exists(xml_path))
+        {
+            FAIL() << "The engine XML file does not exist.";
+        }
+        engine_xml = aixml::openDocument(xml_path);
+
+    }
+    std::shared_ptr<node> engine_xml;
+
+};
+
+/* === Tests === */
+/**
+ * @brief Test reading the design conditions in the V2 engine XML format.
+ */
+TEST_F(EngineDataV2, ReadDesignConditions)
+{
+    /* Create the test engine */
+    EngineData engine{engine_xml};
+
+    /* Read the design conditions */
+    EXPECT_NEAR(engine.design_point().altitude, 10668.0, 1e-3);
+    EXPECT_NEAR(engine.design_point().Mach, 0.8, 1e-3);
+    EXPECT_NEAR(engine.design_thrust(), 17010.0, 1e-3);
+    EXPECT_NEAR(engine.SLST(), 110.31*1000, 1e-3);
+    EXPECT_NEAR(engine.MCT(), 98920.0, 1e-3);
+}
+
+/**
+ * @brief Test reading the engine name in the V2 engine XML format.
+ */
+TEST_F(EngineDataV2, ReadEngineName)
+{
+    /* Create the test engine */
+    EngineData engine{engine_xml};
+
+    /* Read the engine name */
+    EXPECT_EQ(engine.name(), "V2527-A5");
+}
+
+/**
+ * @brief Try reading a value which is supposed to be in the 
+ * engine xml but is missing.
+ */
+TEST_F(EngineDataV2, ReadMissingValue)
+{
+    /* Delete the design thrust node */
+    engine_xml->at("EngineDataFile/EngineDesignCondition").deleteChild("thrust");
+    EngineData engine{engine_xml};
+
+    /* Read the design thrust */
+    double result{-1};
+    ASSERT_NO_THROW(result=engine.design_thrust());
+    EXPECT_DOUBLE_EQ(result, 0.0);
+}
+
+/**
+ * @brief Test reading the engine dimensions in the V2 engine XML format.
+ */
+TEST_F(EngineDataV2, ReadEngineDimensions)
+{
+    /* Create the test engine */
+    EngineData engine{engine_xml};
+
+    /* Read the engine dimensions */
+    EXPECT_NEAR(engine.dimensions().height, 2.118, 1e-3);
+    EXPECT_NEAR(engine.dimensions().width, 1.829, 1e-3);
+    EXPECT_NEAR(engine.dimensions().length, 2.508, 1e-3);
+    EXPECT_NEAR(engine.dimensions().diameter, 1.613, 1e-3);
+}
+
+/**
+ * @brief Test reading the engine mass in the V2 engine XML format.
+ */
+TEST_F(EngineDataV2, ReadMassProperties)
+{
+    /* Create the test engine */
+    EngineData engine{engine_xml};
+
+    /* Read the mass properties */
+    EXPECT_NEAR(engine.dry_mass(), 2404.0, 1e-3);
+}
+
+/**
+ * @brief Test reading one value of the test engine deck.
+ * 
+ */
+TEST_F(EngineDataV2, ReadDeckValue)
+{
+    /* Create the test engine */
+    EngineData engine{engine_xml};
+
+    /* Read the deck example value */
+    OperatingPoint op_point{1.0, 10000.0, 0.8};
+    EXPECT_NEAR(engine.get_deck_value("thrust", op_point), 31.293, 0.1);
+
+    /* Create a test engine where decks are parsed when needed */
+    EngineData engine_lazy{engine_xml, true};
+    EXPECT_NEAR(engine_lazy.get_deck_value("thrust", op_point), 31.293, 0.1);
+
+    /* Create a const engine which should parse all decks at construction */
+    const EngineData engine_const(engine_xml);
+    EXPECT_NEAR(engine_const.get_deck_value("thrust", op_point), 31.293, 0.1);
+
+    /* Create a const engine which should not parse all decks at construction */
+    const EngineData engine_const_lazy(engine_xml, true);
+    /* Getting the deck value now shot throw since we are not allowed lazy parse when const! */
+    EXPECT_THROW(engine_const_lazy.get_deck_value("thrust", op_point), std::out_of_range);
+}
+
+/**
+ * @brief Test getting the lower and upper operation point of the engine deck.
+ * 
+ */
+TEST_F(EngineDataV2, GetUpperAndLowerOPBoundaries)
+{
+    /* Create the test engine */
+    EngineData engine{engine_xml};
+
+    /* Get the max and min operating point */
+    EXPECT_NEAR(engine.get_upper_operating_point("thrust").N, 1.1, 1e-6);
+    EXPECT_NEAR(engine.get_upper_operating_point("thrust").Mach, 0.95, 1e-6);
+    EXPECT_NEAR(engine.get_upper_operating_point("thrust").altitude, 14000, 1e-6);
+
+    EXPECT_NEAR(engine.get_lower_operating_point("thrust").N, 0.29, 1e-6);
+    EXPECT_NEAR(engine.get_lower_operating_point("thrust").Mach, 0.0, 1e-6);
+    EXPECT_NEAR(engine.get_lower_operating_point("thrust").altitude, 0.0, 1e-6);
+
+    EXPECT_THROW(engine.get_upper_operating_point("very_fake_deck_value"), std::out_of_range);
+    EXPECT_THROW(engine.get_lower_operating_point("very_fake_deck_value"), std::out_of_range);
+}
\ No newline at end of file
diff --git a/engine/test/test_engine_deck.cpp b/engine/test/test_engine_deck.cpp
new file mode 100644
index 00000000..c7bc0981
--- /dev/null
+++ b/engine/test/test_engine_deck.cpp
@@ -0,0 +1,204 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <filesystem>
+#include <gtest/gtest.h>
+
+/* Unit Under Test */
+#include "engine/engine_deck.h"
+
+/* === Fixtures === */
+class ParseCSV : public ::testing::Test
+{
+  protected:
+    /* Test setup */
+    void SetUp() override
+    {
+        csv_file /=  "value.csv";
+        if (!std::filesystem::exists(csv_file))
+        {
+            FAIL() << "The csv file " << csv_file << "does not exist!";
+        }
+    }
+    std::filesystem::path csv_file{CMAKE_TEST_STUBS_DIR};
+};
+
+class ParseBigCSV : public ::testing::Test
+{
+  protected:
+    /* Test setup */
+    void SetUp() override
+    {
+        csv_file /=  "V2527-A5/thrust.csv";
+        if (!std::filesystem::exists(csv_file))
+        {
+            FAIL() << "The csv file " << csv_file << "does not exist!";
+        }
+    }
+    std::filesystem::path csv_file{CMAKE_TEST_STUBS_DIR};
+};
+
+/* === Tests === */
+/**
+ * @brief Test the deck value data structure.
+ */
+TEST(DeckData, Constructor)
+{
+    /* Create a deck value */
+    DeckData deck_value{};
+
+    /* Check the resulting properties */
+    EXPECT_EQ(deck_value.name, "unknown");
+    EXPECT_TRUE(deck_value.FL.empty());
+    EXPECT_TRUE(deck_value.Mach.empty());
+    EXPECT_TRUE(deck_value.N.empty());
+    EXPECT_TRUE(deck_value.values.empty());
+}
+
+/**
+ * @brief Test the CSV file parsing.
+ */
+TEST_F(ParseCSV, ValidData)
+{
+    /* Parse a deck value */
+    DeckData deck_value = DeckData::from_csv(csv_file);
+
+    /* Check the resulting properties */
+    EXPECT_EQ(deck_value.name, "value");
+    EXPECT_EQ(deck_value.FL.size(), 3);
+    EXPECT_EQ(deck_value.Mach.size(), 3);
+    EXPECT_EQ(deck_value.N.size(), 2);
+    EXPECT_EQ(deck_value.values.shape()[0], 2); // N Dimension
+    EXPECT_EQ(deck_value.values.shape()[1], 3); // FL Dimension
+    EXPECT_EQ(deck_value.values.shape()[2], 3); // Mach Dimension
+    EXPECT_EQ(deck_value.values[0][0][0], 1.0);
+    EXPECT_EQ(deck_value.values[0][0][1], 2.0);
+}
+
+/**
+ * @brief Test parsing an invalid file extension.
+ */
+TEST_F(ParseCSV, InvalidFileExtension)
+{
+    /* Parse a file which is not a CSV file */
+    EXPECT_THROW(DeckData::from_csv("test.dat"), std::runtime_error);
+}
+
+/**
+ * @brief Test the interpolation of a deck value.
+ */
+using InterpolateDeckValue = ParseCSV;
+TEST_F(InterpolateDeckValue, ValidValue)
+{
+    /* Create a deck value */
+    DeckValue deck_value{DeckData::from_csv(csv_file)};
+
+    /* Vary N */
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({1.00, 10, 0.5}), 5.0);
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({0.95, 10, 0.5}), 9.5);
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({0.90, 10, 0.5}), 14.0);
+
+    /* Vary FL */
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({1.00, 0, 0.5}), 2.0);
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({1.00, 10, 0.5}), 5.0);
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({1.00, 15, 0.5}), 6.5);
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({1.00, 20, 0.5}), 8.0);
+
+    /* Vary Mach */
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({1.00, 10, 0.0}), 4.0);
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({1.00, 10, 0.5}), 5.0);
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({1.00, 10, 0.75}), 5.5);
+    EXPECT_DOUBLE_EQ(deck_value.get_value_at({1.00, 10, 1.00}), 6.0);
+}
+
+/**
+ * @brief Test interpolating a value which is outside the valid range.
+ */
+TEST_F(InterpolateDeckValue, OutsideValidRange)
+{
+    /* Create a deck value */
+    DeckValue deck_value{DeckData::from_csv(csv_file)};
+
+    /* Outside N range */
+    EXPECT_THROW(deck_value.get_value_at({0.89, 10, 0.5}), std::out_of_range);
+    EXPECT_THROW(deck_value.get_value_at({1.01, 10, 0.5}), std::out_of_range);
+
+    /* Outside FL range */
+    EXPECT_THROW(deck_value.get_value_at({1.00, 20.1, 0.5}), std::out_of_range);
+    EXPECT_THROW(deck_value.get_value_at({1.00, -0.1, 0.5}), std::out_of_range);
+
+    /* Outside Mach range */
+    EXPECT_THROW(deck_value.get_value_at({1.00, 10, 1.01}), std::out_of_range);
+    EXPECT_THROW(deck_value.get_value_at({1.00, 10, -0.01}), std::out_of_range);
+}
+
+
+/**
+ * @brief Test parsing a big CSV file.
+ */
+TEST_F(ParseBigCSV, ValidData)
+{
+    /* Parse a deck value */
+    DeckData deck_value = DeckData::from_csv(csv_file);
+
+    /* Check the resulting properties */
+    EXPECT_EQ(deck_value.name, "thrust");
+}
+
+
+/**
+ * @brief Test returning the minimal possible operting point.
+ */
+TEST_F(ParseBigCSV, LowerBoundry)
+{
+    /* Parse a deck value */
+    DeckValue deck_value{DeckData::from_csv(csv_file)};
+
+    /*  */
+    EXPECT_NEAR(deck_value.lower_boundary().N, 0.29, 1e-6);
+    EXPECT_NEAR(deck_value.lower_boundary().Mach, 0.0, 1e-6);
+    EXPECT_NEAR(deck_value.lower_boundary().altitude, 0.0, 1e-6);
+}
+
+/**
+ * @brief Test returning the minimal possible operting point.
+ */
+TEST_F(ParseBigCSV, UpperBoundry)
+{
+    /* Parse a deck value */
+    DeckValue deck_value{DeckData::from_csv(csv_file)};
+
+    /*  */
+    EXPECT_NEAR(deck_value.upper_boundary().N, 1.1, 1e-6);
+    EXPECT_NEAR(deck_value.upper_boundary().Mach, 0.95, 1e-6);
+    EXPECT_NEAR(deck_value.upper_boundary().altitude, 14000, 1e-6);
+}
+
+
+//TEST_F(ParseBigCSV, ValidOldData)
+//{
+//    /* Parse a deck value */
+//    EngineDeck deck_value(csv_file.string());
+//
+//    /* Check the resulting properties */
+//    EXPECT_TRUE(true);
+//}
diff --git a/extern/doxygen-awesome-css b/extern/doxygen-awesome-css
new file mode 160000
index 00000000..df83fbf2
--- /dev/null
+++ b/extern/doxygen-awesome-css
@@ -0,0 +1 @@
+Subproject commit df83fbf22cfff76b875c13d324baf584c74e96d0
diff --git a/extern/pybind11 b/extern/pybind11
new file mode 160000
index 00000000..8a099e44
--- /dev/null
+++ b/extern/pybind11
@@ -0,0 +1 @@
+Subproject commit 8a099e44b3d5f85b20f05828d919d2332a8de841
diff --git a/liftingLineInterface2/CMakeLists.txt b/liftingLineInterface2/CMakeLists.txt
new file mode 100644
index 00000000..75f6fe9e
--- /dev/null
+++ b/liftingLineInterface2/CMakeLists.txt
@@ -0,0 +1,53 @@
+# Set the library name
+set( LIBRARY_NAME liftingLineInterface2 )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/liftingLineInput.cpp
+    src/liftingLineInterface.cpp
+    src/liftingLineOutput.cpp
+    src/liftingLinePolar.cpp
+    src/liftingLineSettings.cpp
+    src/liftingLineWing.cpp
+    resources.rc
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_LIFTINGLINEINTERFACE_SHARED" PUBLIC "IMPORT_LIFTINGLINEINTERFACE_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Link against dependent libraries
+target_link_libraries( ${LIBRARY_NAME} 
+    PRIVATE
+        aixml
+        runtimeInfo
+        standardFiles
+        unitConversion
+		aircraftGeometry2
+		moduleBasics
+)
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/liftingLineInterface2/include/liftingLineInterface2/liftingLineInput.h b/liftingLineInterface2/include/liftingLineInterface2/liftingLineInput.h
new file mode 100644
index 00000000..24a6db64
--- /dev/null
+++ b/liftingLineInterface2/include/liftingLineInterface2/liftingLineInput.h
@@ -0,0 +1,128 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEINPUT_H_
+#define LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEINPUT_H_
+
+#include <aircraftGeometry2/airfoil_surface.h>
+#include <aircraftGeometry2/processing/measure.h>
+#include <string>
+#include <vector>
+#include "liftingLineInterface2/liftingLineSettings.h"
+#include "liftingLineInterface2/liftingLineWing.h"
+
+#ifdef BUILD_LIFTINGLINEINTERFACE_SHARED
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllexport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_LIFTINGLINEINTERFACE_SHARED)
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllimport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT
+    #endif
+#else
+    #define LIFTINGLINEINTERFACEDLLEXPORT
+#endif
+
+class liftingSurface;
+class Point;
+
+/** \class liftingLineInput Class for managing liftingLineInput data.
+ */
+class LIFTINGLINEINTERFACEDLLEXPORT liftingLineInput {
+ public:
+    friend class liftingLineInterface; /**< Definition of liftingLine as friend class */
+    friend class liftingLineOutput; /**< Definition of liftingLineOutput as friend class */
+
+    /** \brief Default destructor for liftingLineInput.
+     */
+    virtual ~liftingLineInput() {}
+
+    double machNumber; /**< Mach number of liftingLine run */
+    std::string LILIfilename; /**< Name of liftingLine files (without file type) */
+    std::string LILIfilepath; /**< Path to liftingLine input file */
+
+ private:
+    /** \brief Default constructor for liftingLineInput.
+     *  \param myLLsettings Reference to liftingLineSettings
+     *  \param IoDir Input/output (project) directory
+     */
+    liftingLineInput(const liftingLineSettings &myLLsettings, std::string const& IoDir);
+
+    const liftingLineSettings& myLLsettings; /**< Object for liftingLineSettings */
+
+    /** \brief Method to merge all functions to create liftingLine input.
+     *  \param liftingSurfaces Vector holding the liftingSurfaces
+     *  \param theFuselage Constant reference to the geometry object of aircraft fuselage 
+     *  \param aMachNumber Mach number for the liftingLine run
+     *  \param aReynoldsnumber Reynolds number for the liftingLine run
+     *  \param refArea Actual reference wing area, [m2]. Will be used in case no other is specified in liftingLine_conf.xml
+     *  \param aCoG {x,y,z}-coordinates of the center of gravity of the aircraft, [m]
+     */
+    void createLiftingLineInput(const std::vector<geom2::MultisectionSurface<geom2::AirfoilSection>>& liftingSurfaces,
+                                const geom2::MultisectionSurface<geom2::PolygonSection>& theFuselage,
+                                const double& aMachNumber, const double& aReynoldsnumber, const double& refArea, const Point& aCoG);
+    /** \brief Method to initialize liftingLine run.
+     *  \details Method differentiates between compressible and incompressible.
+     *  \param aMachNumber Mach number for which liftingLine shall be executed
+     */
+    void initializeLiftingLine(const double& aMachNumber);
+    /** \brief Method to set the general liftingLine filename (without file type)
+     *  \param isIncompressible Switch to differentiate between compressible and incompressible runs
+     *  \return std::string liftingLine filename
+     */
+    std::string setLILIfilename(bool isIncompressible);
+    /** \brief Method to set path for the liftingLine files
+     *  \param liliFilename liftingLine filename (without file type)
+     *  \return std::string liftingLine file path
+     */
+    std::string setLILIfilepath(const std::string& liliFilename);
+    /** \brief Method to set the panel distribution used as input.
+     *  \return Panel distribution with panel numbers used as input
+     */
+    liftingLineWing::liftingLinePanels setInputPanelDistribution();
+    /** \brief Method to check total number of panels.
+     */
+    void checkLILIinput();
+    /** \brief Method to write the liftingLine input file.
+     *  \param wingReferenceArea Reference area of the main wing, [m2]
+     *  \param wingReferenceSpan Reference span of the main wing, [m]
+     *  \param wingMAC Mean aerodynamic chord of the main wing, [m]
+     *  \param momentReferencePoint {x,y,z}-coordinates used as reference points for moments, [m]
+     *  \param numberLiftingSurfaces Number if liftingSurfaces
+     *  \param anInputPolar Reference to polar object from liftingLineSettings
+     *  \param aReynoldsNumber Reynolds number used for the liftingLine run
+     */
+    void writeLILIinputFile(const double& wingReferenceArea, const double& wingReferenceSpan, const double& wingMAC, const Point& momentReferencePoint,
+                            const uint16_t& numberLiftingSurfaces, const liftingLineSettings::polarConfig& anInputPolar, const double& aReynoldsNumber,
+                            const uint16_t& numberOfPropellers = 0);
+
+    std::vector<liftingLineWing> theLILIWingGeometries; /**< Vector holding liftingLineWing data */
+
+    std::string ioDir; /**< Input/output (project) directory */
+    std::string LILIinputFilepath; /**< Path for liftingLine input file */
+    std::string machNumber_str; /**< Current Mach number as std::string */
+};
+#endif  // LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEINPUT_H_
diff --git a/liftingLineInterface2/include/liftingLineInterface2/liftingLineInterface.h b/liftingLineInterface2/include/liftingLineInterface2/liftingLineInterface.h
new file mode 100644
index 00000000..7d26322e
--- /dev/null
+++ b/liftingLineInterface2/include/liftingLineInterface2/liftingLineInterface.h
@@ -0,0 +1,109 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEINTERFACE_H_
+#define LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEINTERFACE_H_
+
+#include <moduleBasics/runtimeIO.h>
+#include <aircraftGeometry2/airfoil_surface.h>
+#include <string>
+#include <vector>
+#include <memory>
+#include "liftingLineInterface2/liftingLineSettings.h"
+
+#ifdef BUILD_LIFTINGLINEINTERFACE_SHARED
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllexport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_LIFTINGLINEINTERFACE_SHARED)
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllimport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT
+    #endif
+#else
+    #define LIFTINGLINEINTERFACEDLLEXPORT
+#endif
+
+class liftingLineInput;
+class liftingLineOutput;
+class liftingSurface;
+class Point;
+
+/** \class liftingLine Class for managing liftingLine data.
+ */
+class LIFTINGLINEINTERFACEDLLEXPORT liftingLineInterface {
+ public:
+    /** \brief Default constructor for liftingLine.
+     *  \param path2Conf Path to liftingLine_conf.xml in liftingLine folder
+     *  \param IoDir Input/output (project) directory
+     */
+    liftingLineInterface(const std::string& path2Conf, const std::string& IoDir);
+    /** \brief Default destructor for liftingLine.
+     */
+    virtual ~liftingLineInterface() {}
+    /** \brief Function to start liftingLine
+    */
+    void executeLiftingLine();
+    /** \brief Function for initializing liftingLine
+     *  \param liftingSurfaces Vector holding the liftingSurfaces
+     *  \param theFuselage Constant reference to the geometry object of aircraft fuselage 
+     *  \param aMachNumber Mach number for the liftingLine run
+     *  \param aReynoldsnumber Reynolds number for the liftingLine run
+     *  \param refArea Actual reference wing area, [m2]. Will be used in case no other is specified in liftingLine_conf.xml
+     *  \param aCoG {x,y,z}-coordinates of the center of gravity of the aircraft, [m]
+     */
+    void initializeLiftingLine(const std::vector<geom2::MultisectionSurface<geom2::AirfoilSection>>& liftingSurfaces,
+                               const geom2::MultisectionSurface<geom2::PolygonSection>& theFuselage,
+                               const double& aMachNumber, const double& aReynoldsnumber, const double& refArea, const Point& aCoG);
+    
+    liftingLineInput* theLiftingLineInputPt; /**< Pointer to liftingLineInput */
+    liftingLineOutput* theLLOutputPt; /**< Pointer to liftingLineOutput */
+    liftingLineSettings myLLsettings; /**< Object for liftingLineSettings */
+
+    /** \brief Function to create backup directory
+     *  \return Bool whether backup directory was created
+     */
+    bool createBackupDir(const std::string& aSourceDir, const std::string& aBackupDir);
+
+    std::string LILI_src_dir; /**< Path to LiftingLine source directory */
+    std::string LILI_bkp_dir; /**< Path to LiftingLine backup directory */
+    bool LILI_bkp_dir_created; /**< Bool whether backup directory was created */
+
+ private:
+    // Member functions
+    /** \brief Function initializes Pointer
+    */
+    void initializePointer();
+
+    /** \brief Function to set the execution command to run liftingLine
+     *  \return Execution command as std::string
+     */
+    std::string setExecutionCommand();
+
+    // Member variables
+    std::string ioDir; /**< Input/output (project) directory */
+    std::string ioFilename; /**< Name of input/output file (aircraft.xml) */
+};
+#endif  // LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEINTERFACE_H_
diff --git a/liftingLineInterface2/include/liftingLineInterface2/liftingLineOutput.h b/liftingLineInterface2/include/liftingLineInterface2/liftingLineOutput.h
new file mode 100644
index 00000000..f81abe2b
--- /dev/null
+++ b/liftingLineInterface2/include/liftingLineInterface2/liftingLineOutput.h
@@ -0,0 +1,81 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEOUTPUT_H_
+#define LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEOUTPUT_H_
+
+#include <string>
+#include "liftingLineInterface2/liftingLineInput.h"
+#include "liftingLineInterface2/liftingLinePolar.h"
+
+#ifdef BUILD_LIFTINGLINEINTERFACE_SHARED
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllexport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_LIFTINGLINEINTERFACE_SHARED)
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllimport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT
+    #endif
+#else
+    #define LIFTINGLINEINTERFACEDLLEXPORT
+#endif
+
+/** \class liftingLineOutput Class for managing liftingLineOutput data.
+ */
+class LIFTINGLINEINTERFACEDLLEXPORT liftingLineOutput : public liftingLinePolars {
+ public:
+    /** \brief Default constructor for liftingLineOutput.
+     *  \param myLLinput Reference to liftingLineInput object
+     */
+    explicit liftingLineOutput(const liftingLineInput &myLLinput);
+    /** \brief Default destructor for liftingLineOutput.
+     */
+    virtual ~liftingLineOutput() {}
+
+    /** \brief Function to read liftingLine results from LL output.xml file.
+     *  \param ioFilename Name of aircraft.xml
+     *  \param numberWings Number of liftingSurfaces used for liftingLine calculation
+     */
+    void readLiftingLineResults(int numberLiftingSurfaces);
+    /** \brief Function to get analytical lift/induced drag polar coefficients based on regression analysis.
+     */
+    void getAnalyticalPolar();
+    /** \brief Function to get analytical lift/induced drag polar coefficients of liftingSurfaces based on regression analysis.
+     *  \param aLiftingSurfacePolar Object holding polar points of respective liftingSurface
+     *  \param llPolarSize Total number of calculated polar points
+     */
+    void getAnalyticalPolarLiftingSurface(const liftingLinePolars::liftingLinePolarWings& aLiftingSurfacePolar, const uint16_t& llPolarSize);
+    /** \brief Function to get analytical lift/induced drag polar coefficients of liftingSurfaces parts based on regression analysis.
+     *  \details Currently, the only use case is the application of ROMs, which optionally require parts of the induced drag from LILI to be added
+     *  \param aLiftingSurfacePolar Object holding polar points of respective liftingSurface
+     *  \param llPolarSize Total number of calculated polar points
+     */
+    void getAnalyticalPolarLiftingSurfacePart(const liftingLinePolars::liftingLinePolarWings& aLiftingSurfacePolar, const uint16_t& llPolarSize);
+
+ private:
+    liftingLineInput myLLinput; /**< Object for liftingLineInput */
+};
+#endif  // LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEOUTPUT_H_
diff --git a/liftingLineInterface2/include/liftingLineInterface2/liftingLinePolar.h b/liftingLineInterface2/include/liftingLineInterface2/liftingLinePolar.h
new file mode 100644
index 00000000..0c3a0b9b
--- /dev/null
+++ b/liftingLineInterface2/include/liftingLineInterface2/liftingLinePolar.h
@@ -0,0 +1,152 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEPOLAR_H_
+#define LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEPOLAR_H_
+
+#include <vector>
+
+#ifdef BUILD_LIFTINGLINEINTERFACE_SHARED
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllexport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_LIFTINGLINEINTERFACE_SHARED)
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllimport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT
+    #endif
+#else
+    #define LIFTINGLINEINTERFACEDLLEXPORT
+#endif
+
+/** \class liftingLinePolars Class for managing all polar related data.
+ */
+class LIFTINGLINEINTERFACEDLLEXPORT liftingLinePolars {
+ public:
+    /** \class liftingLinePolar Class for managing liftingLine polar data.
+     */
+    class LIFTINGLINEINTERFACEDLLEXPORT liftingLinePolar {
+     public:
+        /** \brief Constructor for liftingLinePolar.
+         */
+        liftingLinePolar();
+        /** \brief Destructor for liftingLinePolar.
+         */
+        virtual ~liftingLinePolar() {}
+
+        double AoA; /**< Angle of attack, [deg] */
+        double CL; /**< Lift coefficient */
+        double CDind; /**< Induced drag coefficient */
+        double CM; /**< Moment coefficient */
+    };
+
+    /** \class liftingLineSegment Class for managing lifting line segments/panels.
+     */
+    class LIFTINGLINEINTERFACEDLLEXPORT liftingLineSegment {
+     public:
+        /** \brief Constructor for liftingLineSegment.
+        */
+        liftingLineSegment();
+        /** \brief Destructor for liftingLineSegment.
+         */
+        virtual ~liftingLineSegment();
+        double yPos; /**< y-position of the liftingLine panel middle used for vortex placement (calculated internally in liftingLine), [m] */
+        liftingLinePolar *llPolarSeg; /**< Local polar point of the liftingLine panel */
+    };
+
+    /** \class liftingLinePolarWithSegments Class for polar points of panels including Cl-distribution.
+     */
+    class LIFTINGLINEINTERFACEDLLEXPORT liftingLinePolarWithSegments : public liftingLinePolar {
+     public:
+        /** \brief Constructor for liftingLinePolarWithSegments.
+         */
+        liftingLinePolarWithSegments() {}
+        /** \brief Destructor for liftingLinePolarWithSegments.
+         */
+        virtual ~liftingLinePolarWithSegments() {}
+
+        std::vector<liftingLineSegment> wingSegments; /**< Number of lifting line panels */
+    };
+
+    /** \class liftingLinePolarWings Class for managing wing polar data.
+     */
+    class LIFTINGLINEINTERFACEDLLEXPORT liftingLinePolarWings {
+     public:
+        /** \brief Constructor for liftingLinePolarWings.
+         */
+        liftingLinePolarWings();
+        /** \brief Destructor for liftingLinePolarWings.
+         */
+        virtual ~liftingLinePolarWings() {}
+
+        int numberOfSegments; /**< Number of liftingLine segments */
+        std::vector <double> yPositions; /**< Vector holding different y-positions of the panels for liftingLineWings, [m] */
+        std::vector<liftingLinePolarWithSegments> llPolarW; /**< Vector holding liftingLinePolarWithSegments objects */
+    };
+
+    /** \brief Default constructor for liftingLinePolars.
+     */
+    liftingLinePolars();
+    /** \brief Default destructor for liftingLinePolars.
+     */
+    virtual ~liftingLinePolars() {}
+
+    std::vector<liftingLinePolar> llPolar; /**< Vector holding liftingLinePolar objects */
+    std::vector<liftingLinePolarWings> llPolarWings; /**< Vector holding liftingLinePolarWings objects. Usually 2 elements (wing and HLW) */
+
+    /* Specific global parameters for aerodynamic coefficients of analytical polar. */
+    double dCLtodAoA; /**< Slope of AoA-CL polar */
+    double CLatAoA0; /**< CL at AoA = 0 */
+    double dCMtodAoA; /**< Slope of AoA-CM polar */
+    double CMatAoA0; /**< CM at AoA = 0 */
+    double dCMtodCL; /**< Slope of CL-CM polar */
+    double CMatCL0; /**< CM at CL = 0 */
+    double CDmin; /**< Minimum drag coefficient (for dCDind/dCL = 0) */
+    double CLatCDmin; /**< Lift coefficient at CDmin */
+    double kFactor; /**< Third polynomial coefficient from regression fit */
+    double dCLtodAoA_wf; /** Slope of AoA-CL polar with fuselage correction  */
+    /* Specific liftingSurface parameters for aerodynamic coefficients of analytical polar. */
+    std::vector<double> liftingSurface_dCLtodAoA; /**< Vector holding slope of AoA-CL polar of liftingSurfaces */
+    std::vector<double> liftingSurface_CLatAoA0; /**< Vector holding CL at AoA = 0 of liftingSurfaces */
+    std::vector<double> liftingSurface_dCMtodAoA; /**< Vector holding slope of AoA-CM polar of liftingSurfaces */
+    std::vector<double> liftingSurface_CMatAoA0; /**< Vector holding CM at AoA = 0 of liftingSurfaces */
+    std::vector<double> liftingSurface_dCMtodCL; /**< Vector holding slope of CL-CM polar of liftingSurfaces */
+    std::vector<double> liftingSurface_CMatCL0; /**< Vector holding CM at CL = 0 of liftingSurfaces */
+    std::vector<double> liftingSurface_CDmin; /**< Vector holding minimum drag coefficients of liftingSurfaces (for dCDind/dCL = 0) */
+    std::vector<double> liftingSurface_CLatCDmin; /**< Vector holding lift coefficients at CDmin of liftingSurfaces */
+    std::vector<double> liftingSurface_kFactor; /**< Vector holding third polynomial coefficients from regression fit of liftingSurfaces */
+    /* Specific lifting surface part parameters for aerodynamic coefficients of analytical polar. */
+    double liftingSurfacePart_dCLtodAoA; /**< Slope of AoA-CL polar */
+    double liftingSurfacePart_CLatAoA0; /**< CL at AoA = 0 */
+    double liftingSurfacePart_dCMtodAoA; /**< Slope of AoA-CM polar */
+    double liftingSurfacePart_CMatAoA0; /**< CM at AoA = 0 */
+    double liftingSurfacePart_dCMtodCL; /**< Slope of CL-CM polar */
+    double liftingSurfacePart_CMatCL0; /**< CM at CL = 0 */
+    double liftingSurfacePart_CDmin; /**< Minimum drag coefficient (for dCDind/dCL = 0) */
+    double liftingSurfacePart_CLatCDmin; /**< Lift coefficient at CDmin */
+    double liftingSurfacePart_kFactor; /**< Third polynomial coefficient from regression fit */
+    double liftingSurfacePart_dCLtodAoA_wf; /** Slope of AoA-CL polar with fuselage correction  */
+};
+#endif  // LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEPOLAR_H_
diff --git a/liftingLineInterface2/include/liftingLineInterface2/liftingLineSettings.h b/liftingLineInterface2/include/liftingLineInterface2/liftingLineSettings.h
new file mode 100644
index 00000000..0dcfeb59
--- /dev/null
+++ b/liftingLineInterface2/include/liftingLineInterface2/liftingLineSettings.h
@@ -0,0 +1,108 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINESETTINGS_H_
+#define LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINESETTINGS_H_
+
+#include <string>
+#include <vector>
+
+#ifdef BUILD_LIFTINGLINEINTERFACE_SHARED
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllexport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_LIFTINGLINEINTERFACE_SHARED)
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllimport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT
+    #endif
+#else
+    #define LIFTINGLINEINTERFACEDLLEXPORT
+#endif
+
+/** \class liftingLineSettings Class for managing liftingLineSettings data.
+ */
+class LIFTINGLINEINTERFACEDLLEXPORT liftingLineSettings {
+ public:
+    friend class liftingLineInput; /**< Definition of liftingLineInput as friend class */
+    friend class liftingLineInterface; /**< Definition of liftingLine as friend class */
+    friend class liftingLineOutput; /**< Definition of liftingLineOutput as friend class */
+
+    /** \brief Default constructor for liftingLineSettings.
+     *  \param path2Conf Path to liftingLine_conf.xml
+     */
+    explicit liftingLineSettings(const std::string& path2Conf);
+    /** \brief Default destructor for liftingLineSettings.
+     */
+    virtual ~liftingLineSettings() {}
+
+    std::string LL_version; /**< Number of LiftingLine version */
+    unsigned int error_handling; /**< Value decides whether program should exit (0), use existing polars (1) or not abort (2) in case of numerical liftingLine error */
+    double referenceArea; /**< Value for reference wing area, [m2]. If 0, then actual area calculated in aircraftGeometry lib is used. */
+
+ private:
+    /** \class polarConfig Class for managing polarConfig data from liftingLine_conf.xml.
+     */
+    class LIFTINGLINEINTERFACEDLLEXPORT polarConfig {
+     public:
+        /** \brief Constructor for polarConfig.
+         */
+        polarConfig();
+        /** \brief Destructor for polarConfig.
+         */
+        virtual ~polarConfig() {}
+
+        double beta; /**< Sideslip angle, [deg] */
+        int numberAoA; /**< Number of angle of attack to be calculated with liftingLine */
+        std::vector<double> AoA; /**< Vector holding angles of attack, [deg] */
+        int numberCL; /**< Number of lift coefficients to be calculated with liftingLine */
+        std::vector<double> liftCoefficient; /**< Vector holding lift coefficients */
+    } Polar; /**< Object for polarConfig */
+
+    /** \brief Function to read liftingLine settings from liftingLine_conf.xml
+     *  \param path2Conf Path to liftingLine_conf.xml
+     */
+    void getLiftingLineSettings(const std::string& path2Conf);
+
+    /** \brief Function check availability of LL_Exe_path and sets it to LiftingLine/LIFTING_LINE_<WINDOWS/LINUX>_64BIT.EXE as DEFAULT is given in the config
+    */
+    void checkLL_Exe_path();
+
+    std::string LL_Exe_path; /**< Path to liftingLine executable (including *.exe) */
+    std::string programShortName; /**< Short name of program LiftingLine is used in */
+    bool consoleOut; /**< Switch for console output */
+    bool tecplotOut; /**< Switch for tecplot output */
+    unsigned int numbChordwisePanels; /**< Number of panels in chordwise direction */
+    unsigned int numbAddSpanwisePanels; /**< Number of panels in spanwise direction (in addition to wing segments) */
+    double reductionFactorHTP; /**< Reduction factor for panels in spanwise direction on HTP */
+    unsigned int minSpanPanelsPerSegment; /**< Minimum number of panels in spanwise direction per segment */
+    unsigned int minValueTip; /**< Minimum number of panels in spanwise direction for tip segment */
+    bool twistDistrType; /**< Type of twist distribution (linear twist or linearly straked, fully three dimensional geometry twist) */
+    bool untwistFslgSeg; /**< Switch to untwist fuselage segment to achieve planar calculation for this segment, [dimensionless] */
+    double referenceSpan; /**< Value for reference wing span, [m]. If 0, the actual span calculated in aircraftGeometry lib is used */
+    double spanForScale; /**< Factor for scaling the span */
+    double maxRuntime; /**< Maximum runtime, [min] */
+};
+#endif  // LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINESETTINGS_H_
diff --git a/liftingLineInterface2/include/liftingLineInterface2/liftingLineWing.h b/liftingLineInterface2/include/liftingLineInterface2/liftingLineWing.h
new file mode 100644
index 00000000..b0a73469
--- /dev/null
+++ b/liftingLineInterface2/include/liftingLineInterface2/liftingLineWing.h
@@ -0,0 +1,167 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEWING_H_
+#define LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEWING_H_
+
+#include <standardFiles/typedefs.h>
+#include <aircraftGeometry2/airfoil_surface.h>
+#include <aircraftGeometry2/processing/measure.h>
+#include <string>
+#include <vector>
+
+#ifdef BUILD_LIFTINGLINEINTERFACE_SHARED
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllexport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_LIFTINGLINEINTERFACE_SHARED)
+    #ifdef _WIN32
+        #define LIFTINGLINEINTERFACEDLLEXPORT __declspec(dllimport)
+    #else
+        #define LIFTINGLINEINTERFACEDLLEXPORT
+    #endif
+#else
+    #define LIFTINGLINEINTERFACEDLLEXPORT
+#endif
+
+/** \class liftingLineWing Class for managing liftingLineWing data.
+ */
+class LIFTINGLINEINTERFACEDLLEXPORT liftingLineWing {
+ public:
+    /** \brief Default Destructor for liftingLineWing.
+     */
+    virtual ~liftingLineWing() {}
+
+ private:
+    friend class liftingLineInput; /**< Definition of liftingLineInput as friend class */
+    friend class liftingLineOutput; /**< Definition of liftingLineOutput as friend class */
+    /** \struct liftingLinePanels Struct for managing liftingLinePanels data.
+     */
+    struct liftingLinePanels {
+        unsigned int numberOfChordwisePanels; /**< Number of panels in chordwise direction */
+        unsigned int numberOfMinimumSpanwisePanelsPerSegment; /**< Minimum number of panels in spanwise direction per segment */
+        unsigned int numberOfAdditionalSpanwisePanels; /**< Number of panels in spanwise direction (in addition to wing segments) */
+        unsigned int numberOfMinimumSpanwisePanelsForTipSegment; /**< Minimum number of panels in spanwise direction for tip segment */
+    } theInputPanelDistribution; /**< Object for liftingLinePanels */
+    /** \struct camberLine Struct for managing camberLine data.
+     */
+    struct camberLine {
+        std::vector<Point> camberLinePoints; /**< Vector holding coordinates of camberline points, [m] */
+    };
+
+    /** \brief Default Constructor for liftingLineWing.
+     */
+    liftingLineWing();
+    /** \brief This function generates LiLi geometry
+     *  \param anAircraftLiftingSurface Object holding data of liftingSurface
+     *  \param theFuselage Constant reference to fuselage geometry object holding data of aircraft fuselage
+     *  \param reductionFactorHTPpanels Reduction factor for panels in spanwise direction on HTP
+     *  \param untwistFslgSeg Untwist panel of fuselage segment to achieve planar calculation for this segment, [dimensionless]
+     *  \return void
+     */
+    void generateLILIgeometry(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface,
+                              const geom2::MultisectionSurface<geom2::PolygonSection>& theFuselage,
+                              const double& reductionFactorHTPpanels, const bool& untwistFslgSeg);
+    /** \brief Method to set panel distribution.
+     *  \details The member variables N_PW_Chord, N_PW_Span, numberSegments, N_P, totalPanel are initialized.
+     *  \param anAircraftLiftingSurface Object holding data of liftingSurface
+     *  \param reductionFactorHTPpanels Reduction factor for panels in spanwise direction on HTP
+     *  \return void
+     */
+    void setPanelDistribution(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, const double& reductionFactorHTPpanels);
+    /** \brief calculation of panel coordinates in chordwise direction
+     *  \details the member variables absoluteChord_PW, panelReferencePoint, and COUPLING_CONDITIONS are initialized
+     *  \param anAircraftLiftingSurface Object holding data of liftingSurface
+     *  \param theFuselage Constant reference to fuselage geometry object holding data of aircraft fuselage
+     *  \param myScaleSpanErrors Factor for scale span erros
+     *  \param untwistFslgSeg Untwist panel of fuselage segment to achieve planar calculation for this segment, [dimensionless]
+     *  \return void
+     */
+    void setPanelProperties(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, 
+                            const geom2::MultisectionSurface<geom2::PolygonSection>& theFuselage, const double& myScaleSpanErrors, const bool& untwistFslgSeg);
+    /** \brief Method to set panel camberline.
+     *  \param anAircraftLiftingSurfaceSegment Object holding data of liftingSurfaceSegment
+     *  \return camberLine struct holding {x,y,z}-coordinates, [m]
+     */
+    camberLine setPanelCamberLine(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, const size_t& sectionID);
+    /** \brief Method to calculate zero lift of each panel.
+     *  \param anAircraftLiftingSurfaceSegment Object holding data of liftingSurfaceSegment
+     *  \param currentChordwisePanelID Current chordwise panel ID (function is called in a loop)
+     *  \param thePanelCamberLine Camberline of current panel
+     *  \param absolutePanelChord Absolute chord of current panel
+     *  \return zeroLift Zero-lift angle of the panel, [deg]
+     */
+    double getZeroLiftOfPanel(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, const size_t& sectionID,
+                              unsigned int currentChordwisePanelID, const camberLine& thePanelCamberLine, const double& absolutePanelChord);
+    /** \brief Method to set the twist of each panel.
+     *  \param anAircraftLiftingSurfaceSegment Object holding data of liftingSurfaceSegment
+     *  \param currentChordwisePanelID Current chordwise panel ID (function is called in a loop)
+     *  \param thePanelCamberLine Camberline of current panel
+     *  \param absolutePanelChord Absolute chord of current panel
+     *  \return panelTwist Twist which is defined as actual twist angle minus zero-lift angle of the panel, [deg]
+     */
+    double setPanelTwist(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, const size_t& sectionID,
+                         unsigned int currentChordwisePanelID, const camberLine& thePanelCamberLine, const double& absolutePanelChord);
+
+    /** \brief Method to converts the geom2 Polygons to point vectors splittet in upper and lower section.
+     *  \param aSection wing section wich gets splitted
+     *  \param upperSide switch wether upper or lower side points are returned
+     *  \return points of the upper or lower side of an airfoil
+     */
+    std::vector <Point> splitAirfoilCoordinates(const geom2::AirfoilSection& aSection, bool upperSide);
+
+    /** \brief Calculates true Coordinates from true LE Coordinates, chordlenght and rotation, so basicly a geom2 workaround.
+     *  \param LEPoint coordinate of the leading edge point in [m]
+     *  \param chordLength local length of the chord in [m]
+     *  \param LERotationInRad local twist in [rad]
+     *  \return coordinates of the trailing edge point in [m]
+     */
+    Point getTECoordinates(const Point& LEPoint, const double& chordLength, const double & LERotationInRad);
+
+    /** \brief Calculates true Coordinates for a LE point of the geom2 liftingsurface, so basicly a geom2 workaround. Assumes that lifing surface is extruded in y-direction!
+     *  \param anAircraftLiftingSurface the lifting surface
+     *  \param sectionID the index of the section
+     *  \return coordinates of the leading edge point of the section at the section index in [m]
+     */
+    Point getTrueCoordinates(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, const size_t& sectionID);
+
+    // initialized via setPanelDistribution
+    unsigned int N_PW_Chord; /**< Number of panels in chordwise direction */
+    unsigned int N_PW_Span; /**< Number of panels in spanwise direction */
+    unsigned int totalPanel; /**< Total number of panels of a liftingSurface */
+    unsigned int numberOfWingSegments; /**< Number of segments of a liftingSurface */
+    std::vector<int> N_P; /**< Number of panels of a segment in spanwise direction */
+
+    // initialized via setPanelProperties
+    struct panelProperties {
+        std::vector<Point> panelReferencePoint;/**< {x,y,z}-coordinates for each panel of lifting surface in chordwise direction, [m] */
+        std::vector<camberLine> panelCamberLine; /**< Camberline of each panel */
+        std::vector<double> absoluteChord_PW; /**< Relative chord of each panel (reference length for part wings) */
+        std::vector<std::string> COUPLING_CONDITIONS; /**< Coupling condition for each panel */
+        std::vector<double> TWIST; /**< Vector holding twist angles for each panel, [deg] */
+    };
+    panelProperties panelLeft;
+    panelProperties panelRight;
+};
+#endif  // LIFTINGLINEINTERFACE2_INCLUDE_LIFTINGLINEINTERFACE2_LIFTINGLINEWING_H_
diff --git a/liftingLineInterface2/resources.rc b/liftingLineInterface2/resources.rc
new file mode 100644
index 00000000..a5a0bb63
--- /dev/null
+++ b/liftingLineInterface2/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "liftingLineInterface2\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "liftingLineInterface2.dll\0"
+            VALUE "ProductName",        "liftingLineInterface2\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/liftingLineInterface2/src/liftingLineInput.cpp b/liftingLineInterface2/src/liftingLineInput.cpp
new file mode 100644
index 00000000..1db55b58
--- /dev/null
+++ b/liftingLineInterface2/src/liftingLineInput.cpp
@@ -0,0 +1,308 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "liftingLineInterface2/liftingLineInput.h"
+#include <runtimeInfo/runtimeInfo.h>
+#include <moduleBasics/runtimeIO.h>
+#include <standardFiles/functions.h>
+#include <unitConversion/constants.h>
+#include <aircraftGeometry2/airfoil_surface.h>
+#include <aircraftGeometry2/processing/measure.h>
+
+liftingLineInput::liftingLineInput(const liftingLineSettings &myLLsettings, std::string const& IoDir)
+    :
+    machNumber(NAN),
+    myLLsettings(myLLsettings),
+    ioDir(IoDir) {
+    // ctor
+}
+
+void liftingLineInput::createLiftingLineInput(const std::vector<geom2::MultisectionSurface<geom2::AirfoilSection>>& liftingSurfaces,
+                                              const geom2::MultisectionSurface<geom2::PolygonSection>& theFuselage,
+                                              const double& aMachNumber, const double& aReynoldsnumber, const double& refArea, const Point& aCoG) {
+    this->machNumber = aMachNumber;
+    // LILIfilename and machNumber_str
+    this->initializeLiftingLine(aMachNumber);
+    // LILIgeometry
+    for (unsigned int liftingSurfaceID(0); liftingSurfaceID < liftingSurfaces.size(); liftingSurfaceID++) {
+        this->theLILIWingGeometries.push_back(liftingLineWing());
+        // Initialize struct liftingLinePanels to be used in liftingLineWingGeometry::setPanelDistribution
+        this->theLILIWingGeometries.back().theInputPanelDistribution = this->setInputPanelDistribution();
+        this->theLILIWingGeometries.back().generateLILIgeometry(liftingSurfaces.at(liftingSurfaceID), theFuselage, myLLsettings.reductionFactorHTP, myLLsettings.untwistFslgSeg);
+    }
+    this->checkLILIinput();
+    // Write LILI input file .inp
+    double halfSpan = fabs(liftingSurfaces.at(0).sections.front().origin.z() - liftingSurfaces.at(0).sections.back().origin.z());
+    this->writeLILIinputFile(refArea, geom2::measure::span(liftingSurfaces.at(0)), geom2::measure::mean_aerodynamic_chord(liftingSurfaces.at(0)), aCoG,
+                            liftingSurfaces.size(), myLLsettings.Polar, aReynoldsnumber);
+}
+
+void liftingLineInput::initializeLiftingLine(const double& aMachNumber) {
+    if (fabs(aMachNumber - 0.) < ACCURACY_LOW) {  // Incompressible
+        this->machNumber_str = "0.00";
+        this->LILIfilename = this->setLILIfilename(true);
+    } else {  // Compressible
+        this->machNumber_str = num2Str(aMachNumber);
+        this->LILIfilename = this->setLILIfilename(false);
+    }
+    this->LILIfilepath = this->setLILIfilepath(this->LILIfilename);
+    this->LILIinputFilepath = this->LILIfilepath + ".inp";
+}
+
+std::string liftingLineInput::setLILIfilename(bool isIncompressible) {
+    std::string liliFilename(myLLsettings.programShortName);
+    if (isIncompressible) {
+        liliFilename += "_inc";
+    } else {
+        liliFilename += "_M" + replaceAll(this->machNumber_str, ".", "");
+    }
+    liliFilename += "_LL";
+    return liliFilename;
+}
+
+std::string liftingLineInput::setLILIfilepath(const std::string& liliFilename) {
+    return (this->ioDir + liliFilename);
+}
+
+liftingLineWing::liftingLinePanels liftingLineInput::setInputPanelDistribution() {
+    liftingLineWing::liftingLinePanels theInputPanelDistribution;
+    theInputPanelDistribution.numberOfChordwisePanels = myLLsettings.numbChordwisePanels;
+    theInputPanelDistribution.numberOfMinimumSpanwisePanelsPerSegment = myLLsettings.minSpanPanelsPerSegment;
+    theInputPanelDistribution.numberOfAdditionalSpanwisePanels = myLLsettings.numbAddSpanwisePanels;
+    theInputPanelDistribution.numberOfMinimumSpanwisePanelsForTipSegment = myLLsettings.minValueTip;
+    return theInputPanelDistribution;
+}
+
+void liftingLineInput::checkLILIinput() {
+    unsigned int totalNumberPanel(0);
+    for (unsigned int i = 0; i < this->theLILIWingGeometries.size(); i++) {
+        totalNumberPanel = totalNumberPanel + this->theLILIWingGeometries.at(i).N_PW_Chord * this->theLILIWingGeometries.at(i).N_PW_Span;
+    }
+    myRuntimeInfo->out << "-> Total number of panels: " << totalNumberPanel << std::endl;
+    if (totalNumberPanel > 3000) {
+        myRuntimeInfo->err << "Maximum of 3000 panel allowed in total. Current total panel number = " << totalNumberPanel << ". Abort program!" << std::endl;
+        exit(1);
+    }
+}
+
+void liftingLineInput::writeLILIinputFile(const double& wingReferenceArea, const double& wingReferenceSpan, const double& wingMAC, const Point& momentReferencePoint,
+                                          const uint16_t& numberLiftingSurfaces, const liftingLineSettings::polarConfig& anInputPolar, const double& aReynoldsNumber,
+                                          const uint16_t& numberOfPropellers) {
+    myRuntimeInfo->out << "Write LILI Input file " << this->LILIfilename << ".inp ...";
+    std::ofstream LILIinput;
+    // Open and write
+    LILIinput.open(this->LILIinputFilepath.c_str());
+    if (!LILIinput) {
+        myRuntimeInfo->err << "LIFTING_LINE input file (" << this->LILIfilename << ".inp) could not be opened!" << std::endl;
+        exit(1);
+    } else {
+        int it2(1), N_PROPELLERS(numberOfPropellers);
+        myRuntimeInfo->out << "(" << this->LILIfilename << ".inp)" << std::endl;
+        /** Header of the liftingLine input file **/
+        LILIinput << "|======================================================================================================================================|" << std::endl;
+        LILIinput << " LIFTING_LINE INPUTFILE " << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << " VERSION V" << myLLsettings.LL_version << " " << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|**************************************************************************************************************************************|" << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|                                                             NAME_OF_DATASET                                                          |" << std::endl;
+        LILIinput << " LIFTING_LINE V" << myLLsettings.LL_version << ", " << ioDir << " " << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|   SYMMETRY   | GEO_SCALING  |  TWIST_DISTR | GEO_TWIST | QSI_STDY_ROT | N_PROPELLERS | N_ADD_LINES  |   XML_DATA   |                             |"
+                  << std::endl;
+        // SYMMETRY
+        LILIinput << "              1";
+        // GEO_SCALING
+        LILIinput << "       " << std::fixed << myLLsettings.spanForScale;
+        // TWIST_DISTR
+        LILIinput << "              " << int(myLLsettings.twistDistrType);
+        // GEO_TWIST (liftingLine Version 3.0)
+        LILIinput << "              1";
+        // QSI_STDY_ROT
+        LILIinput << "              0";
+        // N_PROPELLERS
+        LILIinput << "              " << N_PROPELLERS;
+        // N_ADD_LINES
+        LILIinput << "              0";
+        // XML_DATA
+        LILIinput << "              1" << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|   REF_AREA   |   REF_SPAN   | REF_LEN_CMX  | REF_LEN_CMY  | REF_LEN_CMZ  |  MOM_REF_X   |  MOM_REF_Y   |  MOM_REF_Z   |              |" << std::endl;
+        // REF_AREA
+        if (myLLsettings.referenceArea != 0) {
+            LILIinput << "       " << std::fixed << myLLsettings.referenceArea;
+        } else {
+            LILIinput << "       " << std::fixed << wingReferenceArea;
+        }
+        // REF_SPAN
+        if (myLLsettings.referenceSpan != 0) {
+            LILIinput << "       " << std::fixed << myLLsettings.referenceSpan;
+        } else {
+            LILIinput << "       " << std::fixed << wingReferenceSpan;
+        }
+        // REF_LEN_CMX
+        LILIinput << "        0.00";
+        // REF_LEN_CMY
+        LILIinput << "     " << std::fixed << wingMAC;
+        // REF_LEN_CMZ
+        LILIinput << "              0";
+        // MOM_REF_X
+        LILIinput << "          " << std::fixed << momentReferencePoint.xCoordinate;
+        // MOM_REF_Y
+        LILIinput << "              " << std::fixed << momentReferencePoint.yCoordinate;
+        // MOM_REF_Z
+        LILIinput << "          " << std::fixed << momentReferencePoint.zCoordinate << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|   N_WINGS   |" << std::endl;
+        LILIinput << "            " << numberLiftingSurfaces << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|   N_PW_SPAN  |  N_PW_CHORD  |                                                                                                        |" << std::endl;
+        for (unsigned int currentLiftingSurface(0); currentLiftingSurface < numberLiftingSurfaces; currentLiftingSurface++) {
+            LILIinput << "             " << this->theLILIWingGeometries.at(currentLiftingSurface).numberOfWingSegments << "              " << this->theLILIWingGeometries.at(
+                          currentLiftingSurface).N_PW_Chord << std::endl;
+        }
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|**************************************************************************************************************************************|" << std::endl;
+        /** Block 3: Variation Data **/
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|   N_ALPHA    |    ALPHA     |    ALPHA     |    ALPHA     |    ALPHA     |    ALPHA     |    ALPHA     |    ALPHA     |      ...      " << std::endl;
+        // N_ALPHA
+        LILIinput << "              " << anInputPolar.numberAoA;
+        // ALPHAs
+        for (int n(0); n <= anInputPolar.numberAoA - 1; n++) {
+            LILIinput << "      " << anInputPolar.AoA.at(n);
+        }
+        LILIinput << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "| N_TARGET_CFZ |  TARGET_CFZ  |  TARGET_CFZ  |  TARGET_CFZ  |  TARGET_CFZ  |  TARGET_CFZ  |  TARGET_CFZ  |  TARGET_CFZ  |      ...      " << std::endl;
+        // N_TARGET_CFZ
+        LILIinput << "              " << anInputPolar.numberCL;
+        // TARGET_CFZs
+        for (int n(0); n <= anInputPolar.numberCL - 1; n++) {
+            LILIinput << "            " << anInputPolar.liftCoefficient.at(n);
+        }
+        LILIinput << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|  COMP_MA_NO  |     BETA     |                                                                                                        |" << std::endl;
+        // COMP_MA_NO
+        LILIinput << "           " << this->machNumber_str;
+        // BETA
+        LILIinput << "       " << std::fixed << anInputPolar.beta << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|**************************************************************************************************************************************|" << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        /* Block 4: Propeller data */
+        if (N_PROPELLERS > 1) {
+            LILIinput << "|    X_PROP    |    Y_PROP    |    Z_PROP    |    D_PROP    |     TILT     |      TOE     |   ROTATION   |    N_PHI     |    N_RAD     |" << std::endl;
+            LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+            LILIinput << "|  PROP_NUMBER |     PHI      |      r/R     |   dVAX/V0    |   dVTN/V0    |                                                           |" << std::endl;
+            for (int i(1); i <= N_PROPELLERS; i++) {
+                for (int k(1); k <= 1; k++) { /* Adapt condition for k!!! */
+                    // PROP_NUMBER
+                    LILIinput << i;
+                    // LILIinput << PHI;
+                    // LILIinput << r/R;
+                    // LILIinput << dVAX/V0;
+                    // LILIinput << dVTN/V0 << std::endl;
+                }
+            }
+            LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+            LILIinput << "| SLIP_DEF_VER | SLIP_DEF_HOR |    SDP_3     |    SDP_4     |    SDP_5     |    SDP_6     |    SDP_7     |    SDP_8     |              |" << std::endl;
+            // LILIinput << SLIP_DEF_VER << std::endl;
+            // LILIinput << SLIP_DEF_HOR << std::endl;
+            // SDP_3 - SDP8 describe Slipstream development parameters (not activated by the LiLi developers yet)
+        }
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        /**Block 6: XML-Data**/
+        LILIinput << "|**************************************************************************************************************************************|" << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|  XML_MA_NO   |   XML_RE_NO  |                                                                                                        |" << std::endl;
+        // XML_MA_NO
+        LILIinput << "           " << this->machNumber_str;
+        // XML_RE_NO
+        LILIinput << "    " << aReynoldsNumber << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        // This for-loop could optionally be improved so that the correct airfoils are entered into the input file.
+        for (unsigned int j(1); j <= numberLiftingSurfaces; j++) {
+            LILIinput << "|  N_AIRFOILS  |                                                                                                                       |" << std::endl;
+            LILIinput << "              1" << std::endl;
+            LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+            LILIinput << "|                                                                 AIRFOIL                                                              |" << std::endl;
+            LILIinput << " NACA0000" << std::endl;
+            LILIinput << "| N_ETA_COORD  |   ETA_COORD  |   ETA_COORD  |   ETA_COORD  |   ETA_COORD  |   ETA_COORD  |   ETA_COORD  |   ETA_COORD  |      ...      " << std::endl;
+            LILIinput << "              1             0.                                                                                                          " << std::endl;
+            LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        }
+        LILIinput << "|**************************************************************************************************************************************|" << std::endl;
+        /**Block 7: Geometrical Data**/
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        LILIinput << "|   INDEX_PW   |   N_PANELS   |  PANEL_DISTR |FACT_CL_ALPHA | FUSELAGE_INF | ELLIPT_CHORD |                                            |" << std::endl;
+        LILIinput << "|    X_PW_1    |    Y_PW_1    |    Z_PW_1    |  CHORD_PW_1  |  TWIST_PW_1  | COUPL_COND_1 | FORKING_NO_1 |                             |" << std::endl;
+        LILIinput << "|    X_PW_2    |    Y_PW_2    |    Z_PW_2    |  CHORD_PW_2  |  TWIST_PW_2  | COUPL_COND_2 | FORKING_NO_2 |                             |" << std::endl;
+        LILIinput << "|--------------------------------------------------------------------------------------------------------------------------------------|" << std::endl;
+        for (unsigned int currentLiftingSurface(0); currentLiftingSurface < numberLiftingSurfaces; currentLiftingSurface++) {
+            int it = 0;
+            for (unsigned int i = 0; i <= this->theLILIWingGeometries.at(currentLiftingSurface).N_PW_Chord - 1; i++) {
+                for (int j = this->theLILIWingGeometries.at(currentLiftingSurface).numberOfWingSegments - 1; j >= 0; j--) {
+                    // INDEX_PW
+                    LILIinput << "             " << it2;
+                    // N_PANELS
+                    LILIinput << "              " << this->theLILIWingGeometries.at(currentLiftingSurface).N_P.at(j);
+                    // PANEL_DISTR
+                    if (j == this->theLILIWingGeometries.at(currentLiftingSurface).numberOfWingSegments - 1) {
+                        LILIinput << "              1";
+                    } else {
+                        LILIinput << "              0";
+                    }
+                    // FACT_CL_ALPHA LILIinput
+                    LILIinput << "              1";
+                    // FUSELAGE_INF
+                    LILIinput << "              0";
+                    // ELLIPT_CHORD
+                    LILIinput << "              0" <<  std::endl;
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelRight.panelReferencePoint.at(it).xCoordinate;
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelRight.panelReferencePoint.at(it).yCoordinate;
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelRight.panelReferencePoint.at(it).zCoordinate;
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelRight.absoluteChord_PW.at(it);
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelRight.TWIST.at(it);
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelRight.COUPLING_CONDITIONS.at(it);
+                    // FORKING_NO
+                    LILIinput << "             " << "0" <<  std::endl;
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelLeft.panelReferencePoint.at(it).xCoordinate;
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelLeft.panelReferencePoint.at(it).yCoordinate;
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelLeft.panelReferencePoint.at(it).zCoordinate;
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelLeft.absoluteChord_PW.at(it);
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelLeft.TWIST.at(it);
+                    LILIinput << "       " << this->theLILIWingGeometries.at(currentLiftingSurface).panelLeft.COUPLING_CONDITIONS.at(it);
+                    // FORKING_NO
+                    LILIinput << "             0" << std::endl;
+                    it++;
+                    it2++;
+                }
+//                    it++;
+            }
+        }
+        LILIinput << "|=====================================================END OF LIFTING_LINE INPUTFILE====================================================|" << std::endl;
+    }
+    LILIinput.close();
+}
diff --git a/liftingLineInterface2/src/liftingLineInterface.cpp b/liftingLineInterface2/src/liftingLineInterface.cpp
new file mode 100644
index 00000000..a6a96dc4
--- /dev/null
+++ b/liftingLineInterface2/src/liftingLineInterface.cpp
@@ -0,0 +1,112 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "liftingLineInterface2/liftingLineInterface.h"
+#include <runtimeInfo/runtimeInfo.h>
+#include <moduleBasics/runtimeIO.h>
+#include <standardFiles/functions.h>
+#include <aircraftGeometry2/airfoil_surface.h>
+#include "liftingLineInterface2/liftingLineInput.h"
+#include "liftingLineInterface2/liftingLineOutput.h"
+
+
+liftingLineInterface::liftingLineInterface(const std::string& path2Conf, const std::string& IoDir)
+    :
+    myLLsettings(liftingLineSettings(path2Conf)),
+    LILI_bkp_dir_created(false),
+    ioDir(IoDir) {
+    this->initializePointer();
+}
+
+void liftingLineInterface::initializePointer() {
+    this->theLiftingLineInputPt = new liftingLineInput(this->myLLsettings, this->ioDir);
+    this->theLLOutputPt = new liftingLineOutput(*(this->theLiftingLineInputPt));
+}
+
+void liftingLineInterface::initializeLiftingLine(const std::vector<geom2::MultisectionSurface<geom2::AirfoilSection>>& liftingSurfaces,
+                                                 const geom2::MultisectionSurface<geom2::PolygonSection>& theFuselage,
+                                                 const double& aMachNumber, const double& aReynoldsnumber, const double& refArea, const Point& aCoG) {
+    this->theLiftingLineInputPt->createLiftingLineInput(liftingSurfaces, theFuselage, aMachNumber, aReynoldsnumber, refArea, aCoG);
+    // theLLOutputPt needs to be re-initialized to save results for access from external tool
+    this->theLLOutputPt = new liftingLineOutput(*theLiftingLineInputPt);
+    // Backup of old LiLi Folder if numerical error occurs
+    this->LILI_src_dir = this->ioDir + theLiftingLineInputPt->LILIfilename + ".lili.V" + myLLsettings.LL_version;
+    this->LILI_bkp_dir = this->LILI_src_dir + "_bkp";
+    LILI_bkp_dir_created = this->createBackupDir(this->LILI_src_dir, this->LILI_bkp_dir);
+}
+
+bool liftingLineInterface::createBackupDir(const std::string& aSourceDir, const std::string& aBackupDir) {
+    bool bkpDirCreated(false);
+    if (fileExists(aSourceDir) && this->myLLsettings.error_handling == 1) {
+        if (fileExists(aBackupDir)) {
+            deleteDirectory(getFullPathString(aBackupDir), false);
+        }
+        myRuntimeInfo->out << "Create backup directory in ioDir: " << theLiftingLineInputPt->LILIfilename << ".lili.V" << this->myLLsettings.LL_version << "_bkp" << std::endl;
+        copyFiles(aSourceDir, aBackupDir);
+        bkpDirCreated = true;
+    } else {
+        if (!fileExists(aSourceDir) && this->myLLsettings.error_handling == 1) {
+            myRuntimeInfo->out << "No backup directory created since no aero-data available in " << aSourceDir << "!" << std::endl;
+        }
+        bkpDirCreated = false;
+    }
+    return bkpDirCreated;
+}
+
+void liftingLineInterface::executeLiftingLine() { // cppcheck-suppress unusedFunction
+    myRuntimeInfo->out << "Start LiftingLine (" << this->theLiftingLineInputPt->LILIfilename << ") ... ";
+    if (this->myLLsettings.consoleOut) {
+        myRuntimeInfo->out << std::endl;
+    }
+    std::string executionCommand(this->setExecutionCommand());
+    #ifndef _WIN32
+        handleChildProcess("chmod +x " + this->myLLsettings.LL_Exe_path, "");
+    #endif // _WIN32
+    myRuntimeInfo->debug << "Execution Command: " << executionCommand << std::endl;
+    handleChildProcess(executionCommand, "", this->myLLsettings.maxRuntime);
+    if (!this->myLLsettings.consoleOut) {
+        myRuntimeInfo->out << "DONE" << std::endl;
+    } else {
+        myRuntimeInfo->out << "... LiftingLine succeeded." << std::endl;
+    }
+}
+
+std::string liftingLineInterface::setExecutionCommand() {
+    #ifdef _WIN32
+        std::string execCommand = this->myLLsettings.LL_Exe_path
+                              + " -om:delete -pj:" + replaceAll(this->theLiftingLineInputPt->LILIinputFilepath, "/", "\\")
+                              + " -op:" + replaceAll(this->ioDir, "/", "\\") + " -xo:y";
+    #else
+        std::string execCommand = this->myLLsettings.LL_Exe_path
+                              + " -om:delete -pj:" + this->theLiftingLineInputPt->LILIinputFilepath
+                              + " -op:" + this->ioDir + " -xo:y";
+    #endif
+    if (this->myLLsettings.tecplotOut == true) {
+        execCommand += " -tp:y";
+    } else {
+        execCommand += " -tp:n";
+    }
+    if (!this->myLLsettings.consoleOut) {
+        execCommand += " -q";
+    }
+    return execCommand;
+}
diff --git a/liftingLineInterface2/src/liftingLineOutput.cpp b/liftingLineInterface2/src/liftingLineOutput.cpp
new file mode 100644
index 00000000..f91be9a4
--- /dev/null
+++ b/liftingLineInterface2/src/liftingLineOutput.cpp
@@ -0,0 +1,270 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "liftingLineInterface2/liftingLineOutput.h"
+#include <aixml/node.h>
+#include <runtimeInfo/runtimeInfo.h>
+#include <standardFiles/functions.h>
+#include <algorithm>
+
+liftingLineOutput::liftingLineOutput(const liftingLineInput &myLLinput)
+    :
+    myLLinput(myLLinput) {
+    // ctor
+}
+
+void liftingLineOutput::readLiftingLineResults(int numberLiftingSurfaces) {  // cppcheck-suppress unusedFunction
+    myRuntimeInfo->out << "Read LiftingLine results (" << myLLinput.LILIfilename << ") ..." << std::endl;
+    std::string polarFile;
+    double refAreaTotal(0.), refLengthTotal(0.);
+    std::vector<double> refAreaWings, refLengthWings, alpha_temp;
+    int numbResults(0);
+    polarFile = myLLinput.ioDir + myLLinput.LILIfilename + ".lili.V" + this->myLLinput.myLLsettings.LL_version + FILESEPERATOR + "export" + FILESEPERATOR +
+                myLLinput.LILIfilename + ".xml";
+    const node& LL_XML_tmp = aixml::openDocument(polarFile);
+    /* Initialize LiftingLine polars */
+    for (int j = 0; j <= numberLiftingSurfaces - 1; j++) {
+        llPolarWings.push_back(liftingLinePolarWings());
+        std::stringstream temp1;
+        temp1.width(6);
+        temp1 << j + 1;
+        std::string str_id = temp1.str();
+        refAreaWings.push_back(LL_XML_tmp.at("lifting_line-exchange-file/wing_data/wing@number=" + str_id + "/geometry_parameters/reference_area"));
+        refLengthWings.push_back(LL_XML_tmp.at("lifting_line-exchange-file/wing_data/wing@number=" + str_id + "/geometry_parameters/reference_length_cmy"));
+        llPolarWings.back().numberOfSegments = LL_XML_tmp.at("lifting_line-exchange-file/wing_data/wing@number=" + str_id + "/segment_data").getIntAttrib("count");
+        for (int k(0); k < llPolarWings.back().numberOfSegments; k++) {
+            std::stringstream seg_ID;
+            seg_ID.width(6);
+            seg_ID << k + 1;
+            llPolarWings.back().yPositions.push_back(LL_XML_tmp.at("lifting_line-exchange-file/wing_data/wing@number=" + str_id
+                    + "/segment_data/segment@number=" + seg_ID.str() + "/geometry_parameters/moment_reference_point_y"));
+        }
+    }
+    refAreaTotal    = LL_XML_tmp.at("lifting_line-exchange-file/global_data/geometry_parameters/reference_area");
+    refLengthTotal  = LL_XML_tmp.at("lifting_line-exchange-file/global_data/geometry_parameters/reference_length_cmy");
+    for (int i(0); i < this->myLLinput.myLLsettings.Polar.numberAoA + this->myLLinput.myLLsettings.Polar.numberCL; i++) {
+        llPolar.push_back(liftingLinePolar());  // Total aircraft
+        for (int j(0); j < numberLiftingSurfaces; j++) {
+            llPolarWings.at(j).llPolarW.push_back(liftingLinePolarWithSegments());  // With reference to liftingSurface
+            for (int k(0); k < llPolarWings.at(j).numberOfSegments; k++) {
+                llPolarWings.at(j).llPolarW.back().wingSegments.push_back(liftingLineSegment());
+            }
+        }
+    }
+    numbResults = LL_XML_tmp.at("lifting_line-exchange-file/result_data").getIntAttrib("count");  // Equals number of alphas/CLs
+    double polarP[4][numbResults];
+    // Reading and assigning the LiftingLine results (aircraft)
+    for (int i = 0; i <= numbResults - 1; i++) {  // Loop over AoAs
+        std::stringstream temp1;
+        temp1.width(6);
+        temp1 << i + 1;
+        std::string str_id = temp1.str();
+        polarP[0][i] = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id + "/angle_of_attack");
+        // For global aircraft the coefficient in z-wise direction is used.
+        polarP[1][i] = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id + "/cfz");
+        polarP[2][i] = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id + "/cfx_from_cdi");
+        polarP[3][i] = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id + "/cmy");
+        if (std::isnan(polarP[1][i]) || std::isnan(polarP[2][i]) || std::isnan(polarP[3][i])) {
+            myRuntimeInfo->err << "Invalid results in file " << polarFile << "!" << std::endl;
+            myRuntimeInfo->err << "AoA=" << polarP[0][i] << ", Cfz=" << polarP[1][i] << ", Cfx=" << polarP[2][i] << ", Cmy=" << polarP[3][i] << ". Abort program!" << std::endl;
+            exit(1);
+        }
+        alpha_temp.push_back(polarP[0][i]);
+    }
+    // Sort polar points by angles of attack
+    sort(alpha_temp.begin(), alpha_temp.end());
+    for (int i = 0; i <= numbResults - 1; i++) {
+        for (int j = 0; j <= numbResults - 1; j++) {
+            if (polarP[0][j] == alpha_temp.at(i)) {
+                llPolar.at(i).AoA = polarP[0][j];
+                llPolar.at(i).CL = polarP[1][j];
+                llPolar.at(i).CDind = polarP[2][j];
+                llPolar.at(i).CM = polarP[3][j];
+                break;
+            }
+        }
+    }
+    alpha_temp.clear();
+    // Reading and assigning the LiftingLine results (for each wing individually)
+    for (size_t n = 0; n <= llPolarWings.size() - 1; n++) {
+        for (int i = 0; i <= numbResults - 1; i++) {  // Loop over all AoAs
+            std::stringstream temp1;
+            std::stringstream temp2;
+            temp1.width(6);
+            temp2.width(6);
+            temp1 << i + 1;
+            temp2 << n + 1;
+            std::string str_id = temp1.str();  // Refers to alpha
+            std::string str_id2 = temp2.str();  // Refers to wingNumber
+            polarP[0][i] = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id + "/angle_of_attack");
+            // For wings (global) the coefficient in z-wise direction is used.
+            polarP[1][i] = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id + "/wing@number=" + str_id2 + "/cfz");
+            polarP[2][i] = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id + "/wing@number=" + str_id2 + "/cfx_from_cdi");
+            polarP[3][i] = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id + "/wing@number=" + str_id2 + "/cmy");
+            for (int k(0); k < llPolarWings.at(n).numberOfSegments; k++) {  // Loop over all LiftingLine segments
+                std::stringstream temp3;
+                temp3.width(6);
+                temp3 << k + 1;
+                std::string str_id3 = temp3.str();  // Refers to segmentNumber
+                llPolarWings.at(n).llPolarW.at(i).wingSegments.at(k).yPos = llPolarWings.at(n).yPositions.at(k);
+                llPolarWings.at(n).llPolarW.at(i).wingSegments.at(k).llPolarSeg = new liftingLinePolar();
+                llPolarWings.at(n).llPolarW.at(i).wingSegments.at(k).llPolarSeg->AoA = polarP[0][i];
+                // In contrast to global CL, for segment CL the coefficient perpendicular to the surface is used to take dihedral into account!
+                llPolarWings.at(n).llPolarW.at(i).wingSegments.at(k).llPolarSeg->CL    = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id +
+                                                                                                       "/wing@number=" + str_id2 + "/segment@number=" + str_id3 + "/cfnormal")
+                                                                                         * refAreaWings.at(n) / refAreaTotal;
+                // Get segment area
+                double segmentArea = LL_XML_tmp.at("lifting_line-exchange-file/wing_data/wing@number=" + str_id2 + "/segment_data/segment@number=" + str_id3 +
+                                                   "/geometry_parameters/reference_area");
+                // Get CDind of segment and account for the segments area. Attention: This is only for one wing side.
+                llPolarWings.at(n).llPolarW.at(i).wingSegments.at(k).llPolarSeg->CDind = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id +
+                                                                                                       "/wing@number=" + str_id2 + "/segment@number=" + str_id3 + "/cfx_from_cdi")
+                                                                                         * segmentArea / refAreaTotal;
+                llPolarWings.at(n).llPolarW.at(i).wingSegments.at(k).llPolarSeg->CM    = LL_XML_tmp.at("lifting_line-exchange-file/result_data/result@number=" + str_id +
+                                                                                                       "/wing@number=" + str_id2 + "/segment@number=" + str_id3 + "/cmy");
+            }
+            alpha_temp.push_back(polarP[0][i]);
+        }
+        /* Sort polar points by angles of attack */
+        sort(alpha_temp.begin(), alpha_temp.end());
+        for (int i = 0; i <= numbResults - 1; i++) {
+            for (int j = 0; j <= numbResults - 1; j++) {
+                if (polarP[0][j] == alpha_temp.at(i)) {
+                    llPolarWings.at(n).llPolarW.at(i).AoA = polarP[0][j];
+                    llPolarWings.at(n).llPolarW.at(i).CL = polarP[1][j] * refAreaWings.at(n) / refAreaTotal;
+                    llPolarWings.at(n).llPolarW.at(i).CDind = polarP[2][j] * refAreaWings.at(n) / refAreaTotal;
+                    llPolarWings.at(n).llPolarW.at(i).CM = polarP[3][j] * refAreaWings.at(n) / refAreaTotal * refLengthWings.at(n) / refLengthTotal;
+                    break;
+                }
+            }
+        }
+        alpha_temp.clear();
+    }
+    aixml::closeDocument(LL_XML_tmp);
+}
+
+void liftingLineOutput::getAnalyticalPolar() {  // cppcheck-suppress unusedFunction
+    std::vector<double> alpha, liftCoeff, indDragCoeff, momentCoeff, liftRegrCoeff, momRegrCoeff, dragRegrCoeff;
+    for (size_t i = 0; i <= llPolar.size() - 1; i++) {
+        alpha.push_back(llPolar.at(i).AoA);
+        liftCoeff.push_back(llPolar.at(i).CL);
+        indDragCoeff.push_back(llPolar.at(i).CDind);
+        momentCoeff.push_back(llPolar.at(i).CM);
+    }
+    /* Determination of analytical lift/induced drag polars */
+    // Linear fit for CL-Alpha-Polar
+    liftRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(alpha, liftCoeff, 1);
+    this->dCLtodAoA = liftRegrCoeff.at(1);
+    this->CLatAoA0 = liftRegrCoeff.at(0);
+    liftRegrCoeff.clear();
+    // Linear fit for CM-Alpha-Polar
+    momRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(alpha, momentCoeff, 1);
+    this->dCMtodAoA = momRegrCoeff.at(1);
+    this->CMatAoA0  = momRegrCoeff.at(0);
+    momRegrCoeff.clear();
+    // Linear fit for CM-CL-Polar
+    momRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(liftCoeff, momentCoeff, 1);
+    this->dCMtodCL = momRegrCoeff.at(1);
+    this->CMatCL0  = momRegrCoeff.at(0);
+    momRegrCoeff.clear();
+    /* Quadratic fit for CD-ind-CL-Polar.
+     * Starting point: CDind = a + b*CL + c*CL^2
+     * CDmin = dCDind/dCL = 0
+     */
+    dragRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(liftCoeff, indDragCoeff, 2);
+    this->CDmin     = dragRegrCoeff.at(0) - 0.25 * pow(dragRegrCoeff.at(1), 2) / dragRegrCoeff.at(2);
+    this->kFactor   = dragRegrCoeff.at(2);
+    this->CLatCDmin = -0.5 * dragRegrCoeff.at(1) / dragRegrCoeff.at(2);
+    dragRegrCoeff.clear();
+}
+
+// cppcheck-suppress unusedFunction
+void liftingLineOutput::getAnalyticalPolarLiftingSurface(const liftingLinePolars::liftingLinePolarWings& aLiftingSurfacePolar, const uint16_t& llPolarSize) {
+    std::vector<double> alpha, liftCoeff, indDragCoeff, momentCoeff, liftRegrCoeff, momRegrCoeff, dragRegrCoeff;
+    for (int i(0); i <= llPolarSize - 1; i++) {
+        alpha.push_back(aLiftingSurfacePolar.llPolarW.at(i).AoA);
+        liftCoeff.push_back(aLiftingSurfacePolar.llPolarW.at(i).CL);
+        indDragCoeff.push_back(aLiftingSurfacePolar.llPolarW.at(i).CDind);
+        momentCoeff.push_back(aLiftingSurfacePolar.llPolarW.at(i).CM);
+    }
+    /* Determination of analytical lift/induced drag polars */
+    // Linear fit for CL-Alpha-Polar
+    liftRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(alpha, liftCoeff, 1);
+    this->liftingSurface_dCLtodAoA.push_back(liftRegrCoeff.at(1));
+    this->liftingSurface_CLatAoA0.push_back(liftRegrCoeff.at(0));
+    liftRegrCoeff.clear();
+    // Linear fit for CM-Alpha-Polar
+    momRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(alpha, momentCoeff, 1);
+    this->liftingSurface_dCMtodAoA.push_back(momRegrCoeff.at(1));
+    this->liftingSurface_CMatAoA0.push_back(momRegrCoeff.at(0));
+    momRegrCoeff.clear();
+    // Linear fit for CM-CL-Polar
+    momRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(liftCoeff, momentCoeff, 1);
+    this->liftingSurface_dCMtodCL.push_back(momRegrCoeff.at(1));
+    this->liftingSurface_CMatCL0.push_back(momRegrCoeff.at(0));
+    momRegrCoeff.clear();
+    /* Quadratic fit for CD-ind-CL-Polar.
+     * Starting point: CDind = a + b*CL + c*CL^2
+     * CDmin = dCDind/dCL = 0
+     */
+    dragRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(liftCoeff, indDragCoeff, 2);
+    this->liftingSurface_CDmin.push_back(dragRegrCoeff.at(0) - 0.25 * pow(dragRegrCoeff.at(1), 2) / dragRegrCoeff.at(2));
+    this->liftingSurface_kFactor.push_back(dragRegrCoeff.at(2));
+    this->liftingSurface_CLatCDmin.push_back(-0.5 * dragRegrCoeff.at(1) / dragRegrCoeff.at(2));
+    dragRegrCoeff.clear();
+}
+
+// cppcheck-suppress unusedFunction
+void liftingLineOutput::getAnalyticalPolarLiftingSurfacePart(const liftingLinePolars::liftingLinePolarWings& aLiftingSurfacePolar, const uint16_t& llPolarSize) {
+    std::vector<double> alpha, liftCoeff, indDragCoeff, momentCoeff, liftRegrCoeff, momRegrCoeff, dragRegrCoeff;
+    for (int i(0); i <= llPolarSize - 1; i++) {
+        alpha.push_back(aLiftingSurfacePolar.llPolarW.at(i).AoA);
+        liftCoeff.push_back(aLiftingSurfacePolar.llPolarW.at(i).CL);
+        indDragCoeff.push_back(aLiftingSurfacePolar.llPolarW.at(i).CDind);
+        momentCoeff.push_back(aLiftingSurfacePolar.llPolarW.at(i).CM);
+    }
+    /* Determination of analytical lift/induced drag polars */
+    // Linear fit for CL-Alpha-Polar
+    liftRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(alpha, liftCoeff, 1);
+    this->liftingSurfacePart_dCLtodAoA = liftRegrCoeff.at(1);
+    this->liftingSurfacePart_CLatAoA0 = liftRegrCoeff.at(0);
+    liftRegrCoeff.clear();
+    // Linear fit for CM-Alpha-Polar
+    momRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(alpha, momentCoeff, 1);
+    this->liftingSurfacePart_dCMtodAoA = momRegrCoeff.at(1);
+    this->liftingSurfacePart_CMatAoA0 = momRegrCoeff.at(0);
+    momRegrCoeff.clear();
+    // Linear fit for CM-CL-Polar
+    momRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(liftCoeff, momentCoeff, 1);
+    this->liftingSurfacePart_dCMtodCL = momRegrCoeff.at(1);
+    this->liftingSurfacePart_CMatCL0 = momRegrCoeff.at(0);
+    momRegrCoeff.clear();
+    /* Quadratic fit for CD-ind-CL-Polar.
+     * Starting point: CDind = a + b*CL + c*CL^2
+     * CDmin = dCDind/dCL = 0
+     */
+    dragRegrCoeff = calcRegressionCoefficientsUsingQRdecomp(liftCoeff, indDragCoeff, 2);
+    this->liftingSurfacePart_CDmin = dragRegrCoeff.at(0) - 0.25 * pow(dragRegrCoeff.at(1), 2) / dragRegrCoeff.at(2);
+    this->liftingSurfacePart_kFactor = dragRegrCoeff.at(2);
+    this->liftingSurfacePart_CLatCDmin = -0.5 * dragRegrCoeff.at(1) / dragRegrCoeff.at(2);
+    dragRegrCoeff.clear();
+}
diff --git a/liftingLineInterface2/src/liftingLinePolar.cpp b/liftingLineInterface2/src/liftingLinePolar.cpp
new file mode 100644
index 00000000..2c3d2c64
--- /dev/null
+++ b/liftingLineInterface2/src/liftingLinePolar.cpp
@@ -0,0 +1,74 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "liftingLineInterface2/liftingLinePolar.h"
+
+liftingLinePolars::liftingLinePolars()
+    :
+    dCLtodAoA(0.),
+    CLatAoA0(0.),
+    dCMtodAoA(0.),
+    CMatAoA0(0.),
+    dCMtodCL(0.),
+    CMatCL0(0.),
+    CDmin(0.),
+    CLatCDmin(0.),
+    kFactor(0.),
+    dCLtodAoA_wf(0.),
+    liftingSurfacePart_dCLtodAoA(0.),
+    liftingSurfacePart_CLatAoA0(0.),
+    liftingSurfacePart_dCMtodAoA(0.),
+    liftingSurfacePart_CMatAoA0(0.),
+    liftingSurfacePart_dCMtodCL(0.),
+    liftingSurfacePart_CMatCL0(0.),
+    liftingSurfacePart_CDmin(0.),
+    liftingSurfacePart_CLatCDmin(0.),
+    liftingSurfacePart_kFactor(0.),
+    liftingSurfacePart_dCLtodAoA_wf(0.) {
+    //ctor
+}
+
+liftingLinePolars::liftingLinePolar::liftingLinePolar()
+    :
+    AoA(0.),
+    CL(0.),
+    CDind(0.),
+    CM(0.) {
+    //ctor
+}
+
+liftingLinePolars::liftingLineSegment::liftingLineSegment()
+    :
+    yPos(0.),
+    llPolarSeg(nullptr) {
+    //ctor
+}
+
+liftingLinePolars::liftingLineSegment::~liftingLineSegment() {
+    //dtor
+}
+
+liftingLinePolars::liftingLinePolarWings::liftingLinePolarWings()
+    :
+    numberOfSegments(0) {
+    //ctor
+}
diff --git a/liftingLineInterface2/src/liftingLineSettings.cpp b/liftingLineInterface2/src/liftingLineSettings.cpp
new file mode 100644
index 00000000..052c4906
--- /dev/null
+++ b/liftingLineInterface2/src/liftingLineSettings.cpp
@@ -0,0 +1,111 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "liftingLineInterface2/liftingLineSettings.h"
+#include <aixml/node.h>
+#include <runtimeInfo/runtimeInfo.h>
+#include <standardFiles/functions.h>
+
+liftingLineSettings::liftingLineSettings(const std::string& path2Conf) {
+    this->getLiftingLineSettings(path2Conf);
+}
+
+liftingLineSettings::polarConfig::polarConfig()
+    :
+    beta(0.),
+    numberAoA(0),
+    AoA(0.),
+    numberCL(0) {
+    //ctor
+}
+
+void liftingLineSettings::getLiftingLineSettings(const std::string& path2Conf) {
+    const node& myLLconfig(aixml::openDocument(path2Conf + "liftingLine_conf.xml"));
+    this->programShortName = std::string(myLLconfig.at("/ConfigFile/LiftingLine/ProgramShortName"));
+    this->LL_version = std::string(myLLconfig.at("/ConfigFile/LiftingLine/LiftingLineVersion"));
+    this->LL_Exe_path = std::string(myLLconfig.at("/ConfigFile/LiftingLine/LiftingLinePath"));
+    this->checkLL_Exe_path();
+    this->consoleOut = myLLconfig.at("/ConfigFile/LiftingLine/LiftingLineConsoleOutput");
+    this->tecplotOut = myLLconfig.at("/ConfigFile/LiftingLine/TecplotOutput");
+    this->error_handling = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/ErrorHandling"), 0, true, 2, true);
+    // Panel settings
+    this->numbChordwisePanels = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/Paneling/ChordwisePanels"), 5, true, 20, true);
+    this->numbAddSpanwisePanels = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/Paneling/SpanwiseAddPanels"), 5, true, 30, true);
+    this->reductionFactorHTP = myLLconfig.at("/ConfigFile/LiftingLine/Paneling/SpanwiseAddPanels").getDoubleAttrib("HTPFactor");
+    if (this->reductionFactorHTP > 1.5 || this->reductionFactorHTP < 0.1) {
+        myRuntimeInfo->err << "Value for reductionFactorHTP must be [0.1:1.5]: " << this->reductionFactorHTP << ". Abort program!" << std::endl;
+        exit(1);
+    }
+    this->minSpanPanelsPerSegment = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/Paneling/MinSpanPanelsPerSegment"), 1, true, 7, true);
+    this->minValueTip = myLLconfig.at("/ConfigFile/LiftingLine/Paneling/MinSpanPanelsPerSegment").getIntAttrib("MinValueTip");
+    if (minValueTip > 7 || minValueTip < 1) {
+        myRuntimeInfo->warn << "Value for minValueTip must be [1:7]: " << minValueTip << std::endl;
+        myRuntimeInfo->warn << "Set minValueTip to value of minSpanPanelsPerSegment = " << minSpanPanelsPerSegment << std::endl;
+        minValueTip = minSpanPanelsPerSegment;
+    }
+    this->twistDistrType = myLLconfig.at("/ConfigFile/LiftingLine/TwistDistrType");
+    this->untwistFslgSeg = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/UntwistFslgSegment"));
+    this->referenceArea = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/ReferenceArea"), 0, true, 1000., true);
+    this->referenceSpan = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/ReferenceSpan"), 0, true, 1000., true);
+    this->spanForScale = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/SpanForScale"), 0, true, 1000., true);
+    this->maxRuntime = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/maxRuntime"), 0, true, 1000., true);
+    /** Polar Specifications **/
+    this->Polar.beta = myLLconfig.at("/ConfigFile/LiftingLine/PolarConfig/Beta");
+    if (fabs(this->Polar.beta) > 15.) {
+        myRuntimeInfo->err << "Sideslip angle is to big. Beta = " << this->Polar.beta << " deg. Maximum angle allowed: 15 deg." << std::endl;
+        exit(1);
+    }
+    /* Angle of attacks */
+    this->Polar.numberAoA = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/PolarConfig/NumbAoAs"), 0, true, 20, true);
+    for (int i(0); i <= this->Polar.numberAoA - 1; i++) {
+        this->Polar.AoA.push_back(myLLconfig.at("/ConfigFile/LiftingLine/PolarConfig/AoA@" + num2Str(i + 1)));
+    }
+    /* Lift coefficients */
+    this->Polar.numberCL = checkBoundaries(myLLconfig.at("/ConfigFile/LiftingLine/PolarConfig/NumbLiftCoefficients"), 0, true, 10, true);
+    for (int i(0); i <= this->Polar.numberCL - 1; i++) {
+        this->Polar.liftCoefficient.push_back(myLLconfig.at("/ConfigFile/LiftingLine/PolarConfig/LiftCoefficient@" + num2Str(i + 1)));
+    }
+    //Check
+    if (this->Polar.numberAoA + this->Polar.numberCL < 3) {
+        myRuntimeInfo->err << "Too few angles of attack or CL values to be calculated!" << std::endl;
+        myRuntimeInfo->err << "AOA: " << this->Polar.numberAoA << std::endl;
+        myRuntimeInfo->err << "CL:  " << this->Polar.numberCL << std::endl;
+        myRuntimeInfo->err << "At least 3 points are required for the interpolation of the quadratic polars. Change settings in liftingLine_conf.xml! Abort program!" << std::endl;
+        exit(1);
+    }
+    aixml::closeDocument(myLLconfig);
+}
+
+void liftingLineSettings::checkLL_Exe_path() {
+    std::transform(this->LL_Exe_path.begin(), this->LL_Exe_path.end(), this->LL_Exe_path.begin(), ::toupper);
+    if (this->LL_Exe_path.compare(std::string("DEFAULT")) == 0) {
+        #ifdef _WIN32
+            this->LL_Exe_path = "LiftingLine" + std::string(FILESEPERATOR) + "LIFTING_LINE_WINDOWS_64BIT.exe";
+        #else
+            this->LL_Exe_path = "LiftingLine" + std::string(FILESEPERATOR) + "LIFTING_LINE_LINUX_64BIT";
+        #endif
+    }
+    if (!fileExists(this->LL_Exe_path)) {
+        myRuntimeInfo->err << "Path " << this->LL_Exe_path << " does not exist. Abort program!" << std::endl;
+        exit(1);
+    }
+}
diff --git a/liftingLineInterface2/src/liftingLineWing.cpp b/liftingLineInterface2/src/liftingLineWing.cpp
new file mode 100644
index 00000000..794f5960
--- /dev/null
+++ b/liftingLineInterface2/src/liftingLineWing.cpp
@@ -0,0 +1,398 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "liftingLineInterface2/liftingLineWing.h"
+#include <runtimeInfo/runtimeInfo.h>
+#include <standardFiles/functions.h>
+#include <unitConversion/constants.h>
+#include <unitConversion/unitConversion.h>
+#include <aircraftGeometry2/airfoil_surface.h>
+#include <aircraftGeometry2/processing/measure.h>
+#include <svl/Vec2.h>
+#include <algorithm>
+#include <numeric>
+
+using std::stringstream;
+
+liftingLineWing::liftingLineWing()
+    :
+    theInputPanelDistribution({0, 0, 0, 0}),
+    N_PW_Chord(0),
+    N_PW_Span(0),
+    totalPanel(0),
+    numberOfWingSegments(0) {
+    // ctor
+}
+
+void liftingLineWing::generateLILIgeometry(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface,
+                                           const geom2::MultisectionSurface<geom2::PolygonSection>& theFuselage,
+                                           const double& reductionFactorHTPpanels, const bool& untwistFslgSeg) {
+    double scaleSpanErrors = 1.0;
+    // Set panel distribution
+    myRuntimeInfo->out << "Set panel distribution for the " << anAircraftLiftingSurface.name << " lifting surface ..." << std::endl;
+    this->setPanelDistribution(anAircraftLiftingSurface, reductionFactorHTPpanels);
+    // Set panel properties (chord, referencePoint, coupling condition for each panel)
+    this->setPanelProperties(anAircraftLiftingSurface, theFuselage, scaleSpanErrors, untwistFslgSeg);
+}
+
+void liftingLineWing::setPanelDistribution(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, const double& reductionFactorHTPpanels) {
+    double halfSpan(fabs(anAircraftLiftingSurface.sections.front().origin.z() - anAircraftLiftingSurface.sections.back().origin.z()));
+    this->N_PW_Chord = this->theInputPanelDistribution.numberOfChordwisePanels;
+    this->N_PW_Span  = this->theInputPanelDistribution.numberOfAdditionalSpanwisePanels;
+    // Panel reduction depending on name not possible with new aircraft geometry!
+    if (anAircraftLiftingSurface.name != "main_wing") {
+        this->N_PW_Span *= reductionFactorHTPpanels;
+    }
+    /** Panel per wing Segment */
+    this->N_P.clear();
+    this->numberOfWingSegments = anAircraftLiftingSurface.sections.size() - 1;
+    // if (anAircraftLiftingSurface.RightWing.at(anAircraftLiftingSurface.RightWing.size() - 2).s_segment == 0.) <- this is weird and fucks up single segment wings!
+    if (accuracyCheck(getTrueCoordinates(anAircraftLiftingSurface, 0).yCoordinate -
+                        getTrueCoordinates(anAircraftLiftingSurface, 1).yCoordinate, 0., ACCURACY_HIGH)) {
+        this->numberOfWingSegments--;
+    }
+    for (unsigned int i(0); i < this->numberOfWingSegments; i++) {
+        int min_value_tmp = this->theInputPanelDistribution.numberOfMinimumSpanwisePanelsPerSegment;
+        /*  Panel reduction depending on name not possible with new aircraft geometry!
+        if (anAircraftLiftingSurface.sections.at(i).name == "Tip") {
+            min_value_tmp = this->theInputPanelDistribution.numberOfMinimumSpanwisePanelsForTipSegment;
+        }
+        */
+        if (fabs(getTrueCoordinates(anAircraftLiftingSurface, i).yCoordinate - getTrueCoordinates(anAircraftLiftingSurface, i + 1).yCoordinate) > 0.) {
+            this->N_P.push_back(std::max(min_value_tmp,
+                                         static_cast<int>(1 + floor(static_cast<double>(this->N_PW_Span) *
+                                        (fabs(getTrueCoordinates(anAircraftLiftingSurface, i).yCoordinate
+                                            - getTrueCoordinates(anAircraftLiftingSurface, i + 1).yCoordinate)) / halfSpan))));
+        }
+    }
+    this->N_PW_Span = accumulate(this->N_P.begin(), this->N_P.end(), 0);
+    this->totalPanel = this->N_PW_Chord * this->N_PW_Span;
+}
+
+void liftingLineWing::setPanelProperties(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface,
+                                         const geom2::MultisectionSurface<geom2::PolygonSection>& theFuselage, 
+                                         const double& myScaleSpanErrors, const bool& untwistFslgSeg) {
+    int theLiftingSurfaceSegmentSize(anAircraftLiftingSurface.sections.size() - 1);
+    // dont throw a range error for 1 segment wings YET !
+    if (theLiftingSurfaceSegmentSize > 1) {
+        // Skip last wing segment if segment span is zero (but why? LN 2024)
+        if (accuracyCheck(getTrueCoordinates(anAircraftLiftingSurface, theLiftingSurfaceSegmentSize).yCoordinate -
+                        getTrueCoordinates(anAircraftLiftingSurface, theLiftingSurfaceSegmentSize - 1).yCoordinate, 0., ACCURACY_HIGH)) {
+            theLiftingSurfaceSegmentSize--;
+        }
+    }
+    for (unsigned int chordwisePanelID(0); chordwisePanelID <= this->N_PW_Chord - 1; ++chordwisePanelID) {
+        // Set properties for each wing segment (excluding twist and virtual segment)
+        for (int anLiftingSurfaceSectionID = theLiftingSurfaceSegmentSize -1 ; anLiftingSurfaceSectionID >= 0; anLiftingSurfaceSectionID--) {
+            // Set relative chord of panel (equidistant distribution)
+            this->panelRight.absoluteChord_PW.push_back(anAircraftLiftingSurface.sections.at(anLiftingSurfaceSectionID + 1).get_chord_length() / this->N_PW_Chord);
+            this->panelLeft.absoluteChord_PW.push_back(anAircraftLiftingSurface.sections.at(anLiftingSurfaceSectionID).get_chord_length() / this->N_PW_Chord);
+            // Calculate panel coordinates for the quarter chord of each panel as interpolation between leading edge and trailing edge
+            Point panelCoordinate_right(0., 0., 0.), panelCoordinate_left(0., 0., 0.);
+            Point LE_point_inboard;   // left
+            Point LE_point_outboard;  // right
+            Point TE_point_inboard;   // left
+            Point TE_point_outboard;  // right
+            LE_point_inboard = getTrueCoordinates(anAircraftLiftingSurface, anLiftingSurfaceSectionID);
+            LE_point_outboard = getTrueCoordinates(anAircraftLiftingSurface, anLiftingSurfaceSectionID + 1);
+            TE_point_inboard = getTECoordinates(LE_point_inboard, anAircraftLiftingSurface.sections.at(anLiftingSurfaceSectionID).get_chord_length(),
+                                                anAircraftLiftingSurface.sections.at(anLiftingSurfaceSectionID).get_twist_angle());
+            TE_point_outboard = getTECoordinates(LE_point_outboard, anAircraftLiftingSurface.sections.at(anLiftingSurfaceSectionID + 1).get_chord_length(),
+                                                anAircraftLiftingSurface.sections.at(anLiftingSurfaceSectionID + 1).get_twist_angle());
+            double x_rel = (chordwisePanelID + 0.25) / this->N_PW_Chord;  // Rel. quarterchord point of each panel chord
+            panelCoordinate_right.xCoordinate = ((1. - x_rel) * LE_point_outboard.xCoordinate + x_rel * TE_point_outboard.xCoordinate);
+            panelCoordinate_left.xCoordinate = ((1. - x_rel) * LE_point_inboard.xCoordinate + x_rel * TE_point_inboard.xCoordinate);
+            panelCoordinate_right.yCoordinate = (((1. - x_rel) * LE_point_outboard.yCoordinate + x_rel * TE_point_outboard.yCoordinate) * myScaleSpanErrors);
+            panelCoordinate_left.yCoordinate = (((1. - x_rel) * LE_point_inboard.yCoordinate + x_rel * TE_point_inboard.yCoordinate) * myScaleSpanErrors);
+            panelCoordinate_right.zCoordinate = ((1. - x_rel) * LE_point_outboard.zCoordinate + x_rel * TE_point_outboard.zCoordinate);
+            panelCoordinate_left.zCoordinate = ((1. - x_rel) * LE_point_inboard.zCoordinate + x_rel * TE_point_inboard.zCoordinate);
+            this->panelRight.panelReferencePoint.push_back(panelCoordinate_right);
+            this->panelLeft.panelReferencePoint.push_back(panelCoordinate_left);
+            // Define coupling conditions between part wings
+            if (anLiftingSurfaceSectionID == theLiftingSurfaceSegmentSize - 1) {
+                // Set special wingtip conditions for right side of last segment
+                this->panelRight.COUPLING_CONDITIONS.push_back("T F F F F F");
+                // Set normal conditions for left side
+                if (theLiftingSurfaceSegmentSize - 1 == 0) {
+                    this->panelLeft.COUPLING_CONDITIONS.push_back("F T F F F F");
+                } else {
+                    this->panelLeft.COUPLING_CONDITIONS.push_back("F F T T F F");
+                }
+            } else if (anLiftingSurfaceSectionID == 0) {
+                this->panelRight.COUPLING_CONDITIONS.push_back("F F T T F F");
+                this->panelLeft.COUPLING_CONDITIONS.push_back("F T F F F F");
+            } else {
+                this->panelRight.COUPLING_CONDITIONS.push_back("F F T T F F");
+                this->panelLeft.COUPLING_CONDITIONS.push_back("F F T T F F");
+            }
+            // Camber line
+            camberLine tmpCamberLine_left(this->setPanelCamberLine(anAircraftLiftingSurface, anLiftingSurfaceSectionID));
+            camberLine tmpCamberLine_right(this->setPanelCamberLine(anAircraftLiftingSurface, anLiftingSurfaceSectionID + 1));
+            this->panelRight.panelCamberLine.push_back(tmpCamberLine_right);
+            this->panelLeft.panelCamberLine.push_back(tmpCamberLine_left);
+            // Segment twist
+            // the twist is multiplied by -1 because of all the coordinate transformations, I dont understand but it works (LN 2024)
+            double tmpTwist_left(this->setPanelTwist(anAircraftLiftingSurface, anLiftingSurfaceSectionID, chordwisePanelID,
+                                                        this->panelLeft.panelCamberLine.back(), this->panelLeft.absoluteChord_PW.back()) * (-1.));
+            double tmpTwist_right(this->setPanelTwist(anAircraftLiftingSurface, anLiftingSurfaceSectionID + 1 , chordwisePanelID,
+                                                        this->panelRight.panelCamberLine.back(), this->panelRight.absoluteChord_PW.back()) * (-1.));
+            //Check if segment is within the fuselage
+            if (untwistFslgSeg) { // Fuselage segment
+                double fuselage_width_left_segment(geom2::measure::width(theFuselage,
+                                                        (anAircraftLiftingSurface.origin.x() + anAircraftLiftingSurface.sections.at(anLiftingSurfaceSectionID).origin.x())));
+                double fuselage_width_right_segment(geom2::measure::width(theFuselage,
+                                                        (anAircraftLiftingSurface.origin.x() + anAircraftLiftingSurface.sections.at(anLiftingSurfaceSectionID + 1).origin.x())));
+                if (fabs(LE_point_outboard.yCoordinate - fuselage_width_right_segment / 2.) < ACCURACY_LOW) {
+                    tmpTwist_left = 0.;
+                    tmpTwist_right = 0.;
+                }
+            }
+            this->panelLeft.TWIST.push_back(tmpTwist_left);
+            this->panelRight.TWIST.push_back(tmpTwist_right);
+        }
+    }
+}
+
+liftingLineWing::camberLine liftingLineWing::setPanelCamberLine(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface,
+                                                                const size_t& sectionID) {
+    // Declaration list
+    liftingLineWing::camberLine thePanelCamberLine;
+    std::vector<Point> alignedLowerAirfoil;
+    std::vector<Point> camberLineResult;
+    std::vector<Point> upperSectionTmp;
+    std::vector<Point> lowerSectionTmp;
+    upperSectionTmp = this->splitAirfoilCoordinates(anAircraftLiftingSurface.sections.at(sectionID), true);
+    lowerSectionTmp = this->splitAirfoilCoordinates(anAircraftLiftingSurface.sections.at(sectionID), false);
+    // Interpolate lowerSide xCoordinates to upperSide xCoordinates
+    alignedLowerAirfoil = alignLeftAndRightVectorPoints(upperSectionTmp, lowerSectionTmp);
+    // Camber point of section i
+    for (unsigned int i(0); i < upperSectionTmp.size(); i++) {
+        Point result = (alignedLowerAirfoil.at(i) + upperSectionTmp.at(i)) * 0.5;
+        camberLineResult.push_back(result);
+    }
+    thePanelCamberLine.camberLinePoints = camberLineResult;
+    return thePanelCamberLine;
+}
+
+double liftingLineWing::setPanelTwist(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, const size_t& sectionID,
+                                      unsigned int currentChordwisePanelID, const camberLine& thePanelCamberLine, const double& absolutePanelChord) {
+    double panelTwist(NAN);
+    panelTwist = convertUnit(RADIAN, DEGREE, anAircraftLiftingSurface.sections.at(sectionID).get_twist_angle());
+    double zeroLift(this->getZeroLiftOfPanel(anAircraftLiftingSurface, sectionID, currentChordwisePanelID, thePanelCamberLine, absolutePanelChord));
+    panelTwist -= zeroLift;
+    return (-1.) * panelTwist;
+}
+
+double liftingLineWing::getZeroLiftOfPanel(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, const size_t& sectionID,
+        unsigned int currentChordwisePanelID, const camberLine& thePanelCamberLine, const double& absolutePanelChord) {
+    double zeroLift(0.), gradTangent(0.);  // Angles in [deg]
+    Point theInterpolatedCamberLineStart(0., 0., 0.), theInterpolatedCamberLineEnd(0., 0., 0.), theTangentStart(0., 0., 0.), theTangentEnd(0., 0., 0.);
+    unsigned int startID(0), endID(0);
+    /* Determination of Zero-Lift AoA:
+       1. x-coordinates for every chordwise panel */
+    theInterpolatedCamberLineStart.xCoordinate = static_cast<double>(currentChordwisePanelID) * absolutePanelChord;
+    theInterpolatedCamberLineEnd.xCoordinate = static_cast<double>(currentChordwisePanelID + 1) * absolutePanelChord;
+    /* 2. Normalizing to chord length of 1 */
+    theInterpolatedCamberLineStart.xCoordinate /= anAircraftLiftingSurface.sections.at(sectionID).get_chord_length();
+    theInterpolatedCamberLineEnd.xCoordinate /= anAircraftLiftingSurface.sections.at(sectionID).get_chord_length();
+    /* 3. Calculate Zero-lift-angle for every panel row
+       Note: It is the angle of a tangent which is attached the skeleton at 3/4 of its chord. Normally better suited (and thus used here) is the way to
+             draw a line between 1/2 chord and the trailing edge - which is (for a parabola skeleton) parallel to the former mentioned tangent (s. Fig. 3 in LL-Manual).
+    */
+    theTangentStart.xCoordinate = 0.5 * (theInterpolatedCamberLineStart.xCoordinate + theInterpolatedCamberLineEnd.xCoordinate);
+    theTangentEnd.xCoordinate = theInterpolatedCamberLineEnd.xCoordinate;
+    while (thePanelCamberLine.camberLinePoints.at(startID).xCoordinate < theTangentStart.xCoordinate && startID < thePanelCamberLine.camberLinePoints.size() - 1) {
+        startID++;
+    }
+    while (thePanelCamberLine.camberLinePoints.at(endID).xCoordinate < theTangentEnd.xCoordinate && endID < thePanelCamberLine.camberLinePoints.size() - 1) {
+        endID++;
+    }
+    if (startID == endID) {
+        if (endID < thePanelCamberLine.camberLinePoints.size()-1) {
+            endID++;
+        } else if (startID > 0) {
+            startID--;
+        } else {
+           myRuntimeInfo->err << anAircraftLiftingSurface.sections.at(sectionID).name
+                              << ".dat contains not enough coordinates to create correct liftingLine input. Abort program!" << std::endl;
+           exit(1);
+        }
+    }
+    gradTangent = (thePanelCamberLine.camberLinePoints.at(endID).zCoordinate - thePanelCamberLine.camberLinePoints.at(startID).zCoordinate) /
+                  (thePanelCamberLine.camberLinePoints.at(endID).xCoordinate - thePanelCamberLine.camberLinePoints.at(startID).xCoordinate);
+    zeroLift = (-1.) * convertUnit(RADIAN, DEGREE, atan(gradTangent));
+    return zeroLift;
+}
+
+std::vector <Point> liftingLineWing::splitAirfoilCoordinates(const geom2::AirfoilSection& aSection, bool upperSide) {
+    std::vector<Point> upperSectionTmp;
+    std::vector<Point> lowerSectionTmp;
+    // check where left, right, upper, and lower vertex points are
+    size_t leftVertexID(0), rightVertexID(0), topVertexID(0), bottomVertexID(0);
+    for (size_t i(0); i < aSection.get_contour().size(); ++i) {
+        if (accuracyCheck(aSection.get_contour().container().at(i).x(), aSection.get_contour().left_vertex()->x(), ACCURACY_HIGH)) {
+            leftVertexID = i;
+        }
+        if (accuracyCheck(aSection.get_contour().container().at(i).x(), aSection.get_contour().right_vertex()->x(), ACCURACY_HIGH)) {
+            rightVertexID = i;
+        }
+        if (accuracyCheck(aSection.get_contour().container().at(i).y(), aSection.get_contour().top_vertex()->y(), ACCURACY_HIGH)) {
+            bottomVertexID = i;
+        }
+        if (accuracyCheck(aSection.get_contour().container().at(i).y(), aSection.get_contour().bottom_vertex()->y(), ACCURACY_HIGH)) {
+            topVertexID = i;
+        }
+    }
+    // check if coordinate squence starts from TE or LE
+    bool coordinateStartFromLE(true);
+    if (leftVertexID < rightVertexID) {
+        coordinateStartFromLE = true;
+    } else if (leftVertexID > rightVertexID) {
+        coordinateStartFromLE = false;
+    } else {
+        stringstream errorMessage;
+        errorMessage << "Some airfoil coordinates are corruprted! - unclear where LE and TE are";
+        throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+    }
+    // check wether upper or lower section comes first in sequence
+    bool upperSectionFirst(true);
+    if (topVertexID < bottomVertexID) {
+        upperSectionFirst = true;
+    } else if (topVertexID > bottomVertexID) {
+        upperSectionFirst = false;
+    } else {
+        stringstream errorMessage;
+        errorMessage << "Some airfoil coordinates are corruprted! - unclear where upper and lower sections are";
+        throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+    }
+    // decide if points get initially pushed into upper- or lowerSectiontmp
+    bool upperSection = upperSectionFirst;
+    for (size_t i(0); i < aSection.get_contour().size(); ++i) {
+        Point tmp_Coordinate;
+        tmp_Coordinate.xCoordinate = aSection.get_contour().container().at(i).x();
+        tmp_Coordinate.yCoordinate = 0.0;
+        tmp_Coordinate.zCoordinate = aSection.get_contour().container().at(i).y() * (-1.0);
+        // if coordinates start from LE
+        if (coordinateStartFromLE) {
+            if (upperSectionFirst) {
+                if (upperSection) {
+                    upperSectionTmp.push_back(tmp_Coordinate);
+                    // check if sections do switch
+                    if (accuracyCheck(tmp_Coordinate.xCoordinate, aSection.get_contour().right_vertex()->x(), ACCURACY_HIGH)) {
+                        upperSection = false;
+                        lowerSectionTmp.push_back(tmp_Coordinate);
+                    }
+                } else {
+                    lowerSectionTmp.push_back(tmp_Coordinate);
+                }
+            // if lower section first
+            } else {
+                // if lower section
+                if (!upperSection) {
+                    lowerSectionTmp.push_back(tmp_Coordinate);
+                    // check if sections do switch
+                    if (accuracyCheck(tmp_Coordinate.xCoordinate, aSection.get_contour().right_vertex()->x(), ACCURACY_HIGH)) {
+                        upperSection = true;
+                        upperSectionTmp.push_back(tmp_Coordinate);
+                    }
+                // if upper section
+                } else {
+                    upperSectionTmp.push_back(tmp_Coordinate);
+                }
+            }
+        // if coordinates start from TE
+        } else {
+            if (upperSectionFirst) {
+                if (upperSection) {
+                    upperSectionTmp.push_back(tmp_Coordinate);
+                    // check if sections do switch
+                    if (accuracyCheck(tmp_Coordinate.xCoordinate, aSection.get_contour().left_vertex()->x(), ACCURACY_HIGH)) {
+                        upperSection = false;
+                        lowerSectionTmp.push_back(tmp_Coordinate);
+                    }
+                } else {
+                    lowerSectionTmp.push_back(tmp_Coordinate);
+                }
+            // if lower section first
+            } else {
+                // if lower section
+                if (!upperSection) {
+                    lowerSectionTmp.push_back(tmp_Coordinate);
+                    // check if sections do switch
+                    if (accuracyCheck(tmp_Coordinate.xCoordinate, aSection.get_contour().left_vertex()->x(), ACCURACY_HIGH)) {
+                        upperSection = true;
+                        upperSectionTmp.push_back(tmp_Coordinate);
+                    }
+                // if upper section
+                } else {
+                    upperSectionTmp.push_back(tmp_Coordinate);
+                }
+            }
+        }
+    }
+    // push back fist coordinate, so that both vectors go fron 0 to 1
+    Point lastCoordinate;
+    lastCoordinate.xCoordinate = aSection.get_contour().container().front().x();
+    lastCoordinate.yCoordinate = 0.0;
+    lastCoordinate.zCoordinate = aSection.get_contour().container().front().y() * (-1.0);
+    if (upperSectionFirst) {
+        lowerSectionTmp.push_back(lastCoordinate);
+    } else {
+        upperSectionTmp.push_back(lastCoordinate);
+    }
+    // reverse one of the vectors
+    if (coordinateStartFromLE && upperSectionFirst) {
+        std::reverse(lowerSectionTmp.begin(), lowerSectionTmp.end());
+    } else if (coordinateStartFromLE && !upperSectionFirst) {
+        std::reverse(upperSectionTmp.begin(), upperSectionTmp.end());
+    } else if (!coordinateStartFromLE && upperSectionFirst) {
+        std::reverse(upperSectionTmp.begin(), upperSectionTmp.end());
+    } else if (!coordinateStartFromLE && !upperSectionFirst) {
+        std::reverse(lowerSectionTmp.begin(), lowerSectionTmp.end());
+    }
+    if (upperSide) {
+        return upperSectionTmp;
+    } else {
+        return lowerSectionTmp;
+    }
+}
+
+Point liftingLineWing::getTECoordinates(const Point& LEPoint, const double& chordLength, const double & LERotationInRad) {
+    if (LERotationInRad > (PI / 2)) {
+        stringstream errorMessage;
+        errorMessage << "airfoil rotation of " << LERotationInRad << " is greater than PI/2, rotation equations invalid!";
+        throwError(__FILE__, __func__, __LINE__, errorMessage.str());
+    }
+    Point TEPoint;
+    TEPoint.xCoordinate = LEPoint.xCoordinate + chordLength * cos(LERotationInRad);
+    TEPoint.yCoordinate = LEPoint.yCoordinate;
+    TEPoint.zCoordinate = LEPoint.zCoordinate - chordLength * sin(LERotationInRad);
+    return TEPoint;
+}
+
+Point liftingLineWing::getTrueCoordinates(const geom2::MultisectionSurface<geom2::AirfoilSection>& anAircraftLiftingSurface, const size_t& sectionID) {
+    Point TrueCoordinates;
+    TrueCoordinates.xCoordinate = anAircraftLiftingSurface.origin.x() + anAircraftLiftingSurface.sections.at(sectionID).origin.x();
+    TrueCoordinates.yCoordinate = anAircraftLiftingSurface.origin.y() - anAircraftLiftingSurface.sections.at(sectionID).origin.z();
+    TrueCoordinates.zCoordinate = anAircraftLiftingSurface.origin.z() + anAircraftLiftingSurface.sections.at(sectionID).origin.y();
+    return TrueCoordinates;
+}
diff --git a/moduleBasics/CMakeLists.txt b/moduleBasics/CMakeLists.txt
new file mode 100644
index 00000000..1b7ecf8c
--- /dev/null
+++ b/moduleBasics/CMakeLists.txt
@@ -0,0 +1,74 @@
+# Set the library name
+set( LIBRARY_NAME moduleBasics )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/plot.cpp
+    src/report.cpp
+    resources.rc
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Create the library target -> this is for header only library
+add_library( strategy INTERFACE )
+add_library( UnicadoLibs::strategy ALIAS strategy )
+
+target_sources( strategy 
+    PUBLIC
+        FILE_SET HEADERS
+        BASE_DIRS include
+        FILES
+            "include/moduleBasics/strategySelector.h"
+)
+
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_MODULEBASICS_SHARED" PUBLIC "IMPORT_MODULEBASICS_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Link against dependent libraries
+target_link_libraries( ${LIBRARY_NAME} 
+    PUBLIC
+        strategy
+        runtimeInfo
+        aixml
+        standardFiles
+)
+
+if( BUILD_UNITTEST)
+    add_subdirectory(test)
+endif()
+
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Install rules (header only)
+#install(TARGETS strategy FILE_SET HEADERS)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
+
+# Export rules (header only)
+export(TARGETS strategy
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibsstrategyTargets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/moduleBasics/include/moduleBasics/colors.h b/moduleBasics/include/moduleBasics/colors.h
new file mode 100644
index 00000000..f9829917
--- /dev/null
+++ b/moduleBasics/include/moduleBasics/colors.h
@@ -0,0 +1,128 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef MODULEBASICS_INCLUDE_MODULEBASICS_COLORS_H_
+#define MODULEBASICS_INCLUDE_MODULEBASICS_COLORS_H_
+
+#include <array>
+#include <queue>
+#include <tuple>
+#include <vector>
+#include <algorithm>
+
+namespace colors {
+
+/* Alias for rgb color */
+using rgb_color = std::tuple<int, int, int>;
+
+/* Helper method to create RGB colors */
+constexpr rgb_color make_color(int r, int g, int b) {
+  return std::make_tuple(r, g, b);
+}
+
+/* Predefined colors */
+constexpr rgb_color tub_red = make_color(197, 14, 30);
+constexpr rgb_color tubs_red = make_color(189, 30, 60);
+constexpr rgb_color tuhh_turquoise = make_color(0, 193, 212);
+constexpr rgb_color rwth_blue = make_color(1, 81, 157);
+constexpr rgb_color tum_blue = make_color(0, 101, 189);
+constexpr rgb_color ustutt_black = make_color(0, 0, 0);
+constexpr rgb_color additional_orange = make_color(255, 128, 0);
+constexpr rgb_color additional_green = make_color(0, 153, 0);
+constexpr rgb_color additional_purple = make_color(153, 0, 153);
+
+/* Unicado color palette */
+constexpr std::array<rgb_color, 9> unicado_color_range = {ustutt_black, tum_blue, tub_red, tuhh_turquoise, tubs_red, rwth_blue,
+                                                            additional_orange, additional_green, additional_purple};
+
+static size_t color_index = 0;
+/**
+ * Next color - automatic color incrementation ordered by unicado logo
+ *
+ * @return  rgb_color[return description]
+ */
+inline const rgb_color& next_color() {
+  const rgb_color& color = unicado_color_range[color_index];
+  ++color_index;
+  color_index %= unicado_color_range.size();
+  return color;
+}
+
+inline void reset_next_color() {
+  color_index = 0;
+}
+
+/**
+ * Blend two rgb colors by blending factor (default blending 0.5)
+ *
+ * @return  blended rgb_color
+ */
+inline const rgb_color blend(const rgb_color& c1, const rgb_color& c2, const double blending_factor = 0.5) {
+  return make_color((std::get<0>(c1) * blending_factor + std::get<0>(c2) * (1 - blending_factor)), (std::get<1>(c1) * blending_factor + std::get<1>(c2) * (1 - blending_factor)),
+                    (std::get<2>(c1) * blending_factor + std::get<2>(c2) * (1 - blending_factor)));
+}
+
+/**
+ * Adjust brightness of color
+ *
+ * @param   double      factor  Brightness factor
+ *
+ * @return  rgb_color          brightness adjusted color
+ */
+inline const rgb_color adjust_brightness(const rgb_color& color, double factor) {
+  return make_color(std::min(255, static_cast<int>(std::get<0>(color) * factor)), std::min(255, static_cast<int>(std::get<1>(color) * factor)),
+                    std::min(255, static_cast<int>(std::get<2>(color) * factor)));
+}
+
+
+/**
+ * [array description]
+ * @param rgb_color color as an rgb_color element (tuple with 3 ints)
+ * @return  std::array<float, 4> matplot++ color array
+ */
+inline std::array<float, 4> to_matplot_color(const rgb_color& color, float visibility = 0.0f) {
+  return {static_cast<float>(std::max(0.f, std::min(1.f, visibility))),
+          static_cast<float>(std::get<0>(color) / 255.0f),
+          static_cast<float>(std::get<1>(color) / 255.0f),
+          static_cast<float>(std::get<2>(color) / 255.0f)};
+}
+
+/**
+ * Transforms unicado color order into 2D vector for matplot++ colororder command
+ *
+ * @param   void  void  none
+ *
+ * @return  std::vector<std::vector<double>> colororder
+ */
+inline std::vector<std::vector<double>> unicado_to_matplot_colororder(void) {
+  std::vector<std::vector<double>> colorvector;
+  for (auto& color_palette : unicado_color_range) {
+    const auto [r, g, b] = color_palette;
+    colorvector.push_back({static_cast<double>(r)/255., static_cast<double>(g)/255., static_cast<double>(b)/255.});
+  }
+  return colorvector;
+}
+
+
+} // namespace colors
+
+#endif // MODULEBASICS_INCLUDE_MODULEBASICS_COLORS_H_
diff --git a/moduleBasics/include/moduleBasics/html.h b/moduleBasics/include/moduleBasics/html.h
new file mode 100644
index 00000000..03a46c0f
--- /dev/null
+++ b/moduleBasics/include/moduleBasics/html.h
@@ -0,0 +1,273 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef MODULEBASICS_INCLUDE_MODULEBASICS_HTML_H_
+#define MODULEBASICS_INCLUDE_MODULEBASICS_HTML_H_
+
+/* === Includes === */
+#include <algorithm>
+#include <sstream>
+#include <string>
+#include <string_view>
+#include <vector>
+
+/* === Functions === */
+namespace html {
+
+    /**
+     * @struct Element
+     * @brief Helper struct to combine html elements text and attribute.
+     * 
+     * This struct is used to group the text and attribute of html elements together.
+     * This way you can easily loop through a list of elements and have access to the
+     * text and corresponding attribute of each element.
+     */
+    struct Element {
+        /* === Default Constructors === */
+        Element() = default;
+        Element(const Element &) = default;
+        Element(Element &&) = default;
+        auto operator=(const Element &) -> Element & = default;
+        auto operator=(Element &&) -> Element & = default;
+        ~Element() = default;
+
+        /* === Custom constructors so that struct appears as a string view === */
+        Element(const std::string_view &text, const std::string_view &attribute) : text(text), attribute(attribute) {}
+        explicit Element(const std::string_view &text) : Element(text, "") {}
+        Element(const char *text) : Element(std::string_view(text), "") {} //NOLINT (google-explicit-constructor) Otherwise the initializer list does not work
+
+        /* === Properties === */
+        std::string_view text{}; /**< The text this html element contains. */
+        std::string_view attribute{}; /**< The attribute text of this html element. */
+    };
+
+    /**
+     * @brief Add a h1 header
+     * 
+     * @param text The text of the header
+     * @return std::string The html formatted header
+     */
+    inline auto h1(const std::string_view &text) -> std::string {
+        std::stringstream stream;
+        stream << "<h1>" << text << "</h1>"
+               << "\n";
+        return stream.str();
+    }
+
+    /**
+     * @brief Add a h2 header
+     * 
+     * @param text The text of the header
+     * @return std::string The html formatted header
+     */
+    inline auto h2(const std::string_view &text) -> std::string {
+        std::stringstream stream;
+        stream << "<h2>" << text << "</h2>"
+               << "\n";
+        return stream.str();
+    }
+
+    /**
+     * @brief Add a h3 header
+     * 
+     * @param text The text of the header
+     * @return std::string The html formatted header
+     */
+    inline auto h3(const std::string_view &text) -> std::string {
+        std::stringstream stream;
+        stream << "<h3>" << text << "</h3>"
+               << "\n";
+        return stream.str();
+    }
+
+    /**
+     * @brief Start a div column with the optional additional
+     * attributes. The attributes can also be empty.
+     * 
+     * Can be used like this: `html_stream << html::div_start("id=\\"leftCol\\"");`
+     * 
+     * @attention Do not forget to close the div with `html_stream << html::div_end;` again.
+     * This does not keep track of the divs that are started and closed!
+     * @param attributes The attributes of the div
+     * @return std::string The html formatted div
+     */
+    inline auto div_start(const std::string_view &attributes) -> std::string {
+        std::stringstream stream;
+        stream << "<div " << attributes << ">"
+               << "\n";
+        return stream.str();
+    }
+
+    /**
+     * @brief Add an image with the given source path and attributes.
+     * 
+     * @param src Path to the image
+     * @param attributes The attributes of the image
+     * @return std::string The html formatted image
+     */
+    inline auto image(const std::string_view &src, const std::string_view &attributes) -> std::string {
+        std::stringstream stream;
+        stream << "<img src=\"" << src << "\" " << attributes << ">"
+               << "\n";
+        return stream.str();
+    }
+
+    /**
+     * @brief Start a table with the given headers.
+     * 
+     * @attention Do not forget to close the table with `html_stream << html::table_end;` again.
+     * This does not keep track of the tables that are started and closed!
+     * @param headers The list with the header elements of the table. Each element can have an attribute.
+     * @param caption Optional, the caption of the table.
+     * @param attributes Optional, additional attributes for the table.
+     * @return std::string The html formatted start of the table
+     */
+    inline auto table_begin(const std::vector<Element> &headers, const std::string_view caption = "", const std::string_view attributes = "") -> std::string {
+        /* Start the table */
+        std::stringstream stream;
+        stream << "<table class=\"content-table\""
+               << attributes << ">"
+               << "\n";
+
+        /* Add the caption */
+        if (!caption.empty()) {
+            stream << "<caption>" << caption << "</caption>"
+                   << "\n";
+        }
+
+        /* Add the headers and their attributes */
+        stream << "<thead>" << "\n"
+               << "<tr>" << "\n";
+        std::for_each(headers.begin(), headers.end(), [&stream](const Element &header)
+                      { stream << "<th " << header.attribute << ">" << header.text << "</th>"
+                               << "\n"; });
+        stream << "</tr>" << "\n"
+               << "</thead>" << "\n";
+        return stream.str();
+    }
+
+    /**
+     * @brief Insert a table data item,
+     * 
+     * @tparam T The type of the value
+     * @param value The value to insert
+     * @return std::string The html formatted table data
+     */
+    template <typename T>
+    inline auto table_data(const T &value) -> std::string {
+        std::stringstream stream;
+        stream << "<td>" << value << "</td>";
+        return stream.str();
+    }
+
+    /**
+     * @brief Recursively add all the values to a table row
+     * @details This is a recursive function that puts a
+     * single data item into a table row until the last
+     * data item is reached.
+     * 
+     * @tparam T The type of the value
+     * @tparam Targs The type of the other values
+     * @param value The value to insert
+     * @param values The other values to insert
+     * @return std::string The html formatted table data items
+     */
+    template <typename T, typename... Targs>
+    inline auto table_data(const T &value, const Targs &... values) -> std::string {
+        std::stringstream stream;
+        stream << table_data(value)
+               << table_data(values...);
+        return stream.str();
+    }
+
+    /**
+     * @brief Add all the values to a table row
+     * The values are added to the table row in the order they are given.
+     * @note You can use as many table entries as you want, but make sure
+     * that within one table each row has the same number of entries. This
+     * does not track the number of columns of the table!
+     * 
+     * @tparam Targs The list of types of the values
+     * @param values The values to insert
+     * @return std::string The html formatted table row
+     */
+    template<typename... Targs>
+    inline auto table_row(const Targs &...values) -> std::string {
+        std::stringstream stream;
+        stream << "<tr>"
+               << "\n";
+        stream << table_data(values...);
+        stream << "</tr>"
+               << "\n";
+        return stream.str();
+    }
+
+    /**
+     * @brief Finish the table
+     * 
+     * Can be used like this: `html_stream << html::table_end;`
+     * 
+     * @param stream The stream to finish the table
+     * @return std::basic_ostream<_CharT, _Traits>& Returns the stream
+     */
+    template <class _CharT, class _Traits>
+    inline std::basic_ostream<_CharT, _Traits> &
+    table_end(std::basic_ostream<_CharT, _Traits> &stream) { // NOLINT
+        stream << "</table>"
+               << "\n";
+        return stream;
+    }
+
+    /**
+     * @brief Finish the div
+     * 
+     * Can be used like this: `html_stream << html::div_end;`
+     * 
+     * @param stream The stream to finish the div
+     * @return std::basic_ostream<_CharT, _Traits>& Returns the stream
+     */
+    template <class _CharT, class _Traits>
+    inline std::basic_ostream<_CharT, _Traits> &
+    div_end(std::basic_ostream<_CharT, _Traits> &stream) { // NOLINT
+        stream << "</div>"
+               << "\n";
+        return stream;
+    }
+
+    /**
+     * @brief Add a horizontal rule
+     * 
+     * Can be used like this: `html_stream << html::hrule;`
+     * 
+     * @param stream The stream to add the rule
+     * @return std::basic_ostream<_CharT, _Traits>& Returns the stream
+     */
+    template <class _CharT, class _Traits>
+    inline std::basic_ostream<_CharT, _Traits> &
+    hrule(std::basic_ostream<_CharT, _Traits> &stream) { // NOLINT
+        stream << "<hr>"
+               << "\n";
+        return stream;
+    }
+}; // namespace html
+
+#endif // MODULEBASICS_INCLUDE_MODULEBASICS_HTML_H_
diff --git a/moduleBasics/include/moduleBasics/modeSelector.h b/moduleBasics/include/moduleBasics/modeSelector.h
new file mode 100644
index 00000000..c997761d
--- /dev/null
+++ b/moduleBasics/include/moduleBasics/modeSelector.h
@@ -0,0 +1,63 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef MODULEBASICS_INCLUDE_MODULEBASICS_MODESELECTOR_H_
+#define MODULEBASICS_INCLUDE_MODULEBASICS_MODESELECTOR_H_
+
+#include <map>
+#include <string>
+
+/* mode definition */
+using modi = unsigned int;
+
+/**
+ * \brief Basic selector for modes in control_settings
+ *
+ */
+class Modeselector {
+ public:
+  /**
+   * \brief Construct a new Modeselector object
+   *
+   * \param mode string values for mode
+   */
+  explicit Modeselector(const std::string mode) {
+    mode_ = mode;
+    m_ = selection_[mode_];
+  }
+
+  /**
+   * \brief Getter method for selected modi
+   *
+   * \return modi
+   */
+  modi get_mode_numeric() { return m_; }
+  std::string get_mode_string() { return mode_; }
+
+ private:
+  modi m_{0};
+  std::string mode_{"mode_0"};
+  std::map<std::string, modi> selection_{{"mode_0", 0}, {"mode_1", 1}, {"mode_2", 2}, {"mode_3", 3}, {"mode_4", 4},
+                                            {"mode_5", 5}, {"mode_6", 6}, {"mode_7", 7}, {"mode_8", 8}, {"mode_9", 9}};
+};
+
+#endif  // MODULEBASICS_INCLUDE_MODULEBASICS_MODESELECTOR_H_
diff --git a/moduleBasics/include/moduleBasics/module.h b/moduleBasics/include/moduleBasics/module.h
new file mode 100644
index 00000000..9372cbea
--- /dev/null
+++ b/moduleBasics/include/moduleBasics/module.h
@@ -0,0 +1,244 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef MODULEBASICS_INCLUDE_MODULEBASICS_MODULE_H_
+#define MODULEBASICS_INCLUDE_MODULEBASICS_MODULE_H_
+
+#include <moduleBasics/runtimeIO.h>  // import runtime io class
+
+#include <algorithm>   // import c++ standard library for using transform
+#include <cstdlib>     // import c++ standard library for using cstdlib
+#include <exception>   // import c++ standard library for using exception
+#include <filesystem>  // import c++ standard library for using path
+#include <iostream>    // import c++ standard library for using iostream
+#include <map>         // import c++ standard library for using map
+#include <memory>      // import c++ standard library for using memory-ops
+#include <string>      // import c++ standard library for using string
+
+/**
+ * \brief Template class for modules at top level - must be inherited
+ *
+ */
+class Module {
+ public:
+  /**
+   * \brief Construct a new Module object
+   *
+   * \param toolName Tool Name string
+   * \param toolVersion Tool Version string
+   */
+  Module(int argc, char* argv[], const std::string& toolName, const std::string& toolVersion)
+      : Module(toolName, toolVersion, commandline(argc, argv, toolName)) {}
+
+  /**
+   * \brief Construct a new Module object
+   *
+   * \param toolName Tool Name string
+   * \param toolVersion Tool Version string
+   * \param rtConfigXML path to <toolName>_conf.xml
+   */
+  Module(const std::string& toolName, const std::string& toolVersion, const fs::path& rtConfigXML)
+      : toolName_(toolName), toolVersion_(toolVersion) {
+    try {
+      return_code = init_runtime(rtConfigXML);
+    } catch (const char* text) {
+      std::cerr << text << std::endl;
+      exit(EXIT_FAILURE);
+    } catch (const std::string& text) {
+      std::cerr << text << std::endl;
+      exit(EXIT_FAILURE);
+    } catch (const std::exception& e) {
+      std::cerr << "The following C++ standard error (" <<  typeid(e).name() << ") has occured: " << e.what() << std::endl;
+      exit(EXIT_FAILURE);
+    } catch (...) {
+      std::cerr << "Unknown error has occured. Exit" << std::endl;
+      exit(EXIT_FAILURE);
+    }
+  }
+
+  /**
+   * \brief Execute module
+   *
+   * \return int returncode (EXIT_SUCCESS or EXIT_FAILURE)
+   */
+  int execute() {
+    if (return_code == EXIT_SUCCESS) {
+      try {
+        rtIO_->show_runtime();
+        rtIO_->create_common_directories();
+
+        initialize();
+        run();
+        update();
+        report();
+        save();
+      } catch (const char* text) {
+        myRuntimeInfo->err << text << std::endl;
+        return_code = EXIT_FAILURE;
+      } catch (const std::string& text) {
+        myRuntimeInfo->err << text << std::endl;
+        return_code = EXIT_FAILURE;
+      } catch (const std::exception& e) {
+        myRuntimeInfo->err << "The following C++ standard error (" << typeid(e).name() << ") has occured: " << e.what() << std::endl;
+        return_code = EXIT_FAILURE;
+      } catch (...) {
+        myRuntimeInfo->err << "Unknown error has occured. Exit" << std::endl;
+        return_code = EXIT_FAILURE;
+      }
+    }
+    return return_code;
+  }
+
+  /* Pure virtual methods to be replaced by each module */
+  /**
+   * \brief Initialize operations (pure virtual) - on top level, set your next strategy here
+   *
+   */
+  virtual void initialize() = 0;
+
+  /**
+   * \brief Run operations (pure virtual)
+   *
+   */
+  virtual void run() = 0;
+
+  /**
+   * \brief Update operations (pure virtual)
+   *
+   */
+  virtual void update() = 0;
+
+  /**
+   * \brief Report operations (pure virtual)
+   *
+   */
+  virtual void report() = 0;
+
+  /**
+   * \brief Save operations (pure virtual) - not on acxml or moduleConfig node
+   *
+   */
+  virtual void save() = 0;
+
+  /**
+   * \brief Get the Runtime I O object
+   *
+   * \return std::shared_ptr<RuntimeIO>
+   */
+  std::shared_ptr<RuntimeIO> get_RuntimeIO() { return rtIO_; }
+
+ protected:
+  std::shared_ptr<RuntimeIO> rtIO_;
+
+ private:
+  std::string toolName_;
+  std::string toolVersion_;
+  int return_code{EXIT_SUCCESS};
+
+  /**
+   * \brief Initialize RuntimeIO object + myRuntimeInfo
+   *
+   * \param rtConfigXML node to <toolName>_conf.xml
+   * \return int returncode (EXIT_SUCCESS or EXIT_FAILURE)
+   */
+  int init_runtime(const fs::path& rtConfigXML) {
+    std::string programname = toolName_;
+    std::string toolVersion = toolVersion_;
+    fs::path moduleConfAccess = rtConfigXML;
+
+    /* Open config xml */
+    const node& rtConfig = aixml::openDocument(rtConfigXML.string());
+
+    modi consoleOutput =
+        Modeselector(EndnodeReadOnly<std::string>("control_settings/console_output").read(rtConfig).value())
+            .get_mode_numeric();
+    modi logOutput = Modeselector(EndnodeReadOnly<std::string>("control_settings/log_file_output").read(rtConfig).value()).get_mode_numeric();
+    bool plotOutput = EndnodeReadOnly<bool>("control_settings/plot_output/enable").read(rtConfig).value();
+    bool plotCopy = EndnodeReadOnly<bool>("control_settings/plot_output/copy_plotting_files").read(rtConfig).value();
+    bool plotDelete = EndnodeReadOnly<bool>("control_settings/plot_output/delete_plotting_files_from_tool_folder")
+                          .read(rtConfig)
+                          .value();
+    bool reportOutput = EndnodeReadOnly<bool>("control_settings/report_output").read(rtConfig).value();
+    bool texOutput = EndnodeReadOnly<bool>("control_settings/tex_report").read(rtConfig).value();
+    bool infoOutput = EndnodeReadOnly<bool>("control_settings/write_info_files").read(rtConfig).value();
+    int ownToolLevel = std::stoi(EndnodeReadOnly<std::string>("control_settings/own_tool_level").read(rtConfig).value());
+
+    fs::path gnuAccess = EndnodeReadOnly<std::string>("control_settings/gnuplot_path").read(rtConfig).value();
+    fs::path inkAccess = EndnodeReadOnly<std::string>("control_settings/inkscape_path").read(rtConfig).value();
+
+    fs::path logAccess = EndnodeReadOnly<std::string>("control_settings/log_file").read(rtConfig).value();
+
+    std::string ioDir = EndnodeReadOnly<std::string>("control_settings/aircraft_exchange_file_directory").read(rtConfig).value();
+    std::string ioFile = EndnodeReadOnly<std::string>("control_settings/aircraft_exchange_file_name").read(rtConfig).value();
+    fs::path acxmlAccess(ioDir + ioFile);
+
+    if (!fs::exists(acxmlAccess)) {
+      std::cerr << "Could not find aircraft exchange file - " << acxmlAccess.string() << " - Abort program!"
+                << std::endl;
+      exit(EXIT_FAILURE);
+    }
+
+    /* close config xml */
+    aixml::closeDocument(rtConfig);
+
+    rtIO_ = std::make_shared<RuntimeIO>(
+        programname, toolVersion, consoleOutput, logOutput, plotOutput, plotCopy, plotDelete, reportOutput, texOutput,
+        infoOutput, ownToolLevel, gnuAccess, inkAccess, logAccess, acxmlAccess, moduleConfAccess,
+        aixml::openDocument(acxmlAccess.string()), aixml::openDocument(moduleConfAccess.string()));
+
+    if (myRuntimeInfo == nullptr) {
+      return EXIT_FAILURE;
+    }
+    return EXIT_SUCCESS;
+  }
+
+  /**
+   * \brief Method to read commandlinearguments for constructor - if option "-c" is used,
+   *        an additional path + filename must be given, otherwise the default path will be used
+   *
+   * \param argc argumentcount from main function
+   * \param argv argumentvalues from main function
+   * \param toolName Tool name given by module
+   * \return fs::path for opening basic configuration file <tool name>_conf.xml
+   */
+  fs::path commandline(int argc, char* argv[], const std::string& toolName) {
+    // Initialize path variable with default path
+    fs::path path("./" + toolName + "_conf.xml");
+    std::string tmp;
+    int count = 0;
+    while (count < argc) {
+      tmp = argv[count++];
+      if (tmp.compare("-c") == 0 && count < argc) {
+        tmp = argv[count];
+        path = fs::path(tmp);
+      }
+    }
+    /* Check if path exists */
+    if (!fs::exists(path)) {
+      std::cerr << "Error: " << path.string() << " not found. Abort program!" << std::endl;
+      exit(1);
+    }
+    return path;
+  }
+};
+
+#endif  // MODULEBASICS_INCLUDE_MODULEBASICS_MODULE_H_
diff --git a/moduleBasics/include/moduleBasics/plot.h b/moduleBasics/include/moduleBasics/plot.h
new file mode 100644
index 00000000..622f68a9
--- /dev/null
+++ b/moduleBasics/include/moduleBasics/plot.h
@@ -0,0 +1,165 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef MODULEBASICS_INCLUDE_MODULEBASICS_PLOT_H_
+#define MODULEBASICS_INCLUDE_MODULEBASICS_PLOT_H_
+
+#include <moduleBasics/runtimeIO.h>
+#include <iostream>
+#include <filesystem>
+#include <vector>
+#include <memory>
+#include <map>
+#include <string>
+
+#ifdef BUILD_MODULEBASICS_SHARED
+    #ifdef _WIN32
+        #define MODULEBASICSDLLEXPORT __declspec(dllexport)
+    #else
+        #define MODULEBASICSDLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_MODULEBASICS_SHARED)
+    #ifdef _WIN32
+        #define MODULEBASICSDLLEXPORT __declspec(dllimport)
+    #endif
+#else
+    #define MODULEBASICSDLLEXPORT
+#endif
+
+namespace fs = std::filesystem;
+
+
+/**
+ * \brief Plot class for single plot
+ * 
+ */
+class MODULEBASICSDLLEXPORT Plot {
+ public:
+    /**
+     * \brief Construct a new Plot object
+     * 
+     * \param rtIO RuntimeIO object
+     * \param plotName name of string for plot
+     */
+    Plot(const std::shared_ptr<RuntimeIO>& rtIO, std::string plotName);
+
+    /**
+     * \brief Get the Plot Name object
+     * 
+     * \return std::string plotname
+     */
+    std::string getPlotName() { return plotName_; }
+
+    /**
+     * \brief Get the Svg Destination object
+     * 
+     * \return fs::path path object
+     */
+    fs::path getSvgDestination() { return svg_; }
+
+    /**
+     * \brief Get the Data Destination object
+     * 
+     * \return fs::path object
+     */
+    fs::path getDataDestination() { return data_; }
+
+    /**
+     * \brief Get the Script Destination object
+     * 
+     * \return fs::path object
+     */
+    fs::path getScriptDestination() { return script_; }
+
+    /**
+     * \brief Get the Data Stream object
+     * 
+     * \return std::stringstream& reference object to dataStream
+     */
+    std::stringstream& getDataStream() { return dataBody_; }
+
+    /**
+     * \brief Generate Plotdata at path
+     * 
+     * \param data fs::path object where to generate plotdata
+     */
+    void generatePlotData(fs::path data);
+
+    /**
+     * \brief Get the Script Stream object
+     * 
+     * \return std::stringstream& reference object to scriptStream
+     */
+    std::stringstream& getScriptStream() { return scriptBody_; }
+
+    /**
+     * \brief Generate ScriptStream
+     * 
+     * \param script fs::path object where to generate script
+     * \param format format information
+     * \param delimiter delimiter information
+     * \param xtraLinStyles xtraLinStyles information
+     * \param doubleSize doubleSize information
+     * \param columnWidth columnWidth information
+     */
+    void generatePlotScript(fs::path script, const std::string format, std::string delimiter, const bool xtraLinStyles, const bool doubleSize, double columnWidth);
+
+    /**
+     * \brief call gnuplot on script
+     * 
+     * \param script path to plotscript 
+     * \param additionalArguments additional arguments for gnuplot execution
+     */
+    void call_gnuplot(fs::path script, std::string additionalArguments);
+
+ private:
+    std::shared_ptr<RuntimeIO> rtIO_;
+    const std::string plotName_;
+
+    /**
+     * \brief Generate plot script header
+     * 
+     * \param format format information
+     * \param delimiter delimiter information
+     * \param xtraLinStyles xtraLinStyles information
+     * \param doubleSize doubleSize information
+     * \param columnWidth columnWidth information
+     */
+    void generatePlotScriptHeader_(const std::string format, std::string delimiter, const bool xtraLinStyles, const bool doubleSize, double columnWidth);
+
+    /**
+     * \brief Converting plot from svg to pdf
+     * 
+     */
+    void convert_plot_();
+
+    fs::path data_;
+    fs::path svg_;
+    fs::path script_;
+
+    std::stringstream dataBody_;
+    std::stringstream scriptHeader_;
+    std::stringstream scriptBody_;
+    std::stringstream scriptFooter_;
+};
+
+#endif // MODULEBASICS_INCLUDE_MODULEBASICS_PLOT_H_
diff --git a/moduleBasics/include/moduleBasics/report.h b/moduleBasics/include/moduleBasics/report.h
new file mode 100644
index 00000000..7018aec4
--- /dev/null
+++ b/moduleBasics/include/moduleBasics/report.h
@@ -0,0 +1,176 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef MODULEBASICS_INCLUDE_MODULEBASICS_REPORT_H_
+#define MODULEBASICS_INCLUDE_MODULEBASICS_REPORT_H_
+
+#include <moduleBasics/plot.h>
+#include <moduleBasics/runtimeIO.h>
+
+#include <map>
+#include <memory>
+#include <string>
+#include <vector>
+
+#ifdef BUILD_MODULEBASICS_SHARED
+#ifdef _WIN32
+#define MODULEBASICSDLLEXPORT __declspec(dllexport)
+#else
+#define MODULEBASICSDLLEXPORT __attribute__((visibility("default")))
+#endif
+#elif defined(IMPORT_MODULEBASICS_SHARED)
+#ifdef _WIN32
+#define MODULEBASICSDLLEXPORT __declspec(dllimport)
+#endif
+#else
+#define MODULEBASICSDLLEXPORT
+#endif
+
+/**
+ * \brief Report class for reporting
+ *
+ */
+class MODULEBASICSDLLEXPORT Report {
+ public:
+  /**
+   * \brief Construct a new Report object
+   *
+   * \param rtIO RuntimeIO object
+   */
+  explicit Report(const std::shared_ptr<RuntimeIO>& rtIO);
+
+  /**
+   * \brief Destroy the Report object
+   *
+   */
+  ~Report() = default;
+
+  /**
+   * \brief Generate reports based on selections in rtIO
+   *
+   * \param name Name of the generated reports
+   */
+  void generateReports(const std::string& name = "");
+
+  /**
+   * \brief Get html reportstream
+   *
+   * \return std::stringstream& of html report
+   */
+  std::stringstream& htmlReportStream() { return htmlBody_; }
+
+  /**
+   * \brief Generate html report
+   *
+   * \param name Name of the generated reports
+   */
+  void generateHtmlReport(const std::string& name);
+
+  /**
+   * \brief Get tex reportstream
+   *
+   * \return std::stringstream& of tex report
+   */
+  std::stringstream& texReportStream() { return texBody_; }
+
+  /**
+   * \brief Generate tex report
+   *
+   * \param name Name of the generated reports
+   */
+  void generateTexReport(const std::string& name);
+
+  /**
+   * \brief Add Plots to Report (Legacy method)
+   *
+   * \param plot Shared pointer to plot object
+   */
+  void add_plot(const std::shared_ptr<Plot>& plot);
+
+  /**
+   * \brief Get the plot object by key
+   *
+   * \param key string for plot object
+   * \return const std::shared_ptr<Plot>&
+   */
+  const std::shared_ptr<Plot>& get_plot(const std::string& key);
+
+  /**
+   * \brief Get the available plot keys object
+   *
+   * \return std::vector<const std::string&> vector
+   */
+  std::vector<std::string> get_available_plot_keys() const;
+
+  /**
+   * \brief Reportname constructed with modulename + aircraft model
+   *
+   * \return std::string returns the name of the report
+   */
+  std::string reportname() const;
+
+ protected:
+  std::shared_ptr<RuntimeIO> rtIO_;
+
+ private:
+  /**
+   * \brief Generates html report header (fixed)
+   *
+   */
+  void generateHtmlReportHeader_();
+
+  /**
+   * \brief Generates html report footer (fixed)
+   *
+   */
+  void generateHtmlReportFooter_();
+
+  /**
+   * \brief Generates tex report header (fixed)
+   *
+   */
+  void generateTexReportHeader_();
+
+  /**
+   * \brief Generates tex report footer (fixed)
+   *
+   */
+  void generateTexReportFooter_();
+
+  /**
+   * \brief Generates stylesheet for html report (fixed)
+   *
+   */
+  void generateStyleSheet_();
+
+  std::stringstream htmlHeader_;
+  std::stringstream htmlBody_;
+  std::stringstream htmlFooter_;
+  std::stringstream texHeader_;
+  std::stringstream texBody_;
+  std::stringstream texFooter_;
+  std::string aircraftName_;
+
+  std::map<std::string, const std::shared_ptr<Plot>&> plots_;
+};
+
+#endif  // MODULEBASICS_INCLUDE_MODULEBASICS_REPORT_H_
diff --git a/moduleBasics/include/moduleBasics/runtimeIO.h b/moduleBasics/include/moduleBasics/runtimeIO.h
new file mode 100644
index 00000000..8ad68857
--- /dev/null
+++ b/moduleBasics/include/moduleBasics/runtimeIO.h
@@ -0,0 +1,827 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef MODULEBASICS_INCLUDE_MODULEBASICS_RUNTIMEIO_H_
+#define MODULEBASICS_INCLUDE_MODULEBASICS_RUNTIMEIO_H_
+
+#include <aixml/endnode.h>
+#include <aixml/node.h>
+#include <moduleBasics/modeSelector.h>
+#include <runtimeInfo/runtimeInfo.h>
+#include <standardFiles/functions.h>
+
+#include <format>
+#include <algorithm>
+#include <filesystem> // NOLINT
+#include <map>
+#include <set>
+#include <string>
+#include <tuple>
+#include <utility>
+#include <vector>
+#include <cstdlib>
+
+
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
+/* Namespace definition */
+namespace fs = std::filesystem;
+
+/**
+ * \brief   RuntimeIO - Class for handling IO elements
+ *          stores access points (paths)
+ *          stores nodes for acxml and moduleconfig
+ *          checks and creates basic directories
+ *          creates directories
+ */
+class RuntimeIO {
+ public:
+  /**
+   * \brief Construct a new Runtime I O object
+   *
+   * \param _programname
+   * \param _toolVersion
+   * \param _consoleOn true/false
+   * \param _logOn true/false
+   * \param _plotOn true/false
+   * \param _plotCopyOn true/false
+   * \param _plotDeleteOn true/false
+   * \param _reportOn true/false
+   * \param _texOn true/false
+   * \param _infoOn true/false
+   * \param _ownToolLevel
+   * \param _gnuAccess path
+   * \param _inkAccess path
+   * \param _logAccess path
+   * \param _acxmlAccess path
+   * \param _moduleConfAccess path
+   * \param _acxml node
+   * \param _moduleConfig node
+   */
+  RuntimeIO(const std::string& _programname, const std::string& _toolVersion, modi _consoleOn, modi _logOn,
+            bool _plotOn, bool _plotCopyOn, bool _plotDeleteOn, bool _reportOn, bool _texOn, bool _infoOn,
+            int _ownToolLevel, fs::path _gnuAccess, fs::path _inkAccess, fs::path _logAccess, fs::path _acxmlAccess,
+            fs::path _moduleConfAccess, node& _acxml, const node& _moduleConfig)  // NOLINT
+      : programname(_programname),
+        toolVersion(_toolVersion),
+        consoleOn(_consoleOn),
+        logOn(_logOn),
+        plotOn(_plotOn),
+        plotCopyOn(_plotCopyOn),
+        plotDeleteOn(_plotDeleteOn),
+        reportOn(_reportOn),
+        texOn(_texOn),
+        infoOn(_infoOn),
+        ownToolLevel(_ownToolLevel),
+        gnuAccess(_gnuAccess),
+        inkAccess(_inkAccess),
+        logAccess(_logAccess),
+        acxmlAccess(_acxmlAccess),
+        moduleConfAccess(_moduleConfAccess),
+        acxml(_acxml),
+        moduleConfig(_moduleConfig) {
+    myRuntimeInfo = new runtimeInfo(consoleOn, logOn, logAccess.string(), programname);
+    set_directory_names();
+    read_aircraft_information();
+    if (plotOn) {
+      make_executable_available(gnuAccess, "gnuplot");
+      if (texOn) {
+        make_executable_available(inkAccess, "inkscape");
+      }
+    }
+  }
+
+  /**
+   * \brief Destroy the Runtime I O object
+   *
+   */
+  ~RuntimeIO() {
+    /* Generating info files for in and output */
+    if (infoOn) {
+      generate_io_info();
+      generate_io_gui_info();
+      generate_input_xml();
+      generate_output_xml();
+    }
+
+    /* Copy plot files from tool directories to io plot directories */
+    if (plotCopyOn && plotOn) {
+      myRuntimeInfo->debug << "Copy plotting files from " << getCsvFilesDirTool() << " to " << getCsvFilesDir()
+                           << std::endl;
+      copyFiles(getCsvFilesDirTool(), getCsvFilesDir());
+      myRuntimeInfo->debug << "Copy plotting files from " << getPlotFilesDirTool() << " to " << getPlotFilesDir()
+                           << std::endl;
+      copyFiles(getPlotFilesDirTool(), getPlotFilesDir());
+    }
+
+    /* Delete plotting tool directories */
+    if (plotDeleteOn && plotOn) {
+      myRuntimeInfo->debug << "Delete directory " << getCsvFilesDirTool() << std::endl;
+      deleteDirectory(getCsvFilesDirTool());
+      myRuntimeInfo->debug << "Delete directory " << getPlotFilesDirTool() << std::endl;
+      deleteDirectory(getPlotFilesDirTool());
+    }
+    delete myRuntimeInfo;
+  }
+
+  /**
+   * \brief Show runtimeinfo informations from <...>_conf.xml
+   *
+   */
+  void show_runtime() {
+    myRuntimeInfo->out << "[MODULE RUNTIMEINFO] - " << programname << "" << std::endl;
+    myRuntimeInfo->out << "   [CONSOLE  ] - " << (consoleOn > 0 ? "[ON]" : "[OFF]") << std::endl;
+    myRuntimeInfo->out << "   [LOG      ] - " << (logOn > 0 ? "[ON]" : "[OFF]") << std::endl;
+    myRuntimeInfo->out << "   [PLOT     ] - " << (plotOn > 0 ? "[ON]" : "[OFF]") << std::endl;
+    myRuntimeInfo->out << "      [COPY  ] - " << (plotCopyOn > 0 ? "[ON]" : "[OFF]") << std::endl;
+    myRuntimeInfo->out << "      [DELETE] - " << (plotCopyOn > 0 ? "[ON]" : "[OFF]") << std::endl;
+    myRuntimeInfo->out << "   [REPORT   ] - " << (reportOn > 0 ? "[ON]" : "[OFF]") << std::endl;
+    myRuntimeInfo->out << "   [TEX      ] - " << (texOn > 0 ? "[ON]" : "[OFF]") << std::endl;
+    myRuntimeInfo->out << "   [INFOFILES] - " << (infoOn > 0 ? "[ON]" : "[OFF]") << std::endl;
+    myRuntimeInfo->out << "   [GNUPLOT]" << std::endl;
+    myRuntimeInfo->out << "      [PATH    ] - " << (gnuAccess.parent_path().string()) << std::endl;
+    myRuntimeInfo->out << "      [FILENAME] - " << (gnuAccess.filename().string()) << std::endl;
+    myRuntimeInfo->out << "   [INKSCAPE]" << std::endl;
+    myRuntimeInfo->out << "      [PATH    ] - " << (inkAccess.parent_path().string()) << std::endl;
+    myRuntimeInfo->out << "      [FILENAME] - " << (inkAccess.filename().string()) << std::endl;
+    myRuntimeInfo->out << "   [LOGFILE]" << std::endl;
+    myRuntimeInfo->out << "      [PATH    ] - " << (logAccess.parent_path().string()) << std::endl;
+    myRuntimeInfo->out << "      [FILENAME] - " << (logAccess.filename().string()) << std::endl;
+    myRuntimeInfo->out << "   [IO/ACXML]" << std::endl;
+    myRuntimeInfo->out << "      [PATH    ] - " << (acxmlAccess.parent_path().string()) << std::endl;
+    myRuntimeInfo->out << "      [FILENAME] - " << (acxmlAccess.filename().string()) << std::endl;
+    myRuntimeInfo->out << "   [MODCONFIG]" << std::endl;
+    myRuntimeInfo->out << "      [PATH    ] - " << (moduleConfAccess.parent_path().string()) << std::endl;
+    myRuntimeInfo->out << "      [FILENAME] - " << (moduleConfAccess.filename().string()) << std::endl;
+  }
+
+  /**
+   * \brief Plots directories with by key values
+   *
+   */
+  void show_directories() {
+    for (auto const& directory : directories) {
+      myRuntimeInfo->out << "[" << directory.first << "] - " << directory.second << std::endl;
+    }
+  }
+
+  /* Get strings from directories */
+  std::string getIODir() { return get_directory(std::string("ACXML")).parent_path().string(); }
+  std::string getGeometryDir() { return get_directory(std::string("GEOMETRY")).parent_path().string(); }
+  std::string getAirfoilDataDir() { return get_directory(std::string("AIRFOILDATA")).parent_path().string(); }
+  std::string getAeroDataDir() { return get_directory(std::string("AERODATA")).parent_path().string(); }
+  std::string getEngineDataDir() { return get_directory(std::string("ENGINEDATA")).parent_path().string(); }
+  std::string getMissionDataDir() { return get_directory(std::string("MISSIONDATA")).parent_path().string(); }
+  std::string getReportDir() { return get_directory(std::string("REPORT")).parent_path().string(); }
+  std::string getTexDir() { return get_directory(std::string("TEX")).parent_path().string(); }
+  std::string getHtmlDir() { return get_directory(std::string("HTML")).parent_path().string(); }
+  std::string getXmlDir() { return get_directory(std::string("XML")).parent_path().string(); }
+  std::string getPlotDir() { return get_directory(std::string("PLOT")).parent_path().string(); }
+  std::string getCsvFilesDir() { return get_directory(std::string("CSVFILES")).parent_path().string(); }
+  std::string getCsvFilesDirTool() { return get_directory(std::string("CSVFILESTOOL")).parent_path().string(); }
+  std::string getPlotFilesDir() { return get_directory(std::string("PLOTFILES")).parent_path().string(); }
+  std::string getPlotFilesDirTool() { return get_directory(std::string("PLOTFILESTOOL")).parent_path().string(); }
+  std::string getLogFilesDir() { return get_directory(std::string("LOGFILES")).parent_path().string(); }
+
+  /**
+   * \brief Create a Geometry dir if not existent
+   *
+   */
+  void createGeometryDir() { create_directory("GEOMETRY"); }
+
+  /**
+   * \brief Create a AirfoilData dir if not existent
+   *
+   */
+  void createAirfoilDataDir() { create_directory("AIRFOILDATA"); }
+
+  /**
+   * \brief Create a Aero Data dir if not existent
+   *
+   */
+  void createAeroDataDir() { create_directory("AERODATA"); }
+
+  /**
+   * \brief Create a Engine Data dir if not existent
+   *
+   */
+  void createEngineDataDir() { create_directory("ENGINEDATA"); }
+
+  /**
+   * \brief Create a Mission Data dir if not existent
+   *
+   */
+  void createMissionDataDir() { create_directory("MISSIONDATA"); }
+
+  /**
+   * \brief Check if file exists by directory string and file string
+   *
+   * \param dir directory where file should be
+   * \param file file to check for
+   * \return true
+   * \return false
+   */
+  bool checkFileExistence(const std::string& dir, const std::string& file) {
+    return fs::exists(fs::path(dir).append(file));
+  }
+
+  /**
+   * \brief Check if file exists by path
+   *
+   * \param path path with file included
+   * \return true
+   * \return false
+   */
+  bool checkFileExistence(fs::path path) { return fs::exists(path); }
+
+  /**
+   * \brief Check whether gnuplot is found in the system
+   *
+   * \return true successful gnuplot call
+   * \return false failed gnuplot call
+   */
+  bool is_executable_available(const std::string& executable) {
+    bool is_available = false;
+#ifdef _WIN32
+    is_available = std::system(std::format("where \"{}\" >NUL 2>&1", executable).c_str()) == 0;
+#else
+    is_available = std::system(std::format("which \"{}\" >/dev/null 2>&1", executable).c_str()) == 0;
+#endif
+    myRuntimeInfo->debug << std::format("{} ... {}", executable, is_available ? "is available" : "is not available")
+                         << std::endl;
+    return is_available;
+  }
+
+  void make_executable_available(const fs::path& executable_directory_path, const std::string& executable) {
+    // Check if executable is already available?
+    if (is_executable_available(executable)) {
+      return;
+    }
+
+#ifdef _WIN32
+    // Get a mutable copy of the path to make preferred
+    auto preferred_executable{executable_directory_path};
+    std::string path = preferred_executable.string();
+
+    // Retrieve current environment variable
+    constexpr DWORD buffer_size = 32767;
+    WCHAR path_buffer[buffer_size]; // NOLINT
+
+    // Read current environment variable
+    DWORD path_size = GetEnvironmentVariableW(L"Path", path_buffer, buffer_size);
+    if (path_size == 0) {
+      throwError(__FILE__, __func__, __LINE__, "Could not retrieve Environmentvariable!\n");
+    }
+    std::wstring current_path(path_buffer, path_size);
+
+    // Append new path to current path
+    std::wstring wide_path = current_path + L";" + std::wstring(path.begin(), path.end());
+    // Add executable path to local path variable - only current execution scope
+    if (!SetEnvironmentVariableW(L"Path", wide_path.c_str())) {
+      myRuntimeInfo->err << std::format("Failed to set environment variable for {}", executable) << std::endl;
+    }
+    // Check again if executable can be found - if not -> wrong
+    if (!is_executable_available(executable)) {
+      throwError(__FILE__, __func__, __LINE__, std::format("Could not find path to {} at path {}!", executable, path));
+    }
+    return;
+#else
+    /* Reaches throw on non windows machines - installatino of gnuplot or inkscape via package manager mandatory on unix systems */
+    throwError(__FILE__, __func__, __LINE__, std::format("Unix users are supposed to have {} installed via package manager!", executable));
+#endif
+  }
+
+  /**
+   * \brief Create a common directories
+   *
+   */
+  void create_common_directories() {
+    check_and_create_directory("REPORT", reportOn || texOn || plotOn || logOn);
+    check_and_create_directory("TEX", texOn || plotOn || logOn);
+    check_and_create_directory("HTML", reportOn);
+    check_and_create_directory("PLOT", plotOn);
+    check_and_create_directory("CSVFILES", plotOn);
+    check_and_create_directory("CSVFILESTOOL", plotOn);
+    check_and_create_directory("PLOTFILES", plotOn);
+    check_and_create_directory("PLOTFILESTOOL", plotOn);
+    check_and_create_directory("LOGFILES", logOn);
+  }
+
+  /**
+   * \brief Adding directory to directories
+   *
+   * \param key Key for directory - will be transformed to uppercase letters
+   * \param path std::string path
+   */
+  void add_directory(const std::string& key, const std::string& path) {
+    fs::path tmp(path + "/");
+    add_directory(key, tmp);
+  }
+
+  /**
+   * \brief Adding directory to directories
+   *
+   * \param key Key for directory - will be transformed to uppercase letters
+   * \param newDir fs::path path
+   */
+  void add_directory(std::string key, fs::path newDir) {
+    std::transform(key.cbegin(), key.cend(), key.begin(), [](unsigned char c) { return std::toupper(c); });
+    if (directories.find(key) != directories.end()) {
+      myRuntimeInfo->out << "Key already exist! No further operations" << std::endl;
+      return;
+    }
+    myRuntimeInfo->out << "Add directory with key [" << key << "]" << newDir.parent_path().string() << std::endl;
+    directories.insert(std::make_pair(key, newDir));
+    create_directory(key);
+  }
+
+  /**
+   * \brief Reopen the Aircraft XML File assigned to acxml node
+   *
+   */
+  void reopenAcXML() { acxml = aixml::openDocument(acxmlAccess.string()); }
+
+  /**
+   * \brief Saves Aircraft XML File with ownToolLevel (see rtIO variable)
+   *
+   */
+  void saveAcXML() { aixml::saveDocument(acxml, ownToolLevel); }
+
+  /**
+   * \brief Closes Aircraft XML File with ownToolLevel (see rtIO variable)
+   *
+   */
+  void closeAcXML() { aixml::closeDocument(acxml); }
+
+  /**
+   * \brief Saves and closes Aircraft XML File with ownToolLevel (see rtIO variable)
+   *
+   */
+  void saveAndCloseAcXML() {
+    saveAcXML();
+    closeAcXML();
+  }
+
+  /**
+   * \brief Saves ModuleConfig XML File
+   *
+   */
+  void saveModuleConfig() { aixml::saveDocument(moduleConfig); }
+
+  /**
+   * \brief Closes ModuleConfig XML File
+   *
+   */
+  void closeModuleConfig() { aixml::closeDocument(moduleConfig); }
+
+  /**
+   * \brief Saves and closes ModuleConfig XML File
+   *
+   */
+  void saveAndCloseModuleConfig() {
+    saveModuleConfig();
+    closeModuleConfig();
+  }
+
+  /**
+   * \brief Returns aircraft type
+   *
+   * \return std::string&
+   */
+  [[nodiscard]] const std::string& aircraft_type() const { return aircraft_type_; }
+
+  /**
+   * \brief Returns aircraft model
+   *
+   * \return std::string&
+   */
+  [[nodiscard]] const std::string& aircraft_model() const { return aircraft_model_; }
+
+  /**
+   * \brief Returns aircraft configuration type
+   *
+   * \return std::string&
+   */
+  [[nodiscard]] const std::string& aircraft_configuration_type() const { return aircraft_configuration_type_; }
+
+  /**
+   *  \brief Returns wether aerodynamic technologies are integrated
+   *
+   *  \return std::string&
+   */
+  [[nodiscard]] const std::string& aerodynamic_technologies() const {return aerodynamic_technologies_; }
+
+  /**
+   * Returns aircraft energy carrier type
+   *
+   * \return  std::string&     possible energy carriers - if multiple carriers in use -> hybrid
+   */
+  [[nodiscard]] const std::string& aircraft_energy_carrier_type() const { return aircraft_energy_carrier_type_; }
+
+  /**
+   * \brief Return map of used energy carriers and occurence
+   * \return std::map<int, std::tuple<std::string, double, double, double>>& energy carrier ID, tuple(fuel type, density, volumetric energy density, gravimetric energy density)
+   */
+  [[nodiscard]] const std::map<int, std::tuple<std::string, double>>& aircraft_energy_carriers() const { return aircraft_energy_carriers_; }
+
+  /**
+   * Returns map of propulsor parents and number of propulsors mounted to this parent
+   *
+   * \return  std::map<std::string, int>& map of propulsor parents including number of mounts per parent
+   */
+  [[nodiscard]] const std::map<std::string, int>& aircraft_propulsor_parents() const { return aircraft_propulsor_parents_; }
+
+
+  /**
+   * \brief Returns the fuel name of a given energy carrier ID from the aircraft XML
+   * \param energy_carrier_id: energy carrier ID of the fuel
+   * \return std::string for the density name
+   */
+  [[nodiscard]] const std::string& get_fuel_type(int energy_carrier_id) const {
+    check_energy_carrier_id_(energy_carrier_id);
+    return std::get<0>(aircraft_energy_carriers_.at(energy_carrier_id));
+  }
+
+  /**
+   * \brief Returns the fuel density of a given energy carrier ID from the aircraft XML
+   * \param energy_carrier_id: energy carrier ID of the fuel
+   * \return double value of the density [kg/m^3]
+   */
+  [[nodiscard]] double get_fuel_density(int energy_carrier_id) const {
+    check_energy_carrier_id_(energy_carrier_id);
+    return std::get<1>(aircraft_energy_carriers_.at(energy_carrier_id));
+  }
+
+ public:
+  const std::string programname;
+  const std::string toolVersion;
+  const modi consoleOn;
+  const modi logOn;
+  mutable bool plotOn;
+  bool plotCopyOn;
+  bool plotDeleteOn;
+  const bool reportOn;
+  const bool texOn;
+  const bool infoOn;
+  const int ownToolLevel;
+  const fs::path gnuAccess;
+  const fs::path inkAccess;
+  const fs::path logAccess;
+  const fs::path acxmlAccess;
+  const fs::path moduleConfAccess;
+  node& acxml;
+  const node& moduleConfig;
+
+ private:
+  std::map<std::string, fs::path> directories;
+  std::string aircraft_type_;
+  std::string aircraft_model_;
+  std::string aircraft_configuration_type_;
+  std::string aerodynamic_technologies_;
+  std::string aircraft_energy_carrier_type_;
+  std::map<int, std::tuple<std::string, double>> aircraft_energy_carriers_;
+  std::map<std::string, int> aircraft_propulsor_parents_;
+
+  /**
+   * \brief Set common Directory Names
+   *
+   */
+  void set_directory_names() {
+    directories.insert(std::make_pair("ACXML", acxmlAccess));
+    directories.insert(std::make_pair("GEOMETRY", fs::path(getIODir() + "/geometry_data/")));
+    directories.insert(std::make_pair("AIRFOILDATA", fs::path(getGeometryDir() + "/airfoil_data/")));
+    directories.insert(std::make_pair("AERODATA", fs::path(getIODir() + "/aero_data/")));
+    directories.insert(std::make_pair("ENGINEDATA", fs::path(getIODir() + "/engine_data/")));
+    directories.insert(std::make_pair("MISSIONDATA", fs::path(getIODir() + "/mission_data/")));
+    directories.insert(std::make_pair("REPORT", fs::path(getIODir() + "/reporting/")));
+    directories.insert(std::make_pair("TEX", fs::path(getReportDir() + "/report_tex/")));
+    directories.insert(std::make_pair("HTML", fs::path(getReportDir() + "/report_html/")));
+    directories.insert(std::make_pair("XML", fs::path(getReportDir() + "/report_xml/")));
+    directories.insert(std::make_pair("PLOT", fs::path(getReportDir() + "/plots/")));
+    directories.insert(std::make_pair("CSVFILES", fs::path(getPlotDir() + "/csv_files/")));
+    directories.insert(std::make_pair("CSVFILESTOOL", fs::path("./csv_files/")));
+    directories.insert(std::make_pair("PLOTFILES", fs::path(getPlotDir() + "/plt_files/")));
+    directories.insert(std::make_pair("PLOTFILESTOOL", fs::path("./plt_files/")));
+    directories.insert(std::make_pair("LOGFILES", fs::path(getReportDir() + "/log_files/")));
+  }
+
+  /**
+   * \brief Creates a directory if not existent
+   *
+   * \param key directories map key value
+   * \return true
+   * \return false
+   */
+  bool create_directory(const std::string& key) { return check_and_create_directory(key, true); }
+
+  /**
+   * \brief Checks if directory exist
+   *
+   * \param key directories map key value
+   * \return true
+   * \return false
+   */
+  bool check_directory(const std::string& key) {
+    myRuntimeInfo->out << "Checking directory... [" << key << "]" << std::endl;
+    return !fs::exists(get_directory(key));
+  }
+
+  /**
+   * \brief Checks and creates a directory if not existent. Do only if flag is true otherwise do nothing and return
+   * false
+   *
+   * \param key directories map key value
+   * \param flags Do check and create
+   * \return true
+   * \return false
+   */
+  bool check_and_create_directory(const std::string& key, bool flags) {
+    if (!flags) {
+      return false;
+    }
+    if (check_directory(key)) {
+      myRuntimeInfo->out << "Creating directory... [" << key << "]" << std::endl;
+      return fs::create_directories(get_directory(key));
+    }
+    return true;
+  }
+
+  /**
+   * \brief Get the directory fs::path value from selected key
+   *
+   * \param key directories map key value
+   * \return fs::path directory path
+   */
+  fs::path get_directory(const std::string& key) { return directories[key]; }
+
+  /**
+   * \brief Generates IO XML Files based on global node element in node class at each read/write operation
+   *
+   * \param variablesVector Vector with list of read or written elements using the node class
+   * \param direction "input" or "output"
+   */
+  void generate_io_xml_file(std::vector<std::string> variablesVector, const std::string& direction) {
+    std::ofstream plotStream;
+    std::string plotDataFile;
+    std::string filePostfix;
+    if (direction == "input") {
+      filePostfix = "_inputs.xml";
+    } else if (direction == "output") {
+      filePostfix = "_outputs.xml";
+    }
+    plotDataFile = programname + filePostfix;
+    plotStream.open(plotDataFile.c_str());
+    std::string programInputTag("ExchangeData");
+    plotStream << "<" << programInputTag << "></" << programInputTag << ">";
+    plotStream.close();
+    const node& inXML = aixml::openDocument(programname + filePostfix);
+    std::string xmlFile = variablesVector.at(0).substr(0, variablesVector.at(0).rfind(".xml/")) + ".xml";
+    node currentInputNode = aixml::openDocument(xmlFile);
+    for (uint32_t i(0); i < variablesVector.size(); i++) {
+      std::string polarFileString = "_polar.xml";  // Special case: skip _polar xml file
+      std::size_t found =
+          (variablesVector.at(i).substr(0, variablesVector.at(i).rfind(".xml/")) + ".xml").find(polarFileString);
+      if (found != std::string::npos) {
+        continue;
+      }
+      // If the read file is the same as from the previous iteration, use old node. Otherwise open new node.
+      if (xmlFile != variablesVector.at(i).substr(0, variablesVector.at(i).rfind(".xml/")) + ".xml") {
+        xmlFile = variablesVector.at(i).substr(0, variablesVector.at(i).rfind(".xml/")) + ".xml";
+        myRuntimeInfo->debug << ".. read " << xmlFile << std::endl;
+        currentInputNode = aixml::openDocument(xmlFile);
+      }
+      std::string ithXmlFile = (variablesVector.at(i).substr(0, variablesVector.at(i).find(".xml/")));
+      ithXmlFile = ithXmlFile + ".xml";
+      std::string resPath = variablesVector.at(i).substr(variablesVector.at(i).find(ithXmlFile) + ithXmlFile.size(),
+                                                         variablesVector.at(i).size());
+      std::vector<std::string> tmpElements;
+      std::vector<std::string> tmpPathElements = tokenize(resPath, "/");
+      for (uint16_t k(0); k < tmpPathElements.size(); k++) {
+        tmpElements.push_back(tmpPathElements.at(k));
+      }
+      std::vector<node> elementNodes;
+      std::string accumulatedPath = "";
+      std::vector<std::string> accumulatedPaths;
+      std::string currentElement;
+      std::string parentElement = programInputTag;
+      for (uint16_t j = 0; j < tmpElements.size(); j++) {
+        std::string accumulatedPath_old = accumulatedPath;
+        accumulatedPath = accumulatedPath + "/" + tmpElements.at(j);
+        /*TODO(aigner#1#05/10/21): CAUTION! The following lines are only a quick fix.
+        Tools that change the aircraft XML file before the toolOutput, could cause problems, because initially read xml
+        elements could have been deleted.*/
+        if (!currentInputNode.find(accumulatedPath, 1)) {
+          std::vector<std::string> tmpElement_tokenized = tokenize(tmpElements.at(j), "@");
+          std::string elementName = tmpElement_tokenized.at(0);
+          node& childNode = currentInputNode.at(accumulatedPath_old).appendChild(elementName, true);
+          if (tmpElement_tokenized.size() > 1) {
+            std::vector<std::string> attribute_tokenized = tokenize(tmpElement_tokenized.at(1), "=");
+            std::string attributeName = attribute_tokenized.at(0);
+            std::string attributeValue = attribute_tokenized.at(1);
+            childNode.addAttrib(attributeName, attributeValue);
+          }
+        }
+        elementNodes.push_back(currentInputNode.at(accumulatedPath));
+        elementNodes.back().deleteChildren();
+        std::map<std::string, std::string> currentAttribMap = elementNodes.back().getAttribMap();
+        std::map<std::string, std::string>::iterator it;
+        for (it = currentAttribMap.begin(); it != currentAttribMap.end(); ++it) {
+          if (!compareStrings(it->first, "ID", true) && !compareStrings(it->first, "uID", true) &&
+              !compareStrings(it->first, "Name", true) && !compareStrings(it->first, "name", true)) {
+            elementNodes.back().deleteAttrib(it->first);
+          } else {
+            myRuntimeInfo->debug << "... Keeping " << it->first << ": " << it->second << std::endl;
+          }
+        }
+        if (currentAttribMap.count("Name")) {
+          accumulatedPath = accumulatedPath + "@Name=" + currentAttribMap.at("Name");
+          myRuntimeInfo->debug << "... Found Name tag at: " << accumulatedPath << std::endl;
+        }
+        accumulatedPaths.push_back(accumulatedPath);
+        currentElement = programInputTag + accumulatedPaths.at(j);
+        if (!inXML.find(currentElement, 1) && inXML.find(parentElement, 1)) {
+          if (j == (tmpElements.size() - 1)) {
+            inXML.at(parentElement).appendChild(elementNodes.at(j));
+            parentElement = programInputTag;
+          } else {
+            inXML.at(parentElement).appendChild(elementNodes.at(j));
+            parentElement = currentElement;
+          }
+        } else {
+          parentElement = currentElement;
+        }
+      }
+    }
+    aixml::saveDocument(inXML);
+    aixml::closeDocument(inXML);
+  }
+
+  /**
+   * \brief Generates info file <programname>_IOinfo.txt with information on read/written elements from node class
+   *
+   */
+  void generate_io_info() {
+    myRuntimeInfo->out << "Generating IO XML access file for module: " << programname << " in "
+                       << programname + "_IOinfo.txt ..." << std::endl;
+    std::ofstream ioInfo(programname + "_IOinfo.txt", std::ofstream::out);
+    if (ioInfo.is_open()) {
+      ioInfo << "Input:" << std::endl;
+      ioInfo << "==================================================================================" << std::endl;
+      for (size_t i = 0; i < node::input.size(); i++) {
+        ioInfo << node::input.at(i) << std::endl;
+      }
+      ioInfo << std::endl;
+      ioInfo << "Output:" << std::endl;
+      ioInfo << "==================================================================================" << std::endl;
+      for (size_t i = 0; i < node::output.size(); i++) {
+        ioInfo << node::output.at(i) << std::endl;
+      }
+      ioInfo.close();
+    } else {
+      myRuntimeInfo->err << "Could not open: " << programname << "_IOinfo.txt! File not written." << std::endl;
+    }
+  }
+
+  /**
+   * \brief Generate IO GUI Info in xml readable format for input and output from node class
+   *
+   */
+  void generate_io_gui_info() {
+    myRuntimeInfo->out << "Generating IO XML access file for module: " << programname << " in "
+                       << programname + "_guiSettings.xml ..." << std::endl;
+    std::ofstream ioGUIInfo(programname + "_guiSettings.xml", std::ofstream::out);
+    if (ioGUIInfo.is_open()) {
+      ioGUIInfo << "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>" << std::endl
+                << "<!DOCTYPE ModulSettings []>" << std::endl
+                << "<ModulSettings>" << std::endl
+                << "    <TapSetup>" << std::endl
+                << "        <FrontPage TapName=\"Beschreibung\"><![CDATA[" << programname << "]]></FrontPage>"
+                << std::endl
+                << "        <Plot TapName=\"Report\"><![CDATA["
+                << "reportHTML" << FILESEPERATOR << programname << "_report.html]]></Plot>" << std::endl
+                << "        <Values TapName=\"Werte\">" << std::endl;
+      for (size_t i(0); i < node::input.size(); i++) {
+        ioGUIInfo << "            <Input>" << node::input.at(i) << "</Input>" << std::endl;
+      }
+      for (size_t i(0); i < node::output.size(); i++) {
+        ioGUIInfo << "            <Output>" << node::output.at(i) << "</Output>" << std::endl;
+      }
+      ioGUIInfo << "        </Values>" << std::endl << "    </TapSetup>" << std::endl << "</ModulSettings>";
+      ioGUIInfo.close();
+    } else {
+      myRuntimeInfo->err << "Could not open: " << programname << "_guiSettings.xml! File not written." << std::endl;
+    }
+  }
+
+  /**
+   * \brief Generates IO XML Files based on global node element in node class at each read/write operation
+   *
+   * \param direction "input" or "output"
+   */
+  void generate_io_xml(const std::string& direction) {
+    myRuntimeInfo->out << "Writing " << direction << "-Files ..." << std::endl;
+    try {
+      if (direction.compare("input") == 0 && node::input.size() > 0) {
+        generate_io_xml_file(node::input, direction);
+      } else if (direction.compare("output") == 0 && node::output.size() > 0) {
+        generate_io_xml_file(node::output, direction);
+      }
+    } catch (std::exception& ex) {
+      std::exception_ptr p = std::current_exception();
+      myRuntimeInfo->err << ex.what() << std::endl;  // (p ? p.__cxa_exception_type()->name() : "null") << std::endl;
+      myRuntimeInfo->warn << "No _" << direction << ".xml file will be written." << std::endl;
+    }
+  }
+
+  /**
+   * \brief Generates Input XML file based on node::input in node class
+   *
+   */
+  void generate_input_xml() { generate_io_xml("input"); }
+
+  /**
+   * \brief Generates Input XML file based on node::output in node class
+   *
+   */
+  void generate_output_xml() { generate_io_xml("output"); }
+
+  /**
+   * \brief Check if the given energy carrier ID can be found within the aircraft xml
+   * \param energy_carrier_id: energy carrier ID of the fuel
+   */
+  void check_energy_carrier_id_(int energy_carrier_id) const {
+    if (aircraft_energy_carriers_.find(energy_carrier_id) != aircraft_energy_carriers_.end()) {
+        return;
+    } else {
+        throwError(__FILE__, __func__, __LINE__, std::format("Given energy carrier ID {} cannot be found in the aircraft xml!", energy_carrier_id));
+    }
+  }
+
+  /**
+   * \brief Read aicraft information from aircraft_exchange_file
+   *
+   */
+  void read_aircraft_information() {
+    aircraft_type_ =
+        static_cast<std::string>(acxml.at("aircraft_exchange_file/requirements_and_specifications/general/type/value"));
+    aircraft_model_ = static_cast<std::string>(
+        acxml.at("aircraft_exchange_file/requirements_and_specifications/general/model/value"));
+    aircraft_configuration_type_ = static_cast<std::string>(acxml.at(
+        "aircraft_exchange_file/requirements_and_specifications/design_specification/configuration/configuration_type/value"));
+
+    // Read aerodynamic_technologies
+    aerodynamic_technologies_ = static_cast<std::string>(acxml.at(
+        "aircraft_exchange_file/requirements_and_specifications/design_specification/configuration/aerodynamic_technologies/"
+        "value"));
+
+    // Read energy carrier information
+    std::vector<node*> energy_carriers = acxml.getVector(
+        "aircraft_exchange_file/requirements_and_specifications/design_specification/energy_carriers/energy_carrier", 1);
+
+    for (auto ec : energy_carriers) {
+      // Add energy carriers to aircraft energy carrier list
+      aircraft_energy_carriers_[ec->getIntAttrib("ID")] = std::tuple(static_cast<std::string>(ec->at("type/value")),
+                                                                     static_cast<double>(ec->at("density/value")));
+    }
+
+    // Read propulsion information from acxml
+    std::vector<node*> propulsors = acxml.getVector(
+        "aircraft_exchange_file/requirements_and_specifications/design_specification/propulsion/propulsor", 1);
+
+    for (auto propulsor : propulsors) {
+      // List propulsor parents and count
+      aircraft_propulsor_parents_[static_cast<std::string>(propulsor->at("position/parent_component/value"))]++;
+    }
+
+    // If aircraft energy carriers have more than one carrier -> set energy carrier type to hybrid - else set to first
+    // item
+    if (aircraft_energy_carriers_.size() > 1) {
+      aircraft_energy_carrier_type_ = "hybrid";
+    } else {
+      aircraft_energy_carrier_type_ = std::get<0>(aircraft_energy_carriers_[0]);
+    }
+  }
+};
+
+#endif  // MODULEBASICS_INCLUDE_MODULEBASICS_RUNTIMEIO_H_
diff --git a/moduleBasics/include/moduleBasics/strategySelector.h b/moduleBasics/include/moduleBasics/strategySelector.h
new file mode 100644
index 00000000..9369b49c
--- /dev/null
+++ b/moduleBasics/include/moduleBasics/strategySelector.h
@@ -0,0 +1,214 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef MODULEBASICS_INCLUDE_MODULEBASICS_STRATEGYSELECTOR_H_
+#define MODULEBASICS_INCLUDE_MODULEBASICS_STRATEGYSELECTOR_H_
+
+#include <moduleBasics/runtimeIO.h>
+#include <memory>
+#include <utility>
+#include <stdexcept>
+
+/**
+ * \brief Base Strategy class with pure virtual implementation
+ *
+ */
+class Strategy {
+ public:
+    /**
+     * \brief Initialize your strategy (read your configuration information and data)
+     *
+     */
+    virtual void initialize() = 0;
+
+    /**
+     * \brief Run your strategy (add your algorithms here)
+     *
+     */
+    virtual void run() = 0;
+
+    /**
+     * \brief Update values in aircraft xml via your module data methods (update(...) or update...(...))
+     *
+     */
+    virtual void update() = 0;
+
+    /**
+     * \brief Define and generate plots, define and generate reports
+     *
+     */
+    virtual void report() = 0;
+
+    /**
+     * \brief Save module specific xml's if necessary (do not close acxml or moduleconfig node) from RuntimeIO object
+     *
+     */
+    virtual void save() = 0;
+
+    /**
+     * \brief Destroy the Strategy object
+     *
+     */
+    virtual ~Strategy() {}
+};
+
+using strategyptr = std::unique_ptr<Strategy>(const std::shared_ptr<RuntimeIO>&);
+using strategyaccess = std::function<strategyptr>;
+
+/**
+ * \brief Strategy selector class for strategies class
+ *
+ */
+class StrategySelector {
+ public:
+    /**
+     * \brief Register a strategy object
+     * \param S Strategy to associate with path
+     * \param path Path to the associated strategy S as a vector of strings (ordered)
+     */
+    template<typename S>
+    void registerStrategy(const std::vector<std::string>& path) {
+        /* Check if path is available */
+        Node* current = &root;
+        try {
+            if (path.empty()) {
+                throw std::invalid_argument("Path is empty!");
+            }
+            /* Initialize current as root */
+
+            /* Loop over all elements of the tree */
+            for (const std::string& level : path) {
+                if (current->children.find(level) == current->children.end()) {
+                    current->children[level] = Node();
+                }
+                current = &current->children[level];
+            }
+
+            /* Check if strategy already registered */
+            if (current->strategy != nullptr) {
+                throw std::invalid_argument("Strategy already registered!");
+            }
+        }
+        catch(std::exception& ex) {
+            std::cerr << ex.what() << std::endl;
+            exit(1);
+        }
+        /* Store a lambda that creates an instance of the wanted strategy which inherits from a strategy */
+        current->strategy = [](const std::shared_ptr<RuntimeIO>& arg) -> std::unique_ptr<Strategy> {
+            return std::make_unique<S>(arg);
+        };
+    }
+
+    /**
+     * \brief Set Strategy object
+     *
+     * \param path - vector of strings which defines the path to the wanted strategy
+     * \param arg  - RuntimeIO shared pointer object reference
+     */
+    void setStrategy(const std::vector<std::string>& path, const std::shared_ptr<RuntimeIO>& arg) {
+
+        const Node* current = &root;
+        /* Loop over path */
+        try {
+            for (const std::string& level : path) {
+                auto it = current->children.find(level);
+                /* If strategy not in tree */
+                if (it == current->children.end()) {
+                    throw std::invalid_argument("Strategy does not exist. Abort!");
+                }
+                /* Set child to current */
+                current = &it->second;
+            }
+            /* Path exists but no strategy is set */
+            if (!current->strategy) {
+                throw std::invalid_argument("No strategy registered for the specified route. Abort!");
+            }
+        }
+        catch(std::exception& ex) {
+            std::cerr << ex.what() << std::endl;
+            exit(1);
+        }
+        /* Set strategy to selected by path with arg */
+        strategy_ = std::move(current->strategy(arg));
+    }
+
+    /**
+     * \brief Set the Strategy object
+     *
+     * \param strategy unique pointer of selected strategy
+     */
+    void setStrategy(std::unique_ptr<Strategy> strategy) {
+        strategy_ = std::move(strategy);
+    }
+
+    /**
+     * \brief Run initialize method of strategy
+     *
+     */
+    void initializeStrategy() {
+        strategy_->initialize();
+    }
+
+    /**
+     * \brief Run run method of strategy
+     *
+     */
+    void runStrategy() {
+        strategy_->run();
+    }
+
+    /**
+     * \brief Run update method of strategy
+     *
+     */
+    void updateStrategy() {
+        strategy_->update();
+    }
+
+    /**
+     * \brief Run report method of strategy
+     *
+     */
+    void reportStrategy() {
+        strategy_->report();
+    }
+
+    /**
+     * \brief Save report method of strategy
+     *
+     */
+    void saveStrategy() {
+        strategy_->save();
+    }
+
+ private:
+    struct Node {
+        std::map<std::string, Node> children;
+        strategyaccess strategy;
+    };
+    std::unique_ptr<Strategy> strategy_; /* Selected strategy object by setStrategy */
+    Node root;
+};
+
+
+
+#endif // MODULEBASICS_INCLUDE_MODULEBASICS_STRATEGYSELECTOR_H_
diff --git a/moduleBasics/include/moduleBasics/svg.h b/moduleBasics/include/moduleBasics/svg.h
new file mode 100644
index 00000000..f7ca73f3
--- /dev/null
+++ b/moduleBasics/include/moduleBasics/svg.h
@@ -0,0 +1,654 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef MODULEBASICS_INCLUDE_MODULEBASICS_SVG_H_
+#define MODULEBASICS_INCLUDE_MODULEBASICS_SVG_H_
+
+/* === Includes === */
+#include <ranges>
+#include <algorithm>
+#include <filesystem>
+#include <fstream>
+#include <string>
+#include <string_view>
+#include <tuple>
+
+/* === Functions === */
+namespace svg {
+/**
+ * @brief Represents a 2D coordinate
+ *
+ */
+struct Coordinate {
+    double x{0.0}; /** [m] The x coordinate */
+    double y{0.0}; /** [m] The y coordinate */
+
+    /**
+     * @brief Add a coordinate to another coordinate
+     * 
+     * @param other The other coordinate to add
+     * @return Coordinate The sum of the two coordinates
+     */
+    auto operator+(const Coordinate &other) const -> Coordinate {
+        return {this->x + other.x, this->y + other.y};
+    }
+
+    /**
+     * @brief Subtract a coordinate from another coordinate
+     * 
+     * @param other The other coordinate to subtract
+     * @return Coordinate The difference of the two coordinates
+     */
+    auto operator-(const Coordinate &other) const -> Coordinate {
+        return {this->x - other.x, this->y - other.y};
+    }
+
+    /**
+     * @brief Multiply a coordinate with a scalar
+     * 
+     * @param scalar The scalar to multiply with
+     * @return Coordinate The scaled coordinate
+     */
+    auto operator*(const double scalar) const -> Coordinate {
+        return {this->x * scalar, this->y * scalar};
+    }
+
+    /**
+     * @brief Divide a coordinate by a scalar
+     * 
+     * @param scalar The scalar to divide by
+     * @return Coordinate The scaled coordinate
+     */
+    auto operator/(const double scalar) const -> Coordinate {
+        return {this->x / scalar, this->y / scalar};
+    }
+};
+
+/**
+ * @brief Represents a 2D size
+ */
+struct Size {
+    double width{0.0};  /** [m] The width */
+    double height{0.0}; /** [m] The height */
+
+    /**
+     * @brief Add a size to another size
+     * 
+     * @param other The other size to add
+     * @return Size The sum of the two sizes
+     */
+    auto operator+(const Size &other) const -> Size {
+        return {this->width + other.width, this->height + other.height};
+    }
+
+    /**
+     * @brief Subtract a size from another size
+     * 
+     * @param other The other size to subtract
+     * @return Size The difference of the two sizes
+     */
+    auto operator-(const Size &other) const -> Size {
+        return {this->width - other.width, this->height - other.height};
+    }
+
+    /**
+     * @brief Multiply a size with a scalar
+     * 
+     * @param scalar The scalar to multiply with
+     * @return Size The scaled size
+     */
+    auto operator*(const double scalar) const -> Size {
+        return {this->width * scalar, this->height * scalar};
+    }
+
+    /**
+     * @brief Divide a size by a scalar
+     * 
+     * @param scalar The scalar to divide by
+     * @return Size The scaled size
+     */
+    auto operator/(const double scalar) const -> Size {
+        return {this->width / scalar, this->height / scalar};
+    }
+};
+
+/* === Operator* overloads for double === */
+auto operator*(const double scalar, const Coordinate &coord) -> Coordinate {
+    return coord * scalar;
+};
+
+auto operator*(const double scalar, const Size &size) -> Size {
+    return size * scalar;
+};
+
+namespace Colors {
+/**
+ * @brief The color type
+ */
+using Color_t = std::tuple<uint8_t, uint8_t, uint8_t>;
+
+/* Predefined colors */
+constexpr Color_t None{0, 0, 0}; /** Special construct to catch a none color */
+constexpr Color_t Black{1, 1, 1};
+constexpr Color_t White{255, 255, 255};
+constexpr Color_t Red{255, 0, 0};
+constexpr Color_t Green{0, 255, 0};
+constexpr Color_t Blue{0, 0, 255};
+
+/**
+ * @brief Get the string representation of a color
+ *
+ * @param color The color to convert
+ * @return std::string The hex string representation of the color
+ */
+auto to_string(const Color_t color) -> std::string {
+    /* Catch the none color construct */
+    if (color == None) {
+        return "none";
+    } else if (color == Black) {
+        return "#000000";
+    }
+
+    /* Convert all other colors to a hex string */
+    std::stringstream ss;
+    const int red = std::get<0>(color);
+    const int green = std::get<1>(color);
+    const int blue = std::get<2>(color);
+    ss << "#"
+       << std::hex << std::setfill('0') << std::setw(2) << red
+       << std::hex << std::setfill('0') << std::setw(2) << green
+       << std::hex << std::setfill('0') << std::setw(2) << blue;
+    return ss.str();
+};
+}; // namespace Colors
+
+/**
+ * @brief The base class for all SVG objects.
+ * @details This class defines the base properties of all SVG objects.
+ * It is used as the abstract interface for the svg output stream 
+ * to add objects to the stream.
+ */
+class Object {
+ public:
+    /**
+     * @brief Default constructor
+     */
+    Object() = default;
+
+    /**
+     * @brief Construct a new SVG object with all its base properties.
+     * 
+     * @param color The stroke color of the object.
+     * @param fill_color The fill color of the object.
+     * @param stroke_width The stroke width of the object.
+     */
+    Object(const Colors::Color_t &color, const Colors::Color_t &fill_color, const double stroke_width)
+        : color{color}, fill_color{fill_color}, stroke_width{stroke_width} { }
+
+    /**
+     * @brief Construct a new SVG object with a stroke and fill color.
+     * The stroke width is set to 1.0.
+     * 
+     * @param color The stroke color of the object.
+     * @param fill_color The fill color of the object.
+     */
+    Object(const Colors::Color_t &color, const Colors::Color_t &fill_color)
+        : Object(color, fill_color, 1.0) { }
+
+    /**
+     * @brief Construct a new SVG object with a stroke color.
+     * The fill color is set to none and the stroke width is set to 1.0.
+     * 
+     * @param color The stroke color of the object.
+     */
+    explicit Object(const Colors::Color_t &color)
+        : Object(color, Colors::None, 1.0) { }
+
+    /**
+     * @brief Virtual destructor as this is a base class.
+     * 
+     */
+    virtual ~Object() = default;
+
+    /**
+     * @brief Output the object to the stream.
+     * @attention The scale factor is automatically
+     * calculated by the SVG ostream.
+     *
+     * @param stream The stream to write to.
+     * @param scale How the object coordinates should be scaled.
+     */
+    virtual void to_stream(std::ostream &stream, const double scale) const = 0;
+
+    /**
+     * @brief Get the style string of the object
+     * 
+     * @param custom A custom style string to insert into the style
+     * @return std::string The style string
+     */
+    auto style(const std::string_view custom = "") const -> std::string {
+        std::stringstream ss;
+        ss << "style=\""
+           << "fill:" << Colors::to_string(this->fill_color) << ";"
+           << "stroke:" << Colors::to_string(this->color) << ";"
+           << "stroke-width:" << std::setprecision(2) << this->stroke_width <<";"
+           << custom
+           << "\"";
+        return ss.str();
+    }
+
+ private:
+    Colors::Color_t color{Colors::Black}; /** The stroke color of the object */
+    Colors::Color_t fill_color{Colors::None}; /** The fill color of the object */
+    double stroke_width{1.0}; /** The stroke width of the object */
+};
+
+/**
+ * @brief A line SVG object.
+ *
+ */
+class Line : public Object {
+ public:
+    /**
+     * @brief Construct a new Line object in black.
+     *
+     * @param start The start coordinate of the line.
+     * @param end The end coordinate of the line.
+     */
+    Line(const Coordinate &start, const Coordinate &end)
+        : Object{Colors::Black}, start{start}, end{end} { }
+
+    /** 
+     * @brief Construct a new Line object with a color.
+     * 
+     * @param start The start coordinate of the line.
+     * @param end The end coordinate of the line.
+     * @param color The stroke color of the line.
+     */
+    Line(const Coordinate &start, const Coordinate &end, const Colors::Color_t &color)
+        : Object{color}, start{start}, end{end} { }
+
+    /**
+     * @brief Output the line to the stream.
+     *
+     * @param stream The stream to write to.
+     * @param scale How the line coordinates should be scaled.
+     */
+    void to_stream(std::ostream &stream, const double scale) const override {
+        stream << "<line "
+               << "x1=\"" << scale * this->start.x << "\" "
+               << "y1=\"" << scale * this->start.y << "\" "
+               << "x2=\"" << scale * this->end.x << "\" "
+               << "y2=\"" << scale * this->end.y << "\" "
+               << this->style()
+               << "/>\n";
+    }
+
+ private:
+    Coordinate start;      /** [m] The start coordinate */
+    Coordinate end;        /** [m] The end coordinate */
+};
+
+/**
+ * @brief A text SVG object
+ *
+ */
+class Text : public Object {
+ public:
+    /**
+     * @brief Construct a new Text object with all custom properties
+     * @note The text is centered around the position.
+     * 
+     * @param position The position of the text.
+     * @param text The text to display.
+     * @param color The color of the text. Default is black.
+     * @param font_size The font size of the text. Default is 12.
+     * @param rotation The rotation of the text. Default is 0.
+     */
+    Text(
+        const Coordinate &position,
+        const std::string_view &text,
+        const Colors::Color_t &color = Colors::Black,
+        const int font_size = 12,
+        const double rotation = 0.0)
+        : Object{Colors::None, color}, position{position}, text{text}, font_size{font_size}, rotation{rotation} { }
+
+    /**
+     * @brief Output the text to the stream.
+     *
+     * @param stream The stream to write to.
+     * @param scale How the text coordinates should be scaled.
+     */
+    void to_stream(std::ostream &stream, const double scale) const override {
+        /* Set the additional text attributes */
+        std::stringstream attributes;
+        attributes << "font-size:" << this->font_size << "px;";
+
+        /* Add the transform attribute to the text */
+        std::stringstream transform;
+        transform << std::setprecision(4)
+            << "transform=\"translate(" << scale * this->position.x << "," << scale * this->position.y << ")";
+        if (this->rotation != 0) {
+            transform << " rotate(" << this->rotation << ")";
+        }
+        transform << "\" ";
+
+        /* Write the text to the stream */
+        stream << "<text "
+               << transform.str()
+               << "text-anchor=\"middle\" text-align=\"center\" "
+               << this->style(attributes.str())
+               << ">"
+               << this->text
+               << "</text>\n";
+    }
+
+ private:
+    Coordinate position;   /** [m] The position of the text */
+    std::string_view text; /** The text */
+    int font_size;      /** The font size */
+    double rotation;   /** The rotation of the text */
+};
+
+/**
+ * @brief A ellipse SVG object.
+ *
+ */
+class Ellipse : public Object {
+ public:
+    /**
+     * @brief Construct a new Ellipse object:
+     *
+     * @param center The center of the ellipse.
+     * @param size The width and height of the ellipse.
+     * @param fill_color The fill color of the ellipse. Default is none.
+     */
+    Ellipse(const Coordinate &center, const Size &size, const Colors::Color_t &fill_color = Colors::None)
+        : Object{Colors::Black, fill_color}, center{center}, size{size} { }
+
+    /**
+     * @brief Output the ellipse to the stream.
+     *
+     * @param stream The stream to write to.
+     * @param scale How the ellipse coordinates should be scaled.
+     */
+    void to_stream(std::ostream &stream, const double scale) const override {
+        stream << "<ellipse "
+               << "cx=\"" << scale * this->center.x << "\" "
+               << "cy=\"" << scale * this->center.y << "\" "
+               << "rx=\"" << scale * this->size.height / 2.0 << "\" "
+               << "ry=\"" << scale * this->size.width / 2.0 << "\" "
+               << this->style()
+               << "/>\n";
+    }
+
+ private:
+    Coordinate center;          /** [m] The center of the ellipse */
+    Size size;                  /** [m] The width and height of the ellipse */
+};
+
+/**
+ * @brief A polygon SVG object.
+ * @note The PointRange can be any container whose elements have
+ * the x() and y() member functions.
+ *
+ * @tparam PointRange The range of points that define the polygon.
+ */
+template <std::ranges::input_range PointRange>
+class Polygon : public Object {
+ public:
+    /**
+     * @brief Construct a new Polygon object.
+     *
+     * @param points The point range that defines the polygon.
+     * @param fill_color The fill color of the polygon. Default is none.
+     */
+    Polygon(const PointRange &points, const Colors::Color_t &fill_color = Colors::None) // NOLINT
+        : Object{Colors::Black, fill_color}, points{points} { }
+
+    /**
+     * @brief Output the polygon to the stream.
+     *
+     * @param stream The stream to write to.
+     * @param scale How the polygon coordinates should be scaled.
+     */
+    void to_stream(std::ostream &stream, const double scale) const override {
+        stream << "<polygon "
+               << "points=\"";
+        for (const auto &point : this->points) {
+            stream << scale * point.x() << "," << scale * point.y() << " ";
+        }
+        stream << "\" "
+               << this->style()
+               << "/>\n";
+    }
+
+ private:
+    PointRange points;          /** The points that define the polygon */
+};
+
+/**
+ * @brief A horizontal dimension SVG object
+ * @note This dimension is always horizontal and the
+ * dimension value is derived from `size.width` of the size property.
+ * The `size.height` (positive or negative ) defines the vertical offset
+ * of the dimension line from the given start coordinate.
+ * The start coordinate is the left end of the dimension line.
+ * 
+ */
+class HorizontalDimension : public Object {
+ public:
+    /**
+     * @brief Construct a new Horizontal Dimension object.
+     * 
+     * @param start_left The start coordinate on the left of the dimension line.
+     * @param size The size (width, height) of the dimension line.
+     */
+    HorizontalDimension(const Coordinate &start_left, const Size &size) {
+        /* Get the dimension coordinates */
+        this->start = start_left;
+        this->end = {start_left.x + size.width, start_left.y};
+        this->offset = size.height;
+
+        /* Format the dimension text */
+        std::stringstream ss;
+        ss << std::setprecision(4) << size.width << " m";
+        this->text = ss.str();
+    }
+
+    /**
+     * @brief Output the dimension to the stream.
+     *
+     * @param stream The stream to write to.
+     * @param scale How the dimension coordinates should be scaled.
+     */
+    void to_stream(std::ostream &stream, const double scale) const override {
+        /* Get the dimension lines */
+        const double aux_extension = this->offset > 0 ? 0.2 : -0.2;
+        Line auxiliary_right{this->start, {this->start.x, this->start.y + this->offset + aux_extension}};
+        Line auxiliary_left{this->end, {this->end.x, this->end.y + this->offset + aux_extension}};
+        Line dimension_line{{this->start.x, this->start.y + this->offset}, {this->end.x, this->end.y + this->offset}};
+
+        /* Get the point for the text center */
+        const double text_x = (this->start.x + this->end.x) / 2.0;
+        /* The text center refers to the bottom of the text,
+         * therefore the top and bottom offsets differ.
+         */
+        const double text_y = this->offset > 0 ?
+            this->start.y + this->offset + 0.4 :
+            this->start.y + this->offset - 0.1;
+
+        /* Draw everything */
+        auxiliary_right.to_stream(stream, scale);
+        auxiliary_left.to_stream(stream, scale);
+        dimension_line.to_stream(stream, scale);
+        Text({text_x, text_y}, this->text, Colors::Black, 8).to_stream(stream, scale);
+    }
+
+ private:
+    Coordinate start; /** The start coordinate of the dimension */
+    Coordinate end; /** The end coordinate of the dimension */
+    std::string text; /** Dimension value */
+    double offset; /** The vertical offset of the dimension line */
+};
+
+/**
+ * @brief A vertical dimension SVG object
+ * @note This dimension is always vertical and the
+ * dimension value is derived from `size.height` of the size property.
+ * The `size.width` (positive or negative ) defines the horizontal offset
+ * of the dimension line from the given start coordinate.
+ * The start coordinate is the top end of the dimension line.
+ * 
+ */
+class VerticalDimension : public Object {
+ public:
+    /**
+     * @brief Construct a new Vertical Dimension object.
+     * 
+     * @param start_top The start coordinate of the topside of the dimension line.
+     * @param size The size (width, height) of the dimension line.
+     */
+    VerticalDimension(const Coordinate &start_top, const Size &size) {
+        /* Get the dimension coordinates */
+        this->start = start_top;
+        this->end = {start_top.x, start_top.y + size.height};
+        this->offset = size.width;
+
+        /* Format the dimension text */
+        std::stringstream ss;
+        ss << std::setprecision(4) << size.height << " m";
+        this->text = ss.str();
+    }
+
+    /**
+     * @brief Output the dimension to the stream.
+     *
+     * @param stream The stream to write to.
+     * @param scale How the dimension coordinates should be scaled.
+     */
+    void to_stream(std::ostream &stream, const double scale) const override {
+        /* Get the dimension lines */
+        const double aux_extension = this->offset > 0 ? 0.2 : -0.2;
+        Line auxiliary_top{this->start, {this->start.x + this->offset + aux_extension, this->start.y}};
+        Line auxiliary_bottom{this->end, {this->end.x + this->offset + aux_extension, this->end.y}};
+        Line dimension_line{{this->start.x + this->offset, this->start.y}, {this->end.x+ this->offset, this->end.y}};
+
+        /* Get the point for the text center */
+        const double text_y = (this->start.y + this->end.y) / 2.0;
+        const double text_x = this->start.x + this->offset - 0.1; // Dimension text always left
+
+        /* Draw everything */
+        auxiliary_top.to_stream(stream, scale);
+        auxiliary_bottom.to_stream(stream, scale);
+        dimension_line.to_stream(stream, scale);
+        Text({text_x, text_y}, this->text, Colors::Black, 8, -90.0).to_stream(stream, scale);
+    }
+
+ private:
+    Coordinate start; /** The start coordinate of the dimension */
+    Coordinate end; /** The end coordinate of the dimension */
+    std::string text; /** Dimension value */
+    double offset; /** The horizontal offset of the dimension line */
+};
+
+/**
+ * @brief A SVG output file stream
+ * This automatically starts the SVG header and ends it when closed.
+ * Otherwise it behaves like a normal output stream.
+ * @details All the SVG objects assume [m] as their units. This class
+ * automatically scales the objects to the desired pixel/m ratio.
+ */
+class ofstream : public std::ofstream {
+ public:
+    /* No default constructor */
+    ofstream() = delete;
+
+    /**
+     * @brief Construct a new SVG ofstream object-
+     *
+     * @param path The path to the file to write to.
+     * @param size The size of the SVG in [m].
+     * @param pixel_per_m How the SVG should be scaled [pixel/m]. Default is 10.
+     */
+    ofstream(const std::filesystem::path &path, const Size &size, const int pixel_per_m = 10)
+        : std::ofstream{path}, size_{size}, dots_per_m_{pixel_per_m}
+    {
+        /* Start the header */
+        *this << "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n"
+              << "<svg\n"
+              << "xmlns:svg=\"http://www.w3.org/2000/svg\"\n"
+              << "xmlns=\"http://www.w3.org/2000/svg\"\n"
+              << "version=\"1.0\"\n"
+              << "width=\"" << size.width * this->dots_per_m_ << "\"\n"
+              << "height=\"" << size.height * this->dots_per_m_ << "\"\n"
+              << "id=\"svg3234\">\n";
+    }
+
+    /* Default constructors */
+    ofstream(const ofstream &) = default;
+    ofstream(ofstream &&) = default;
+    auto operator=(const ofstream &) -> ofstream & = default;
+    auto operator=(ofstream &&) -> ofstream & = default;
+
+    /**
+     * @brief Destroy the SVG ofstream object.
+     */
+    ~ofstream() override = default;
+
+    /**
+     * @brief Add an object to the stream.
+     *
+     * @param object The object to add.
+     * @return ostream& The stream itself.
+     */
+    auto operator<<(const Object &object) -> ofstream & {
+        object.to_stream(*this, this->dots_per_m_ / 1.0);
+        return *this;
+    }
+
+    /**
+     * @brief Close the SVG stream.
+     * @details This adds the closing tag to the stream and closes the file.
+     */
+    void close() {
+        *this << "</svg>\n";
+        std::ofstream::close();
+    }
+
+    /**
+     * @brief Get the center coordinate of the SVG.
+     * 
+     * @return Coordinate [m] The center coordinate of the SVG.
+     */
+    auto center() const -> Coordinate {
+        return {this->size_.width / 2.0, this->size_.height / 2.0};
+    }
+
+ private:
+    Size size_; /** [m] The size of the SVG */
+    int dots_per_m_; // The dots per meter, which defines the scaling of the SVG
+};
+
+}; // namespace svg
+
+#endif // MODULEBASICS_INCLUDE_MODULEBASICS_SVG_H_
diff --git a/moduleBasics/resources.rc b/moduleBasics/resources.rc
new file mode 100644
index 00000000..b76532dd
--- /dev/null
+++ b/moduleBasics/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "moduleBasics\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "moduleBasics.dll\0"
+            VALUE "ProductName",        "moduleBasics\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/moduleBasics/src/plot.cpp b/moduleBasics/src/plot.cpp
new file mode 100644
index 00000000..23dec560
--- /dev/null
+++ b/moduleBasics/src/plot.cpp
@@ -0,0 +1,155 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <moduleBasics/plot.h>
+
+Plot::Plot(const std::shared_ptr<RuntimeIO>& rtIO, std::string plotName) : rtIO_(rtIO), plotName_(plotName) {}
+
+void Plot::generatePlotData(fs::path data) {
+  data_ = data;
+  std::ofstream dataStream(data_.string());
+  if (dataStream.is_open()) {
+    dataStream << dataBody_.str() << std::endl;
+    dataStream.close();
+  } else {
+    myRuntimeInfo->err << "Could not open - " << data_.string() << " ... - plotdata generated" << std::endl;
+  }
+}
+
+/**
+ * \brief Generate Plot Script
+ *
+ * \param script scriptname + path
+ * \param format format
+ * \param delimiter delimiter
+ * \param xtraLinStyles additional linestyles -> bool
+ * \param doubleSize double size -> bool
+ * \param columnWidth columnwidth
+ */
+void Plot::generatePlotScript(fs::path script, const std::string format, std::string delimiter,
+                              const bool xtraLinStyles, const bool doubleSize, double columnWidth) {
+  script_ = script;
+  generatePlotScriptHeader_(format, delimiter, xtraLinStyles, doubleSize, columnWidth);
+  if (script_.extension().string().compare(".plt") == 0) {
+    std::ofstream scriptStream(script_.string());
+    if (scriptStream.is_open()) {
+      scriptStream << scriptHeader_.str() << scriptBody_.str() << scriptFooter_.str() << std::endl;
+      scriptStream.close();
+    } else {
+      myRuntimeInfo->err << "Could not open - " << script_.string() << " ... - no plotscript generated" << std::endl;
+    }
+  } else {
+    myRuntimeInfo->err << "Name extension for script incorrect ... no plotscript generated" << std::endl;
+  }
+}
+
+/**
+ * \brief Generates Plot Scritp header
+ *
+ * \param format current format (e.g. 4:3)
+ * \param delimiter datafile seperator
+ * \param xtraLinStyles additional linestyles -> bool
+ * \param doubleSize double size -> bool
+ * \param columnWidth desired columnwidth
+ */
+void Plot::generatePlotScriptHeader_(const std::string format, std::string delimiter, const bool xtraLinStyles,
+                                     const bool doubleSize, double columnWidth) {
+  double width = atof((format.substr(0, format.find(':'))).c_str());
+  double height = atof((format.substr(format.find(':') + 1, format.size() - 1)).c_str());
+  double factor = width / height;
+  double scaleFactor = doubleSize ? 2.0 : 1.0;
+
+  scriptHeader_ << "######## Plotscript-Header ########" << std::endl
+                << "reset" << std::endl
+                << "set terminal svg size " << scaleFactor * columnWidth * 1.3 << ","
+                << scaleFactor * columnWidth / factor * 1.3 << " enhanced font \"Times, 16\"" << std::endl
+                << std::endl;
+  if (delimiter != "none") {
+    scriptHeader_ << "set datafile separator \"" << delimiter << "\"" << std::endl << std::endl;
+  }
+  scriptHeader_
+      << std::endl
+      << "# Dashtypes can be set by value (1-5), string \".\", \"-\", \"_\", or pattern (s1,e1,s2,e2,s3,e3,s4,e4) "
+      << "with 1-4 numerical pairs of <solid length>s and <empty space length>e" << std::endl
+      << "#     - black/grey -" << std::endl
+      << "set style line  1  dt  1     lc rgb \"black\"      lw 2 pt 1  ps 0.75#black" << std::endl
+      << "set style line  2  dt  2     lc rgb \"#696969\"    lw 2 pt 1  ps 0.75#DimGrey" << std::endl
+      << "set style line  3  dt  3     lc rgb \"#BEBEBE\"    lw 2 pt 1  ps 0.75#Grey" << std::endl
+      << "set style line  4  dt  4     lc rgb \"#D3D3D3\"    lw 2 pt 1  ps 0.75#LightGrey" << std::endl
+      << "set style line  5  dt  5     lc rgb \"#708090\"    lw 2 pt 1  ps 0.75#SlateGrey" << std::endl
+      << "set style line  6  dt \"_\"   lc rgb \"#9FB6CD\"    lw 2 pt 5  ps 0.75#SlateGrey3" << std::endl
+      << "set style line  7  dt \"-\"   lc rgb \"#C6E2FF\"    lw 2 pt 6  ps 0.75#SlateGrey1" << std::endl
+      << "set style line  8  dt \"._\"  lc rgb \"#528b8b\"    lw 2 pt 2  ps 0.75#DarkSlateGray4" << std::endl
+      << "set style line  9  dt \"..-\"  lc rgb \"#79CDCD\"    lw 2 pt 3  ps 0.75#DarkSlateGray3" << std::endl;
+  if (xtraLinStyles) {
+    scriptHeader_ << std::endl
+                  << "#     - blue -" << std::endl
+                  << "set style line 11  dt  1     lc rgb \"#104E8B\"    lw 2 pt 8  ps 0.75#DogerBlue4" << std::endl
+                  << "set style line 12  dt  2     lc rgb \"#473C8B\"    lw 2 pt 8  ps 0.75#SlateBlue4" << std::endl
+                  << "set style line 13  dt  3     lc rgb \"#3A5FCD\"    lw 2 pt 8  ps 0.75#RoyalBlue3" << std::endl
+                  << "set style line 14  dt  4     lc rgb \"#0000FF\"    lw 2 pt 8  ps 0.75#Blue" << std::endl
+                  << "set style line 15  dt  5     lc rgb \"#4682B4\"    lw 2 pt 8  ps 0.75#SteelBlue" << std::endl
+                  << "set style line 16  dt \"_\"   lc rgb \"#4F94CD\"    lw 2 pt 8  ps 0.75#SteelBlue3" << std::endl
+                  << "set style line 17  dt \"-\"   lc rgb \"#6CA6CD\"    lw 2 pt 8  ps 0.75#SkyBlue3" << std::endl
+                  << "set style line 18  dt \"._\"  lc rgb \"#63B8FF\"    lw 2 pt 8  ps 0.75#SteelBlue1" << std::endl
+                  << "set style line 19  dt \"..-\"  lc rgb \"#CAE1FF\"    lw 2 pt 8  ps 0.75#LightSteelBlue1"
+                  << std::endl
+                  << std::endl
+                  << "#     - red -" << std::endl
+                  << "set style line 21  dt  1     lc rgb \"#B22222\"    lw 2 pt 7  ps 0.75#firebrick" << std::endl
+                  << "set style line 22  dt  2     lc rgb \"#CD0000\"    lw 2 pt 7  ps 0.75#red3" << std::endl
+                  << "set style line 23  dt  3     lc rgb \"#FF0000\"    lw 2 pt 7  ps 0.75#red" << std::endl
+                  << "set style line 24  dt  4     lc rgb \"#FF3030\"    lw 2 pt 7  ps 0.75#firebrick1" << std::endl
+                  << "set style line 25  dt  5     lc rgb \"#FF4500\"    lw 2 pt 7  ps 0.75#orangered" << std::endl
+                  << "set style line 26  dt \"_\"   lc rgb \"#FF6347\"    lw 2 pt 7  ps 0.75#tomato" << std::endl
+                  << "set style line 27  dt \"-\"   lc rgb \"#FF6A6A\"    lw 2 pt 7  ps 0.75#IndianRed1" << std::endl;
+  }
+  scriptHeader_ << std::endl
+                << "set key font \"Times, 12\" samplen 1 width -2" << std::endl
+                << "###################################" << std::endl
+                << std::endl;
+}
+
+void Plot::call_gnuplot(fs::path script, std::string additionalArguments) {
+  if (plotName_.empty()) {
+    additionalArguments += "set output '" + fs::path(rtIO_->getPlotDir() + "/" + plotName_ + ".svg").string() + "'";
+    myRuntimeInfo->debug << "Gnuplot set output: " << additionalArguments << std::endl;
+  }
+
+  if (fs::exists(script)) {
+    std::string plotCmd = "gnuplot -e \"" + additionalArguments + "\"" + " " + script.string();
+    handleChildProcess(plotCmd, "");
+  } else {
+    myRuntimeInfo->err << "Plot-File '" << script.string() << "' does not exist. Cannot plot!" << std::endl;
+  }
+}
+
+void Plot::convert_plot_() {
+  myRuntimeInfo->debug << " Convert " << plotName_ << " to PDF..." << std::endl;
+#ifdef _WIN32
+  std::string convertCmd =
+      "inkscape -D -z --file=" + plotName_ + ".svg --export-pdf=" + svg_.filename().string() + ".pdf --export-latex";
+#else
+  std::string convertCmd = "inkscape -D --export-type=pdf --export-latex " + plotName_ + ".svg >/dev/null 2>&1";
+#endif  // _WIN32
+  handleChildProcess(convertCmd, "");
+}
diff --git a/moduleBasics/src/report.cpp b/moduleBasics/src/report.cpp
new file mode 100644
index 00000000..601c8beb
--- /dev/null
+++ b/moduleBasics/src/report.cpp
@@ -0,0 +1,360 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <moduleBasics/report.h>
+#include <runtimeInfo/runtimeInfo.h>
+
+#include <format>
+
+Report::Report(const std::shared_ptr<RuntimeIO>& rtIO) : rtIO_(rtIO) { aircraftName_ = rtIO_->aircraft_model(); }
+
+void Report::generateReports(const std::string& name) {
+  if (rtIO_->reportOn) {
+    generateHtmlReport(name);
+    if (rtIO_->texOn) {
+      generateTexReport(name);
+    }
+  }
+}
+
+/*** HTML REPORT SECTION ***/
+void Report::generateHtmlReport(const std::string& name) {
+  std::ofstream report;
+  if (name.empty()) {
+    report.open(fs::path(rtIO_->getHtmlDir() + "/" + rtIO_->programname + "_report.html").string());
+  } else {
+    report.open(fs::path(rtIO_->getHtmlDir() + "/" + name + "_report.html").string());
+  }
+  generateStyleSheet_();
+  generateHtmlReportHeader_();
+  generateHtmlReportFooter_();
+  if (report.is_open()) {
+    report << htmlHeader_.str() << htmlBody_.str() << htmlFooter_.str();
+    report.close();
+  } else {
+    throw("[ERROR] - Opening HTML-Reportfile failed. Abort program!");
+  }
+}
+
+void Report::generateHtmlReportHeader_() {
+  /* Header of html report. Do not change! */
+  htmlHeader_
+      << "<html lang=\"en\">\n"
+      << "<head>\n"
+      << "<meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\"/>\n"
+      << "<meta charset=\"utf-8\"/>\n"
+      << "<title>" << reportname() << "</title>\n"
+      << "<link href=\"style.css\" rel=\"stylesheet\"/>\n"
+      << "</head>\n"
+      /* End of header */
+      /* Begin of body */
+      << "<body>\n"
+      << "<div class=\"logo\"></div>\n"
+      << "<div class=\"content\">\n"
+      << "<h1>Report - " << reportname()  << "<br/>" << "\n"
+      << "<span>" << "<font size=\"2\">All outputs of the program '" << rtIO_->programname << "' were created with version "
+      << rtIO_->toolVersion << "</span></h1>\n"
+      << "<!-- Begin CeRAS Report -->\n"
+      << "<!-- ################################################################################################### "
+         "-->\n"
+      << "<div class=\"container\">\n";
+}
+
+void Report::generateHtmlReportFooter_() {
+  /* End of body */
+  htmlFooter_ << "</div>"
+              << "</div>"
+              << "</div>"
+              << "</body>"
+              << std::endl
+              /* Footer of html report. Do not change! */
+              << "</html>\r";
+}
+
+/*** TEX REPORT SECTION ***/
+void Report::generateTexReport(const std::string& name) {
+  std::ofstream report;
+  if (name.empty()) {
+    report.open(fs::path(rtIO_->getTexDir() + "/" + rtIO_->programname + "_report.tex").string());
+  } else {
+    report.open(fs::path(rtIO_->getTexDir() + "/" + name + "_report.tex").string());
+  }
+  generateTexReportHeader_();
+  generateTexReportFooter_();
+  if (report.is_open()) {
+    report << texHeader_.str() << texBody_.str() << texFooter_.str();
+    report.close();
+  } else {
+    throw("[ERROR] - Opening TeX-Reportfile failed. Abort program!");
+  }
+}
+
+void Report::generateTexReportHeader_() { texHeader_ << "" << std::endl; }
+
+void Report::generateTexReportFooter_() { texFooter_ << "" << std::endl; }
+
+/*** PLOT SECTION ***/
+
+void Report::add_plot(const std::shared_ptr<Plot>& plot) { plots_.insert(std::make_pair(plot->getPlotName(), plot)); }
+
+/**
+ * \brief Report name
+ *
+ * \return std::string Name of the report from programname (modulename + aircraft model)
+ */
+const std::shared_ptr<Plot>& Report::get_plot(const std::string& key) {
+  if (plots_.find(key) != plots_.end()) {
+    return plots_.at(key);
+  } else {
+    throw std::invalid_argument(std::format("Key {} not found", key));
+  }
+}
+
+std::vector<std::string> Report::get_available_plot_keys() const {
+  std::vector<std::string> keys;
+  for (auto& item : plots_) {
+    keys.push_back(item.first);
+  }
+  return keys;
+}
+
+std::string Report::reportname() const {
+  std::string name;
+  bool new_word = true;
+
+  for (char ch : rtIO_->programname) {
+    if (ch == '_') {
+      name += ' ';
+      new_word = true;
+    } else if (std::isupper(ch)) {
+      if (!name.empty() && !new_word) {
+        name += ' ';
+      }
+      name += ch;
+      new_word = false;
+    } else {
+      if (new_word) {
+        name += std::toupper(ch);
+        new_word = false;
+      } else {
+        name += ch;
+      }
+    }
+  }
+  name += " of " + rtIO_->aircraft_model();
+  return name;
+}
+
+void Report::generateStyleSheet_() {
+  std::ofstream css_file(fs::path(rtIO_->getHtmlDir() + "/style.css").string());
+
+  if (css_file.is_open()) {
+    css_file << R"(
+*, *:before, *:after {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+}
+html, body {
+  background-color: #2a2d33;
+  font-family: system-ui, sans-serif;
+  font-size: 1.3rem;
+  color: #2c3e50;
+  line-height: 1.3;
+  background-size: cover;
+}
+
+table {
+  margin-left: 0;
+  margin-right: auto;
+}
+
+.logo {
+  background-image: url('logoUNICADO_icon.svg');
+  height: 75vh;
+  width: 100%;
+  opacity: 0.2;
+  filter: grayscale(100%);
+  background-size: contain;
+  background-repeat: no-repeat;
+  background-position: center center;
+  position: relative center;
+
+}
+
+.content {
+  position: absolute;
+  width: 98%;
+  height: 85%;
+  top: 0rem;
+  left: 1rem;
+  padding-left: 0rem;
+  box-sizing: border-box;
+  min-width: fit-content;
+
+}
+
+.content h1 {
+      color: #ecf0f1;
+      margin: 1rem 0.1rem;
+      font-size: 2.7rem;
+      font-weight: lighter;
+      font-variant: small-caps;
+}
+
+.container {
+  position: absolute;
+  display: flex;
+  width: 100%;
+  height: 100%;
+}
+
+
+.box {
+  width: 50%;
+  overflow-y: auto;
+  overflow-x: auto;
+  scrollbar-width: none;
+  scrollbar-color: #f0f0f0 #f0f0f0;
+  padding: 0;
+  margin-right: 0.2rem;
+  background-color: #ecf0f1;
+  box-shadow: 5px 5px 5px black;
+  border-radius: 0.5rem;
+  min-width: fit-content;
+  text-align: center;
+}
+
+
+.data {
+  background-color: #ecf0f1;
+  padding: auto;
+  min-width: fit-content;
+  max-width: 50%;
+}
+
+.plot {
+  background-color: #ecf0f1;
+  text-align: center;
+  max-width: 50%;
+}
+
+.box h2 {
+  margin-left: 0.5rem;
+  font-weight: normal;
+  font-variant: small-caps;
+  font-size: 1.5rem;
+  text-align: left;
+}
+
+.box h3 {
+  margin-left: 0.5rem;
+  font-weight: normal;
+  font-variant: small-caps;
+  font-size: 1.2rem;
+  text-align: left;
+}
+
+.box h4 {
+  margin-left: 0.5rem;
+  font-weight: normal;
+  font-variant: small-caps;
+  font-size: 1.0rem;
+  text-align: left;
+}
+
+.box ul {
+  list-style-type: disc;
+  margin-left: 0rem;
+  padding-left: 2rem;
+  text-align: left;
+}
+
+.box ul li {
+  margin: 0 0 0 0;
+  padding-left: 0;
+  font-size: 0.9rem;
+  font-weight: lighter;
+}
+
+.content-table {
+  margin-left: 2rem;
+  padding: 0.50rem;
+  font-size:0.9rem;
+  flex-basis: 100rem;
+  font-weight: lighter;
+  padding-bottom: 2rem;
+}
+
+.content-table caption {
+  text-align: left;
+  font-weight:600;
+  font-size: larger;
+  font-variant: small-caps;
+}
+
+.content-table th {
+  text-align: left;
+  padding-right: 1rem;
+  white-space: nowrap;
+  min-width: 3rem;
+  font-weight: normal;
+}
+
+.content-table td {
+  padding-right: 1rem;
+  text-align: left;
+}
+
+.content-table td.row-header {
+  font-weight: normal;
+  text-align: left;
+  padding-right: 0.5rem;
+}
+
+.content-table td.content-data-number {
+  text-align: right;
+}
+
+.content-table tbody tr:hover {
+  color: #ee5253;
+  cursor: pointer;
+}
+
+.plot img.image-plot {
+  display: block;
+  margin: 0px auto;
+  min-width: none;
+  width: 90%;
+  color: #ecf0f1;
+  width: 90%;
+  max-width: 800px;
+  height: auto;
+  text-align: center;
+}
+)";
+    css_file.close();
+    myRuntimeInfo->out << "CSS code written to style.css successfully." << std::endl;
+  } else {
+    myRuntimeInfo->err << "Unable to open style.css." << std::endl;
+  }
+}
diff --git a/moduleBasics/test/CMakeLists.txt b/moduleBasics/test/CMakeLists.txt
new file mode 100644
index 00000000..b360312d
--- /dev/null
+++ b/moduleBasics/test/CMakeLists.txt
@@ -0,0 +1,53 @@
+# Convert the module sources to a path found by CMake
+list(TRANSFORM LIBRARY_SOURCES PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/../ OUTPUT_VARIABLE TEST_SOURCES)
+
+# ==============================================
+# Add the test executable
+#
+# *** IMPORTANT ***
+# -> Change *.cpp files according to the tests
+# ==============================================
+add_executable(test_${LIBRARY_NAME}
+    test_moduleBasics.cpp
+    ${TEST_SOURCES}
+)
+
+# Link the test executable against UNICADO libs and gtest
+target_link_libraries( test_${LIBRARY_NAME}
+    PRIVATE
+        aixml
+        runtimeInfo
+        standardFiles
+        GTest::gtest_main
+
+)
+
+# Set compile definitions for the test executable
+target_compile_options( test_${LIBRARY_NAME} PRIVATE "-w") # Skip warnings
+
+# The the original source folder as includes, to that the test can access the
+# original source files
+target_include_directories( test_${LIBRARY_NAME}
+    PRIVATE
+        ${CMAKE_CURRENT_SOURCE_DIR}/../src/
+		${CMAKE_CURRENT_SOURCE_DIR}/../include/
+)
+
+# Build the test runner into the current directory
+set_target_properties( test_${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+
+# Add a custom target to run the tests with cmake
+add_custom_target(runtest_${LIBRARY_NAME}
+        # COMMAND CTEST_OUTPUT_ON_FAILURE=1 GTEST_COLOR=1
+        COMMAND test_${LIBRARY_NAME}
+        DEPENDS test_${LIBRARY_NAME})
+
+# *optional* Add the test executable to ctest
+# gtest_discover_tests(test_${LIBRARY_NAME})
+
+# Set compile options according to operating system
+if( WIN32 )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS;BUILD_MODULEBASICS_DLL")
+elseif( UNIX )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "BUILD_MODULEBASICS_SO")
+endif()
diff --git a/moduleBasics/test/stubs/control_settings_conf.xml b/moduleBasics/test/stubs/control_settings_conf.xml
new file mode 100644
index 00000000..64bd1f66
--- /dev/null
+++ b/moduleBasics/test/stubs/control_settings_conf.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<module_configuration_file name="wingDesign_conf.xml">
+  <control_settings description="General control settings for this tool">
+    <aircraft_exchange_file_name description="Specify the name of the exchange file">
+			<value>requirements_exchange_file.xml</value>
+		</aircraft_exchange_file_name>
+    <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found">
+			<value>../../../moduleBasics/test/stubs/</value>
+		</aircraft_exchange_file_directory>
+    <own_tool_level description="Specify the tool level of this tool">
+			<value>3</value>
+		</own_tool_level>
+    <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)">
+			<value>mode_1</value>
+		</console_output>
+    <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)">
+			<value>mode_1</value>
+		</log_file_output>
+    <plot_output description="Specify the way plotting shall be handled">
+			<enable description="Switch to enable plotting ('true': On, 'false': Off)">
+				<value>false</value>
+			</enable>
+			<copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)">
+				<value>false</value>
+			</copy_plotting_files>
+			<delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)">
+				<value>false</value>
+			</delete_plotting_files_from_tool_folder>
+		</plot_output>
+    <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)">
+			<value>true</value>
+		</report_output>
+    <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)">
+			<value>true</value>
+		</tex_report>
+    <write_info_files description="Switch to generate info files ('true': On, 'false': Off)">
+			<value>false</value>
+		</write_info_files>
+    <gnuplot_script description="Specify the name of the plot file">
+			<value>TOOLNAME_plot.plt</value>
+		</gnuplot_script>
+    <log_file description="Specify the name of the log file">
+			<value>TOOLNAME.log</value>
+		</log_file>
+    <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)">
+			<value>DEFAULT</value>
+		</inkscape_path>
+    <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)">
+			<value>DEFAULT</value>
+		</gnuplot_path>
+  </control_settings>
+</module_configuration_file>
\ No newline at end of file
diff --git a/moduleBasics/test/stubs/requirements_exchange_file.xml b/moduleBasics/test/stubs/requirements_exchange_file.xml
new file mode 100644
index 00000000..a35d0cba
--- /dev/null
+++ b/moduleBasics/test/stubs/requirements_exchange_file.xml
@@ -0,0 +1,490 @@
+<aircraft_exchange_file>
+  <requirements_and_specifications description="Requirements and specifications">
+      <general description="General aircraft information">
+          <type description="Aircraft type">
+              <value>CeRAS</value>
+          </type>
+          <model description="Model - Version">
+              <value>SMR-2020</value>
+          </model>
+      </general>
+      <design_specification description="Design specification">
+          <configuration description="Configuration information">
+              <configuration_type description="aircraft configuration: tube_and_wing / blended_wing_body">
+                  <value>tube_and_wing</value>
+              </configuration_type>
+              <fuselage_definition description="Design description of the fuselage.">
+                  <fuselage_type description="Fuselage type: single_aisle / weight_body">
+                      <value>single_aisle</value>
+                  </fuselage_type>
+              </fuselage_definition>
+              <wing_definition description="Definitions for wing design">
+                  <mounting description="wing mounting for tube_and_wing configuration (ignored at blended_wing_body) - low / mid / high">
+                      <value>low</value>
+                  </mounting>
+              </wing_definition>
+              <empennage_definition description="Definitions for empennage design">
+                  <empennage_type description="tube_and_wing configuration: conventional - blended_wing_body: vertical_tails">
+                      <value>conventional</value>
+                  </empennage_type>
+              </empennage_definition>
+              <undercarriage_definition description="Design description of the undercarriage.">
+                  <main_gear_mounting description="Mounting position of the main landing gear: wing_mounted / fuselage_mounted.">
+                      <value>wing_mounted</value>
+                  </main_gear_mounting>
+                  <undercarriage_retractability description="Switch to set retractability of landing gear: retractable / non_retractable.">
+                      <value>retractable</value>
+                  </undercarriage_retractability>
+              </undercarriage_definition>
+              <loads description="Loads information">
+                  <design_load_factor description="design load factor n">
+                      <maximum description="maximum design load factor n">
+                          <value>2.5</value>
+                          <unit>1</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>4</upper_boundary>
+                      </maximum>
+                      <minimum description="maximum design load factor n">
+                          <value>-1.0</value>
+                          <unit>1</unit>
+                          <lower_boundary>-2.0</lower_boundary>
+                          <upper_boundary>0.0</upper_boundary>
+                      </minimum>
+                      <maneuver description="standard maneuver load factor for e.g. flare">
+                          <value>1.1</value>
+                          <unit>1</unit>
+                          <lower_boundary>0.0</lower_boundary>
+                          <upper_boundary>2.0</upper_boundary>
+                      </maneuver>
+                  </design_load_factor>
+              </loads>
+              <aerodynamic_technologies description="aerodynamic technologies">
+                <value>none</value>
+              </aerodynamic_technologies>
+          </configuration>
+          <transport_task>
+              <passenger_definition description="Define the masses of the passengers">
+                  <total_number_passengers description="Design number of passengers">
+                      <value>150</value>
+                      <unit>1</unit>
+                      <lower_boundary>0</lower_boundary>
+                      <upper_boundary>inf</upper_boundary>
+                  </total_number_passengers>
+                  <mass_per_passenger description="Design mass of a single passenger WITHOUT luggage">
+                      <value>80</value>
+                      <unit>kg</unit>
+                      <lower_boundary>50</lower_boundary>
+                      <upper_boundary>200</upper_boundary>
+                  </mass_per_passenger>
+                  <luggage_mass_per_passenger description="Design mass of a the luggage for a single passenger">
+                      <value>17</value>
+                      <unit>kg</unit>
+                      <lower_boundary>0</lower_boundary>
+                      <upper_boundary>25</upper_boundary>
+                  </luggage_mass_per_passenger>
+              </passenger_definition>
+              <passenger_class_definition>
+                  <class_distribution description="Relative passenger distribution for the classes: President Class/First Class/Business Class/Premium Economy/Economy. Sum must be equal to 1!">
+                      <value>0/0/0/0.1/0.9</value>
+                  </class_distribution>
+              </passenger_class_definition>
+              <cargo_definition>
+                  <additional_cargo_mass>
+                      <value>500</value>
+                      <unit>kg</unit>
+                      <lower_boundary>0</lower_boundary>
+                      <upper_boundary>1000</upper_boundary>
+                  </additional_cargo_mass>
+                  <cargo_density>
+                      <value>165</value>
+                      <unit>kg/m^3</unit>
+                      <lower_boundary>150</lower_boundary>
+                      <upper_boundary>200</upper_boundary>
+                  </cargo_density>
+              </cargo_definition>
+          </transport_task>
+          <energy_carriers description="Energy carriers information">
+            <energy_carrier ID="0" description="One specific energy carrier">
+                <type description="Energy type (for multifuel engine create new ID). Selector: kerosene / liquid_hydrogen / battery / saf">
+                    <value>kerosene</value>
+                </type>
+                <density description="Energy carrier density.">
+                    <value>783</value>
+                    <unit>kg/m^3</unit>
+                    <lower_boundary>0</lower_boundary>
+                    <upper_boundary>10000</upper_boundary>
+                </density>
+                <volumetric_density description="Volumetric energy density of energy carrier.">
+                    <value>3.2325e+10</value>
+                    <unit>J/m^3</unit>
+                    <lower_boundary>0</lower_boundary>
+                    <upper_boundary>1e+12</upper_boundary>
+                </volumetric_density>
+                <gravimetric_density description="Gravimetric energy density of energy carrier.">
+                    <value>43100000</value>
+                    <unit>J/kg</unit>
+                    <lower_boundary>0</lower_boundary>
+                    <upper_boundary>1e+12</upper_boundary>
+                </gravimetric_density>
+            </energy_carrier>
+          </energy_carriers>
+          <propulsion description="Propulsion information">
+            <propulsor ID="0" description="Information for specific propulsor">
+                <powertrain description="Way the power is generated from the source: turbo, electric, fuel_cell">
+                    <value>turbo</value>
+                </powertrain>
+                <type description="Type of main thrust generator: fan or prop">
+                    <value>fan</value>
+                </type>
+                <position description="propulsor position (arrangement order acc to ID order)">
+                    <parent_component description="position on component: wing, fuselage, empennage">
+                        <value>wing</value>
+                    </parent_component>
+                    <x description="x-position (aircraft coordinate system): front or back">
+                        <value>front</value>
+                    </x>
+                    <y description="y position (aircraft coordinate system): left or right">
+                        <value>left</value>
+                    </y>
+                    <z description="z position (aircraft coordinate system): over, mid, under, in">
+                        <value>under</value>
+                    </z>
+                </position>
+                <energy_carrier_ID description="see energy carrier specification node">
+                    <value>0</value>
+                    <unit>1</unit>
+                    <lower_boundary>0</lower_boundary>
+                    <upper_boundary>5</upper_boundary>
+                </energy_carrier_ID>
+                <thrust_share description="Share of this thrust in relation to required aircraft thrust">
+                    <value>0.5</value>
+                    <unit>1</unit>
+                    <lower_boundary>0.0</lower_boundary>
+                    <upper_boundary>1.0</upper_boundary>
+                </thrust_share>
+            </propulsor>
+            <propulsor ID="1" description="Information for specific propulsor">
+                <powertrain description="Way the power is generated from the source: turbo, electric, fuel_cell">
+                    <value>turbo</value>
+                </powertrain>
+                <type description="Type of main thrust generator: fan or prop">
+                    <value>fan</value>
+                </type>
+                <position description="propulsor positio (arrangement order acc to ID order)">
+                    <parent_component description="position on component: wing, fuselage, empennage">
+                        <value>wing</value>
+                    </parent_component>
+                    <x description="x-position (aircraft coordinate system): front or back">
+                        <value>front</value>
+                    </x>
+                    <y description="y position (aircraft coordinate system): left or right">
+                        <value>right</value>
+                    </y>
+                    <z description="z position (aircraft coordinate system): over, in or under">
+                        <value>under</value>
+                    </z>
+                </position>
+                <energy_carrier_ID description="see energy carrier specification node">
+                    <value>0</value>
+                    <unit>1</unit>
+                    <lower_boundary>0</lower_boundary>
+                    <upper_boundary>5</upper_boundary>
+                </energy_carrier_ID>
+                <thrust_share description="Share of this thrust in relation to required aircraft thrust">
+                    <value>0.5</value>
+                    <unit>1</unit>
+                    <lower_boundary>0.0</lower_boundary>
+                    <upper_boundary>1.0</upper_boundary>
+                </thrust_share>
+            </propulsor>
+          </propulsion>
+          <systems description="Systems information">
+              <energy_provider description="source where energy is coming from per segment">
+                  <ground description="source where energy is coming from in the ground mission segment">
+                      <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell">
+                          <value>propulsor</value>
+                      </powertrain>
+                      <energy_carrier_ID description="see energy carrier specification node">
+                          <value>0</value>
+                      </energy_carrier_ID>
+                  </ground>
+                  <taxi description="source where energy is coming from in the taxi mission segment">
+                      <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell">
+                          <value>propulsor</value>
+                      </powertrain>
+                      <energy_carrier_ID description="see energy carrier specification node">
+                          <value>0</value>
+                      </energy_carrier_ID>
+                  </taxi>
+                  <takeoff description="source where energy is coming from in the takeoff mission segment">
+                      <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell">
+                          <value>propulsor</value>
+                      </powertrain>
+                      <energy_carrier_ID description="see energy carrier specification node">
+                          <value>0</value>
+                      </energy_carrier_ID>
+                  </takeoff>
+                  <climb description="source where energy is coming from in the climb mission segment">
+                      <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell">
+                          <value>propulsor</value>
+                      </powertrain>
+                      <energy_carrier_ID description="see energy carrier specification node">
+                          <value>0</value>
+                      </energy_carrier_ID>
+                  </climb>
+                  <cruise description="source where energy is coming from in the cruise mission segment">
+                      <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell">
+                          <value>propulsor</value>
+                      </powertrain>
+                      <energy_carrier_ID description="see energy carrier specification node">
+                          <value>0</value>
+                      </energy_carrier_ID>
+                  </cruise>
+                  <descent description="source where energy is coming from in the descent mission segment">
+                      <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell">
+                          <value>propulsor</value>
+                      </powertrain>
+                      <energy_carrier_ID description="see energy carrier specification node">
+                          <value>0</value>
+                      </energy_carrier_ID>
+                  </descent>
+                  <landing description="source where energy is coming from in the landing mission segment">
+                      <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell">
+                          <value>propulsor</value>
+                      </powertrain>
+                      <energy_carrier_ID description="see energy carrier specification node">
+                          <value>0</value>
+                      </energy_carrier_ID>
+                  </landing>
+              </energy_provider>
+          </systems>
+          <skinning description="Skinning Information">
+              <material description="Material of skinning">
+                  <value>aluminium2024</value>
+              </material>
+              <thickness description="Thickness of skinning">
+                  <value>0.003</value>
+                  <unit>m</unit>
+                  <lower_boundary>0.0001</lower_boundary>
+                  <upper_boundary>0.1</upper_boundary>
+              </thickness>
+          </skinning>
+          <technology>
+              <variable_camber description="Switch if variable camber is used">
+                  <value>false</value>
+              </variable_camber>
+          </technology>
+          <tank_configuration description="Energy tanks information">
+              <tank ID="0" description="One Tank">
+                  <energy_carrier_ID description="see energy carrier specification node">
+                      <value>0</value>
+                  </energy_carrier_ID>
+                  <location description="Component where the tank is located: fuselage, wing, horizontal_stabilizer">
+                      <value>0</value>
+                  </location>
+                  <position description="Position of tank in location: tailcone, rear, front, top, bottom, center, inner_left, outer_left, inner_right, outer_right, total">
+                      <value>0</value>
+                  </position>
+              </tank>
+          </tank_configuration>
+      </design_specification>
+      <requirements description="Aircraft design requirements">
+          <top_level_aircraft_requirements description="Top level aircraft requirements (TLAR)">
+              <maximum_structural_payload_mass description="Maximum structual payload mass which can be carried by the aircraft (e.g. for short trips)">
+                  <value>30000</value>
+                  <unit>kg</unit>
+                  <lower_boundary>100</lower_boundary>
+                  <upper_boundary>150000</upper_boundary>
+              </maximum_structural_payload_mass>
+              <takeoff_distance description="Design takeoff distance (Balanced Field Length) at Sea Level with maximum takeoff mass (MTOM) and (ISA + deltaISA)-Conditions">
+                  <value>2122</value>
+                  <unit>m</unit>
+                  <lower_boundary>600</lower_boundary>
+                  <upper_boundary>5000</upper_boundary>
+              </takeoff_distance>
+              <landing_field_length description="Needed runway length at Sea Level with maximum landiung mass (MLM) and (ISA + deltaISA)-Conditions (Safety-Landing Distance according to FAR 121.195: landing_field_required/0.6)">
+                  <value>2387</value>
+                  <unit>m</unit>
+                  <lower_boundary>600</lower_boundary>
+                  <upper_boundary>5000</upper_boundary>
+              </landing_field_length>
+              <icao_aerodrome_reference_code description="ICAO reference code - code_number 1-4 (field length) + code_letter A-F (wing span limits) + faa ADG code number I-VI (wing span limits + tail height limits) + Aircraft Approach Category letter  A-D">
+                  <value>3CIIIB</value>
+              </icao_aerodrome_reference_code>
+              <flight_envelope description="Maxima of design flight envelope">
+                  <maximum_operating_mach_number description="Maximum operating mach number">
+                      <value>0.85</value>
+                      <unit>1</unit>
+                      <lower_boundary>0</lower_boundary>
+                      <upper_boundary>1</upper_boundary>
+                  </maximum_operating_mach_number>
+                  <maximum_operating_velocity description="Maximum operating speed (maximum dynamic pressure)">
+                      <value>180</value>
+                      <unit>m/s</unit>
+                      <lower_boundary>50</lower_boundary>
+                      <upper_boundary>250</upper_boundary>
+                  </maximum_operating_velocity>
+                  <maximum_approach_speed description="Maximum allowed approach speed.">
+                      <value>71</value>
+                      <unit>m/s</unit>
+                      <lower_boundary>50</lower_boundary>
+                      <upper_boundary>90</upper_boundary>
+                  </maximum_approach_speed>
+                  <maximum_operating_altitude description="Maximum operating altitude">
+                      <value>12500</value>
+                      <unit>m</unit>
+                      <lower_boundary>4500</lower_boundary>
+                      <upper_boundary>20000</upper_boundary>
+                  </maximum_operating_altitude>
+                  <maximum_one_engine_operating_altitude description="Maximum operating altitude with one engine inoperative">
+                      <value>4500</value>
+                      <unit>m</unit>
+                      <lower_boundary>1500</lower_boundary>
+                      <upper_boundary>12000</upper_boundary>
+                  </maximum_one_engine_operating_altitude>
+              </flight_envelope>
+              <pavement_classification_number description="Runway pavment classification number (PCN) - limits the maximum allowed aircraft classification number of undercarriage.">
+                  <value>55</value>
+                  <unit>1</unit>
+                  <lower_boundary>5</lower_boundary>
+                  <upper_boundary>120</upper_boundary>
+              </pavement_classification_number>
+              <design_mission description="Requirements regarding the design mission">
+                  <initial_cruise_mach_number description="Initial cruise Mach number at top of descent. May be altered during cruise.">
+                      <value>0.78</value>
+                      <unit>1</unit>
+                      <lower_boundary>0</lower_boundary>
+                      <upper_boundary>1</upper_boundary>
+                  </initial_cruise_mach_number>
+                  <initial_cruise_altitude description="Initial cruise altitude (ICA) at top of descent. May be altered during cruise.">
+                      <value>11000</value>
+                      <unit>m</unit>
+                      <lower_boundary>1000</lower_boundary>
+                      <upper_boundary>20000</upper_boundary>
+                  </initial_cruise_altitude>
+                  <climb_speed_schedule description="Climb speed for different altitudes">
+                      <climb_speed_below_FL100 description="Calibrated airspeed in climb below FL100 (FL100 = 3048 m)">
+                          <value>50</value>
+                          <unit>m/s</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>250</upper_boundary>
+                      </climb_speed_below_FL100>
+                      <climb_speed_above_FL100 description="Calibrated airspeed in climb above FL100 (FL100 = 3048 m)">
+                          <value>100</value>
+                          <unit>m/s</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>250</upper_boundary>
+                      </climb_speed_above_FL100>
+                      <delta_mach_climb_cruise description="Difference between crossover altitude Mach number and cruise Mach number">
+                          <value>-0.02</value>
+                          <unit>1</unit>
+                          <lower_boundary>-0.3</lower_boundary>
+                          <upper_boundary>0.01</upper_boundary>
+                      </delta_mach_climb_cruise>
+                  </climb_speed_schedule>
+                  <descent_speed_schedule description="Descent speed for different altitudes">
+                      <descent_speed_below_FL100 description="Calibrated airspeed in descent below FL100 (FL100 = 3048 m)">
+                          <value>50</value>
+                          <unit>m/s</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>250</upper_boundary>
+                      </descent_speed_below_FL100>
+                      <descent_speed_above_FL100 description="Calibrated airspeed in descent above FL100 (FL100 = 3048 m)">
+                          <value>100</value>
+                          <unit>m/s</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>250</upper_boundary>
+                      </descent_speed_above_FL100>
+                  </descent_speed_schedule>
+                  <time_to_climb description="Time the aircraft takes to climb to cruise altitude">
+                      <value>2100</value>
+                      <unit>s</unit>
+                      <lower_boundary>600</lower_boundary>
+                      <upper_boundary>3600</upper_boundary>
+                  </time_to_climb>
+                  <fuel_planning description="Fuel planning according to the Joint Aviation Requirements (JAR) or the Federal Aviation Regulations (FAR)">
+                      <fuel_estimation_selector description="&apos;mode_0&apos;: Fuel planning according to JAR, &apos;mode_1&apos;: Domestic fuel planning according to FAR, &apos;mode_2&apos;: Flag or supplemental fuel planning according to FAR">
+                          <value>mode_0</value>
+                      </fuel_estimation_selector>
+                  </fuel_planning>
+              </design_mission>
+              <study_mission description="Requirements regarding the study mission">
+                  <payload_fractions description="Set the fraction of different design payload values for the study mission">
+                      <cargo_fraction description="Fraction of the design cargo mass which is used for the study mission">
+                          <value>0.75</value>
+                          <unit>1</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>1</upper_boundary>
+                      </cargo_fraction>
+                      <passenger_mass_fraction description="Fraction of the design passenger mass which is used for the study mission">
+                          <value>0.75</value>
+                          <unit>1</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>1</upper_boundary>
+                      </passenger_mass_fraction>
+                  </payload_fractions>
+                  <initial_cruise_mach_number description="Initial cruise Mach number at top of descent. May be altered during cruise.">
+                      <value>0.78</value>
+                      <unit>1</unit>
+                      <lower_boundary>0.0</lower_boundary>
+                      <upper_boundary>1.0</upper_boundary>
+                  </initial_cruise_mach_number>
+                  <initial_cruise_altitude description="Initial cruise altitude at top of descent. May be altered during cruise.">
+                      <value>11000</value>
+                      <unit>m</unit>
+                      <lower_boundary>1000</lower_boundary>
+                      <upper_boundary>20000</upper_boundary>
+                  </initial_cruise_altitude>
+                  <climb_speed_schedule description="Climb speed for different altitudes">
+                      <climb_speed_below_FL100 description="Calibrated airspeed in climb below FL100 (FL100 = 3048 m)">
+                          <value>50</value>
+                          <unit>m/s</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>250</upper_boundary>
+                      </climb_speed_below_FL100>
+                      <climb_speed_above_FL100 description="Calibrated airspeed in climb above FL100 (FL100 = 3048 m)">
+                          <value>100</value>
+                          <unit>m/s</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>250</upper_boundary>
+                      </climb_speed_above_FL100>
+                      <delta_mach_climb_cruise description="Difference between crossover altitude Mach number and cruise Mach number">
+                          <value>-0.02</value>
+                          <unit>1</unit>
+                          <lower_boundary>-0.3</lower_boundary>
+                          <upper_boundary>0.01</upper_boundary>
+                      </delta_mach_climb_cruise>
+                  </climb_speed_schedule>
+                  <descent_speed_schedule description="Descent speed for different altitudes">
+                      <descent_speed_below_FL100 description="Calibrated airspeed in descent below FL100 (FL100 = 3048 m)">
+                          <value>50</value>
+                          <unit>m/s</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>250</upper_boundary>
+                      </descent_speed_below_FL100>
+                      <descent_speed_above_FL100 description="Calibrated airspeed in descent above FL100 (FL100 = 3048 m)">
+                          <value>100</value>
+                          <unit>m/s</unit>
+                          <lower_boundary>0</lower_boundary>
+                          <upper_boundary>250</upper_boundary>
+                      </descent_speed_above_FL100>
+                  </descent_speed_schedule>
+                  <fuel_planning description="Fuel planning according to the Joint Aviation Requirements (JAR) or the Federal Aviation Regulations (FAR)">
+                      <fuel_estimation_selector description="&apos;mode_0&apos;: Fuel planning according to JAR, &apos;mode_1&apos;: Domestic fuel planning according to FAR, &apos;mode_2&apos;: Flag or supplemental fuel planning according to FAR">
+                          <value>mode_0</value>
+                      </fuel_estimation_selector>
+                  </fuel_planning>
+              </study_mission>
+          </top_level_aircraft_requirements>
+          <additional_requirements description="Additional requirements"></additional_requirements>
+      </requirements>
+      <assessment_scenario description="Scenario for ecological and economical assessment">
+          <flights_per_year description="Number of flights per year">
+              <value>2227</value>
+              <unit>1</unit>
+              <lower_boundary>0</lower_boundary>
+              <upper_boundary>4000</upper_boundary>
+          </flights_per_year>
+      </assessment_scenario>
+  </requirements_and_specifications>
+</aircraft_exchange_file>
diff --git a/moduleBasics/test/test_moduleBasics.cpp b/moduleBasics/test/test_moduleBasics.cpp
new file mode 100644
index 00000000..514b791a
--- /dev/null
+++ b/moduleBasics/test/test_moduleBasics.cpp
@@ -0,0 +1,211 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <aixml/endnode.h>
+#include <aixml/node.h>
+#include <gtest/gtest.h>
+#include <moduleBasics/colors.h>
+#include <moduleBasics/modeSelector.h>
+#include <moduleBasics/module.h>
+
+#include <fstream>
+#include <memory>
+
+class TestModule : public Module {
+ public:
+  explicit TestModule(const fs::path& rtConfigXML) : Module("test_tool", "1.0", rtConfigXML) {
+  }
+  void initialize() {
+    myRuntimeInfo->info << "Initialize called" << std::endl;
+  }
+  void run() {
+    myRuntimeInfo->info << "Run called" << std::endl;
+  }
+  void update() {
+    myRuntimeInfo->info << "Update called" << std::endl;
+  }
+  void report() {
+    myRuntimeInfo->info << "Report called" << std::endl;
+  }
+  void save() {
+    myRuntimeInfo->info << "Save called" << std::endl;
+  }
+  template<typename ExceptionType = std::string>
+  void throwing() {
+    throwError<ExceptionType>(__FILE__,__func__,__LINE__, "Error message!");
+  }
+ private:
+};
+
+/* Setup test fixture */
+class RuntimeIOTestFixture : public ::testing::Test {
+ protected:
+  void SetUp() override {
+    acxml = aixml::openDocument(acxmlAccess.string());
+    config = aixml::openDocument(configAccess.string());
+#ifdef _WIN32
+    /* Create gnuplot and inkscape file */
+    std::ofstream gnuplot(gnuplot_tmp);
+    gnuplot.close();
+    std::ofstream inkscape(inkscape_tmp);
+    inkscape.close();
+#endif
+  }
+
+#ifdef _WIN32
+  void TearDown() override {
+    fs::remove(gnuplot_tmp);
+    fs::remove(inkscape_tmp);
+  }
+#endif
+
+  /* Fixture variables */
+  node acxml;
+  node config;
+  std::string programname = "test_moduleBasics";
+  std::string toolversion = "1.0";
+  modi consoleOn = 0;
+  modi logOn = 0;
+  bool plotOn = true;
+  bool plotCopyOn = false;
+  bool plotDeleteOn = false;
+  bool reportOn = true;
+  bool texOn = false;
+  bool infoOn = false;
+  int ownToolLevel = false;
+  fs::path gnuAccess = "DEFAULT";
+  fs::path inkAccess = "DEFAULT";
+  fs::path logAccess = "default.log";
+  fs::path acxmlAccess = "../../../moduleBasics/test/stubs/requirements_exchange_file.xml";
+  fs::path configAccess = "../../../moduleBasics/test/stubs/control_settings_conf.xml";
+#ifdef _WIN32
+#include <string>
+  fs::path gnuplot_tmp = fs::temp_directory_path().string() + "gnuplot";
+  fs::path inkscape_tmp = fs::temp_directory_path().string() + "inkscape";
+#endif
+};
+
+class ModuleTestFixture : public ::testing::Test {
+ protected:
+  void SetUp() override {
+  }
+  fs::path configAccess = "../../../moduleBasics/test/stubs/control_settings_conf.xml";
+};
+
+/* Testcases */
+
+#ifdef _WIN32
+TEST_F(RuntimeIOTestFixture, inkscape_and_gnuplot_available_WINDOWS) {
+  gnuAccess = gnuplot_tmp.parent_path();
+  inkAccess = inkscape_tmp.parent_path();
+
+  std::shared_ptr<RuntimeIO> rtIO = std::make_shared<RuntimeIO>(programname, toolversion, consoleOn, logOn, plotOn, plotCopyOn, plotDeleteOn, reportOn, texOn, infoOn, ownToolLevel,
+                                                                gnuAccess, inkAccess, "test.log", acxmlAccess, configAccess, acxml, config);
+  EXPECT_NO_THROW(rtIO->make_executable_available(gnuAccess, "gnuplot"));
+  EXPECT_NO_THROW(rtIO->make_executable_available(inkAccess, "inkscape"));
+  EXPECT_TRUE(rtIO->is_executable_available("gnuplot"));
+  EXPECT_TRUE(rtIO->is_executable_available("inkscape"));
+}
+
+#else
+TEST_F(RuntimeIOTestFixture, inkscape_and_gnuplot_available_UNIX) {
+  std::shared_ptr<RuntimeIO> rtIO = std::make_shared<RuntimeIO>(programname, toolversion, consoleOn, logOn, plotOn, plotCopyOn, plotDeleteOn, reportOn, texOn, infoOn, ownToolLevel,
+                                                                gnuAccess, inkAccess, "test.log", acxmlAccess, configAccess, acxml, config);
+  rtIO->make_executable_available("", "gnuplot");
+  rtIO->make_executable_available("", "inkscape");
+  EXPECT_TRUE(rtIO->is_executable_available("gnuplot"));
+  EXPECT_TRUE(rtIO->is_executable_available("inkscape"));
+}
+#endif
+TEST_F(RuntimeIOTestFixture, logfile_destination_and_name) {
+  logAccess = fs::path("../../non-default.log");
+  // Need to destruct rtIO element to call destructor which writes logfile and saves content
+  {
+    std::shared_ptr<RuntimeIO> rtIO = std::make_shared<RuntimeIO>(programname, toolversion, consoleOn, logOn, plotOn, plotCopyOn, plotDeleteOn, reportOn, texOn, infoOn,
+                                                                  ownToolLevel, gnuAccess, inkAccess, logAccess, acxmlAccess, configAccess, acxml, config);
+    myRuntimeInfo->out << rtIO->logAccess.string() << std::endl;
+  }
+  EXPECT_TRUE(fs::exists(logAccess));
+}
+
+/* module.h testcases*/
+
+TEST_F(ModuleTestFixture, basicExecutionCorrect) {
+  TestModule test_module(configAccess);
+
+  EXPECT_EQ(test_module.execute(), 0);
+}
+
+TEST_F(ModuleTestFixture, basicExecutionNoThrow) {
+  EXPECT_NO_THROW({ TestModule instance(configAccess); }); // cppcheck-suppress unreadVariable
+}
+
+TEST_F(ModuleTestFixture, basicExecutionThrowOnPurposeStdString) {
+  EXPECT_THROW({
+    TestModule instance(configAccess);
+    instance.throwing<>();}, std::string);
+}
+
+TEST_F(ModuleTestFixture, basicExecutionThrowOnPurposeStdRuntimeError) {
+  EXPECT_THROW({
+    TestModule instance(configAccess);
+    instance.throwing<std::runtime_error>();}, std::runtime_error);
+}
+
+TEST_F(ModuleTestFixture, basicExecutionThrow) {
+  EXPECT_EXIT(
+      { TestModule instance("./myfile.xml"); }, // cppcheck-suppress unreadVariable
+      ::testing::ExitedWithCode(EXIT_FAILURE),
+      ""); // empty string - since mock doesn't work properly currently (2024/03/26)
+}
+
+
+TEST(ModuleTestColors, predefinedColorTest) {
+  /* Arange test */
+
+  auto [r, g, b] = colors::rwth_blue;
+
+  EXPECT_EQ(r, 1);
+  EXPECT_EQ(g, 81);
+  EXPECT_EQ(b, 157);
+}
+
+TEST(ModuleTestColors, nextColorTest) {
+  EXPECT_TRUE(colors::next_color() == colors::ustutt_black);
+  EXPECT_TRUE(colors::next_color() == colors::tum_blue);
+  EXPECT_TRUE(colors::next_color() == colors::tub_red);
+  EXPECT_TRUE(colors::next_color() == colors::tuhh_turquoise);
+  EXPECT_TRUE(colors::next_color() == colors::tubs_red);
+  EXPECT_TRUE(colors::next_color() == colors::rwth_blue);
+  EXPECT_TRUE(colors::next_color() == colors::ustutt_black);
+  colors::reset_next_color();
+  EXPECT_TRUE(colors::next_color() == colors::ustutt_black);
+}
+
+TEST(ModuleTestColors, matplotColor) {
+  auto [r, g, b] = colors::tuhh_turquoise;
+  auto matplot_tuhh_turquoise = colors::to_matplot_color(colors::tuhh_turquoise);
+  EXPECT_NEAR(0.0f, matplot_tuhh_turquoise[0], 1E-5);
+  EXPECT_NEAR(r / 255., matplot_tuhh_turquoise[1], 1E-5);
+  EXPECT_NEAR(g / 255., matplot_tuhh_turquoise[2], 1E-5);
+  EXPECT_NEAR(b / 255., matplot_tuhh_turquoise[3], 1E-5);
+}
diff --git a/pymodulepackage/CMakeLists.txt b/pymodulepackage/CMakeLists.txt
new file mode 100644
index 00000000..4068795c
--- /dev/null
+++ b/pymodulepackage/CMakeLists.txt
@@ -0,0 +1,6 @@
+# Add the package to the package list for exporting the target
+# and propagate the resulting list back to the parent scope
+list( APPEND PYTHON_TARGETS ${CMAKE_CURRENT_LIST_DIR} )
+set( PYTHON_TARGETS ${PYTHON_TARGETS} PARENT_SCOPE )
+
+install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR} DESTINATION lib)
\ No newline at end of file
diff --git a/pymodulepackage/README.md b/pymodulepackage/README.md
new file mode 100644
index 00000000..3eb3604f
--- /dev/null
+++ b/pymodulepackage/README.md
@@ -0,0 +1,31 @@
+# UNICADO Python Framework
+
+Brief description of what the project does and its purpose.
+
+## Installation (standalone)
+Please follow the instructions on the UNICADO website:
+https://unicado.ilr.rwth-aachen.de/w/software_maintenance/how_to_python_in_unicado/
+
+## Usage
+Explain how to use the project. Provide examples if necessary.
+
+## Configuration
+Explain any configuration options or settings that can be customized.
+
+## Contributing
+If you'd like to contribute to this project, please follow these guidelines:
+
+Fork the repository.
+Create a new branch (git checkout -b feature_branch).
+Make your changes and commit them (git commit -am 'Add new feature').
+Push to the branch (git push origin feature_branch).
+Create a new Pull Request.
+
+## License
+This project is licensed under the GNU General Public License, Version 3 - see the LICENSE.md file for details.
+
+## Acknowledgements
+List any acknowledgements or credits for libraries, tutorials, etc. that were used in developing this project.
+
+## Contact
+For questions or feedback, please contact A. Gobbin (a.gobbin@tu-berlin.de) or S. Roscher (s.roscher@tu-berlin.de).
diff --git a/pymodulepackage/pyproject.toml b/pymodulepackage/pyproject.toml
new file mode 100644
index 00000000..ebb3fbb2
--- /dev/null
+++ b/pymodulepackage/pyproject.toml
@@ -0,0 +1,20 @@
+[build-system]
+# Please do not change any information given here.
+requires = ["setuptools", "setuptools-scm"] 
+build-backend = "setuptools.build_meta"
+
+[project] 
+name = "pymodulepackage" # insert name of the package (all lowercase, without underscores or special characters)
+version = "2.0.1" # insert version of package
+description = "This package contains standardized functions for UNICADO module execution." # Insert short package description
+readme = "README.md"
+requires-python = ">=3.10"
+license = {file = "LICENSE"}
+authors = [ # Insert name of author(s)
+    {name = "A. Gobbin", email = "a.gobbin@tu-berlin.de"},
+    {name = "S. Roscher", email = "s.roscher@tu-berlin.de"}
+]
+
+[project.urls]
+homepage = "https://unicado.ilr.rwth-aachen.de/"
+repository = "https://git.rwth-aachen.de/unicado"
diff --git a/pymodulepackage/src/datapostprocessingmodule.py b/pymodulepackage/src/datapostprocessingmodule.py
new file mode 100644
index 00000000..31e4ec27
--- /dev/null
+++ b/pymodulepackage/src/datapostprocessingmodule.py
@@ -0,0 +1,959 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+"""Module providing general UNICADO data postprocessing functions for Python code."""
+# Import standard modules.
+import os
+import re
+import sys
+import collections
+import xml.etree.ElementTree as ET
+from datetime import datetime
+
+
+def create_element_tree_from_paths(input_dict):
+    """ Create element tree from paths.
+
+    This function creates an element tree from the xml-paths inside the given input dictionary.
+
+    :param root input_dict: Dict containing module specific output datas.
+    :return: root
+    """
+    ''' initialize local parameter '''
+    paths = []
+    values = []
+
+    # Generate lists of paths and values
+    for _, value in input_dict.items():
+        paths.append(value[0])
+        values.append(value[1])
+
+    # Create the root element.
+    root_name = paths[0].split('/')[1]
+    root = ET.Element(root_name)
+
+    # Build the XML tree.
+    for index, path in enumerate(paths):
+        # Split the path into parts.
+        parts = re.split(r'\/(?![^\[]*\])', path.lstrip('./'))
+        current_element = root
+
+        for part in parts:
+            # Check if part has an ID attribute
+            id_match = re.search(r'(.+?)\[@ID="(\d+)"\]', part)
+            if id_match:
+                tag, id_value = id_match.groups()
+                # Check if an element with the same tag and ID already exists.
+                existing_element = current_element.find(f"./{tag}[@ID='{id_value}']")
+                if existing_element is not None:
+                    current_element = existing_element
+                else:
+                    new_element = ET.SubElement(current_element, tag, ID=id_value)
+                    current_element = new_element
+            else:
+                # Check if an element with the same tag already exists.
+                existing_element = current_element.find(part)
+                if existing_element is not None:
+                    current_element = existing_element
+                else:
+                    new_element = ET.SubElement(current_element, part)
+                    current_element = new_element
+
+        # Add 'value' sub-node with None as text content to the end node.
+        value_node = ET.SubElement(current_element, 'value')
+        value_node.text = str(values[index])
+
+    return root
+
+
+def insert_missing_elements(main_tree, root_of_tree_to_insert):
+    """ Insert missing elements.
+
+    This function searches and inserts missing module-dependent node elements in the aircraft exchange tree.
+
+    :param tree main_tree: The element tree into which all data from the second tree is to be inserted.
+    :param root root_of_tree_to_insert: The root node contains all the data to be inserted into the main tree.
+    :return: None
+    """
+    root = main_tree.getroot()
+
+    def insert_elements(first_parent, second_parent):
+        for second_child in second_parent:
+            # Find or create the corresponding child in the first tree
+            first_child = first_parent.find(second_child.tag)
+            if first_child is None:
+                # If the element doesn't exist in the first tree, append it
+                first_child = ET.SubElement(first_parent, second_child.tag, attrib=second_child.attrib)
+                first_child.text = second_child.text
+            else:
+                # Update the attributes and text of the existing element
+                first_child.attrib.update(second_child.attrib)
+                if first_child.text is None:
+                    first_child.text = second_child.text
+                elif second_child.text is not None:
+                    first_child.text += second_child.text
+            # Recursively insert missing elements for child elements
+            insert_elements(first_child, second_child)
+
+    # Start recursive insertion from the roots
+    insert_elements(root, root_of_tree_to_insert)
+
+
+def find_and_remove_paths_in_tree(element_tree, cleaned_paths):
+    """ Find and remove paths in tree.
+
+    This function searches and removes given XML paths from a given element tree.
+    Attention: The function has different behavior for entries in the 'component_design' node. Due to the unknown
+    number of ID nodes, the entire module-dependent subtree is deleted here.
+    For all other nodes, only the target nodes are removed.
+
+    :param tree element_tree: Element tree containing all node datas.
+    :param list cleaned_paths: List containing all xml paths to remove.
+    :return: None
+    """
+    # Nested function to find parent node of current subtree node
+    def find_parent(root, element):
+        for parent in root.iter():
+            for child in parent:
+                if child == element:
+                    return parent
+        return None
+
+    root = element_tree.getroot()
+    # Create map for parent-child relations.
+    parent_map = {c: p for p in element_tree.iter() for c in p}
+
+    # Loop across all paths to remove from aircraft exchange tree.
+    for path in cleaned_paths:
+        # Convert the './' prefixed path to the standard XPath by removing the leading './'.
+        xpath = path.lstrip('./')
+        # Get first node of current path.
+        first_node = xpath.split('/')[0]
+        # Check if the first node is not 'component_design' -> if true: -> remove only the end nodes of current path.
+        if not first_node == 'component_design':
+            # Find elements matching the XPath.
+            elements_to_remove = root.findall(xpath)
+            # Check each element if is existing -> if true: -> remove node from element tree
+            for elem in elements_to_remove:
+                parent = parent_map.get(elem)
+                if parent is not None:
+                    parent.remove(elem)
+
+        # Else condition: the first node of current path is 'component_design'
+        #   -> Remove all nodes from second node to end of current path.
+        else:
+            second_node = xpath.split('/')[1]
+            sub_tree_to_remove = root.find('component_design/' + second_node)
+            if sub_tree_to_remove is not None:
+                # Use a list to collect all descendants
+                elements_to_remove = []
+                stack = [sub_tree_to_remove]
+                while stack:
+                    current_element = stack.pop()
+                    elements_to_remove.append(current_element)
+                    stack.extend(list(current_element))
+                # Remove all collected elements
+                for elem in elements_to_remove[::-1]:
+                    # Call nested function to find parend node of current sub tree node.
+                    parent = find_parent(root, elem)
+                    if parent is not None:
+                        parent.remove(elem)
+
+
+def convert_dictionary_to_element_tree(parameters_dict, parent=None):
+    """ Convert dictionary to element tree.
+
+    This function converts the module-dependent key parameter dict into a consistent module-dependent element tree.
+
+    :param dict parameters_dict: Dict containing parameter for the element tree to generate.
+    :param node parent: The Parent node element of current module key parameter.
+    :return: element parent
+    """
+    # Check if is parent is None -> if true: -> initialize root node of element tree as 'module_dependent_root'.
+    #  Otherwise, the given parent is an ET.Element
+    if parent is None:
+        parent = ET.Element('module_dependent_root')
+
+    # Loop across the key value pairs of given dictionary to convert to an element tree.
+    for key, value in parameters_dict.items():
+        # Check if the current key is 'attribute' -> if true: -> set current value as an attribute of parent node
+        if key == 'attributes':
+            for attr_key, attr_value in value.items():
+                parent.set(attr_key, str(attr_value))
+        # Else if condition: Check if the current value is a dictionary -> if true: -> build sub-dictionary recursively.
+        elif isinstance(value, dict):
+            element = ET.Element(key)
+            parent.append(element)
+            # Call function for recursive tree building.
+            convert_dictionary_to_element_tree(value, element)
+        # Else condition: Current key value pair is an end-node -> set value of dictionary entry as text element.
+        else:
+            element = ET.SubElement(parent, key)
+            element.text = str(value)
+
+    return parent
+
+def convert_element_tree_to_dictionary(root_of_tree):
+    """ Converts an ElementTree or Element into a dictionary.
+
+    :param (xml.etree.ElementTree.Element): The root element to convert.
+    :return dict dictionary: A dictionary representation of the ElementTree.
+    """
+
+    def _etree_to_dict(tree):
+        dictionary = {tree.tag: {} if tree.attrib else None}
+        children = list(tree)
+        if children:
+            data_dict = {}
+            for data_child in map(_etree_to_dict, children):
+                for key, value in data_child.items():
+                    if key in data_dict:
+                        if isinstance(data_dict[key], list):
+                            data_dict[key].append(value)
+                        else:
+                            data_dict[key] = [data_dict[key], value]
+                    else:
+                        data_dict[key] = value
+            dictionary = {tree.tag: data_dict}
+        if tree.attrib:
+            dictionary[tree.tag].update(('@' + key, value) for key, value in tree.attrib.items())
+        if tree.text:
+            text = tree.text.strip()
+            if children or tree.attrib:
+                if text:
+                    dictionary[tree.tag]['#text'] = text
+            else:
+                dictionary[tree.tag] = text
+        return dictionary
+
+    return _etree_to_dict(root_of_tree)
+
+def get_paths_of_element_tree(element_tree, parent_path=""):
+    """ Get paths of element tree.
+
+    This function extracts all xml paths of the given element tree.
+
+    :param tree element_tree: The element tree containing the module dependent parameter.
+    :param string parent_path: The string contains the parent path of current element.
+    :return: list paths
+    """
+    paths = []
+    current_path = f"{parent_path}/{element_tree.tag}" if parent_path else element_tree.tag
+    # If the element has no children, add the current path to list of paths.
+    if len(element_tree) == 0:
+        paths.append(current_path)
+    # Run through the children recursively
+    for child in element_tree:
+        # Call function for recursive path generation.
+        paths.extend(get_paths_of_element_tree(child, current_path))
+
+    return paths
+
+
+def prepare_element_tree_for_module_key_parameter(paths_and_names, module_key_parameters_dict):
+    """Prepare element tree.
+
+    This function prepares the element tree for the current module.
+
+    :param dict paths_and_names: Dictionary containing system paths and ElementTrees
+    :param dict module_key_parameters_dict: Dict containing information on module nodes in aircraft exchange file
+    :return: dict paths_and_names
+    """
+    # Call function to convert the module key parameter dict to a module dependent element tree.
+    module_dependent_tree = convert_dictionary_to_element_tree(module_key_parameters_dict)
+
+    # Call function to generate all xml path of the module dependent element tree.
+    element_tree_paths = get_paths_of_element_tree(module_dependent_tree)
+
+    # Sort the list of xml paths, delete duplicates and prepare for element tree operations.
+    cleaned_paths = sorted(list(set(['./' + '/'.join(path.split('/')[1:-1]) for path in element_tree_paths])))
+
+    # Call function to remove old elements from aircraft exchange tree.
+    find_and_remove_paths_in_tree(paths_and_names['root_of_aircraft_exchange_tree'], cleaned_paths)
+
+    # Call function to insert module dependent entries to the aircraft exchange tree.
+    insert_missing_elements(paths_and_names['root_of_aircraft_exchange_tree'], module_dependent_tree)
+
+    return paths_and_names
+
+
+def write_key_data_to_aircraft_exchange_file(root_of_aircraft_exchange_tree, path_to_aircraft_exchange_file,
+                                             paths_to_key_parameters_list, user_output_dict, tool_level,
+                                             runtime_output):
+    """Write key data to the aircraft exchange file.
+
+    This function takes key data, verifies and writes it to the aircraft exchange file.
+        (1) Preparation: Using the paths contained in the 'user_output_dict', a list with user paths is generated that
+        is subsequently cleaned of duplicates. Next, every path in the path list is assigned to one of the four
+        categories and appended to the corresponding list:
+            (a) user path already exists in aircraft exchange file ('paths_already_in_aircraft_exchange_file_list')
+            (b) valid user path ('valid_user_paths_list')
+            (c) invalid user path (invalid_user_paths_list)
+            (d) user paths that need further checks ('user_paths_to_check_list')
+        Note: Only the paths of the last category will be considered further in the following steps.
+        For further processing, the paths in 'user_paths_to_check_list' are sorted in ascending order according to
+        their IDs. In addition, all paths that have one or more IDs are then extracted from the key paths and appended
+        to 'key_paths_with_id_list' for further use.
+        (2) Path validation and key parameter check: One by one, each key path is generalized. This means that the
+        number(s) of the ID(s) contained are replaced by an 'X'. All user paths from 'user_paths_to_check_list' are
+        checked to see whether they match the pattern of the current generalized key path. All paths that match this
+        pattern are added to the 'matching_user_paths_list'. If there are matching user paths, the code performs
+        various checks to assign these user paths to either the 'valid_user_paths_list' or 'invalid_user_paths_list'.
+        The checks include examining the structure and values of IDs within the user paths. After processing the key
+        paths, the code checks for any user paths that are neither in the 'valid_user_paths_list' nor in the
+        'invalid_user_paths_list'. These paths are considered invalid, and a warning is issued. If there are user path
+        errors, error messages are generated, and the program is prepared for possible abort. The code checks whether
+        all key parameters are written by the user. If any key parameter path is missing, an error message is issued.
+        If there are either user path errors or missing key path errors, the code generates error messages and,
+        depending on the error type, raises a ValueError exception. This exception serves as a signal to terminate the
+        program.
+        Note: Only the 'valid_user_path_list' will be considered further in the following steps.
+        (3) Initialization of tree structure: Ensure that all necessary paths exist in aircraft exchange file to enable
+        upcoming step. Furthermore, the values are checked to ensure that they are within the defined limits.
+        (4) Completion: Write to aircraft exchange file. If the file cannot be opened, an OSError is raised.
+
+    :param ElementTree root_of_aircraft_exchange_tree: Root of aircraft exchange file tree
+    :param str path_to_aircraft_exchange_file: Path to aircraft exchange file
+    :param list paths_to_key_parameters_list: List with paths to key parameters in aircraft exchange file
+    :param dict user_output_dict: Dictionary containing parameter name, path to parameter, and value of key parameters
+    :param int tool_level: Tool level of current module
+    :param logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    :raises ValueError: Raised if unsuccessful validation (faulty user paths, missing key paths or value out of limits)
+    or failed writing to the aircraft exchange file
+    :return: None
+    """
+
+    """Preparation."""
+    # Generate list with user defined paths in 'user_output_dict' and ensure operating system conformity for path
+    # separators.
+    user_defined_path_list = [user_output_dict[key][0].replace(os.sep, '/') for key in user_output_dict]
+    # Count the occurrences of each path.
+    path_counter = collections.Counter(user_defined_path_list)
+    duplicate_paths = [path for path, count in path_counter.items() if count > 1]
+    # Remove duplicates and generate a warning.
+    if duplicate_paths:
+        runtime_output.warning('Warning: Duplicate paths found. Removing the following duplicates:')
+        for duplicate_paths in duplicate_paths:
+            runtime_output.warning('                                     ' + f"Duplicate path: {duplicate_paths}")
+            user_defined_path_list.remove(duplicate_paths)
+
+    # Initialize local parameters that indicate which paths are valid, invalid, already in aircraft exchange file, and
+    # which need further checks.
+    valid_user_paths_list, invalid_user_paths_list, user_paths_to_check_list = [], [], []
+    paths_already_in_aircraft_exchange_file_list = []
+
+    # Iterate over all user defined paths in 'user_defined_path_list' and assign each path to one category.
+    for user_path in user_defined_path_list:
+        path_not_in_aircraft_exchange_file = False
+        # Check if user path (including 'value' sub-node) exists in aircraft exchange file and append to
+        # 'paths_already_in_aircraft_exchange_file_list' and 'valid_user_paths_list'.
+        if root_of_aircraft_exchange_tree.find(user_path + '/value') is not None:
+            paths_already_in_aircraft_exchange_file_list.append(user_path)
+            valid_user_paths_list.append(user_path)
+        # Else: Set 'path_not_in_aircraft_exchange_file' to 'True'.
+        else:
+            path_not_in_aircraft_exchange_file = True
+
+        # If path is not already contained in aircraft exchange file, append path to one of the following three lists:
+        # 'valid_user_paths_list', 'invalid_user_paths_list', or 'user_paths_to_check_list'.
+        if path_not_in_aircraft_exchange_file:
+            # If last character of 'user_path' is ']', path is considered invalid.
+            if user_path[-1] == ']':
+                invalid_user_paths_list.append(user_path)
+                continue
+            # Count the number of IDs in 'user_path' string.
+            user_path_id_count = user_path.count('[@ID="')
+            # If current user path is contained in list of key parameter paths, append user path to list of valid user
+            # paths.
+            if user_path in paths_to_key_parameters_list:
+                valid_user_paths_list.append(user_path)
+            # If current user path is not contained in list of key parameter paths and user path does not contain an
+            # ID, append user path to list of invalid user paths.
+            elif user_path not in paths_to_key_parameters_list and user_path_id_count == 0:
+                invalid_user_paths_list.append(user_path)
+            # If none of above criteria apply, the user path is appended to the list of paths that need further checks.
+            else:
+                user_paths_to_check_list.append(user_path)
+
+    # Extract the values after "@ID=" from the paths in the list of paths that need further checks and sort this list.
+    id_values = [int(re.search(r'@ID="(\d+)"', path).group(1)) for path in user_paths_to_check_list]
+    user_defined_path_list_sorted = [path for _, path in sorted(zip(id_values, user_paths_to_check_list))]
+
+    # Extract key paths that contain "@ID".
+    key_paths_with_id_list = [path for path in paths_to_key_parameters_list if re.search(r'@ID="\d+"', path)]
+
+    """Path validation and key parameter check."""
+    # Classify each existing user path into a category based on generalized key parameter paths and check for missing
+    # key parameter paths.
+    try:
+        # Initialization of variables for error tracking.
+        error_path_dict = {}
+        user_path_error = False
+        user_path_error_counter = 0
+        missing_key_path_error = False
+        # Iterate over key paths in list of key paths with IDs.
+        for current_key_path in key_paths_with_id_list:
+            # Check if current key path exists in 'valid_user_paths_list' (True/False).
+            key_path_exists_in_user_paths = current_key_path in valid_user_paths_list
+            # Define ID pattern to generalize "@ID" attribute in 'current_key_path' (replace ID number with 'X').
+            id_pattern = re.compile(r'@ID="(\d+)"')
+            # Store current generalized key parameter path.
+            current_generalized_key_path = re.sub(r'@ID="\d+"', '@ID="X"', current_key_path)
+            # Create empty list of matching user paths.
+            # Iterate over all user paths in sorted list of user defined paths.
+            # - Replace ID number with 'X' for generalization purposes.
+            # - Append all user paths that match the pattern of the current generalized key parameter path.
+            matching_user_paths_list = [user_path for user_path in user_defined_path_list_sorted if
+                re.sub(r'@ID="\d+"', '@ID="X"', user_path) == current_generalized_key_path]
+
+            # Sub function to sort all paths by his last ID entry in numerical order.
+            def extract_id(matching_user_paths_list):
+                matches = re.findall(r'@ID="(\d+)"', matching_user_paths_list)
+                return int(matches[-1]) if matches else float('inf')
+
+            # Sort the list by the extracted ID value.
+            matching_user_paths_list = sorted(matching_user_paths_list, key=extract_id)
+
+            # If any user paths match the current generalized key parameter path, various checks are performed to
+            # assign the corresponding user paths to either the "valid_user_paths_list" or the
+            # "invalid_user_paths_list".
+            if len(matching_user_paths_list) > 0:
+                # Create empty list of current user path IDs.
+                user_path_ids_list = []
+                # Iterate over list with user paths that match current key parameter path pattern and extract the
+                # values of contained IDs.
+                for current_matching_user_path in matching_user_paths_list:
+                    # Find all IDs of current user path.
+                    values_of_user_ids_list = re.findall(id_pattern, current_matching_user_path)
+                    # Convert the numbers from strings to integers.
+                    values_of_user_ids_list = [int(num) for num in values_of_user_ids_list]
+                    # Generate list of IDs for current user path.
+                    user_path_ids_list.append(values_of_user_ids_list)
+
+                # If the 'current_key_path' exists in 'valid_user_paths_list' and there are user path IDs, the IDs are
+                # compared and possible errors handled.
+                if key_path_exists_in_user_paths and len(user_path_ids_list) != 0:
+                    # Create a list with n zeros (n corresponds to the number of IDs in the current generalized key
+                    # parameter path) and store the list in which all IDs are zero as 'first_list'.
+                    zero_list = [0 for _ in range(len(user_path_ids_list[0]))]
+                    user_path_ids_list.insert(0, zero_list)
+                    first_list = user_path_ids_list[0]
+                    # Check each position in the lists.
+                    for i in range(1, len(user_path_ids_list)):
+                        # Check whether the first element of the previous list is NOT the same as the first element of
+                        # the current list.
+                        if first_list != user_path_ids_list[i]:
+                            # If the two IDs differ by more than 1, add the path to the list of invalid paths and go on
+                            # with the next generalized key parameter path.
+                            if abs(sum(first_list) - sum(user_path_ids_list[i])) > 1 \
+                                    and (abs(first_list[-1] - user_path_ids_list[i][-1]) > 1):
+                                user_path_error_counter += 1
+                                error_path_dict[current_generalized_key_path] = matching_user_paths_list[i-1:]
+                                [invalid_user_paths_list.append(matching_user_paths_list[j])
+                                    for j in range(0, len(matching_user_paths_list))]
+                                break
+                            # If the first ID differs by 1 compared to the previous path, then a check of the following
+                            # IDs is performed.
+                            else:
+                                valid_user_paths_list.append(matching_user_paths_list[i-1])
+                                first_list = user_path_ids_list[i]
+                        # If the first ID of the current path matches the first ID of the previous path, the subsequent
+                        # IDs are subjected to further checks.
+                        else:
+                            # If the difference between the two lists is greater than 1, append the current path to the
+                            # list of invalid paths and continue with the next generalized key parameter path.
+                            if abs(sum(first_list) - sum(user_path_ids_list[i])) > 1:
+                                user_path_error_counter += 1
+                                error_path_dict[current_generalized_key_path] = matching_user_paths_list[i-1:]
+                                [invalid_user_paths_list.append(matching_user_paths_list[j])
+                                    for j in range(0, len(matching_user_paths_list))]
+                                break
+                            # If the difference between the two lists is less than or equal to 1, then append the
+                            # current path to the list of valid paths.
+                            elif abs(sum(first_list) - sum(user_path_ids_list[i])) <= 1:
+                                valid_user_paths_list.append(matching_user_paths_list[i-1])
+                                first_list = user_path_ids_list[i]
+                # If the 'current_key_path' exists in 'valid_user_paths_list', but there are no matching user paths, a
+                # warning is issued.
+                elif key_path_exists_in_user_paths and len(user_path_ids_list) == 0:
+                    runtime_output.warning('Warning: No matching user paths according to key pattern: '
+                                           + current_generalized_key_path)
+                    continue
+                # If the 'current_key_path' does not exist in 'valid_user_paths_list' and is not contained in
+                # 'paths_already_in_aircraft_exchange_file_list', a warning is issued and the current user paths are
+                # appended to the invalid paths.
+                elif not key_path_exists_in_user_paths \
+                        and current_key_path not in paths_already_in_aircraft_exchange_file_list:
+                    runtime_output.warning('Warning: Key path missing in user defined path list: ' + current_key_path)
+                    user_path_error_counter += 1
+                    error_path_dict[current_generalized_key_path] = matching_user_paths_list
+                    [invalid_user_paths_list.append(matching_user_paths_list[j])
+                        for j in range(0, len(matching_user_paths_list))]
+                    continue
+
+        # After processing the key paths, it is checked for any user paths that are neither in 'valid_user_paths_list'
+        # nor in 'invalid_user_paths_list'. These paths are considered invalid, and a warning is issued.
+        for tmp_path in user_defined_path_list_sorted:
+            if tmp_path not in valid_user_paths_list and tmp_path not in invalid_user_paths_list:
+                invalid_user_paths_list.append(tmp_path)
+                runtime_output.warning(
+                    ('Warning: The path "' + tmp_path + '" is not a key value and therefore not written to aircraft '
+                     'exchange file. Please contact module manager for further instructions.'))
+
+        # If there are user path errors, error messages are generated.
+        if user_path_error_counter > 0:
+            user_path_error = True
+            # Generate error messages.
+            for key, value in error_path_dict.items():
+                runtime_output.error('Error: The following user paths of the pattern "' + key + '" are invalid:')
+                for i, value in enumerate(value):
+                    runtime_output.error('                                     ' + value)
+                user_path_error_string = 'Please change user paths according to style guidelines.'
+
+        # Check whether all key parameters are written by the user.
+        missing_key_path_list = []
+        missing_key_path_error_string = str()
+        for tmp_key_path in paths_to_key_parameters_list:
+            # If a key parameter path is missing, an error message is issued.
+            if tmp_key_path not in valid_user_paths_list:
+                runtime_output.error('Error: The following key parameter is not set: ' + tmp_key_path)
+                missing_key_path_list.append(tmp_key_path)
+        # If there are missing key path errors, error messages are generated.
+        if len(missing_key_path_list) != 0:
+            missing_key_path_error = True
+            missing_key_path_error_string = 'Please make sure to write all necessary key parameters of your method.'
+
+        # If there are user path errors or missing key path errors, error messages are generated and the program is
+        # aborted with a ValueError exception.
+        if user_path_error or missing_key_path_error:
+            if user_path_error and not missing_key_path_error:
+                raise ValueError(user_path_error_string + ' Program aborted!')
+            elif not user_path_error and missing_key_path_error:
+                raise ValueError(missing_key_path_error_string + ' Program aborted!')
+            else:
+                raise ValueError(user_path_error_string[:-1] + ' and ' + missing_key_path_error_string.lower()
+                                 + ' Program aborted!')
+
+    # Exception handling for value error.
+    except ValueError as e:
+        runtime_output.critical('Error: ' + str(e))
+        sys.exit(1)
+
+    """Initialization of tree structure."""
+    # Initialization.
+    component_layer_old = str()
+    sub_node_list = ['value', 'unit', 'lower_boundary', 'upper_boundary']
+    # Extract the corresponding dictionary entries to the valid user paths.
+    valid_key_dict = {key: value for (key, value) in user_output_dict.items()
+                      if user_output_dict[key][0] in valid_user_paths_list}
+
+    # Create all necessary nodes in the aircraft exchange file and check whether the results are within the expected
+    # limits.
+    try:
+        # Iterate over all parameters in 'valid_key_dict'.
+        for key in valid_key_dict:
+            # Extract path.
+            tmp_string = valid_key_dict[key][0]
+            # Split 'tmp_string' at operating system separator.
+            parts_list = tmp_string.split('/')
+            # Delete all empty list entries if existing.
+            filtered_parts = [part for part in parts_list if part]
+            # Store third element as 'component_layer'.
+            component_layer = filtered_parts[2]
+            # Initialization of necessary variables.
+            parent_path = []
+            path_to_check = '.'
+            first_id_parent = []
+            tmp_zero_path = str()
+            path_contains_id = False
+            # Check if the current part of string is existing in the aircraft exchange ElementTree.
+            for part in filtered_parts[1:]:
+                # Extend the 'path_to_check' with the current 'part'.
+                path_to_check = os.path.join(path_to_check, part).replace(os.sep, '/')
+                # Check if the path exist in aircraft exchange ElementTree.
+                path_flag = root_of_aircraft_exchange_tree.find(path_to_check)
+                # Check if the 'component_layer' is the same as the 'component_layer_old'.
+                same_component_layer = component_layer == component_layer_old
+                # Set 'tool_level' attribute if path exists, the current part equals 'component_layer', and if the
+                # 'component_layer' is different from the previous one.
+                if path_flag is not None and part == component_layer and not same_component_layer:
+                    path_flag.set('tool_level', tool_level)
+                    component_layer_old = component_layer
+                # Add the current part of string to the ElementTree as a new sub-node if the node does not exist.
+                if path_flag is None:
+                    # Check if current part of string contains '@' (indicating ID).
+                    if '@' in part:
+                        # Set flag if string contains '@'.
+                        path_contains_id = True
+                        if len(first_id_parent) == 0:
+                            first_id_parent = parent_path
+                        # Handle attribute 'ID' (extract 'ID' and value of ID, generate new sub-node under current
+                        # 'parent_path', and set attribute 'ID' with according value).
+                        attribute_name, attribute_value = part.split('=')
+                        attribute_name = attribute_name.split('[@')
+                        attribute_id = attribute_name[1]
+                        attribute_value = attribute_value[attribute_value.find('"')+1:attribute_value.rfind('"')]
+                        node_name = attribute_name[0]
+                        new_node = ET.SubElement(parent_path, node_name)
+                        new_node.set(attribute_id, attribute_value)
+                        # Handle attribute 'description' (set the description to description of the 'tmp_zero_path').
+                        tmp_pattern = r'"(.*?)"'
+                        tmp_zero_path = re.sub(tmp_pattern, '"0"', path_to_check)
+                        tmp_description = root_of_aircraft_exchange_tree.find(tmp_zero_path).get('description')
+                        new_node.set('description', tmp_description)
+                    # Current path does not contain '@'.
+                    else:
+                        if len(tmp_zero_path) != 0:
+                            tmp_zero_path = tmp_zero_path + '/' + part
+                        else:
+                            tmp_pattern = r'"(.*?)"'
+                            tmp_zero_path = re.sub(tmp_pattern, '"0"', path_to_check)
+                            path_contains_id = True
+                        element_to_add = ET.Element(part)
+                        # Check if description exists.
+                        if path_to_check == './component_design/fuselage/specific/geometry/fuselage[@ID="0"]/mass_breakdown/fuselage_furnishing/component_mass[@ID="0"]/mass':
+                            formatted_xml = ET.tostring(root_of_aircraft_exchange_tree.getroot(), encoding='unicode', method='xml')
+                            formatted_xml_with_indent = minidom.parseString(formatted_xml).toprettyxml(indent="    ")
+                        description_of_zero_path = \
+                            root_of_aircraft_exchange_tree.find(tmp_zero_path).get('description')
+                        element_to_add.set('description', description_of_zero_path)
+                        # Append 'element_to_add' to 'parent_path'.
+                        parent_path.append(element_to_add)
+                parent_path = root_of_aircraft_exchange_tree.find(path_to_check)
+                # Check if the current 'part' is the last element in the 'filtered_parts' list.
+                if part == filtered_parts[-1]:
+                    # Check if 'path_to_check' contains an ID.
+                    if path_contains_id:
+                        # Check if 'path_to_check' is not equal to 'tmp_zero_path'.
+                        if path_to_check != tmp_zero_path:
+                            # Check if the current parameter not is not 'name'
+                            #  -> if true: -> add all sub nodes to current parameter
+                            if part != 'name':
+                                # Iterate through 'sub_node_list'.
+                                for sub_node in sub_node_list:
+                                    # Check if 'sub-node' exists in 'tmp_zero_path'.
+                                    tmp_sub_node_exists_in_zero_path = \
+                                        root_of_aircraft_exchange_tree.find(tmp_zero_path + '/' + sub_node)
+                                    if tmp_sub_node_exists_in_zero_path is not None:
+                                        # Create new XML subelement with same name as 'sub_node' under 'parent_path'.
+                                        ET.SubElement(parent_path, sub_node)
+                                        # Get associated element. Set text to text of element in 'tmp_zero_path/sub_node'.
+                                        tmp_path = root_of_aircraft_exchange_tree.find(path_to_check + '/' + sub_node)
+                                        if sub_node == 'value':
+                                            if isinstance(user_output_dict[key][1], bool):
+                                                if user_output_dict[key][1]:
+                                                    tmp_path.text = 'true'
+                                                else:
+                                                    tmp_path.text = 'false'
+                                            else:
+                                                tmp_path.text = str(user_output_dict[key][1])
+                                        else:
+                                            tmp_path.text = str(root_of_aircraft_exchange_tree.find(
+                                                tmp_zero_path + '/' + sub_node).text)
+                            # Else condition: The current parameter not is 'name'
+                            #  -> add only 'value' sub note to current parameter
+                            else:
+                                # Check if 'value' exists in 'tmp_zero_path'.
+                                tmp_sub_node_exists_in_zero_path = \
+                                    root_of_aircraft_exchange_tree.find(tmp_zero_path + '/value')
+                                if tmp_sub_node_exists_in_zero_path is not None:
+                                    # Create new XML subelement with same name as 'sub_node' under 'parent_path'.
+                                    ET.SubElement(parent_path, 'value')
+                                    # Get associated element. Set text to text of element in 'tmp_zero_path/sub_node'.
+                                    tmp_path = root_of_aircraft_exchange_tree.find(path_to_check + '/value')
+                                    tmp_path.text = str(user_output_dict[key][1])
+                    # 'path_to_check' does not contain an ID.
+                    else:
+                        # Find the XML element at 'path_to_check' + '/value'.
+                        tmp_path = root_of_aircraft_exchange_tree.find(path_to_check + '/value')
+                        # Get value associated with the key from 'user_output_dict'.
+                        tmp_value = user_output_dict[key][1]
+                        # Find lower and upper boundary elements.
+                        lower_boundary = root_of_aircraft_exchange_tree.find(path_to_check + '/lower_boundary')
+                        upper_boundary = root_of_aircraft_exchange_tree.find(path_to_check + '/upper_boundary')
+                        # Check if lower and upper boundaries are checkable (checkable means not None and not "None").
+                        lower_boundary_checkable = lower_boundary is not None and \
+                            (lower_boundary.text is not None and lower_boundary.text != 'None')
+                        upper_boundary_checkable = upper_boundary is not None and \
+                            (upper_boundary.text is not None and upper_boundary.text != 'None')
+                        # Check if the value falls below the lower boundary (if checkable).
+                        if lower_boundary_checkable and tmp_value < float(lower_boundary.text):
+                            raise ValueError('The value of the parameter ' + str(key) + ' = ' + str(tmp_value)
+                                             + ' falls below the given lower boundary of ' + lower_boundary.text
+                                             + '. Program aborted!')
+                        # Check if the value exceeds the upper boundary (if checkable).
+                        if upper_boundary_checkable and tmp_value > float(upper_boundary.text):
+                            raise ValueError('The value of the parameter ' + str(key) + ' = ' + str(tmp_value) +
+                                             ' exceeds the given upper boundary of ' + upper_boundary.text
+                                             + '. Program aborted!')
+                        # If no boundary conditions were violated, set tmp_path.text to the value.
+                        if isinstance(tmp_value, bool):
+                            if tmp_value:
+                                tmp_value = 'true'
+                            else:
+                                tmp_value = 'false'
+
+                        tmp_path.text = str(tmp_value)
+
+            # Sort all child nodes alphabetically according to their tags.
+            sort_root = first_id_parent
+            children = list(sort_root)
+            children.sort(key=lambda x: x.tag)
+            # Delete all child nodes from root element.
+            for child in children:
+                sort_root.remove(child)
+            # Add the sorted child nodes back to the root element.
+            for child in children:
+                sort_root.append(child)
+
+    # Exception handling for value error.
+    except ValueError as e:
+        runtime_output.critical('Error:' + str(e))
+        sys.exit(1)
+
+    """Completion."""
+    # Ensure proper indentation.
+    ET.indent(root_of_aircraft_exchange_tree, space="    ", level=0)
+    # Write all key parameters to aircraft exchange file.
+    try:
+        # Write data to file.
+        root_of_aircraft_exchange_tree.write(path_to_aircraft_exchange_file,  encoding='utf-8')
+    # Exception handling for operating system error.
+    except OSError:
+        runtime_output.critical('Error: Writing to aircraft exchange file failed. Program aborted!')
+        sys.exit(1)
+
+
+def method_data_postprocessing(paths_and_names, routing_dict, data_dict, method_specific_output_dict, runtime_output):
+    """General data postprocessing for current calculation method.
+
+    This function executes the method's own postprocessing. It is divided into general postprocessing and user layer
+    specific postprocessing:
+        - General postprocessing: The general postprocessing contains operations that are always carried out regardless
+        of the user layer. This includes general reports and plots.
+        - User layer specific postprocessing: Specific postprocessing includes, for example, plots that can/should only
+        be created if the user layer contains a certain value. The same applies to reports with values that are only
+        determined for certain user layer values.
+    Note that it may also be possible that the specific part is omitted, as the entire postprocessing is independent of
+    the user layer.
+
+    :param dict paths_and_names: Dictionary containing system paths and ElementTrees
+    :param dict routing_dict: Dictionary containing routing parameters
+    :param dict data_dict: Dictionary containing results of module execution
+    :param dict method_specific_output_dict: Dictionary containing method-specific output data
+    :param logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    :raises OSError: Raised if any method-specific postprocessing function fails
+    :return: None
+    """
+
+    # Read output switches from module configuration file.
+    root_of_module_config_tree = paths_and_names['root_of_module_config_tree']
+    plot_switch = (eval(root_of_module_config_tree.find('.//plot_output/enable/value').text.capitalize()))
+    html_switch = eval(root_of_module_config_tree.find('.//report_output/value').text.capitalize())
+    tex_switch = eval(root_of_module_config_tree.find('.//tex_report/value').text.capitalize())
+    if root_of_module_config_tree.find('.//xml_output/value') is not None:
+        xml_export_switch = eval(root_of_module_config_tree.find('.//xml_output/value').text.capitalize())
+    else:
+        xml_export_switch = False
+
+    # Plot functionality.
+    if plot_switch:
+        if not os.path.isdir(paths_and_names['project_directory'] + '/reporting/plots'):
+            os.makedirs(paths_and_names['project_directory'] + '/reporting/plots')
+        try:
+            # Run 'method_plot' from 'methodplot.py'.
+            routing_dict['func_user_method_plot'](paths_and_names, routing_dict, data_dict, method_specific_output_dict,
+                                                  runtime_output)
+        except OSError as e:
+            runtime_output.error(str(e) + '\n '
+                                 + '                                     '
+                                 + 'Error: "method_plot" function failed. No plots generated and saved.')
+    else:
+        runtime_output.warning('Warning: "plot_output" switch in module configuration file set to "False". '
+                               + 'No plots generated.')
+
+    # HTML report functionality.
+    if html_switch:
+        if not os.path.isdir(paths_and_names['project_directory'] + '/reporting/report_html'):
+            os.makedirs(paths_and_names['project_directory'] + '/reporting/report_html')
+            
+        try:
+            # Run 'method_html_report' from 'methodhtmlreport.py'.
+            routing_dict['func_user_method_html_report'](paths_and_names, routing_dict, data_dict,
+                                                         method_specific_output_dict, runtime_output)
+        except OSError as e:
+            runtime_output.error(str(e) + '\n '
+                                 + '                                     '
+                                 + 'Error: "method_html_report" function failed. '
+                                 + 'No additional data written to HTML report file.')
+    else:
+        runtime_output.warning(
+            'Warning: "html_output" switch in module configuration file set to "False". No HTML report generated.'
+        )
+
+    # XML export functionality.
+    if xml_export_switch:
+        if not os.path.isdir(paths_and_names['project_directory'] + '/reporting/report_xml'):
+            os.makedirs(paths_and_names['project_directory'] + '/reporting/report_xml')
+            
+        xml_export_tree, path_to_results_file = prepare_method_specific_xml_file(paths_and_names, routing_dict,
+                                                                                 runtime_output)
+        try:
+            # Run 'method_xml_export' from 'methodxmlexport.py'.
+            routing_dict['func_user_method_xml_export'](paths_and_names, routing_dict, data_dict,
+                                                        method_specific_output_dict, xml_export_tree,
+                                                        path_to_results_file, runtime_output)
+        except OSError as e:
+            runtime_output.error(str(e) + '\n '
+                                 + '                                     '
+                                 + 'Error: "method_xml_export" function failed. '
+                                 + 'No additional data written to module specific XML results file.'
+                                 )
+    else:
+        runtime_output.warning('Warning: "xml_output" switch in module configuration file set to "False". '
+                               + 'No XML results file generated.')
+
+    # TeX output functionality.
+    if tex_switch:
+        if not os.path.isdir(paths_and_names['project_directory'] + '/reporting/report_tex'):
+            os.makedirs(paths_and_names['project_directory'] + '/reporting/report_tex')
+            
+        try:
+            # Run 'method_tex_output' from 'methodtexoutput.py'.
+            routing_dict['func_user_method_tex_output'](paths_and_names, routing_dict, data_dict,
+                                                        method_specific_output_dict, runtime_output)
+        except OSError as e:
+            runtime_output.error(str(e) + '\n '
+                                 + '                                     '
+                                 + 'Error: "method_tex_output" function failed. '
+                                 + 'No TeX report file generated.'
+                                 )
+    else:
+        runtime_output.warning(
+            'Warning: "tex_output" switch in module configuration file set to "False". No TeX report file generated.')
+
+
+def prepare_method_specific_xml_file(paths_and_names, routing_dict, runtime_output):
+    """Generate XML file with general information on module execution to prepare the method-specific data output.
+
+    This function generates the basic structure of an XML file that is intended for the export of method-specific data.
+    This involves the following steps:
+        (1) Generate the file and module name as well as the path to the results file using information provided by the
+        'paths_and_names' dictionary.
+        (2) Delete older versions of the file (if existing).
+        (3) Create the XML structure
+            3.1) Create a 'general_information' block that contains the following information:
+                - Version of the current UNICADO workflow
+                - Code execution date and time
+                - Current aircraft project name
+                - Calculation method name
+            3.2) Create a 'routing_layer' block that contains information on the current routing layers.
+            3.3) Create a 'calculation_results' block that serves as a placeholder for the subsequent export of data
+            (if desired)
+
+    :param dict paths_and_names: Dictionary containing system paths and ElementTrees
+    :param dict routing_dict: Dictionary containing routing parameters
+    :param logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    :raises OSError: Raised if workflow version file not found
+    :returns:
+        - ElementTree xml_export_tree: Element tree of method-specific XML tree
+        - str path_to_results_file: Path to method-specific output XML file
+    """
+
+    # Initialize parameters.
+    file_name = paths_and_names['tool_name'] + '_results.xml'
+    module_name = paths_and_names['tool_name'].replace('_', ' ').capitalize()
+    path_to_results_file = paths_and_names["project_directory"] + '/reporting/report_xml/' + file_name
+
+    # Delete older output file if existing.
+    if os.path.isfile(path_to_results_file):
+        os.remove(path_to_results_file)
+
+    # Create directory for xml reports, if not existing
+    os.makedirs(paths_and_names["project_directory"] + '/reporting/report_xml/', exist_ok = True)
+
+    # Generate new ElementTree.
+    xml_export_root = ET.Element("module_results_file")
+    # Set name of current tool 'Name' of root element and generate ElementTree.
+    xml_export_root.set("Name", module_name + " specific outputs")
+    xml_export_tree = ET.ElementTree(xml_export_root)
+    # Add 'general_information' sub-node.
+    child = ET.SubElement(xml_export_root, "general_information")
+    child.set("description", "General information on module execution")
+
+    try:
+        # Initialize general information parameters.
+        if os.path.isfile(paths_and_names['working_directory'] + '/version.txt'):
+            # Open file and read version information.
+            with open(paths_and_names['working_directory'] + '/version.txt', 'r') as file:
+                # Read first line.
+                workflow_version = file.readline()
+        else:
+            workflow_version = "not available"
+    except OSError as e:
+        runtime_output.warning('Warning: ' + str(e) + ' \n'
+                               + '                                     '
+                               + 'Workflow version file not found.')
+
+    execution_date = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
+    root_of_module_config_tree = paths_and_names['root_of_module_config_tree']
+    project_name = (
+        root_of_module_config_tree.find('./control_settings/aircraft_exchange_file_name/value').text.split(".xml"))[0]
+    method_name = root_of_module_config_tree.find('./program_settings/configuration/method_name/value').text
+    # Definition of subnodes of 'general_information'.
+    # Format: general_information_subnodes = { 'name_of_sub-node': [description, value], ...}
+    general_information_subnodes = {
+        'workflow_version': ['Version number of the current workflow', workflow_version],
+        'execution_date': ['Execution date and time of the code', execution_date],
+        'project_name': ['Name of the current aircraft project', project_name],
+        'method_name': ['Name of current module calculation method', method_name]
+    }
+    # Iterate over 'general_information_subnodes' dictionary and add all keys as children.
+    for key, value in general_information_subnodes.items():
+        # Create a subelement for each key.
+        key_element = ET.SubElement(child, key)
+        # Add an attribute "description" and set the value to the first entry of the value-list.
+        key_element.set("description", value[0])
+        # Add a subelement "value" and set the value as text.
+        value_element = ET.SubElement(key_element, "value")
+        value_element.text = value[1]
+    # Add routing layer block.
+    routing_layer_element = ET.SubElement(child, 'routing_layer')
+    routing_layer_element.set("description", "Routing layer information")
+    # Iterate over 'routing_dict' and add keys that contain 'layer' as children of 'routing_layer_element'.
+    for key, value in routing_dict.items():
+        if 'layer' in key:
+            key_element = ET.SubElement(routing_layer_element, key)
+            key_element.set("description", 'Routing ' + str(key))
+            value_element = ET.SubElement(key_element, "value")
+            value_element.text = value
+    # Add 'calculation_results' block.
+    child = ET.SubElement(xml_export_root, "calculation_results")
+    child.set("description", "Results of calculation method")
+
+    # Ensure proper indentation and write file.
+    ET.indent(xml_export_root, space="    ", level=0)
+    try:
+        xml_export_tree.write(path_to_results_file)
+    except OSError as e:
+        runtime_output.critical('Error: ' + str(e))
+        sys.exit(1)
+
+    return xml_export_tree, path_to_results_file
diff --git a/pymodulepackage/src/datapreprocessingmodule.py b/pymodulepackage/src/datapreprocessingmodule.py
new file mode 100644
index 00000000..b723f1b1
--- /dev/null
+++ b/pymodulepackage/src/datapreprocessingmodule.py
@@ -0,0 +1,801 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+"""Module providing general UNICADO data preprocessing functions for Python code."""
+# Import standard modules.
+import os
+import re
+import sys
+import logging
+import xml.etree.ElementTree as ET
+from pathlib import Path
+from datetime import datetime
+from inspect import currentframe, getframeinfo
+from runtimeoutputmodule import configure_runtime_output
+
+
+def method_data_preprocessing(paths_and_names, routing_dict, runtime_output):
+    """General data preprocessing for current calculation method.
+
+    This function performs general data preprocessing on input data obtained from aircraft exchange and module
+    configuration files. It accomplishes the following tasks:
+        (1) Data preparation: Extract root elements of aircraft exchange and module configuration trees from
+        'paths_and_names' dict. Invoke 'user_method_data_preparation' function, specified in 'routing_dict', to obtain
+        information on data to extract from these files, resulting in two dictionaries, namely the
+        'data_to_extract_from_aircraft_exchange_dict' and the 'data_to_extract_from_module_configuration_dict'.
+        (2) Read values from XML files: Using the above defined dictionaries with information on parameters that must
+        be extracted from the aircraft exchange and module configuration file, the according values are read from the
+        respective files and stored in 'tmp_aircraft_exchange_dict' and 'tmp_module_configuration_dict'. These
+        temporary dictionaries have a specific format for each parameter, including the parameter's name, path, value,
+        lower boundary, and upper boundary:
+            tmp_dict = {'parameter_name_1': [path, expected data type, value, lower boundary, upper boundary],
+                        'parameter_name_2': [...],
+                        ...}
+        (3) The code then iterates over both temporary dictionaries, type casts the values to their expected data types,
+        checks if the values are within specified lower and upper boundaries, and stores the checked values in a new
+        dictionary, 'dict_out_short'. This dictionary contains the values for the same parameters as the input
+        dictionaries but with checked and possibly modified values.
+    The code returns two dictionaries: 'short_aircraft_exchange_dict' and 'short_module_configuration_dict', that
+    represent the preprocessed data for the aircraft exchange and module configuration file, respectively. The
+    dictionaries represent condensed forms of the 'tmp_aircraft_exchange_dict' and the 'tmp_module_configuration_dict'
+    and are structured according to the following scheme:
+        dict = {'parameter_name_1': value, ...}
+
+    In the case of a multi-parameter (xml path contains '@ID' identifier), the value of the parameter key
+    ('parameter_name_1') contains a sub-dictionary with all existing parameter ID names ('parameter_name_1_ID...') and
+    its corresponding values.
+        dict = {'parameter_name_1': {'parameter_name_1_ID0': value, 'parameter_name_1_ID1': value}, ...}
+
+    :param dict paths_and_names: Dictionary containing system paths and ElementTrees
+    :param dict routing_dict: Dictionary containing information on necessary data from module configuration file
+    :param logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    :returns:
+        - dict short_aircraft_exchange_dict: Dict containing parameters and acc. values from aircraft exchange file
+        - dict short_module_configuration_dict: Dict containing parameters and acc. values from module config. file
+    """
+
+    """Data preparation."""
+    # Extract roots of aircraft exchange and module configuration file.
+    root_of_aircraft_exchange_tree = paths_and_names['root_of_aircraft_exchange_tree']
+    root_of_module_config_tree = paths_and_names['root_of_module_config_tree']
+    # Run 'user_method_data_preparation' from 'usermethoddatapreparation.py'.
+    data_to_extract_from_aircraft_exchange_dict, data_to_extract_from_module_configuration_dict \
+        = routing_dict['func_user_method_data_input_preparation'](routing_dict)
+
+    """Read values from XML files."""
+    # Read values from aircraft exchange and module configuration file.
+    tmp_aircraft_exchange_dict = read_values_from_xml_file(data_to_extract_from_aircraft_exchange_dict,
+                                                           root_of_aircraft_exchange_tree, runtime_output)
+    tmp_module_configuration_dict = read_values_from_xml_file(data_to_extract_from_module_configuration_dict,
+                                                              root_of_module_config_tree, runtime_output)
+
+    """Extract, compute (type cast), and check values from output dictionary."""
+    tmp_list = []
+    # Iterate over both dictionaries.
+    for tmp_dict in [tmp_aircraft_exchange_dict, tmp_module_configuration_dict]:
+        dict_out_short = {}
+        multi_parameter_dict = {}
+        # Iterate over all elements of current dictionary.
+        for key in tmp_dict.keys():
+            # Extract and compute values.
+            parameter_name = key
+            expected_data_type = tmp_dict[key][1]
+            # Check if the current expected data type is not tool_level.
+            if expected_data_type != 'tool_level':
+                value = convert_string_to_expected_data_type(
+                    tmp_dict[key][-3], expected_data_type, parameter_name,
+                    runtime_output)
+                lower_boundary = convert_string_to_expected_data_type(tmp_dict[key][-2], expected_data_type,
+                                                                    ("lower_boundary_of_" + parameter_name),
+                                                                    runtime_output)
+                upper_boundary = convert_string_to_expected_data_type(tmp_dict[key][-1], expected_data_type,
+                                                                    ("upper_boundary_of_" + parameter_name),
+                                                                    runtime_output)
+                # Check if value is within specified limits.
+                checked_value = check_boundaries(parameter_name, value, runtime_output, lower_boundary, upper_boundary)
+
+                # Check if the current parameter to check is a multi-parameter with "@ID" xml path.
+                if tmp_dict[key][2]:
+                    if not tmp_dict[key][3] in multi_parameter_dict:
+                        multi_parameter_dict[tmp_dict[key][3]] = {}
+                    multi_parameter_dict[tmp_dict[key][3]][key] = checked_value
+                # Else condition: current parameter is a single parameter.
+                else:
+                    # Set value to checked value and write to output dictionary.
+                    dict_out_short[key] = checked_value
+            # Else condition: The current expected data type is a tool_level.
+            else:
+                # Check if the value of tool_level is not None.
+                if tmp_dict[key][-3] is not None:
+                    dict_out_short[key] = int(tmp_dict[key][-1])
+                # Else condition: The current value of tool_level is None.
+                else:
+                    dict_out_short[key] = None
+
+        # Update and append 'dict_out_short'.
+        dict_out_short = {**dict_out_short, **multi_parameter_dict}
+        tmp_list.append(dict_out_short)
+
+    # Extract short versions of dictionaries from 'tmp_list'.
+    short_aircraft_exchange_dict = tmp_list[0]
+    short_module_configuration_dict = tmp_list[1]
+
+    return short_aircraft_exchange_dict, short_module_configuration_dict
+
+
+def get_paths_and_names(module_configuration_file_name, argv):
+    """Generate paths, names, and ElementTree based on module configuration file.
+
+    This function generates paths and names as well as ElementTrees of the module configuration (config) and
+    the associated aircraft exchange file. All generated parameters are returned via the output dictionary
+    'paths_and_names'.
+
+    The 'paths_and_names' output dictionary contains the following values:
+        - 'working_directory': Current working directory of module (str)
+        - 'parent_directory': Parent directory of module (str)
+        - 'project_directory': Current project directory (str)
+        - 'path_to_module_config_file': Path to module configuration file (str)
+        - 'root_of_module_config_tree': Root of module configuration file tree (ElementTree)
+        - 'path_to_aircraft_exchange_file': Path to aircraft exchange file (str)
+        - 'root_of_aircraft_exchange_tree': Root of aircraft exchange file tree (ElementTree)
+        - 'name_of_project': Name of the current aircraft project (str)
+        - 'tool_name': Name of current tool (str)
+
+    :param str module_configuration_file_name: Name of module configuration file
+    :param list argv: Contains optional input arguments
+    :returns:
+        - dict paths_and_names: Dictionary containing system paths and ElementTrees
+        - logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    """
+
+    # Initialization.
+    path_flag = False
+    given_path = str()
+    log_file_list = []
+    current_parent_directory = str()
+    current_working_directory = str()
+    path_to_module_config_file = str()
+    function_name = getframeinfo(currentframe()).function
+
+    """Generate paths, names, and ElementTree for module configuration file."""
+    # Determine the module's working directory and path to the module configuration file.
+    # This section handles different cases depending on the presence of command line arguments.
+    # Read and process command line arguments.
+    if len(argv) == 1:
+        # Read current working directory.
+        current_working_directory = argv[-1]
+        # Convert path of current working directory to python path (\ to /).
+        current_working_directory = os.path.dirname(current_working_directory.replace(os.sep, '/'))
+        if (len(argv[-1]) >= (len(os.path.splitext(module_configuration_file_name)[0][:-5]))) \
+            and (len(current_working_directory) <= (len(os.path.splitext(module_configuration_file_name)[0][:-5]))):
+            current_working_directory = os.getcwd()
+        # Get current parent directory.
+        count = current_working_directory.rfind('/')
+        current_parent_directory = current_working_directory[0:count]
+        # Generate path of module configuration file.
+        path_to_module_config_file = (current_working_directory + '/' + module_configuration_file_name)
+    else:
+        # Handle a specific command line argument to set the given path.
+        given_path = argv[-1]
+        path_flag = True
+
+    if path_flag:
+        # Convert path of optional argument path of module configuration file to python path (\ to /).
+        if not os.path.isabs(given_path):
+            given_path = os.path.abspath(given_path)
+            current_working_directory = given_path.replace(os.sep, '/')
+        else:
+            given_path = given_path.replace(os.sep, '/')
+            if given_path[-1] == '/':
+                current_working_directory = given_path[:-2]
+            else:
+                current_working_directory = given_path
+        # Check if the optinal path argument is a directory or a file -> if a file -> correct the current_working_directory
+        if not os.path.isdir(current_working_directory):
+            count = current_working_directory.rfind('/')
+            current_working_directory = current_working_directory[:count]
+            # Generate path of module configuration file.
+            path_to_module_config_file = given_path
+        else:
+           # Generate path of module configuration file.
+            path_to_module_config_file = current_working_directory + '/' + module_configuration_file_name 
+        # Get current parent directory.
+        count = current_working_directory.rfind('/')
+        current_parent_directory = current_working_directory[:count]
+        
+
+    # Determine the current module name 'tool_name' based on the module configuration file name.
+    tool_name = os.path.splitext(module_configuration_file_name)[0][:-5]
+
+    # Read ElementTree of module configuration file.
+    frame_info = getframeinfo(currentframe())
+    # Call function to read module configuration XML file as ElementTree.
+    root_of_module_config_tree, __, log_file_list, error_flag = read_xml_information(
+        path_to_module_config_file, os.path.splitext(module_configuration_file_name)[0], function_name,
+        frame_info.lineno, log_file_list)
+
+    """Generate paths, names, and ElementTree for aircraft exchange file."""
+    if not error_flag:
+        # Read aircraft project name and directory.
+        current_aircraft_exchange_file_name = root_of_module_config_tree.find(
+            "./control_settings/aircraft_exchange_file_name/value").text
+        # Get name of project.
+        name_of_project = os.path.splitext(current_aircraft_exchange_file_name)[0]        
+        current_aircraft_exchange_file_directory = root_of_module_config_tree.find("./control_settings/aircraft_exchange_file_directory/value").text
+        
+        if not path_flag:
+            # Check if current execution inside of an virtuell enviroment 
+            #  -> if true: -> rebuild path to aircraft exchange file 
+            if sys.prefix != sys.base_prefix: 
+                if not os.path.isabs(current_aircraft_exchange_file_directory):
+                    current_aircraft_exchange_file_directory = \
+                        Path(current_aircraft_exchange_file_directory).resolve().relative_to(Path.cwd().parent)
+                    current_aircraft_exchange_file_directory = str(current_parent_directory / current_aircraft_exchange_file_directory)
+                
+            else:
+                # Get path to current aircraft project and aircraft exchange file.
+                if not os.path.isabs(current_aircraft_exchange_file_directory):
+                    current_aircraft_exchange_file_directory = os.path.abspath(current_aircraft_exchange_file_directory)
+                       
+            # get absolut path aircraft exchange file
+            path_to_aircraft_exchange_file = current_aircraft_exchange_file_directory + '/' + current_aircraft_exchange_file_name
+        else:
+            name_of_project = os.path.splitext(current_aircraft_exchange_file_name)[0]
+            path_to_aircraft_exchange_file = current_aircraft_exchange_file_directory + '/' \
+                + current_aircraft_exchange_file_name
+
+        # Read ElementTree of module configuration file.
+        frame_info = getframeinfo(currentframe())
+        # Call function to read aircraft exchange XML file as ElementTree.
+        root_of_aircraft_exchange_tree, __, log_file_list, error_flag = read_xml_information(
+            path_to_aircraft_exchange_file, name_of_project, function_name,
+            frame_info.lineno, log_file_list)
+
+        """Generate return dictionary."""
+        paths_and_names = {'working_directory': current_working_directory,
+                           'parent_directory': current_parent_directory,
+                           'project_directory': current_aircraft_exchange_file_directory,
+                           'path_to_module_config_file': path_to_module_config_file,
+                           'root_of_module_config_tree': root_of_module_config_tree,
+                           'path_to_aircraft_exchange_file': path_to_aircraft_exchange_file,
+                           'root_of_aircraft_exchange_tree': root_of_aircraft_exchange_tree,
+                           'name_of_project': name_of_project,
+                           'tool_name': tool_name,
+                           }
+    else:
+        paths_and_names = {'working_directory': current_working_directory, 'tool_name': tool_name}
+
+    """Configure logger and initialize logger instance."""
+    configure_runtime_output(paths_and_names)
+    runtime_output = logging.getLogger(__name__)
+
+    if error_flag:
+        for entry in log_file_list:
+            runtime_output.critical(entry)
+        sys.exit(1)
+
+    return paths_and_names, runtime_output
+
+
+def read_xml_information(path, xml_file_name, function_name, code_line, log_file_list):
+    """Read tree of XML file.
+
+    This function reads and returns the ElementTree of the given XML file and its root.
+
+    :param str path: Absolute path to the given XML file
+    :param str xml_file_name: Name of the given XML file to read
+    :param str function_name: Name of the function that called 'read_xml_information'
+    :param int code_line: Code line number of function that called 'read_xml_information' in 1
+    :param list log_file_list: Strings of workflow log file from caller function and added strings from this function
+    :raises OSError: Error if XML file cannot be opened
+    :returns:
+        - ElementTree xml_tree: ElementTree of given XML file
+        - ElementTree root_of_xml_tree: Root of ElementTree of given XML file
+        - list log_file_list: List with log file entries
+        - bool error_flag: Flag if error occurs (error: True, no error: False)
+    """
+
+    # Initialize local parameters.
+    xml_tree = None
+    error_flag = False
+    root_of_xml_tree = None
+    # Initialize element tree with content of file and return root element (if given).
+    try:
+        # Attempt to create an ElementTree and get the root element from the XML file.
+        xml_tree = ET.ElementTree(file=path)
+        root_of_xml_tree = xml_tree.getroot()
+    # Exception handling for operating system (OS) error.
+    except OSError:
+        # Handle an error if the XML file cannot be opened. Print an error message and log it to a log file.
+        log_file_list.append('Error in file "' + function_name + '.py" (line ' + str(code_line + 2) + ') \n'
+                             '                                     ' + 'The "' + xml_file_name +
+                             '.xml" file could not be opened.  \n'
+                             '                                     ' + 'Program aborted!')
+
+        error_flag = True
+
+    return xml_tree, root_of_xml_tree, log_file_list, error_flag
+
+
+def read_routing_values_from_xml(input_dict, root_of_aircraft_exchange_tree, root_of_module_configuration_tree,
+                                 runtime_output, module_configuration_tmp_path=None):
+    """Read routing values from XML file.
+
+    This function reads and extracts routing values from an XML file based on the provided input dictionary and
+    ElementTrees.
+
+    The output dictionary 'return_dict' contains the following values:
+        - 'layer_1': First routing layer (str)
+        - 'layer_2': Second routing layer (str)
+        - 'layer_3': Third routing layer (str)
+        - 'user_layer': User layer (own code is implemented on this layer) (str)
+        - 'tool_level': Tool level of current tool (str)
+
+    :param dict input_dict: Input dictionary containing layer descriptions
+    :param ElementTree root_of_aircraft_exchange_tree: Root of aircraft exchange XML
+    :param ElementTree root_of_module_configuration_tree: Root of module configuration XML
+    :param logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    :param string module_configuration_tmp_path: Optional parameter for routing layer paths with ID - defaults to None
+    :raises AttributeError: Error if the "own_tool_level" node does not exist
+    :return dict return_dict: Output dictionary containing layer information
+    """
+
+    # Read lists with n entries from XML file (n equals number of layers).
+    return_dict = input_dict
+    element_exists = True
+    # Iterate over keys from input dict.
+    for key in input_dict:
+        # Check, if 'key' contains information to be read from file.
+        if input_dict[key][0] is not None:
+            # Generate absolute and relative paths to parameter (key).
+            absolute_path_to_parameter = input_dict[key][0]
+            relative_path_to_parameter = './' + absolute_path_to_parameter.split('/', 1)[1]
+            # Extract first part of path string (equals file type: 'aircraft_exchange_file' or
+            # 'module_configuration_file').
+            file_type = absolute_path_to_parameter.split('/')[0]
+            if file_type == 'aircraft_exchange_file':
+                root_of_tree = root_of_aircraft_exchange_tree
+            else:
+                root_of_tree = root_of_module_configuration_tree
+            # Check if element (path) exists.
+            tmp = root_of_tree.findall(relative_path_to_parameter)
+            if tmp is None:
+                element_exists = False
+            # Set value of parameter if element given.
+            if element_exists:
+                # Only on element of layer value exist -> no ID element in the path for the routing layer node.
+                if len(tmp) == 1:
+                    return_dict[key] = tmp[0].text
+                # At least 2 elements with the same routing layer exist -> ID element in the path for the routing layer.
+                # Check if the optional parameter "module_configuration_tmp_path" is not None
+                #  -> if true: -> prepare relative path to routing layer node with ID from routing layer 1.
+                elif module_configuration_tmp_path is not None:
+                    if module_configuration_tmp_path[-1] == '/':
+                        module_configuration_tmp_path = module_configuration_tmp_path[:-1]
+                    module_configuration_tmp_path = './' + module_configuration_tmp_path.split('/', 1)[1]
+                    relative_path_to_parameter = relative_path_to_parameter.split(module_configuration_tmp_path)[-1]
+                    id_path = module_configuration_tmp_path + '[@ID="' + next(iter(return_dict.values())) + '"]/' \
+                              + relative_path_to_parameter
+                    return_dict[key] = root_of_tree.find(id_path).text
+                # At least 2 elements with the same routing layer exist but no optional paramter is given
+                #  -> raise an error and abort program.
+                else:
+                    runtime_output.critical('Error: At least there are two possible parameter nodes for the routing layer. \n' #noPep8 e501
+                                            '                                            Please call the function "read_routing_values_from_xml" with the optional parameter as described in "datapreprocessing.py".\n'
+                                            '                                            Program abortet!')
+                    sys.exit(1)
+
+            # Set value of parameter to 'None' if not given.
+            else:
+                return_dict[key] = None
+        # If 'key' is None, write 'None' into 'return_dict'.
+        else:
+            return_dict[key] = None
+
+    # Add tool level to return dictionary.
+    try:
+        return_dict['tool_level'] = root_of_module_configuration_tree.find('./control_settings/own_tool_level/value').text
+    except AttributeError as e:
+        # Attach both handlers to the root logger
+        runtime_output.critical('Error: ' + str(e) + ' \n'
+                                + '                                     '
+                                + 'Node "own_tool_level" not found in module configuration file. \n'
+                                + '                                     ' + 'Program aborted!')
+        sys.exit(1)
+
+    return return_dict
+
+
+def read_values_from_xml_file(input_dict, root_of_xml_file, runtime_output):
+    """Read values from XML file.
+
+    This function extracts specific values from a XML file, including the parameter's value, lower boundary, and upper
+    boundary, based on the information provided in the 'input_dict'. It processes the XML structure of the file and
+    constructs an output dictionary with the extracted values.
+
+    The data of the output dictionary 'return_dict' are structured according to the following scheme:
+    return_dict = {'parameter_name_1': [path, expected data type, bool for parameter with ID, parameter name,
+                                        value, lower boundary, upper boundary],
+                   'parameter_name_2': [...],
+                   ...}
+
+    :param dict input_dict: Input dictionary with information on values to read from XML file
+    :param ElementTree root_of_xml_file: Root of XML tree
+    :param logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    :raises ValueError: Raised if parameter does not exist in node
+    :return dict return_dict: Dictionary containing parameter from XML file
+    """
+
+    # Initialization.
+    id_tag = str()
+    cleaned_string = str()
+    key_list_to_delete = []
+    return_dict = input_dict
+    parameter_list = ['value', 'lower_boundary', 'upper_boundary']
+    file_type = root_of_xml_file._root.tag.replace('_', ' ')
+    # Extraction of values from the XML file.
+    try:
+        # Iterate over every parameter in 'input_dict'.
+        for key in input_dict:
+            tmp_dict = {}
+            # Find corresponding node in 'root_of_xml_file'.
+            if '[@ID="0"]' in input_dict[key][0] or '[@id="0"]' in input_dict[key][0] \
+                    or '[@UID="0"]' in input_dict[key][0] or '[@uid="0"]' in input_dict[key][0]:
+                if '[@ID="0"]' in input_dict[key][0]:
+                    cleaned_string = re.sub(r'\[@ID="0"\]', '', input_dict[key][0])
+                    id_count = len(re.findall(r'\[@ID="0"\]', input_dict[key][0]))
+                    id_tag = '@ID="0"'
+                    id_naming = '@ID='
+                elif '[@id="0"]' in input_dict[key][0]:
+                    cleaned_string = re.sub(r'\[@id="0"\]', '', input_dict[key][0])
+                    id_count = len(re.findall(r'\[@id="0"\]', input_dict[key][0]))
+                    id_tag = '@id="0"'
+                    id_naming = '@id='
+                elif '[@UID="0"]' in input_dict[key][0]:
+                    cleaned_string = re.sub(r'\[@UID="0"\]', '', input_dict[key][0])
+                    id_count = len(re.findall(r'\[@UID="0"\]', input_dict[key][0]))
+                    id_tag = '@UID="0"'
+                    id_naming = '@UID='
+                elif '[@uid="0"]' in input_dict[key][0]:
+                    cleaned_string = re.sub(r'\[@uid="0"\]', '', input_dict[key][0])
+                    id_count = len(re.findall(r'\[@uid="0"\]', input_dict[key][0]))
+                    id_tag = '@uid="0"'
+                    id_naming = '@uid='
+
+                # Extract the number of existing end nodes in the aircraft exchange file of current parameter.
+                key_id_list = root_of_xml_file.findall(cleaned_string)
+
+                # Check if at least one end node is existing.
+                #  -> if true: -> generate all xml paths to the existing end nodes
+                key_list_to_delete.append(key)
+                if len(key_id_list) > 0:
+                    indexes_of_ids = []
+                    index = input_dict[key][0].find(id_tag)
+                    # Loop through the entire input xml path to get ID identifier indexes.
+                    while index != -1:
+                        indexes_of_ids.append(index)
+                        index = input_dict[key][0].find(id_tag, index + 1)
+                    indexes_of_ids = [x - 1 for x in indexes_of_ids]
+
+                    string_part_list = []
+                    test_string_list = []
+                    # Loop across the number of indexes to split the input xml path in separate parts.
+                    i = []
+                    for i in range(0, len(indexes_of_ids)):
+                        string_part = cleaned_string[:indexes_of_ids[i] - i * (len(id_tag) + 2)]
+                        if i == 0:
+                            string_part_list.append(input_dict[key][0][:(indexes_of_ids[i] + len(id_tag) + 2)])
+                        else:
+                            string_part_list.append(
+                                input_dict[key][0][indexes_of_ids[i-1] + (len(id_tag) + 2):indexes_of_ids[i]
+                                                                                           + (len(id_tag) + 2)])
+                        tmp_list = [string_part, len(root_of_xml_file.findall(string_part))]
+                        test_string_list.append(tmp_list)
+
+                    # Add the xml path part behind the last ID identifier to string part list.
+                    string_part_list.append(input_dict[key][0][(indexes_of_ids[i] + len(id_tag) + 2):])
+
+                    # Generate ID list of one single parent node with all possible child nodes to target parameter.
+                    number_of_fist_elements = test_string_list[0][1]
+                    id_list = [int(test_string_list[0][1] / number_of_fist_elements) - 1]
+                    for j in range(1, len(test_string_list)):
+                        id_list.append(int(test_string_list[j][1] / test_string_list[j-1][1]) - 1)
+
+                    # Loop across all possible nodes to generate all xml-paths to the end node of current parameter.
+                    loop_count = 0
+                    parameter_path_list = []
+                    for i in range(len(id_list)-1, -1, -1):
+                        dummy_list = []
+                        # Check if current loop is the first -> if true: -> generate initial xml path elements.
+                        if i == len(id_list)-1:
+                            # Initialize all possible end node IDs of current parameter for the ID="0" parent root.
+                            for j in range(0, id_list[i] + 1):
+                                part_with_id =(
+                                        string_part_list[i][:string_part_list[i].find(id_tag)
+                                                             + len(id_naming)] + '"' + str(j) + '"]')
+                                dummy_list.append(part_with_id + string_part_list[i+1])
+                        else:
+                            for j in range(0, id_list[i] + 1):
+                                part_with_id =(
+                                        string_part_list[i][:string_part_list[i].find(id_tag)
+                                                             + len(id_naming)] + '"' + str(j) + '"]')
+                                for k in range(0, len(parameter_path_list[loop_count-1])):
+                                    dummy_list.append(part_with_id + parameter_path_list[loop_count-1][k])
+
+                        parameter_path_list.append(dummy_list)
+                        loop_count += 1
+
+                    # Convert final parameter path lists of list to on final paths list.
+                    if isinstance(parameter_path_list, list):
+                        parameter_path_list = parameter_path_list[-1]
+                    else:
+                        parameter_path_list = [parameter_path_list]
+
+                    # Check if more than one parent root node of parameter exists.
+                    #  -> if true: -> add all remaining xml paths to parameter path list
+                    if number_of_fist_elements > 1:
+                        first_part = parameter_path_list[0][:(indexes_of_ids[0] + len(id_naming) + 1)]
+                        for i in range(1, number_of_fist_elements):
+                            for j in range(0, len(parameter_path_list)):
+                                parameter_path_list.append(first_part + '"' + str(i) + '"' + parameter_path_list[j][(indexes_of_ids[0] + len(id_tag) + 1):])  # noPep8 e501
+
+                    # Generate temporary dictionary with names, xml paths and expected data type.
+                    for i in range(0, len(parameter_path_list)):
+                        numerical_values = re.findall(r'@ID="(\d+)"', parameter_path_list[i])
+                        numerical_string = ['_ID' + str(value) for value in numerical_values]
+                        numerical_string = key + ''.join(numerical_string)
+                        tmp_dict[numerical_string] = [parameter_path_list[i], input_dict[key][1], True, key]
+
+                # Else condition: no one end node of current key is existing in the aircraft exchange file.
+                else:
+                    numerical_values = re.findall(r'@ID="(\d+)"', input_dict[key][0])
+                    numerical_string = ['_ID' + str(value) for value in numerical_values]
+                    numerical_string = key + ''.join(numerical_string)
+                    tmp_dict[numerical_string] = [input_dict[key][0], input_dict[key][1], True, key]
+
+            # Else condition: The string of the xml path of current key, contains no ID identifier.
+            else:
+                tmp_dict[key] = [input_dict[key][0], input_dict[key][1], False, key]
+
+            # Update return dict.
+            return_dict = {**return_dict, **tmp_dict}
+            # Loop across all temporary key elements to read the responding values from the element tree.
+            for tmp_key, value in tmp_dict.items():
+                # Try to find temporary element from xml-tree.
+                tmp = root_of_xml_file.find(tmp_dict[tmp_key][0])
+
+                # Initialize 'value', 'lower_boundary', and 'upper_boundary' of value with 'None' if node does not exist
+                if tmp is None or tmp_dict[tmp_key][1] is None:
+                    if tmp_dict[tmp_key][2]:
+                        return_dict[tmp_key] = [tmp_dict[tmp_key][0], tmp_dict[tmp_key][1], True, tmp_dict[tmp_key][3],
+                                                None, None, None]
+                    else:
+                        return_dict[tmp_key] = [tmp_dict[tmp_key][0], tmp_dict[tmp_key][1], False, tmp_dict[tmp_key][3],
+                                                None, None, None]
+                    runtime_output.info('Attention: Node "' + tmp_dict[tmp_key][0] + '" not found in ' + file_type
+                                         + '. Value, lower, and upper boundary initialized with "None".')
+                    if not tmp is None and tmp_dict[tmp_key][1] is None:
+                        return_dict[tmp_key][1] = bool
+                        return_dict[tmp_key][4] = 'True'
+                    elif tmp_dict[tmp_key][1] is None:
+                        return_dict[tmp_key][1] = bool
+                        return_dict[tmp_key][4] = 'False'
+                elif tmp_dict[tmp_key][1] == 'tool_level':
+                    tmp_parameter = root_of_xml_file.find(tmp_dict[tmp_key][0])
+                    if tmp_parameter is not None:
+                        if 'tool_level' not in tmp_parameter.attrib:
+                            current_tool_level = 0
+                        else:
+                            current_tool_level = tmp_parameter.attrib['tool_level']
+                        return_dict[tmp_key] += [current_tool_level]
+                else:
+                    # Check existence of every parameter in 'parameter_list' and append text if given and 'None' if not.
+                    for parameter in parameter_list:
+                        parameter_exists = True
+                        # Append parameter to path and check existence.
+                        tmp_parameter = root_of_xml_file.find(tmp_dict[tmp_key][0] + '/' + parameter)
+                        # Raise error if parameter 'value' does not exist in current node.
+                        if parameter == 'value' and tmp_parameter is None:
+                            parameter_exists = False
+                            raise ValueError('Node "' + tmp_dict[tmp_key][0] + '/' + parameter + '" not found in '
+                                             + file_type + '. Program aborted!')
+                        # Set 'parameter_exists' to 'False' if 'lower_boundary' or 'upper_boundary' missing, print warning.
+                        elif tmp_parameter is None:
+                            parameter_exists = False
+                            runtime_output.info('Attention: Node "' + tmp_dict[tmp_key][0] + '/' + parameter
+                                                 + '" not found in ' + file_type + '.')
+                        # Append parameter text if existing (equals value of parameter).
+                        if parameter_exists:
+                            return_dict[tmp_key] += [tmp_parameter.text]
+                        # Append 'None' to 'return_dict' if parameter does not exist, print a warning.
+                        else:
+                            return_dict[tmp_key] += [None]
+                            runtime_output.info('Attention: No "' + parameter + '" defined for "' + tmp_key
+                                                 + '". Set to "None" instead.')
+
+        for key in key_list_to_delete:
+            del return_dict[key]
+
+    # Exception handling for ValueError.
+    except ValueError as e:
+        runtime_output.critical('Error:' + str(e))
+        sys.exit(1)
+
+    return return_dict
+
+
+def convert_string_to_expected_data_type(input_value, expected_data_type, variable_name, runtime_output):
+    """This function converts a string to a desired data type.
+
+    This function converts an input string to the given data type (if valid). Valid data types are
+        - int (integer),
+        - float,
+        - str (string), and
+        - bool.
+    The function enforces two conditions for a successful conversion:
+        1) Valid expected data type: If the data type is invalid, the function returns 'None' for the return value and
+        raises an error.
+        2) The input value must not be 'None': This is particularly important when converting the limit values, as they
+        may not exist and thus be read out as 'None' from the configuration file.
+    If a value is convertible, the conversion is executed in dependence of the data type. If conversion is not
+    possible, a ValueError is raised.
+
+    :param str input_value: Input value
+    :param <class 'type'> expected_data_type: Expected data type
+    :param str variable_name: Name of the input variable
+    :param logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    :raises ValueError: Error if value cannot be converted to expected data type
+    :return int/float/str/bool converted_value: Input value converted to expected data type
+    """
+
+    # Initialize output parameter (only changed if valid conversion possible).
+    converted_value = None
+    # Define expected data type and check if it is valid.
+    expected_class_int = str(expected_data_type) == "<class 'int'>"
+    expected_class_float = str(expected_data_type) == "<class 'float'>"
+    expected_class_str = str(expected_data_type) == "<class 'str'>"
+    expected_class_bool = str(expected_data_type) == "<class 'bool'>"
+    valid_expected_data_type = (
+        expected_class_int or expected_class_float or expected_class_str or expected_class_bool)
+    # If 'bool' expected, the following inputs are accepted as true/false. Note that this are no conversion dicts,
+    # instead they define which variations of boolean values are accepted.
+    dict_bool_true = {'True': True, 'true': True, '1': True, '1.0': True}
+    dict_bool_false = {'False': True, 'false': True, '0': True, '0.0': True}
+
+    # Check if input value is of class 'NoneType'.
+    input_of_class_none_type = (input_value is None) or (input_value == 'None')
+
+    # If valid data type and value is not 'None'.
+    if valid_expected_data_type and not input_of_class_none_type:
+        # If expected data type is of "<class 'int'>".
+        if expected_class_int:
+            # Check if value is of type 'int' (could subsequently be converted to 'int').
+            try:
+                converted_value = expected_data_type(input_value)
+            # Otherwise value is not of type 'int'.
+            except ValueError:
+                # Check if value is of type 'float' (could subsequently be converted to 'float' and 'int').
+                try:
+                    converted_value = expected_data_type(float(input_value))
+                    runtime_output.info("Attention: Expected data type was 'int' but input value was of type 'float'."
+                                         "The value was first converted to a float value and then to an int."
+                                         "Decimal places are lost in the process.")
+                # Value error (value not of type 'int' or 'float').
+                except ValueError:
+                    runtime_output.info(
+                        ("Attention: Expected data type was 'int' but input value was neither of type 'int' "
+                         "nor 'float'. Value conversion not possible for parameter '" + variable_name + "'."))
+        # If expected data type is of "<class 'float'>".
+        if expected_class_float:
+            # Check if value can be converted to 'float' (means value is of type 'int' or 'float').
+            try:
+                converted_value = expected_data_type(input_value)
+            # Handle exception if value is not of type 'int' or 'float'.
+            except ValueError:
+                runtime_output.info(
+                    ("Attention: Expected data type was 'float', but the input value seems to be of type string "
+                     "or bool. Value conversion not possible for parameter '" + variable_name + "'."))
+        # If expected data type is of "<class 'str'>".
+        if expected_class_str:
+            converted_value = input_value
+        # If expected data type is of "<class 'bool'>".
+        if expected_class_bool:
+            # Check if input is a valid expression for 'True'.
+            if dict_bool_true.get(input_value):
+                converted_value = True
+            # Check if input is a valid expression for 'False'.
+            elif dict_bool_false.get(input_value):
+                converted_value = False
+            # Input does not contain a valid expression for boolean values.
+            else:
+                runtime_output.info(
+                    ("Attention: Expected data type was 'bool', "
+                     "but input does not seems to contain valid expressions for boolean values."
+                     "Value conversion not possible for parameter '" + variable_name + "'."))
+    # No valid data type or value is 'None' (often the case if no default values provided in configuration file).
+    else:
+        runtime_output.info("Attention: Invalid data type or input value is 'None' (" + variable_name + ").")
+
+    return converted_value
+
+
+def check_boundaries(parameter_name, input_value, runtime_output, lower_boundary=None, upper_boundary=None):
+    """Verify that a value is within specified limits.
+
+    This function checks whether a given input value falls within specified boundaries (lower and upper limits). It is
+    designed to handle values of different data types, including int, float, str, and bool. It raises errors or
+    warnings when the input does not meet the expected criteria.
+
+    :param str parameter_name: Name of the parameter
+    :param int/float/str/bool input_value: Value of the parameter
+    :param logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    :param int/float/str/bool lower_boundary: Lower boundary (parameter value must be greater), defaults to None
+    :param int/float/str/bool upper_boundary: Upper boundary (parameter value must be smaller), defaults to None
+    :raises ValueError: Error if parameter value is outside the specified boundaries
+    :return int/float/str/bool checked_value: Checked input value
+    """
+
+    # Initialize local parameter.
+    checked_value = input_value
+
+    # Check if boundary check possible (Value of type 'int'/'float'?).
+    if isinstance(input_value, bool):
+        boundary_check_possible = False
+    else:
+        boundary_check_possible = isinstance(input_value, (int, float))
+    # Check if boundaries are given.
+    boundaries_given = (lower_boundary is not None and upper_boundary is not None)
+
+    # Perform boundary checks.
+    try:
+        # If value is of data type that allows boundary check.
+        if boundary_check_possible:
+            # If both boundaries are given.
+            if boundaries_given:
+                # Check if given input value lower than given lower boundary. Raise error if true.
+                if input_value < lower_boundary:
+                    user_value_error_string = ('The parameter "' + parameter_name
+                                               + '" is lower than the expected lower boundary ('
+                                               + str(lower_boundary) + '). Program aborted!')
+                    raise ValueError(user_value_error_string)
+                # Check if given input value higher than given upper boundary. Raise error if true.
+                elif input_value > upper_boundary:
+                    user_value_error_string = ('The parameter "' + parameter_name
+                                               + '" is higher than the expected upper boundary ('
+                                               + str(upper_boundary) + '). Program aborted!')
+                    raise ValueError(user_value_error_string)
+            # Raise error if no boundaries given but required.
+            else:
+                user_value_error_string = ('The data type "' + str(type(input_value))
+                                           + ') of the given input parameter "' + parameter_name
+                                           + '" requires lower and upper boundaries. Program aborted!')
+                raise ValueError(user_value_error_string)
+        # Input value is not of a valid data type for boundary checking.
+        else:
+            runtime_output.info(
+                ('Attention: The data type of the given input parameter "' + parameter_name +
+                 '" (' + str(type(input_value)) +
+                 ') is not of type int or float. Therefore no boundaries were checked.'))
+    # Exception handling if values outside the limits or no boundaries given.
+    except ValueError as e:
+        runtime_output.critical('Error: ' + str(e))
+        sys.exit(1)
+
+    return checked_value
diff --git a/pymodulepackage/src/runmodule.py b/pymodulepackage/src/runmodule.py
new file mode 100644
index 00000000..d027a760
--- /dev/null
+++ b/pymodulepackage/src/runmodule.py
@@ -0,0 +1,74 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+"""Module providing run function of calculation method."""
+# Import standard modules.
+import sys
+import importlib
+from datapreprocessingmodule import method_data_preprocessing
+
+
+def run_module(paths_and_names, routing_dict, runtime_output):
+    """Conduct Python module.
+
+    This function performs any UNICADO Python module. The process involves the following steps:
+        (1) Method-specific preprocessing: The prerequisite for any UNICADO Python module is the acquisition of data
+        from corresponding exchange files. These include the aircraft exchange and the module configuration file. This
+        data preprocessing is crucial as it prepares the input data for the calculation method. The obtained data are
+        stored in the two dictionaries 'aircraft_exchange_dict' and 'module_configuration_dict'.
+        (2) Run calculation method: Depending on the user layer specified in the routing parameters, the function calls
+        the appropriate calculation function. The selected function is dynamically imported and executed.
+    The output dictionary 'run_output_dict' contains the result of the UNICADO Python module and is structured according
+     to the following scheme:
+        run_output_dict = {'parameter_name_1': value, ...}
+
+    :param dict paths_and_names: Dictionary containing system paths and ElementTrees
+    :param dict routing_dict: Dictionary containing routing parameters
+    :param logging.Logger runtime_output: Logging object used for capturing log messages in the module
+    :raises ModuleNotFoundError: Raised if module cannot be imported
+    :return dict run_output_dict: Dictionary containing results of module execution
+    """
+
+    """Method specific preprocessing: Acquire necessary data."""
+    # Run 'method_data_preprocessing' from 'datapreprocessingmodule'.
+    aircraft_exchange_dict, module_configuration_dict = method_data_preprocessing(paths_and_names, routing_dict, runtime_output)
+
+    """Run: Execute code depending on user layer."""
+    # Prepare strings for dynamic imports of calculation functions. The 'import_command_method_user_layer' is build
+    # according to the following scheme:
+    # 'src.[value of layer_1].[value of layer_2].[value of layer_3].[value of user layer].method[value of user layer]'
+    # The 'function_name' is generated according to the following scheme:
+    #   'method_[value of user layer]'
+    import_command_method_user_layer = (routing_dict['module_import_name'] + '.' + routing_dict['user_layer']
+                                        + '.method' + routing_dict['user_layer'].replace('_', ''))
+    function_name = 'method_' + routing_dict['user_layer']
+    # Import calculation module.
+    try:
+        module = importlib.import_module(import_command_method_user_layer)
+        # Call function depending on routing parameters.
+        run_output_dict = getattr(module, function_name)(paths_and_names, routing_dict, aircraft_exchange_dict,
+                                                         module_configuration_dict, runtime_output)
+    # Exception handling for module import error.
+    except ModuleNotFoundError as module_import_error:
+        runtime_output.critical('Error: ' + str(module_import_error) + ' found in ' + routing_dict['module_name'] + '\n'
+                                + '                                     ' + 'Program aborted!')
+        sys.exit(1)
+
+    return run_output_dict
diff --git a/pymodulepackage/src/runtimeoutputmodule.py b/pymodulepackage/src/runtimeoutputmodule.py
new file mode 100644
index 00000000..b9b58b75
--- /dev/null
+++ b/pymodulepackage/src/runtimeoutputmodule.py
@@ -0,0 +1,143 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+"""Module configuring the runtime output."""
+# Import standard modules.
+import sys
+import logging
+
+
+def configure_runtime_output(paths_and_names):
+    """ Initialize logging handler for console prints and log file writing, provide runtime_output instance.
+
+    [Add some text here...]
+
+    :param dict paths_and_names: Dictionary containing system paths and ElementTrees
+    :raises AttributeError: ...
+    :return:
+    """
+    # Define a new log level 'PRINT' with a value of 35.
+    PRINT = 35
+    logging.addLevelName(PRINT, "PRINT")
+
+    # Create a custom log level class by subclassing logging.Filter.
+    class PrintoutFilter(logging.Filter):
+        def filter(self, record):
+            return record.levelno == PRINT
+
+    # Attach the custom filter to the 'root_logger'.
+    root_logger = logging.getLogger()
+    root_logger.addFilter(PrintoutFilter())
+
+    # Add a custom method to the logger.
+    def printout(self, message, *args, **kwargs):
+        """
+        :param self:
+        :param message:
+        :param args:
+        :param kwargs:
+        :return:
+        """
+        if self.isEnabledFor(PRINT):
+            self._log(PRINT, message, args, **kwargs)
+
+    # Attach the custom method to the logger.
+    logging.Logger.print = printout
+
+    # Set the logging level for the root logger.
+    root_logger.setLevel(logging.DEBUG)
+
+    """Genereate log file handler and initialze."""
+    # Create a file handler with the desired file name and format.
+    log_file_name = paths_and_names['working_directory'] + '/' + paths_and_names['tool_name'] + '.log'
+    log_format = '%(asctime)s - %(levelname)s - %(message)s'
+    file_handler = logging.FileHandler(log_file_name)
+    file_handler.setFormatter(logging.Formatter(log_format))
+
+    """Genereate console handler and initialze."""
+    # Create a stream handler to output log messages to the console.
+    console_format = '%(asctime)s - %(levelname)s - %(message)s'
+    console_handler = logging.StreamHandler()
+    console_handler.setFormatter(logging.Formatter(console_format))
+
+    """Set log file handler level to selected mode from module configuration file."""
+    # Extract 'log_file_output' from 'root_of_module_config_tree'.
+    try:
+        log_file_mode = paths_and_names['root_of_module_config_tree'].find('.//log_file_output/value').text
+    except AttributeError as e:
+        # Attach both handlers to the 'root_logger'.
+        root_logger.addHandler(file_handler)
+        root_logger.addHandler(console_handler)
+        logger = logging.getLogger('module_logger')
+        logger.critical('Error: ' + str(e) + ' \n'
+                         + '                                     '
+                         + 'Node "log_file_output" not found in module configuration file. \n'
+                         + '                                     ' + 'Program aborted!')
+        sys.exit(1)
+
+    match log_file_mode:
+        # Only 'CRITICAL' logs displayed.
+        case 'mode_0':
+            file_handler.setLevel(logging.CRITICAL)
+        # Logs of type 'CRITICAL', 'ERROR', 'PRINTOUT', and 'WARNING' displayed.
+        case 'mode_1':
+            file_handler.setLevel(logging.WARNING)
+        # Logs of type 'CRITICAL', 'ERROR', 'PRINTOUT', 'WARNING', and 'INFO' displayed.
+        case 'mode_2':
+            file_handler.setLevel(logging.INFO)
+        # Logs of type 'CRITICAL', 'ERROR', 'PRINTOUT', 'WARNING', 'INFO', and 'DEBUG' displayed.
+        case 'mode_3':
+            file_handler.setLevel(logging.DEBUG)
+
+    """Set console handler level to selected mode from module configuration file."""
+    # Extract 'console_output' from 'root_of_module_config_tree'.
+    try:
+        console_output = paths_and_names['root_of_module_config_tree'].find('.//console_output/value').text
+    except AttributeError as e:
+        # Attach both handlers to the 'root_logger'.
+        root_logger.addHandler(file_handler)
+        root_logger.addHandler(console_handler)
+        logger = logging.getLogger('module_logger')
+        logger.critical('Error: ' + str(e) + ' \n'
+                        + '                                     '
+                        + 'Node "console_output" not found in module configuration file. \n'
+                        + '                                     ' + 'Program aborted!')
+        sys.exit(1)
+
+    match console_output:
+        # Only 'CRITICAL' logs displayed.
+        case 'mode_0':
+            console_handler.setLevel(logging.CRITICAL)
+        # Logs of type 'CRITICAL', 'ERROR', 'PRINTOUT', and 'WARNING' displayed.
+        case 'mode_1':
+            console_handler.setLevel(logging.WARNING)
+        # Logs of type 'CRITICAL', 'ERROR', 'PRINTOUT', 'WARNING', and 'INFO' displayed.
+        case 'mode_2':
+            console_handler.setLevel(logging.INFO)
+        # Logs of type 'CRITICAL', 'ERROR', 'PRINTOUT', 'WARNING', 'INFO', and 'DEBUG' displayed.
+        case 'mode_3':
+            console_handler.setLevel(logging.DEBUG)
+
+    # Disable colorization for the console handler.
+    console_handler.setStream(stream=sys.stdout)
+
+    # Attach both handlers to the 'root_logger'.
+    root_logger.addHandler(file_handler)
+    root_logger.addHandler(console_handler)
diff --git a/runtimeInfo/CMakeLists.txt b/runtimeInfo/CMakeLists.txt
new file mode 100644
index 00000000..c3100097
--- /dev/null
+++ b/runtimeInfo/CMakeLists.txt
@@ -0,0 +1,44 @@
+# Set the library name
+set( LIBRARY_NAME runtimeInfo )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/runtimeInfo.cpp
+    resources.rc
+)
+
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_RUNTIMEINFO_SHARED" PUBLIC "IMPORT_RUNTIMEINFO_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Link against dependent libraries
+target_link_libraries( ${LIBRARY_NAME} 
+# Empty - no library dependencies
+)
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/runtimeInfo/include/runtimeInfo/runtimeInfo.h b/runtimeInfo/include/runtimeInfo/runtimeInfo.h
new file mode 100644
index 00000000..067a7e7d
--- /dev/null
+++ b/runtimeInfo/include/runtimeInfo/runtimeInfo.h
@@ -0,0 +1,213 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef RUNTIMEINFO_RUNTIMEINFO_H_
+#define RUNTIMEINFO_RUNTIMEINFO_H_
+
+#include <fstream>
+#include <ostream>
+#include <string>
+
+#ifdef BUILD_RUNTIMEINFO_SHARED
+    #ifdef _WIN32
+        #define RUNTIMEINFODLLEXPORT __declspec(dllexport)
+    #else
+        #define RUNTIMEINFODLLEXPORT __attribute__ ((visibility ("default")))
+    #endif
+#elif defined(IMPORT_RUNTIMEINFO_SHARED)
+    #ifdef _WIN32
+        #define RUNTIMEINFODLLEXPORT __declspec(dllimport)
+    #else
+        #define RUNTIMEINFODLLEXPORT
+    #endif
+#else
+    #define RUNTIMEINFODLLEXPORT
+#endif
+
+class node;
+
+class RUNTIMEINFODLLEXPORT outStream {
+ public:
+    outStream(std::ostream& os1, std::ostream& os2, unsigned int comments_on, unsigned int logfile_on, bool cleanFirstLine = true);
+    virtual ~outStream();
+
+    template<class T>
+    outStream& operator<<(const T& x) {
+        if (newLine) {
+            if (comments_on) os1 << getTimeString();
+            if (logfile_on) os2 << getTimeString();
+            newLine = false;
+        }
+        if (comments_on) os1 << x;
+        if (logfile_on) os2 << x;
+        return *this;
+    }
+
+    typedef outStream& (*outStreamManipulator)(outStream&);  // function that takes a custom stream, and returns it
+    outStream& operator<<(const outStreamManipulator& manip) {  // take in a function with the custom signature
+        return manip(*this);    // call the function, and return it's value
+    }
+    typedef std::basic_ostream<char, std::char_traits<char> > CoutType;  // this is the type of std::cout
+    typedef CoutType& (*StandardEndLine)(CoutType&);    // this is the function signature of std::endl
+    outStream& operator<<(const StandardEndLine manip) {   // define an operator<< to take in std::endl
+        // call the function, but we cannot return it's value
+        if (comments_on) manip(os1);
+        if (logfile_on) manip(os2);
+        newLine = true;
+        // *this << getTimeString();
+        return *this;
+    }
+    std::string getTimeString();
+
+ protected:
+    std::ostream& os1;
+    std::ostream& os2;
+    unsigned int comments_on;
+    unsigned int logfile_on;
+    bool newLine;
+};
+
+class RUNTIMEINFODLLEXPORT errStream : public outStream {
+ public:
+    errStream(std::ostream& os1, std::ostream& os2, unsigned int comments_on, unsigned int logfile_on, bool cleanFirstLine = true)
+        : outStream(os1, os2, comments_on, logfile_on, cleanFirstLine) {}
+    template<class T>
+    outStream& operator<<(const T& x) {
+        if (newLine) {
+            if (comments_on) os1 << getTimeString() << "ERROR: ";
+            if (logfile_on) os2 << getTimeString() << "ERROR: ";
+            newLine = false;
+        }
+        if (comments_on) os1 << x;
+        if (logfile_on) os2 << x;
+        return *this;
+    }
+};
+
+class RUNTIMEINFODLLEXPORT warnStream : public outStream {
+ public:
+    warnStream(std::ostream& os1, std::ostream& os2, unsigned int comments_on, unsigned int logfile_on, bool cleanFirstLine = true)
+        : outStream(os1, os2, comments_on, logfile_on, cleanFirstLine) {}
+    template<class T>
+    outStream& operator<<(const T& x) {
+        if (newLine) {
+            if (comments_on) os1 << getTimeString() << "WARNING: ";
+            if (logfile_on) os2 << getTimeString() << "WARNING: ";
+            newLine = false;
+        }
+        if (comments_on) os1 << x;
+        if (logfile_on) os2 << x;
+        return *this;
+    }
+};
+
+class RUNTIMEINFODLLEXPORT infoStream : public outStream {
+ public:
+    infoStream(std::ostream& os1, std::ostream& os2, unsigned int  comments_on, unsigned int  logfile_on, bool cleanFirstLine = true)
+        : outStream(os1, os2, comments_on, logfile_on, cleanFirstLine) {}
+    template<class T>
+    infoStream& operator<<(const T& x) {
+        if (newLine) {
+            if (comments_on >= 2) os1 << getTimeString() << "INFO: ";
+            if (logfile_on >= 2) os2 << getTimeString() << "INFO: ";
+            newLine = false;
+        }
+        if (comments_on >= 2) os1 << x;
+        if (logfile_on >= 2) os2 << x;
+        return *this;
+    }
+
+    typedef infoStream& (*infoStreamManipulator)(infoStream&);  // function that takes a custom stream, and returns it
+    infoStream& operator<<(const infoStreamManipulator& manip) {  // take in a function with the custom signature
+        if (comments_on >= 2) return manip(*this);  // call the function, and return it's value
+        else
+            return(*this);
+    }
+
+    typedef std::basic_ostream<char, std::char_traits<char> > CoutType;  // this is the type of std::cout
+    typedef CoutType& (*StandardEndLine)(CoutType&);    // this is the function signature of std::endl
+    infoStream& operator<<(const StandardEndLine manip) {  // define an operator<< to take in std::endl
+        // call the function, but we cannot return it's value
+        if (comments_on >= 2) manip(os1);
+        if (logfile_on >= 2) manip(os2);
+        newLine = true;
+        return *this;
+    }
+};
+
+class RUNTIMEINFODLLEXPORT debugStream : public outStream {
+ public:
+    debugStream(std::ostream& os1, std::ostream& os2, unsigned int comments_on, unsigned int logfile_on, bool cleanFirstLine = true)
+        : outStream(os1, os2, comments_on, logfile_on, cleanFirstLine) {}
+    template<class T>
+    debugStream& operator<<(const T& x) {
+        if (newLine) {
+            if (comments_on >= 3) os1 << getTimeString() << "DEBUG: ";
+            if (logfile_on >= 3) os2 << getTimeString() << "DEBUG: ";
+            newLine = false;
+        }
+        if (comments_on >= 3) os1 << x;
+        if (logfile_on >= 3) os2 << x;
+        return *this;
+    }
+
+    typedef debugStream& (*infoStreamManipulator)(debugStream&);  // function that takes a custom stream, and returns it
+    debugStream& operator<<(const infoStreamManipulator& manip) {  // take in a function with the custom signature
+        if (comments_on >= 3) return manip(*this);  // call the function, and return it's value
+        else
+            return(*this);
+    }
+
+    typedef std::basic_ostream<char, std::char_traits<char> > CoutType;  // this is the type of std::cout
+    typedef CoutType& (*StandardEndLine)(CoutType&);  // this is the function signature of std::endl
+    debugStream& operator<<(const StandardEndLine manip) {  // define an operator<< to take in std::endl
+        // call the function, but we cannot return it's value
+        if (comments_on >= 3) manip(os1);
+        if (logfile_on >= 3) manip(os2);
+        newLine = true;
+        return *this;
+    }
+};
+
+class RUNTIMEINFODLLEXPORT runtimeInfo {
+ protected:
+    unsigned int comments_on;
+    unsigned int logfile_on;
+    std::string logFilename;
+    std::string _programName;
+ public:
+    std::ofstream logFile;
+
+    runtimeInfo(const unsigned int consoleOn, const unsigned int logOn,
+                const std::string& logfilename, const std::string& programname);
+    virtual ~runtimeInfo();
+
+    outStream out;
+    errStream err;
+    warnStream warn;
+    infoStream info;
+    debugStream debug;
+};
+
+extern RUNTIMEINFODLLEXPORT runtimeInfo *myRuntimeInfo;
+
+#endif  // RUNTIMEINFO_RUNTIMEINFO_H_
diff --git a/runtimeInfo/resources.rc b/runtimeInfo/resources.rc
new file mode 100644
index 00000000..49ab6a3c
--- /dev/null
+++ b/runtimeInfo/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "runtimeInfo\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "runtimeInfo.dll\0"
+            VALUE "ProductName",        "runtimeInfo\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/runtimeInfo/src/runtimeInfo.cpp b/runtimeInfo/src/runtimeInfo.cpp
new file mode 100644
index 00000000..cdd153cd
--- /dev/null
+++ b/runtimeInfo/src/runtimeInfo.cpp
@@ -0,0 +1,87 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include "runtimeInfo/runtimeInfo.h"
+#include <chrono> //NOLINT [build/c++11] Just because Google doesn't like it, doesn't mean it's bad!
+#include <iostream>
+#include <iomanip>
+
+runtimeInfo *myRuntimeInfo;
+
+runtimeInfo::runtimeInfo(const unsigned int consoleOn, const unsigned int logOn,
+                         const std::string& logfilename, const std::string& programname)
+    :
+    comments_on(consoleOn),
+    logfile_on(logOn),
+    logFilename(logfilename),
+    _programName(programname),
+    out(std::cout, logFile, comments_on, logfile_on),
+    err(std::cerr, logFile, comments_on, logfile_on, false),
+    warn(std::cout, logFile, comments_on, logfile_on, false),
+    info(std::cout, logFile, comments_on, logfile_on, false),
+    debug(std::cout, logFile, comments_on, logfile_on, false) {
+    logFile.open(logFilename.c_str(), std::ios::app);
+    out << "*******************************************************************************" << std::endl;
+    out << "Start " << _programName << std::endl;
+}
+
+runtimeInfo::~runtimeInfo() {
+    out << "Finish " << _programName << "\n";
+    logFile.close();
+    //dtor
+}
+outStream::outStream(std::ostream& os1, std::ostream& os2, unsigned int comments_on, unsigned int logfile_on, bool cleanFirstLine)
+    :
+    os1(os1),
+    os2(os2),
+    comments_on(comments_on),
+    logfile_on(logfile_on),
+    newLine(!cleanFirstLine) {
+}
+outStream::~outStream() {
+}
+#ifdef __APPLE__
+std::string outStream::getTimeString() {
+    // Get system time in UTC
+    const auto now = std::chrono::system_clock::now();
+    const auto now_time_t = std::chrono::system_clock::to_time_t(now);
+
+    // Convert to local time
+    std::tm local_tm = *std::localtime(&now_time_t);
+
+    // Format the time string
+    std::ostringstream oss;
+    oss << std::put_time(&local_tm, "%d.%m.%Y %H:%M:%S - ");
+    return oss.str();
+}
+#else
+std::string outStream::getTimeString() {
+    // Get system time in UTC
+    const auto now = std::chrono::system_clock::now();
+
+    // Convert to local time
+    const auto local_time = std::chrono::zoned_time{std::chrono::current_zone(), now};
+
+    // Return the time string with format "dd.mm.yyyy hh:mm:ss - "
+    return std::format("{0:%d}.{0:%m}.{0:%Y} {0:%H}:{0:%M}:{0:%OS} - ", local_time.get_local_time());
+}
+#endif // __APPLE__
diff --git a/standardFiles/CMakeLists.txt b/standardFiles/CMakeLists.txt
new file mode 100644
index 00000000..2f9370e5
--- /dev/null
+++ b/standardFiles/CMakeLists.txt
@@ -0,0 +1,55 @@
+# Set the library name
+set( LIBRARY_NAME standardFiles )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/functions.cpp
+    resources.rc
+)
+
+# Add the shared library
+add_library( ${LIBRARY_NAME} ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Set the library properties
+if( WIN32 )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS")
+endif()
+
+# Options when building a shared library
+if ( BUILD_SHARED_LIBS )
+    target_compile_definitions( ${LIBRARY_NAME} PRIVATE "BUILD_STANDARDFILES_SHARED" PUBLIC "IMPORT_STANDARDFILES_SHARED")
+endif()
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+find_package(Eigen3 REQUIRED)
+
+# Link against the needed libraries
+target_link_libraries( ${LIBRARY_NAME}
+    PRIVATE
+        aixml
+        runtimeInfo
+    PUBLIC
+        Eigen3::Eigen
+        svl
+        unitConversion
+)
+
+# Unittests
+if( BUILD_UNITTEST )
+    add_subdirectory(test)
+endif()
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/standardFiles/include/standardFiles/functions.h b/standardFiles/include/standardFiles/functions.h
new file mode 100644
index 00000000..85236b09
--- /dev/null
+++ b/standardFiles/include/standardFiles/functions.h
@@ -0,0 +1,604 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef STANDARDFILES_INCLUDE_STANDARDFILES_FUNCTIONS_H_
+#define STANDARDFILES_INCLUDE_STANDARDFILES_FUNCTIONS_H_
+
+#include <runtimeInfo/runtimeInfo.h>
+#include <unitConversion/constants.h>
+#include <Eigen/Dense>
+#include <algorithm>
+#include <cstdint>
+#include <functional>
+#include <sstream>
+#include <string>
+#include <vector>
+#include <filesystem>
+
+#include "typedefs.h"
+
+#ifdef BUILD_STANDARDFILES_SHARED
+#ifdef _WIN32
+#define STANDARDFILESDLLEXPORT __declspec(dllexport)
+#else
+#define STANDARDFILESDLLEXPORT __attribute__((visibility("default")))
+#endif
+#elif defined(IMPORT_STANDARDFILES_SHARED)
+#ifdef _WIN32
+#define STANDARDFILESDLLEXPORT __declspec(dllimport)
+#else
+#define STANDARDFILESDLLEXPORT
+#endif
+#else
+#define STANDARDFILESDLLEXPORT
+#endif
+
+/** \brief Execution of child processes with return of exitValues. If not other specified, standard max Runtime is 10min.
+ *   \param processName: name of the child process
+ *   \param relExecDir: directory of the child process as relative path
+ *   \param maxRuntime: maximum runtime in minutes
+ */
+STANDARDFILESDLLEXPORT int handleChildProcess(const std::string& processName, const std::string& relExecDir, double maxRuntime = 10.);
+
+/** \brief Execution of child processes in aonother directory with return of exitValues. If not other specified, standard max Runtime is 10min.
+ *   \param processName: name of the child process
+ *   \param relExecDir: directory of the child process as relative path
+ *   \param workingDir: current working directory
+ *   \param maxRuntime: maximum runtime in minutes
+ *   \return exit code
+ */
+STANDARDFILESDLLEXPORT int handleChildProcessOtherDirectory(const std::string& processName, const std::string& relExecDir, const std::string& workingDir, double maxRuntime = 10.);
+
+/** \brief Deletion of obsolete files
+ *   \param filename: path to the file to delete
+ *   \return exit code
+ */
+STANDARDFILESDLLEXPORT void deleteObsoleteFiles(const std::string& filename);
+
+/** \brief Deletion of multiple obsolete files with the same file ending or same name
+ *   \param filesPath: path to the files to delete
+ *   \param filesDir: directory of the files
+ */
+STANDARDFILESDLLEXPORT void wildCardDeleteFiles(const std::string& filesPath, const std::string& filesDir);
+
+/** \brief Lists all files with a given names in a directory
+ *   \param filesDir: directory that contains the files
+ *   \param fileName: name of the files
+ *   \return listDirFiles: list of the files in the directory as std::string<vector>
+ */
+STANDARDFILESDLLEXPORT std::vector<std::string> listDirFiles(const std::string& filesDir, const std::string& fileName = "*");
+
+/** \brief Function to rename or to relocate files
+ *   \param oldname: old name of the file
+ *   \param newname: new name of the file
+ *   \param newfiletype: new file type (default value: "" to keep the same filetype)
+ *   \param backup: determines whether to keep a backup of the original file (default value: false)
+ */
+STANDARDFILESDLLEXPORT void renameFiles(const std::string& oldname, const std::string& newname, const std::string& newfiletype = "", const bool& backup = false);
+
+/** \brief Function to copy files or directories. Wildcards are allowed. Multiple files/folders need to be spearated with \0.
+ *   \param from: old file path(s)
+ *   \param to: new file path(s)
+ *   \param renameOnCollision: If a file with the same name is already in the "to" directory, this will prevent the original file to be overwritten.
+ */
+STANDARDFILESDLLEXPORT bool copyFiles(const std::string& from, const std::string& to, const bool overwriteExistingFile = true);
+
+/** \brief Function determines existence of a file
+ *   \param filename: path to the file
+ *   \return false: if file does not exist; true: if file exists
+ */
+STANDARDFILESDLLEXPORT bool fileExists(const std::string& filename);
+
+/** \brief Function returns the absokute path of a file or a directory
+ *   \param filename: relative path to the file
+ *   \return full path of the file/directory as std::string
+ */
+STANDARDFILESDLLEXPORT std::string getFullPathString(const std::string& filename);
+
+/** \brief Function to read a text file
+ *   \param filename: path to the file
+ *   \param specialCase: if special case is true, the end-line char is deleted from read line (sometimes important for linux)
+ *   \return file content separated by lines as vector<std::string>
+ */
+STANDARDFILESDLLEXPORT std::vector<std::string> readFile(const std::string& filename, const bool& specialCase = false);
+
+/** \brief Function to find a word inside a file
+ *   \param filename: path to the file
+ *   \param searchWord: search word
+ *   \param specialCase: if special case is true, the readFile function is deleting the end-line char from all lines
+ *   \return number of the line that contains the file
+ */
+STANDARDFILESDLLEXPORT size_t findInFile(const std::string& filename, const std::string& searchWord, bool specialCase = false);
+
+/** \brief Compares two std::strings
+ *   \param str1: first std::string
+ *   \param str2: second std::string
+ *   \param exact: set to true if the std::strings should match exactly. Set to false if str2 should be contained in str1.
+ *   \return false if std::strings do not match; true if std::strings match
+ */
+STANDARDFILESDLLEXPORT bool compareStrings(const std::string& str1, const std::string& str2, bool exact);
+
+/** \brief Function to replace certain characters inside a std::string
+ *   \param Wort: std::string that contains the characters to be replaced
+ *   \param oldCharacter: character to be replaced
+ *   \param newCharacter: new character
+ *   \return new std::string with replaced characters
+ */
+STANDARDFILESDLLEXPORT std::string replaceAll(std::string Wort, const std::string& oldCharacter, const std::string& newCharacter);
+
+/** \brief Function to replace special characters for Tex output
+ *   \param theData: std::string that contains the characters to be replaced
+ *   \return new std::string with replaced characters
+ */
+STANDARDFILESDLLEXPORT std::string stringForTex(std::string theData);
+
+/** \brief Function to convert a relative DOS path to Linux path
+ *   \param path: DOS path
+ *   \return Linux path
+ */
+STANDARDFILESDLLEXPORT std::string win2lin(const std::string& path);
+
+/** \brief Convert a path to a relative path starting from a base path
+ *   \param Path: full path
+ *   \param basePath: base path
+ *   \param useUpperLevel: switch if upper level (../) should be added to relative path
+ *   \return relative path
+ */
+STANDARDFILESDLLEXPORT std::string relativePath(const std::string& Path, const std::string& basePath, bool useUpperLevel = true);
+
+/** \brief Deletes a directory and all of its content recursively
+ *   \param dir: dreictory to delete
+ *   \param recycleBin: Set to true to put the directory into the recycle bin. Set to false to delete the directory irreversibly (currently recyclebin has no effect)
+ *   \return true if successful; false if not successful
+ */
+STANDARDFILESDLLEXPORT bool deleteDirectory(const std::string& dir, bool recycleBin = false);
+/** \brief Rounding of Double values
+ *   \param number: Double value that needs to be rounded
+ *   \param digits: number of digits for rounding
+ *   \return rounded Double value
+ */
+STANDARDFILESDLLEXPORT double Rounding(double number, int digits);
+/** \brief Rounding up of Double values
+ *   \param number: Double value that needs to be rounded up
+ *   \param digits: number of digits for rounding
+ *   \return rounded Double value
+ */
+STANDARDFILESDLLEXPORT double RoundUp(double number, int digits);
+/** \brief Rounding down of Double values
+ *   \param number: Double value that needs to be rounded down
+ *   \param digits: number of digits for rounding
+ *   \return rounded Double value
+ */
+STANDARDFILESDLLEXPORT double RoundDown(double number, int digits);
+/** \brief Function tests whether a variable is matches a target variable within a given accuracy
+ *   \param value: variable to be tested
+ *   \param targetValue: target variable
+ *   \param accuracy: tolerance interval
+ *   \return false if not within tolerated accuracy interval; true if within tolerated accuracy interval
+ */
+STANDARDFILESDLLEXPORT bool accuracyCheck(double value, double targetValue, double accuracy);
+/** \brief function for 1D linear interpolation
+ *   \details function interpolates the value for a given pos between the values of posA and posB; extrapolation is allowed by default.
+ *   \param pos: current x position
+ *   \param posA: x position of first value
+ *   \param valA: f(x) at first x value
+ *   \param posB: x position of second value
+ *   \param valB: f(x) at second x value
+ *   \return interpolated value (f(x) at current x value)
+ */
+STANDARDFILESDLLEXPORT double linearInterpolation(const double& pos, const double& posA, const double& valA, const double& posB, const double& valB,
+                                                  const bool& allowExtrapolation = true);
+/** \brief function for trilinear-interpolation (3D-interpolation)
+ *   \details function interpolates the value for a given pos in a Matrix (input1_tmp, input2_tmp, input3_tmp) between the values of the 3D output vector;
+ *            extrapolation is allowed by default.
+ *   \param output: 3D matrix with all available values
+ *   \param input1: vector of first value
+ *   \param input2: vector of second value
+ *   \param input3: vector of third value
+ *   \param input1_tmp: first position to be interpolated
+ *   \param input2_tmp: second position to be interpolated
+ *   \param input3_tmp: third position to be interpolated
+ *   \return interpolated value (f(input1_tmp, input2_tmp, input3_tmp))
+ */
+STANDARDFILESDLLEXPORT double trilinearInterpolation(const std::vector<std::vector<std::vector<double>>>& output, const std::vector<double>& input1,
+                                                     const std::vector<double>& input2, const std::vector<double>& input3, const double& input1_tmp, const double& input2_tmp,
+                                                     const double& input3_tmp);
+/** \brief Function to calculate regression coefficients by using QR decomposition.
+ *   \param vecX: vector holding x-values for regression
+ *   \param vecY: vector holding y-values for regression
+ *   \param orderOfRegression: Order for regression which leads to number of regression coefficients
+ *   \return Vector holding regression coefficients
+ */
+// STANDARDFILESDLLEXPORT std::vector<double> calcRegressionCoefficientsUsingQRdecomp(std::vector<double> vecX, std::vector<double> vecY, uint16_t orderOfRegression);
+STANDARDFILESDLLEXPORT std::vector<double> calcRegressionCoefficientsUsingQRdecomp(std::vector<double> vecX, std::vector<double> vecY, uint16_t orderOfRegression);
+/** \brief Divides a std::string into multiple characters based on a delimiter
+ *   \param str: std::string to be splitted
+ *   \param delimiters: delimiters at which str should be splitted
+ *   \return tokens: Return value as vector<std::string> holding the splitted parts of std::string
+ */
+STANDARDFILESDLLEXPORT std::vector<std::string> tokenize(const std::string& str, const std::string& delimiters);
+
+/** \brief Write a file with circle points
+ * \details Function writes a file to aFilename containing a description of a circle with numberOfCirclePoints
+ * \param aFilename: full path with filename, where the circle is stored in
+ * \param numberOfCirclePoint: Number of points of the whole circle; default value is set to 40 as it has been used so far in fuselageDesign
+ */
+STANDARDFILESDLLEXPORT void writeCircleCoordinates(const std::string& aFilename, const uint16_t& numberOfCirclePoints = 40);
+
+// Inline functions
+inline std::string getSettingsFilename(const std::string& aToolname) {
+  return aToolname + "_conf.xml";
+}
+
+// Templates
+template <typename T>
+/** \brief Function to cast a number to a std::string
+ *   \param aNum: number to be casted
+ *   \return std::string
+ */
+std::string num2Str(T aNum) {
+  std::stringstream ss_tmp;
+  ss_tmp << aNum;
+  return ss_tmp.str();
+}
+
+template <typename T>
+/** \brief Function to cast a std::string to a number
+ *   \param astd::string: std::string to be casted
+ *   \return number
+ */
+T str2Num(const std::string& aString) {
+  std::stringstream ss_tmp;
+  ss_tmp << aString;
+  T result = 0;
+  ss_tmp >> result;
+  return result;
+}
+
+template <typename T>
+/** \brief Mathematical sign function
+ *   \details Function returns -1 if aValue is < 0, 0 if aValue is = 0, and 1 if aValue is > 0 for all type of numbers
+ *   \param aValue: number to be analyzed
+ *   \return int: the sign of the number
+ */
+int signum(const T& aValue) { // used from https://stackoverflow.com/a/4609795
+  return (T(0) < aValue) - (aValue < T(0));
+}
+
+template <typename T>
+/** \brief function for 1D linear vector interpolation
+ *   \details function interpolates the vector for a given target position between the vector values of leftPosition and rightPosition;
+ *            allowed types are vector<double> and vector<Point>;
+ *   \param target: current x position
+ *   \param leftPosition: x position of first vector of values
+ *   \param leftVector: vector<f(x)> at first x value
+ *   \param rightPosition: x position of second vector of values
+ *   \param rightVector: vector<f(x)> at second x value
+ *   \return interpolated vector of values (vector<f(x)> at current x value)
+ */
+inline std::vector<T> linearVectorInterpolation(const double& target, const double& leftPosition, const std::vector<T>& leftVector, const double& rightPosition,
+                                                const std::vector<T>& rightVector) {
+  std::vector<T> result(leftVector.size());
+  if (leftVector.size() != rightVector.size()) {
+    throw "Vectors of unequal size in linearVectorInterpolation. Abort program.";
+  } else {
+    result = linearVectorInterpolation(target, leftPosition, leftVector, rightPosition, rightVector);
+  }
+  return result;
+}
+template <>
+/** \brief function for 1D linear point vector interpolation
+ *   \details function interpolates the vector of points for a given target position between the vector values of leftPosition and rightPosition;
+ *   \param target: current x position
+ *   \param leftPosition: x position of first vector of values
+ *   \param leftVector: vector<f(x)> at first x value
+ *   \param rightPosition: x position of second vector of values
+ *   \param rightVector: vector<f(x)> at second x value
+ *   \return interpolated vector of values (vector<f(x)> at current x value)
+ */
+inline std::vector<Point> linearVectorInterpolation<Point>(const double& target, const double& leftPosition, const std::vector<Point>& leftVector, const double& rightPosition,
+                                                           const std::vector<Point>& rightVector) {
+  std::vector<Point> result;
+  Point tmpResult;
+  for (size_t index = 0; index < leftVector.size(); index++) {
+    tmpResult.xCoordinate = linearInterpolation(target, leftPosition, leftVector[index].xCoordinate, rightPosition, rightVector[index].xCoordinate);
+    tmpResult.yCoordinate = linearInterpolation(target, leftPosition, leftVector[index].yCoordinate, rightPosition, rightVector[index].yCoordinate);
+    tmpResult.zCoordinate = linearInterpolation(target, leftPosition, leftVector[index].zCoordinate, rightPosition, rightVector[index].zCoordinate);
+    result.push_back(tmpResult);
+  }
+  return result;
+}
+template <>
+/** \brief function for 1D linear numeric vector interpolation
+ *   \details function interpolates the vector of numeric double values for a given target position between the vector values of leftPosition and rightPosition;
+ *   \param target: current x position
+ *   \param leftPosition: x position of first vector of values
+ *   \param leftVector: vector<f(x)> at first x value
+ *   \param rightPosition: x position of second vector of values
+ *   \param rightVector: vector<f(x)> at second x value
+ *   \return interpolated vector of values (vector<f(x)> at current x value)
+ */
+inline std::vector<double> linearVectorInterpolation<double>(const double& target, const double& leftPosition, const std::vector<double>& leftVector, const double& rightPosition,
+                                                             const std::vector<double>& rightVector) {
+  std::vector<double> result;
+  for (size_t index = 0; index < leftVector.size(); index++) {
+    result.push_back(linearInterpolation(target, leftPosition, leftVector[index], rightPosition, rightVector[index]));
+  }
+  return result;
+}
+
+/** \brief function compares if a number is in between two values
+ *   \param low lowerBound
+ *   \param includeLow bool if lowerBound is included
+ *   \param high higherBound
+ *   \param includeHigh bool if higherBound is included
+ *   \param value the value to be compared
+ *   \return true if value is within the bounds
+ */
+inline bool inRange(const double& low, const double& high, const double& value, const bool& includeLow = true, const bool& includeHigh = true) {
+  bool isInRange(true);
+  if (includeLow && includeHigh)
+    isInRange = ((value - high) * (value - low) <= ACCURACY_HIGH);
+  else if (!includeLow && !includeHigh)
+    isInRange = ((value - high) * (value - low) < ACCURACY_HIGH);
+  else if (includeLow && !includeHigh)
+    isInRange = ((value - high) < ACCURACY_HIGH) ? inRange(low, high, value) : false;
+  else if (!includeLow && includeHigh)
+    isInRange = ((value - low) > ACCURACY_HIGH) ? inRange(low, high, value) : false;
+  else
+    {}
+  return isInRange;
+}
+
+/** \brief function aligns x-coordinates of one vector to those of another one
+ *   \details the x-coordinates of theVectorToAlign are adapted to those of theFixedVector. The corresponding y- and z-coordinates are interpolated correspondingly.
+ *   \param theFixedVector const reference to points of the vector that should be kept constant in x-values
+ *   \param theVectorToAlign const reference to points of the vector which x-coordinates are aligned
+ *   \return theAlignedVector result of the aligned points
+ */
+STANDARDFILESDLLEXPORT std::vector<Point> alignLeftAndRightVectorPoints(const std::vector<Point>& theFixedVector, const std::vector<Point>& theVectorToAlign);
+
+/** \brief Calculates the upper and lower boundary (neighbors) to a value within a vector
+ *   \param vec const std::vector<T>&: vector in which the value is contained
+ *   \param val const T&: value, for which the boundaries shall be found
+ *   \param upB typename std::vector<T>::const_iterator*: upper boundary (right neighbor) of the value "val"
+ *   \param lowB typename std::vector<T>::const_iterator*: lower boundary (left neighbor) of the value "val"
+ *   \return void
+ *
+ */
+template <typename T>
+inline void getVectorBounds(const std::vector<T>& vec, const T& val, typename std::vector<T>::const_iterator* upB, typename std::vector<T>::const_iterator* lowB) {
+  /* Determine bounds in vec*/
+  if (vec.size() < 2) {
+    *upB = vec.begin();
+    *lowB = vec.begin();
+  } else {
+    if (std::is_sorted(vec.begin(), vec.end())) { // Vector is sorted in increasing order
+      *upB = std::upper_bound(vec.begin(), vec.end(), val);
+    } else if (std::is_sorted(vec.begin(), vec.end(), std::greater<>())) { // Vector is sorted in decreasing order
+      *upB = std::upper_bound(vec.begin(), vec.end(), val, [](T a, T b) { return a >= b; });
+    } else {
+      throw("In function \"getVectorBounds()\": Vector is not sorted!");
+    }
+    if (*upB == vec.begin())
+      ++*upB;
+    else if (*upB == vec.end())
+      --*upB;
+    *lowB = std::prev(*upB);
+  }
+}
+
+/** \brief interpolates value with 1 input dimension: f(input)
+ *   \param values: 1-dimensional map with values for interpolation
+ *   \param input_vec: input vector
+ *   \param input: input value
+ *   \return value: interpolated output value with respect to input value: f(input)
+ */
+template <typename T>
+inline T interpn(const std::vector<T>& values, const std::vector<T>& input_vec, const T& input) {
+  /* Determine bounds in input_vec*/
+  typename std::vector<T>::const_iterator upperBound, lowerBound;
+  getVectorBounds(input_vec, input, &upperBound, &lowerBound);
+  /* Interpolate value */
+  T value_LB = values.at(lowerBound - input_vec.begin());
+  T value_UB = values.at(upperBound - input_vec.begin());
+  /* Interpolate final value value */
+  T value = linearInterpolation(input, input_vec.at(lowerBound - input_vec.begin()), value_LB, input_vec.at(upperBound - input_vec.begin()), value_UB, true);
+  return value;
+}
+
+/** \brief interpolates value with 2 input dimensions: f(input1, input2)
+ *   \param values: 2-dimensional map with values for interpolation
+ *   \param input1_vec: input 1 vector
+ *   \param input2_vec: input 2 vector
+ *   \param input1: input value on 1st level
+ *   \param input2: input value on 2nd level
+ *   \return value: interpolated output value with respect to input values: f(input1,input2)
+ */
+template <typename T>
+inline T interpn(const std::vector<std::vector<T>>& values, const std::vector<T>& input1_vec, const std::vector<T>& input2_vec, const T& input1, const T& input2) {
+  /* Determine bounds in input2_vec*/
+  typename std::vector<T>::const_iterator upperBound, lowerBound;
+  getVectorBounds(input2_vec, input2, &upperBound, &lowerBound);
+  /* Interpolate value at input2 bounds */
+  T value_LB = interpn(values.at(lowerBound - input2_vec.begin()), input1_vec, input1);
+  T value_UB = interpn(values.at(upperBound - input2_vec.begin()), input1_vec, input1);
+  /* Interpolate final value */
+  T value = linearInterpolation(input2, input2_vec.at(lowerBound - input2_vec.begin()), value_LB, input2_vec.at(upperBound - input2_vec.begin()), value_UB, true);
+  return value;
+}
+
+/** \brief interpolates value with 3 input dimensions: f(input1, input2, input3)
+ *   \param values: 3-dimensional map with values for interpolation
+ *   \param input1_vec: input 1 vector
+ *   \param input2_vec: input 2 vector
+ *   \param input3_vec: input 3 vector
+ *   \param input1: input value on 1st level
+ *   \param input2: input value on 2nd level
+ *   \param input3: input value on 3rd level
+ *   \return value: interpolated output value with respect to input values: f(input1, input2, input3)
+ */
+template <typename T>
+inline T interpn(const std::vector<std::vector<std::vector<T>>>& values, const std::vector<T>& input1_vec, const std::vector<T>& input2_vec, const std::vector<T>& input3_vec,
+                 const T& input1, const T& input2, const T& input3) {
+  /* Determine bounds in input3_vec*/
+  typename std::vector<T>::const_iterator upperBound, lowerBound;
+  getVectorBounds(input3_vec, input3, &upperBound, &lowerBound);
+  /* Interpolate value at input3 bounds */
+  T value_LB = interpn(values.at(lowerBound - input3_vec.begin()), input1_vec, input2_vec, input1, input2);
+  T value_UB = interpn(values.at(upperBound - input3_vec.begin()), input1_vec, input2_vec, input1, input2);
+  /* Interpolate final value */
+  T value = linearInterpolation(input3, input3_vec.at(lowerBound - input3_vec.begin()), value_LB, input3_vec.at(upperBound - input3_vec.begin()), value_UB, true);
+  return value;
+}
+
+/** \brief interpolates value with 4 input dimensions: f(input1, input2, input3, input4)
+ *   \param values: 3-dimensional map with values for interpolation
+ *   \param input1_vec: input 1 vector
+ *   \param input2_vec: input 2 vector
+ *   \param input3_vec: input 3 vector
+ *   \param input4_vec: input 4 vector
+ *   \param input1: input value on 1st level
+ *   \param input2: input value on 2nd level
+ *   \param input3: input value on 3rd level
+ *   \param input4: input value on 4th level
+ *   \return value: interpolated output value with respect to input values: f(input1, input2, input3, input4)
+ */
+template <typename T>
+inline T interpn(const std::vector<std::vector<std::vector<std::vector<T>>>>& values, const std::vector<T>& input1_vec, const std::vector<T>& input2_vec,
+                 const std::vector<T>& input3_vec, const std::vector<T>& input4_vec, const T& input1, const T& input2, const T& input3, const T& input4) {
+  /* Determine bounds in input3_vec*/
+  typename std::vector<T>::const_iterator upperBound, lowerBound;
+  getVectorBounds(input4_vec, input4, &upperBound, &lowerBound);
+  /* Interpolate value at input3 bounds */
+  T value_LB = interpn(values.at(lowerBound - input4_vec.begin()), input1_vec, input2_vec, input3_vec, input1, input2, input3);
+  T value_UB = interpn(values.at(upperBound - input4_vec.begin()), input1_vec, input2_vec, input3_vec, input1, input2, input3);
+  /* Interpolate final value */
+  T value = linearInterpolation(input4, input4_vec.at(lowerBound - input4_vec.begin()), value_LB, input4_vec.at(upperBound - input4_vec.begin()), value_UB, true);
+  return value;
+}
+
+/** \brief interpolates value with 5 input dimensions: f(input1, input2, input3, input4, input5)
+ *   \param values: 3-dimensional map with values for interpolation
+ *   \param input1_vec: input 1 vector
+ *   \param input2_vec: input 2 vector
+ *   \param input3_vec: input 3 vector
+ *   \param input4_vec: input 4 vector
+ *   \param input5_vec: input 5 vector
+ *   \param input1: input value on 1st level
+ *   \param input2: input value on 2nd level
+ *   \param input3: input value on 3rd level
+ *   \param input4: input value on 4th level
+ *   \param input5: input value on 5th level
+ *   \return value: interpolated output value with respect to input values: f(input1, input2, input3, input4, input5)
+ */
+template <typename T>
+inline T interpn(const std::vector<std::vector<std::vector<std::vector<std::vector<T>>>>>& values, const std::vector<T>& input1_vec, const std::vector<T>& input2_vec,
+                 const std::vector<T>& input3_vec, const std::vector<T>& input4_vec, const std::vector<T>& input5_vec, const T& input1, const T& input2, const T& input3,
+                 const T& input4, const T& input5) {
+  /* Determine bounds in input3_vec*/
+  typename std::vector<T>::const_iterator upperBound, lowerBound;
+  getVectorBounds(input5_vec, input5, &upperBound, &lowerBound);
+  /* Interpolate value at input3 bounds */
+  T value_LB = interpn(values.at(lowerBound - input5_vec.begin()), input1_vec, input2_vec, input3_vec, input4_vec, input1, input2, input3, input4);
+  T value_UB = interpn(values.at(upperBound - input5_vec.begin()), input1_vec, input2_vec, input3_vec, input4_vec, input1, input2, input3, input4);
+  /* Interpolate final value */
+  T value = linearInterpolation(input5, input5_vec.at(lowerBound - input5_vec.begin()), value_LB, input5_vec.at(upperBound - input5_vec.begin()), value_UB, true);
+  return value;
+}
+
+/** \brief interpolates value with 6 input dimensions: f(input1, input2, input3, input4, input5, input6)
+ *   \param values: 3-dimensional map with values for interpolation
+ *   \param input1_vec: input 1 vector
+ *   \param input2_vec: input 2 vector
+ *   \param input3_vec: input 3 vector
+ *   \param input4_vec: input 4 vector
+ *   \param input5_vec: input 5 vector
+ *   \param input6_vec: input 6 vector
+ *   \param input1: input value on 1st level
+ *   \param input2: input value on 2nd level
+ *   \param input3: input value on 3rd level
+ *   \param input4: input value on 4th level
+ *   \param input5: input value on 5th level
+ *   \param input6: input value on 6th level
+ *   \return value: interpolated output value with respect to input values: f(input1, input2, input3, input4, input5, input6)
+ */
+template <typename T>
+inline T interpn(const std::vector<std::vector<std::vector<std::vector<std::vector<std::vector<T>>>>>>& values, const std::vector<T>& input1_vec, const std::vector<T>& input2_vec,
+                 const std::vector<T>& input3_vec, const std::vector<T>& input4_vec, const std::vector<T>& input5_vec, const std::vector<T>& input6_vec, const T& input1,
+                 const T& input2, const T& input3, const T& input4, const T& input5, const T& input6) {
+  /* Determine bounds in input3_vec*/
+  typename std::vector<T>::const_iterator upperBound, lowerBound;
+  getVectorBounds(input6_vec, input6, &upperBound, &lowerBound);
+  /* Interpolate value at input3 bounds */
+  T value_LB = interpn(values.at(lowerBound - input6_vec.begin()), input1_vec, input2_vec, input3_vec, input4_vec, input5_vec, input1, input2, input3, input4, input5);
+  T value_UB = interpn(values.at(upperBound - input6_vec.begin()), input1_vec, input2_vec, input3_vec, input4_vec, input5_vec, input1, input2, input3, input4, input5);
+  /* Interpolate final value */
+  T value = linearInterpolation(input6, input6_vec.at(lowerBound - input6_vec.begin()), value_LB, input6_vec.at(upperBound - input6_vec.begin()), value_UB, true);
+  return value;
+}
+
+/** \brief Throws an error and exits the program
+ * \details Template Function can be called from the code like this: throwError(__FILE__, __FUNCTION__, __LINE__, "Your own error message"), or like this: throwError(__FILE__,
+ * __func__, __LINE__, "Your own error message"). throwError(...) throws a std::string as exception. If you want to use other exception type, use e.g.
+ * throwError<std::invalid_argument>(...) \param aFile: file in which the error occurred \param aFunction: function in which the error occurred \param aLine: line in which the
+ * error occurred \param anErrorMessage: Additional error message
+ */
+template <typename ExceptionType = std::string>
+void throwError(const std::string& aFile, const std::string& aFunction, const int& aLine, const std::string& anErrorMessage = "") {
+  std::string theFilename(aFile.substr(aFile.rfind(FILESEPERATOR) + 1));
+  if (myRuntimeInfo != nullptr) {
+    myRuntimeInfo->err << "In file \"" << theFilename << "\", function \"" << aFunction << "\", line " << aLine << ":" << std::endl;
+    throw ExceptionType(anErrorMessage);
+  } else {
+    throw ExceptionType("In file \"" + theFilename + "\", function \"" + aFunction + "\", line " + std::to_string(aLine) + " : " + anErrorMessage);
+  }
+}
+
+/** \brief Returns folder size in bytes (recursively)
+ *   \param path: folder path
+ *   \return folder size in bytes
+ */
+STANDARDFILESDLLEXPORT std::uintmax_t getDirectorySize(const std::string& path);
+
+/** \brief Converts a file size (bytes) into a std::string with unit (kB, MB, etc.)
+ *   \param size: size in bytes
+ *   \return size in kB, MB, etc.
+ */
+STANDARDFILESDLLEXPORT std::string size2Str(std::int64_t size);
+
+/** \brief Creates a directory
+ *   \param directoryPath directory path to create
+ */
+STANDARDFILESDLLEXPORT void createFolder(const std::string& directoryPath);
+
+/** \brief Method handles the signal given by the timeout alarm
+ *   \param sig: signature of process
+ */
+STANDARDFILESDLLEXPORT void handle_timeout(int sig);
+
+/** \brief Method handles the signal given by the child process alarm
+ *   \param sig: signature of process
+ */
+STANDARDFILESDLLEXPORT void handle_child(int sig);
+
+#endif // STANDARDFILES_INCLUDE_STANDARDFILES_FUNCTIONS_H_
diff --git a/standardFiles/include/standardFiles/typedefs.h b/standardFiles/include/standardFiles/typedefs.h
new file mode 100644
index 00000000..3eb86416
--- /dev/null
+++ b/standardFiles/include/standardFiles/typedefs.h
@@ -0,0 +1,91 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef STANDARDFILES_INCLUDE_STANDARDFILES_TYPEDEFS_H_
+#define STANDARDFILES_INCLUDE_STANDARDFILES_TYPEDEFS_H_
+
+#define UPPERDIRECTORY ".."
+#ifdef _WIN32
+    #define FILESEPERATOR "\\"
+    #define FILEEXTENSION ".exe"
+    #define OPERATINGSYSTEM ""
+#else
+    #define FILESEPERATOR "/"
+    #define FILEEXTENSION ""
+    #define OPERATINGSYSTEM "-linux"
+#endif // _WIN32
+
+#define GNUPLOTDEFAULTDIR UPPERDIRECTORY FILESEPERATOR "gnuplot" OPERATINGSYSTEM FILESEPERATOR "gnuplot" FILEEXTENSION
+#define INKSCAPEDEFAULTDIR UPPERDIRECTORY FILESEPERATOR "inkscape" OPERATINGSYSTEM FILESEPERATOR "inkscape" FILEEXTENSION
+
+#include <svl/SVL.h>
+#include <cmath>
+
+//Enums and Structs
+/** \struct Point a struct to describe a point with a x-, y-, and z-coordinate
+*   \details if a point is defined, it is constructed as a NAN-point by default until it is initialized with other values.
+*            The struct allows for point summation and multiplication with a constant numeric value
+*/
+class Point {
+ public:
+    //Constructor
+    explicit Point(double x = NAN, double y = NAN, double z = NAN) {
+        this->xCoordinate = x;
+        this->yCoordinate = y;
+        this->zCoordinate = z;
+    }
+    explicit Point(const Vec3& aPointVector) {
+        this->xCoordinate = aPointVector[0];
+        this->yCoordinate = aPointVector[1];
+        this->zCoordinate = aPointVector[2];
+    }
+
+    //Operators
+    Point operator*(double factor) {
+        Point result(factor * xCoordinate, factor * yCoordinate, factor * zCoordinate);
+        return result;
+    }
+    Point operator/(double factor) {
+        Point result(xCoordinate / factor, yCoordinate / factor, zCoordinate / factor);
+        return result;
+    }
+    Point operator+(Point aPoint) {
+        Point result(aPoint.xCoordinate + xCoordinate, aPoint.yCoordinate + yCoordinate, aPoint.zCoordinate + zCoordinate);
+        return result;
+    }
+    Point operator-(Point aPoint) {
+        Point result(aPoint.xCoordinate - xCoordinate, aPoint.yCoordinate - yCoordinate, aPoint.zCoordinate - zCoordinate);
+        return result;
+    }
+    Point operator()(const Vec3& aPointVector) {
+        return Point(aPointVector[0], aPointVector[1], aPointVector[2]);
+    }
+
+    //Member
+    double xCoordinate, yCoordinate, zCoordinate;
+};
+
+enum aSide {LEFT, RIGHT, UPPER, LOWER}; /**< an enum to translate the four sides (upper/lower/left/right) into unsigned numeric values */
+enum stateCondition {STATIC, DYNAMIC, TOTAL};   /**< an enum to translate the three state conditions (static/dynamic/total values) into unsigned numeric values */
+enum surfaceType {FUSELAGE, SURFACE, TIP};   /**< an enum to translate the three surface types (Fuselage/Surface/Tip) into unsigned numeric values */
+enum geometryComponent {WING, HTP, VTP, FSLG, NACELLE, LANDINGGEAR, PYLON}; /**< an enum to translate the aircraft geometry components */
+#endif // STANDARDFILES_INCLUDE_STANDARDFILES_TYPEDEFS_H_
diff --git a/standardFiles/resources.rc b/standardFiles/resources.rc
new file mode 100644
index 00000000..90545ed4
--- /dev/null
+++ b/standardFiles/resources.rc
@@ -0,0 +1,26 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    0,5,0
+    PRODUCTVERSION 0,5,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        "UNICADO consortium\0"
+            VALUE "FileDescription",    "standardFiles\0"
+            VALUE "FileVersion",        "0.5.0\0"
+            VALUE "LegalCopyright",     "(C) 2025 UNICADO consortium - All rights reserved.\0"
+            VALUE "OriginalFilename",   "standardFiles.dll\0"
+            VALUE "ProductName",        "standardFiles\0"
+            VALUE "ProductVersion",     "0.5.0\0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
+
diff --git a/standardFiles/src/functions.cpp b/standardFiles/src/functions.cpp
new file mode 100644
index 00000000..4b66ed42
--- /dev/null
+++ b/standardFiles/src/functions.cpp
@@ -0,0 +1,1024 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <standardFiles/functions.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <algorithm>
+#include <array>
+#include <cmath>
+#include <ctime>
+#include <cstdio>
+#include <filesystem>
+#include <iomanip>
+#include <regex>
+#include <sstream>
+#include <string>
+#include <vector>
+#include <iostream>
+#ifdef _WIN32
+#include <tchar.h>
+#include <windows.h>
+#else
+#include <inttypes.h>
+#include <signal.h>
+#include <spawn.h>
+#include <unistd.h>
+#ifdef __unix__
+#include <errno.h>
+#include <linux/limits.h>
+#include <wait.h>
+#else
+#include <sys/wait.h>
+#endif
+#include <dirent.h>
+#include <string.h>
+#include <sys/types.h>
+#endif
+#include <unitConversion/unitConversion.h>
+
+#define MAX_FILE_NAME_LEN 256
+#define BUFSIZE 4096
+
+#ifdef __APPLE__
+/**
+ * \brief Declare global variable environ
+ */
+extern char** environ;
+#endif // __APPLE__
+
+#ifndef _WIN32
+/** \brief Switch that shows if child process ran out of time
+ *   \return True if timeout occurred
+ */
+static bool timeout = false;
+
+/** \brief Switch that shows if child process was successful
+ *   \return True if process was successful
+ */
+static bool child_finished = false;
+#endif // none __unix__
+
+/********************************************************************************************************/
+#ifdef _WIN32
+int handleChildProcess(const std::string& processName, const std::string& relExecDir, double maxRuntime) {
+  // s.a.: "http://msdn.microsoft.com/en-us/library/ms682512.aspx"
+  /* definition of process variables */
+  STARTUPINFO si;
+  PROCESS_INFORMATION pi;
+  ZeroMemory(&si, sizeof(si));
+  si.cb = sizeof(si);
+  ZeroMemory(&pi, sizeof(pi));
+  /* define execution command for process call */
+  std::string tmpCommand = relExecDir + processName;
+  char* processNameCh = const_cast<char*>(tmpCommand.c_str());
+  /* definition of absolute path for folder from which the process is started */
+  TCHAR absExecDir[MAX_PATH]; // absolutes Verzeichnis
+  TCHAR currentDir[MAX_PATH];
+  GetCurrentDirectory(MAX_PATH, currentDir);
+  snprintf(absExecDir, sizeof absExecDir, "%s\\%s", currentDir, relExecDir.c_str());
+  /* start child process */
+  DWORD exitValue(0);
+  if (!CreateProcess(NULL,          // No module name (use command line)
+                     processNameCh, // Command line
+                     NULL,          // Process handle not inheritable
+                     NULL,          // Thread handle not inheritable
+                     FALSE,         // Set handle inheritance to FALSE
+                     0,             // No creation flags
+                     NULL,          // Use parent's environment block
+                     absExecDir,    // Use parent's starting directory
+                     &si,           // Pointer to STARTUPINFO structure
+                     &pi)) {        // Pointer to PROCESS_INFORMATION structure
+    myRuntimeInfo->err << "CreateProcess failed (ErrorCode: " << GetLastError() << ") on process: " << processName << std::endl;
+    CloseHandle(pi.hProcess);
+    CloseHandle(pi.hThread);
+    return 2;
+  }
+  /* check status of child process */
+  DWORD processStatus(WaitForSingleObject(pi.hProcess, maxRuntime * 60000.)); // timeout in ms
+  if (processStatus) {
+    if (processStatus == 0x00000102L) {
+      myRuntimeInfo->err << processName << " mit Zeitueberschreitung abgebrochen!" << std::endl;
+      TerminateProcess(pi.hProcess, processStatus);
+      exitValue = 1;
+    } else if (processStatus == 0xFFFFFFFF) {
+      myRuntimeInfo->err << "WaitForSingleObject failed (ErrorCode: " << GetLastError() << ") on process: " << processName << std::endl;
+      exitValue = 1; // return;
+    } else {
+      myRuntimeInfo->err << processName << " mit unbekanntem Fehler abgebrochen!" << std::endl;
+      exitValue = 1;
+    }
+  } else {
+    GetExitCodeProcess(pi.hProcess, &exitValue);
+    //        if (exitValue)
+    //        {
+    //            myRuntimeInfo->err << processName << " mit Fehlercode "<<exitValue<<" abgebrochen!" << std::endl;
+    //            exit(1);
+    //        }
+  }
+  //    if (mySettings.comments_on)
+  //    {
+  //        cout << processName << " erfolgreich ausgefuehrt!";
+  //    }
+  /* close process and thread handles */
+  CloseHandle(pi.hProcess);
+  CloseHandle(pi.hThread);
+  return static_cast<int>(exitValue);
+}
+#else
+void handle_timeout(int sig) {
+  timeout = true;
+}
+
+void handle_child(int sig) {
+  pid_t pid = wait(NULL);
+  if (pid == -1) {
+    child_finished = false;
+    perror("wait");
+  } else {
+    child_finished = true;
+  }
+}
+
+int handleChildProcess(const std::string& processName, const std::string& relExecDir, double maxRuntime) {
+  timeout = false;        // Reset timeout switch
+  child_finished = false; // Reset child process switch
+
+  pid_t processID;
+  int status;
+  maxRuntime *= 60; // Elapsed time measured in seconds
+
+  // Defining relative command for process execution
+  std::string tmpCommand = relExecDir + processName;
+  char* processNameCh = const_cast<char*>(tmpCommand.c_str());
+  char* argv[] = {const_cast<char*>("sh"), const_cast<char*>("-c"), processNameCh, NULL};
+
+  // Starting child process
+  status = posix_spawn(&processID, "/bin/sh", NULL, NULL, argv, environ);
+
+  signal(SIGALRM, handle_timeout);
+  signal(SIGCHLD, handle_child);
+
+  // Checking status of child process
+  if (status == 0) {
+    alarm(maxRuntime);
+    pause();
+
+    if (timeout) {
+      myRuntimeInfo->err << "Process exited with timeout" << std::endl;
+      killpg(processID, 0);
+      status = 1;
+    } else if (child_finished) {
+      // myRuntimeInfo->out << "Process exited successfully" << std::endl;
+      status = 0;
+    } else {
+      myRuntimeInfo->err << "Process exited with unknown error" << std::endl;
+      status = 1;
+    }
+  } else {
+    myRuntimeInfo->err << "Process exited with error: " << status << std::endl;
+    return status;
+  }
+  return status;
+}
+#endif // none WIN32
+/********************************************************************************************************/
+#ifdef _WIN32
+int handleChildProcessOtherDirectory(const std::string& processName, const std::string& relExecDir, // cppcheck-suppress unusedFunction
+                                     const std::string& workingDir, double maxRuntime) {
+  // s.a.: "http://msdn.microsoft.com/en-us/library/ms682512.aspx"
+  /* definition of process variables */
+  STARTUPINFO si;
+  PROCESS_INFORMATION pi;
+  ZeroMemory(&si, sizeof(si));
+  si.cb = sizeof(si);
+  ZeroMemory(&pi, sizeof(pi));
+  /* define execution command for process call */
+  std::string tmpCommand = relExecDir + processName;
+  char* processNameCh = const_cast<char*>(tmpCommand.c_str());
+  /* definition of absolute path for folder from which the process is started */
+  TCHAR absExecDir[MAX_PATH];
+  absExecDir[workingDir.size()] = 0;
+  std::copy(workingDir.begin(), workingDir.end(), absExecDir);
+  /* start child process */
+  DWORD exitValue(0);
+  if (!CreateProcess(NULL,          // No module name (use command line)
+                     processNameCh, // argv[1], // Command line
+                     NULL,          // Process handle not inheritable
+                     NULL,          // Thread handle not inheritable
+                     TRUE,          // Set handle inheritance to FALSE
+                     0,             // No creation flags
+                     NULL,          // Use parent's environment block
+                     absExecDir,    // Use parent's starting directory
+                     &si,           // Pointer to STARTUPINFO structure
+                     &pi)) {        // Pointer to PROCESS_INFORMATION structure
+    myRuntimeInfo->err << "CreateProcess failed (ErrorCode: " << GetLastError() << ") on process: " << processName << std::endl;
+    CloseHandle(pi.hProcess);
+    CloseHandle(pi.hThread);
+    return 2;
+  }
+  /* check status of child process */
+  DWORD processStatus(WaitForSingleObject(pi.hProcess, maxRuntime * 60000.)); // timeout in ms
+  if (processStatus) {
+    if (processStatus == 0x00000102L) {
+      myRuntimeInfo->err << processName << " mit Zeitueberschreitung abgebrochen!" << std::endl;
+      TerminateProcess(pi.hProcess, processStatus);
+      exitValue = 1;
+    } else if (processStatus == 0xFFFFFFFF) {
+      myRuntimeInfo->err << "WaitForSingleObject failed (ErrorCode: " << GetLastError() << ") on process: " << processName << std::endl;
+      exitValue = 1; // return;
+    } else {
+      myRuntimeInfo->err << processName << " mit unbekanntem Fehler abgebrochen!" << std::endl;
+      exitValue = 1;
+    }
+  } else {
+    GetExitCodeProcess(pi.hProcess, &exitValue);
+    if (exitValue) {
+      myRuntimeInfo->err << processName << " mit Fehlercode " << exitValue << " abgebrochen!" << std::endl;
+      // exit(1);
+    }
+  }
+  //    if (mySettings.comments_on)
+  //    {
+  //        cout << processName << " erfolgreich ausgefuehrt!";
+  //    }
+  /* close process and thread handles */
+  CloseHandle(pi.hProcess);
+  CloseHandle(pi.hThread);
+  return static_cast<int>(exitValue);
+}
+#else
+int handleChildProcessOtherDirectory(const std::string& processName, const std::string& relExecDir, const std::string& workingDir, double maxRuntime) {
+  timeout = false;        // Reset timeout switch
+  child_finished = false; // Reset child process switch
+  pid_t processID;
+  int status;
+  maxRuntime *= 60; // Elapsed time measured in seconds
+
+  // Defining relative command for process execution
+  std::string tmpCommand = "cd " + workingDir + "/\n" + relExecDir + processName;
+  char* processNameCh = const_cast<char*>(tmpCommand.c_str());
+  char* argv2[] = {const_cast<char*>("sh"), const_cast<char*>("-c"), processNameCh, NULL};
+
+  // Starting child process
+  status = posix_spawn(&processID, "/bin/sh", NULL, NULL, argv2, environ);
+
+  signal(SIGALRM, handle_timeout);
+  signal(SIGCHLD, handle_child);
+
+  // Checking status of child process
+  if (status == 0) {
+    alarm(maxRuntime);
+    pause();
+
+    if (timeout) {
+      myRuntimeInfo->err << "Process exited with timeout" << std::endl;
+      killpg(processID, 0);
+      status = 1;
+    } else if (child_finished) {
+      // myRuntimeInfo->out << "Process exited successfully" << std::endl;
+      status = 0;
+    } else {
+      myRuntimeInfo->err << "Process exited with unknown error" << std::endl;
+      status = 1;
+    }
+  } else {
+    myRuntimeInfo->err << "Error: " << status << std::endl;
+    return status;
+  }
+  alarm(0);
+
+  return status;
+}
+#endif // none WIN32
+/********************************************************************************************************/
+void deleteObsoleteFiles(const std::string& filename) {
+  std::filesystem::path filepath = std::filesystem::path(filename).lexically_normal();
+  if (std::filesystem::remove_all(filepath) < 1) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "Error deleting " << filepath.string() << ". Program exit!" << std::endl;
+    } else {
+      std::cerr << "Error deleting " << filepath.string() << ". Program exit!" << std::endl;
+    }
+    // ToDo -> should throw instead of exiting;
+    exit(1);
+  }
+}
+
+/* Helper method for wildCardDelete */
+std::string wildcard_to_regex(const std::string& wildcard) {
+  std::string regex_pattern;
+  for (char ch : wildcard) {
+    switch (ch) {
+      case '*':
+        regex_pattern += ".*"; // `*` matches any sequence of characters
+        break;
+      case '?':
+        regex_pattern += "."; // `?` matches any single character
+        break;
+      case '.':
+        regex_pattern += "\\."; // `.` matches a literal dot
+        break;
+      default:
+        regex_pattern += ch; // Any other character matches itself
+    }
+  }
+  return regex_pattern;
+}
+/********************************************************************************************************/
+void wildCardDeleteFiles(const std::string& filesPath, const std::string& filesDir) {
+  // Convert inputs to std::filesystem::path
+  std::filesystem::path directory = std::filesystem::path(filesDir).lexically_normal();
+  std::filesystem::path patternPath = std::filesystem::path(filesPath).lexically_normal();
+
+  // Convert the wildcard pattern to regex
+  std::string regex_pattern = wildcard_to_regex(patternPath.string());
+  std::regex pattern(regex_pattern, std::regex::icase); // Case-insensitive matching
+
+  try {
+    for (const auto& entry : std::filesystem::directory_iterator(directory)) {
+      if (entry.is_regular_file() && std::regex_match(entry.path().filename().string(), pattern)) {
+        std::filesystem::remove(entry.path());
+        std::cout << "Deleted: " << entry.path() << std::endl;
+      }
+    }
+  } catch (const std::filesystem::filesystem_error& e) {
+    std::cerr << "Filesystem error: " << e.what() << std::endl;
+  } catch (const std::exception& e) {
+    std::cerr << "General exception: " << e.what() << std::endl;
+  }
+}
+/********************************************************************************************************/
+
+std::vector<std::string> listDirFiles(const std::string& filesDir, const std::string& fileName) {
+  // Normalize the directory path
+  std::filesystem::path dirPath = std::filesystem::path(filesDir).lexically_normal();
+  std::vector<std::string> listFileNames;
+
+  // Check if we are using a wildcard
+  bool wildCard = (fileName == "*");
+
+  // Convert the wildcard pattern to a regex pattern if not a universal wildcard
+  std::regex pattern;
+  if (!wildCard) {
+    pattern = std::regex(wildcard_to_regex(fileName), std::regex::icase);
+  }
+
+  try {
+    for (const auto& entry : std::filesystem::directory_iterator(dirPath)) {
+      // Get the filename as a string
+      std::string fileNameInDir = entry.path().filename().string();
+
+      // Skip "." and ".." entries
+      if (fileNameInDir == "." || fileNameInDir == "..") continue;
+
+      // Check if file matches the pattern or if wildcard is enabled
+      bool matchesPattern = wildCard || std::regex_match(fileNameInDir, pattern);
+
+      if (matchesPattern) {
+        // Check if entry is a directory or file and append appropriately
+        if (entry.is_directory()) {
+          listFileNames.push_back(fileNameInDir + "/");
+        } else {
+          listFileNames.push_back(fileNameInDir);
+        }
+      }
+    }
+  } catch (const std::filesystem::filesystem_error& e) {
+    std::cerr << "Filesystem error: " << e.what() << std::endl;
+  }
+
+  return listFileNames;
+}
+
+void renameFiles(const std::string& oldname, const std::string& newname, const std::string& newfiletype, bool backup) {
+  try {
+    // Convert input strings to filesystem paths
+    std::filesystem::path oldfilename = std::filesystem::path(oldname).lexically_normal();
+    std::filesystem::path newfilename = std::filesystem::path(newname).lexically_normal();
+
+    // Append new file extension if specified
+    if (!newfiletype.empty()) {
+      newfilename.replace_extension(newfiletype);
+    }
+
+    // Check if the target new file already exists
+    if (std::filesystem::exists(newfilename)) {
+      if (backup) {
+        // Define backup filename
+        std::filesystem::path newfile_backup = newfilename;
+        newfile_backup.replace_filename(newname + "_backup");
+        if (!newfiletype.empty()) {
+          newfile_backup.replace_extension(newfiletype);
+        }
+
+        // Delete backup file or directory if it already exists
+        if (std::filesystem::exists(newfile_backup)) {
+          if (newfile_backup.extension().empty()) {
+            std::filesystem::remove_all(newfile_backup); // Delete directory
+          } else {
+            std::filesystem::remove(newfile_backup); // Delete file
+          }
+        }
+
+        // Rename newfilename to newfile_backup
+        std::filesystem::rename(newfilename, newfile_backup);
+      } else {
+        // If no backup is needed, delete the existing file or directory
+        if (newfilename.extension().empty()) {
+          std::filesystem::remove_all(newfilename); // Delete directory
+        } else {
+          std::filesystem::remove(newfilename); // Delete file
+        }
+      }
+    }
+
+    // Rename the old file to the new file name
+    std::filesystem::rename(oldfilename, newfilename);
+  } catch (const std::filesystem::filesystem_error& e) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "Filesystem error: " << e.what() << std::endl;
+    } else {
+      std::cerr << "Filesystem error: " << e.what() << std::endl;
+    }
+    exit(1);
+  } catch (const std::exception& e) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "General error: " << e.what() << std::endl;
+    } else {
+      std::cerr << "General error: " << e.what() << std::endl;
+    }
+    exit(1);
+  }
+}
+/********************************************************************************************************/
+bool copyFiles(const std::string& from, const std::string& to, bool overwriteExistingFile) {
+  std::filesystem::path fromPath = std::filesystem::path(from).lexically_normal();
+  std::filesystem::path toPath = std::filesystem::path(to).lexically_normal();
+
+  try {
+    // Check if source exists
+    if (!std::filesystem::exists(fromPath)) {
+      if (myRuntimeInfo != nullptr) {
+        myRuntimeInfo->err << "Cannot copy " << from << ". File or directory not found." << std::endl;
+      } else {
+        std::cerr << "Cannot copy " << from << ". File or directory not found." << std::endl;
+      }
+      return false;
+    }
+
+    // Determine if the source is a directory or a file
+    if (std::filesystem::is_directory(fromPath)) {
+      // Ensure the destination directory exists
+      if (!std::filesystem::exists(toPath)) {
+        std::filesystem::create_directories(toPath);
+      }
+
+      // Copy each file or directory within `fromPath` to `toPath` recursively
+      for (const auto& entry : std::filesystem::recursive_directory_iterator(fromPath)) {
+        const auto& relPath = std::filesystem::relative(entry.path(), fromPath); // Relative path within `fromPath`
+        std::filesystem::path destinationPath = toPath / relPath;
+
+        if (std::filesystem::is_directory(entry.status())) {
+          // Create subdirectory in destination if it does not exist
+          std::filesystem::create_directories(destinationPath);
+        } else {
+          // Copy file, respecting the overwrite flag
+          if (!overwriteExistingFile && std::filesystem::exists(destinationPath)) {
+            continue; // Skip file if it exists and overwrite is not allowed
+          }
+          std::filesystem::copy_file(entry.path(), destinationPath, std::filesystem::copy_options::overwrite_existing);
+        }
+      }
+      return true;
+    } else {
+      // Source is a file; copy the file directly
+      if (!overwriteExistingFile && std::filesystem::exists(toPath)) {
+        if (myRuntimeInfo != nullptr) {
+          myRuntimeInfo->err << "Cannot copy to " << to << ". File already exists and overwrite is disabled." << std::endl;
+        } else {
+          std::cerr << "Cannot copy to " << to << ". File already exists and overwrite is disabled." << std::endl;
+        }
+        return false;
+      }
+      std::filesystem::copy_file(fromPath, toPath, overwriteExistingFile ? std::filesystem::copy_options::overwrite_existing : std::filesystem::copy_options::none);
+      return true;
+    }
+  } catch (const std::filesystem::filesystem_error& e) {
+    // Handle filesystem errors with specific messages
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "Filesystem error: " << e.what() << std::endl;
+    } else {
+      std::cerr << "Filesystem error: " << e.what() << std::endl;
+    }
+    return false;
+  } catch (const std::exception& e) {
+    // Handle any other exceptions
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "General error: " << e.what() << std::endl;
+    } else {
+      std::cerr << "General error: " << e.what() << std::endl;
+    }
+    return false;
+  }
+}
+
+bool fileExists(const std::filesystem::path& filename) {
+  return std::filesystem::exists(filename.lexically_normal());
+}
+
+bool fileExists(const std::string& filename) {
+  // Convert to normal path
+  std::filesystem::path filepath = std::filesystem::path(filename).lexically_normal();
+  // Check existence
+  return std::filesystem::exists(filepath);
+}
+/********************************************************************************************************/
+std::string getFullPathString(const std::string& filename) {
+  try {
+    // Get the canonical (absolute) path
+    std::filesystem::path fullPath = std::filesystem::canonical(filename);
+
+    // Check if the path is a directory and append a separator if it is
+    if (std::filesystem::is_directory(fullPath)) {
+      fullPath += std::filesystem::path::preferred_separator; // Append separator if it's a directory
+    }
+
+    return fullPath.string();
+  } catch (const std::filesystem::filesystem_error& e) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "getFullPathString failed: " << e.what() << std::endl;
+    } else {
+      std::cerr << "getFullPathString failed: " << e.what() << std::endl;
+    }
+    return "";
+  }
+}
+
+/********************************************************************************************************/
+std::vector<std::string> readFile(const std::string& filename, const bool& specialCase) {
+  std::ifstream resultFile;
+  resultFile.open(filename.c_str(), std::ios::in);
+  std::vector<std::string> lineVector;
+  if (!resultFile) {
+    myRuntimeInfo->err << filename << " could not be opened." << std::endl;
+    exit(1);
+  } else {
+    /* Read file into vector */
+    std::string line;
+    while (!resultFile.eof()) {
+      getline(resultFile, line);
+      if (specialCase && line.size() >= 1) {
+        line.erase(line.end() - 1);
+      }
+      lineVector.push_back(line);
+    }
+    resultFile.close();
+  }
+  return lineVector;
+}
+std::vector<std::string> readFile(const std::string& filename, bool specialCase) {
+  std::vector<std::string> lineVector;
+  std::ifstream resultFile(filename);
+
+  if (!resultFile) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << filename << " could not be opened." << std::endl;
+    } else {
+      std::cerr << filename << " could not be opened." << std::endl;
+    }
+    exit(1);
+  }
+
+  std::string line;
+  while (std::getline(resultFile, line)) {
+    // Apply the special case if needed (remove last character of each line)
+    if (specialCase && !line.empty()) {
+      line.pop_back();
+    }
+    lineVector.push_back(line);
+  }
+
+  return lineVector;
+}
+
+/********************************************************************************************************/
+size_t findInFile(const std::string& filename, const std::string& searchWord, bool specialCase) {
+  std::filesystem::path filePath = std::filesystem::path(filename).lexically_normal();
+  std::ifstream file(filePath);
+
+  if (!file) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "Could not open file: " << filename << std::endl;
+    } else {
+      std::cerr << "Could not open file: " << filename << std::endl;
+    }
+    return 0; // Return 0 to indicate that the file could not be opened or word not found
+  }
+
+  std::string line;
+  size_t lineNumber = 0;
+
+  while (std::getline(file, line)) {
+    ++lineNumber;
+
+    // Apply the special case (remove last character if needed)
+    if (specialCase && !line.empty()) {
+      line.pop_back();
+    }
+
+    // Check if the line contains the search word
+    if (line.find(searchWord) != std::string::npos) {
+      return lineNumber; // Return the 1-based line number where the word was found
+    }
+  }
+
+  // If not found and `specialCase` is false, try again with `specialCase = true`
+  if (!specialCase) {
+    return findInFile(filename, searchWord, true);
+  }
+
+  // Return 0 if the word was not found in either pass
+  return 0;
+}
+
+/********************************************************************************************************/
+bool compareStrings(const std::string& str1, const std::string& str2, bool exact) {
+  if (exact) {
+    // Check for exact match
+    return str1 == str2;
+  } else {
+    // Check if str2 is a substring of str1 (partial match)
+    return str1.find(str2) != std::string::npos;
+  }
+}
+
+/********************************************************************************************************/
+std::string replaceAll(std::string word, const std::string& oldCharacter, const std::string& newCharacter) {
+  size_t pos = 0;
+  while ((pos = word.find(oldCharacter, pos)) != std::string::npos) {
+    word.replace(pos, oldCharacter.size(), newCharacter);
+    pos += newCharacter.size(); // Move past the newCharacter to avoid infinite loop
+  }
+  return word;
+}
+
+/********************************************************************************************************/
+std::string stringForTex(std::string theData) { // cppcheck-suppress unusedFunction
+  // Definition der Tex-Sonderzeichen
+  std::vector<std::string> specialChars;
+  specialChars.push_back("_");
+  specialChars.push_back("%");
+  specialChars.push_back("&");
+  specialChars.push_back("$");
+  for (size_t i = 0; i <= (specialChars.size() - 1); i++) {
+    theData = replaceAll(theData, specialChars.at(i), "\\" + specialChars.at(i));
+  }
+  return theData;
+}
+/********************************************************************************************************/
+std::string win2lin(const std::string& path) {
+  return std::filesystem::path(path).make_preferred().string();
+}
+
+/********************************************************************************************************/
+std::string relativePath(const std::string& path, const std::string& basePath, bool useUpperLevel) {
+  std::filesystem::path targetPath = std::filesystem::path(path).lexically_normal();
+  std::filesystem::path base = std::filesystem::path(basePath).lexically_normal();
+
+  try {
+    // Compute the relative path
+    std::filesystem::path relPath = std::filesystem::relative(targetPath, base);
+
+    // Handle the useUpperLevel case if the result needs to start with "../"
+    if (useUpperLevel) {
+      relPath = std::filesystem::path("..") / relPath;
+    }
+
+    return relPath.string();
+  } catch (const std::filesystem::filesystem_error& e) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "Error computing relative path: " << e.what() << std::endl;
+    } else {
+      std::cerr << "Error computing relative path: " << e.what() << std::endl;
+    }
+    return ""; // Return an empty string in case of error
+  }
+}
+
+/********************************************************************************************************/
+bool deleteDirectory(const std::string& dir, bool recycleBin) {
+  std::filesystem::path dirPath = std::filesystem::path(dir).lexically_normal();
+  recycleBin = recycleBin; // unused parameter
+  try {
+    // Remove the directory and its contents
+    if (std::filesystem::exists(dirPath) && std::filesystem::is_directory(dirPath)) {
+      std::filesystem::remove_all(dirPath);
+      return true;
+    } else {
+      if (myRuntimeInfo != nullptr) {
+        myRuntimeInfo->err << "Path does not exist or is not a directory: " << dir << std::endl;
+      } else {
+        std::cerr << "Path does not exist or is not a directory: " << dir << std::endl;
+      }
+      return false;
+    }
+  } catch (const std::filesystem::filesystem_error& e) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "Filesystem error: " << e.what() << std::endl;
+    } else {
+      std::cerr << "Filesystem error: " << e.what() << std::endl;
+    }
+    return false;
+  }
+}
+/********************************************************************************************************/
+double Rounding(double number, int digits) { // cppcheck-suppress unusedFunction
+  number *= pow(10, digits);
+  if (number >= 0) {
+    number = floor(number + 0.5);
+  } else {
+    number = ceil(number - 0.5);
+  }
+  number /= pow(10, digits);
+  return number;
+}
+/********************************************************************************************************/
+double RoundUp(double number, int digits) { // cppcheck-suppress unusedFunction
+  number *= pow(10, digits);
+  if (number >= 0) {
+    number = ceil(number);
+  } else {
+    number = floor(number);
+  }
+  number /= pow(10, digits);
+  return number;
+}
+/********************************************************************************************************/
+double RoundDown(double number, int digits) { // cppcheck-suppress unusedFunction
+  number *= pow(10, digits);
+  if (number >= 0) {
+    number = floor(number);
+  } else {
+    number = ceil(number);
+  }
+  number /= pow(10, digits);
+  return number;
+}
+/********************************************************************************************************/
+bool accuracyCheck(double value, double targetValue, double accuracy) { // cppcheck-suppress unusedFunction
+  if ((value < (targetValue + fabs(accuracy))) && (value > (targetValue - fabs(accuracy)))) {
+    return true;
+  }
+  return false;
+}
+/********************************************************************************************************/
+double linearInterpolation(const double& pos, const double& posA, const double& valA, const double& posB, const double& valB, const bool& allowExtrapolation) {
+  if ((pos < std::min(posA, posB) || pos > std::max(posA, posB)) && !allowExtrapolation) throw "Extrapolation not allowed.";
+  if (posA < posB)
+    return (valA + (pos - posA) / (posB - posA) * (valB - valA));
+  else if (fabs(posA - posB) < ACCURACY_HIGH)
+    return valB;
+  else
+    return (valB + (pos - posB) / (posA - posB) * (valA - valB));
+}
+/********************************************************************************************************/
+double trilinearInterpolation(const std::vector<std::vector<std::vector<double>>>& output, const std::vector<double>& input1, // cppcheck-suppress unusedFunction
+                              const std::vector<double>& input2, const std::vector<double>& input3, const double& input1_tmp, const double& input2_tmp, const double& input3_tmp) {
+  /*get vector bounds for all input vectors*/
+  std::vector<double>::const_iterator upperBound1, lowerBound1;
+  getVectorBounds(input1, input1_tmp, &upperBound1, &lowerBound1);
+
+  std::vector<double>::const_iterator upperBound2, lowerBound2;
+  getVectorBounds(input2, input2_tmp, &upperBound2, &lowerBound2);
+
+  std::vector<double>::const_iterator upperBound3, lowerBound3;
+  getVectorBounds(input3, input3_tmp, &upperBound3, &lowerBound3);
+
+  /*calculate differences between neighboring coordinates*/
+  double xdif = (input1_tmp - input1.at(lowerBound1 - input1.begin())) / (input1.at(upperBound1 - input1.begin()) - input1.at(lowerBound1 - input1.begin()));
+  double ydif = (input2_tmp - input2.at(lowerBound2 - input2.begin())) / (input2.at(upperBound2 - input2.begin()) - input2.at(lowerBound2 - input2.begin()));
+  double zdif = (input3_tmp - input3.at(lowerBound3 - input3.begin())) / (input3.at(upperBound3 - input3.begin()) - input3.at(lowerBound3 - input3.begin()));
+
+  /*get pre interpolation values 3D: indices: 0-->lowerBound, 1-->upperBound*/
+  double preinterpolation000 = output[lowerBound3 - input3.begin()][lowerBound2 - input2.begin()][lowerBound1 - input1.begin()];
+  double preinterpolation100 = output[lowerBound3 - input3.begin()][lowerBound2 - input2.begin()][upperBound1 - input1.begin()];
+  double preinterpolation001 = output[upperBound3 - input3.begin()][lowerBound2 - input2.begin()][lowerBound1 - input1.begin()];
+  double preinterpolation101 = output[upperBound3 - input3.begin()][lowerBound2 - input2.begin()][upperBound1 - input1.begin()];
+  double preinterpolation010 = output[lowerBound3 - input3.begin()][upperBound2 - input2.begin()][lowerBound1 - input1.begin()];
+  double preinterpolation110 = output[lowerBound3 - input3.begin()][upperBound2 - input2.begin()][upperBound1 - input1.begin()];
+  double preinterpolation011 = output[upperBound3 - input3.begin()][upperBound2 - input2.begin()][lowerBound1 - input1.begin()];
+  double preinterpolation111 = output[upperBound3 - input3.begin()][upperBound2 - input2.begin()][upperBound1 - input1.begin()];
+
+  /*get pre interpolation values 2D*/
+  double preinterpolation00 = preinterpolation000 * (1.0 - xdif) + preinterpolation100 * xdif;
+  double preinterpolation01 = preinterpolation001 * (1.0 - xdif) + preinterpolation101 * xdif;
+  double preinterpolation10 = preinterpolation010 * (1.0 - xdif) + preinterpolation110 * xdif;
+  double preinterpolation11 = preinterpolation011 * (1.0 - xdif) + preinterpolation111 * xdif;
+
+  /*get pre interpolation values 1D*/
+  double preinterpolation0 = preinterpolation00 * (1 - ydif) + preinterpolation10 * ydif;
+  double preinterpolation1 = preinterpolation01 * (1 - ydif) + preinterpolation11 * ydif;
+
+  /*get final interpolation values*/
+  return preinterpolation0 * (1 - zdif) + preinterpolation1 * zdif;
+}
+/********************************************************************************************************/
+std::vector<double> calcRegressionCoefficientsUsingQRdecomp(std::vector<double> vecX, std::vector<double> vecY, uint16_t orderOfRegression) {
+  std::vector<double> resultVector;
+
+  if (vecX.size() != vecY.size()) {
+    throwError<std::invalid_argument>(__FILE__, __func__, __LINE__, "Size of passed x- and y-values does not match.");
+  }
+
+  uint16_t numbOfPairs = vecX.size();
+
+  // Convert vecY to an Eigen vector
+  Eigen::VectorXd y_values(numbOfPairs);
+  for (uint16_t i = 0; i < numbOfPairs; ++i) {
+    y_values(i) = vecY.at(i);
+  }
+
+  // Create the coefficient matrix using Eigen
+  Eigen::MatrixXd coefficientMatrix(numbOfPairs, orderOfRegression + 1);
+  for (uint16_t i = 0; i < numbOfPairs; ++i) {
+    for (uint16_t j = 0; j <= orderOfRegression; ++j) {
+      coefficientMatrix(i, j) = std::pow(vecX[i], j);
+    }
+  }
+
+  // Perform QR decomposition using Eigen
+  Eigen::HouseholderQR<Eigen::MatrixXd> decomposition(coefficientMatrix);
+  Eigen::VectorXd result = decomposition.solve(y_values);
+
+  if (result.size() == orderOfRegression + 1) {
+    // Copy results to resultVector
+    resultVector.reserve(orderOfRegression + 1);
+    for (uint16_t j = 0; j <= orderOfRegression; ++j) {
+      resultVector.push_back(result(j));
+    }
+  } else {
+    throwError<std::runtime_error>(__FILE__, __func__, __LINE__, "Equation system has no results.");
+  }
+
+  return resultVector;
+}
+/********************************************************************************************************/
+std::vector<std::string> tokenize(const std::string& str, const std::string& delimiters) {
+  std::vector<std::string> tokens;
+  // Skip delimiters at beginning.
+  std::string::size_type lastPos = str.find_first_not_of(delimiters, 0);
+  // Find first "non-delimiter".
+  std::string::size_type pos = str.find_first_of(delimiters, lastPos);
+  while (std::string::npos != pos || std::string::npos != lastPos) {
+    // Found a token, add it to the vector.
+    tokens.push_back(str.substr(lastPos, pos - lastPos));
+    // Skip delimiters.  Note the "not_of"
+    lastPos = str.find_first_not_of(delimiters, pos);
+    // Find next "non-delimiter"
+    pos = str.find_first_of(delimiters, lastPos);
+  }
+  return tokens;
+}
+
+/********************************************************************************************************/
+void writeCircleCoordinates(const std::string& aFilename, const uint16_t& numberOfCirclePoints) { // cppcheck-suppress unusedFunction
+  std::ofstream out;
+  out.open(aFilename.c_str());
+  if (!out) {
+    myRuntimeInfo->err << "could not open " << aFilename << std::endl;
+    exit(1);
+  }
+  out << "# " << aFilename << std::endl;
+  out << "#Circular data" << std::endl << std::endl;
+  double angleInc = 360.0 / static_cast<double>(numberOfCirclePoints);
+  out.precision(5);
+  out.setf(std::ios::fixed, std::ios::floatfield);
+  for (uint16_t tmpPoint = 0; tmpPoint <= numberOfCirclePoints; ++tmpPoint) {
+    double angle = convertUnit(DEGREE, RADIAN, static_cast<double>(tmpPoint) * angleInc);
+    out << 0.5 * cos(angle) << "\t" << 0.5 * sin(angle) << std::endl;
+  }
+  out.close();
+}
+/********************************************************************************************************/
+std::vector<Point> alignLeftAndRightVectorPoints(const std::vector<Point>& theFixedVector, const std::vector<Point>& theVectorToAlign) { // cppcheck-suppress unusedFunction
+  std::vector<Point> theAlignedVector;
+  // Interpolate Points
+  for (const Point& aPoint : theFixedVector) {
+    double targetXvalue(aPoint.xCoordinate);
+    size_t idLeft, idRight;
+    Point theInterpolatedPoint;
+    size_t pos_x_lower = static_cast<size_t>(
+        std::find_if(theVectorToAlign.begin(), theVectorToAlign.end(), [targetXvalue](const Point& currentPoint) { return (currentPoint.xCoordinate >= targetXvalue); }) -
+        theVectorToAlign.begin());
+    if (pos_x_lower == 0) {
+      idLeft = pos_x_lower;
+      idRight = pos_x_lower + 1;
+    } else if (pos_x_lower == theVectorToAlign.size()) {
+      idLeft = pos_x_lower;
+      idRight = idLeft;
+    } else {
+      idLeft = pos_x_lower - 1;
+      idRight = pos_x_lower;
+    }
+    theInterpolatedPoint.xCoordinate = aPoint.xCoordinate;
+    theInterpolatedPoint.yCoordinate = linearInterpolation(aPoint.xCoordinate, theVectorToAlign.at(idLeft).xCoordinate, theVectorToAlign.at(idLeft).yCoordinate,
+                                                           theVectorToAlign.at(idRight).xCoordinate, theVectorToAlign.at(idRight).yCoordinate);
+    theInterpolatedPoint.zCoordinate = linearInterpolation(aPoint.xCoordinate, theVectorToAlign.at(idLeft).xCoordinate, theVectorToAlign.at(idLeft).zCoordinate,
+                                                           theVectorToAlign.at(idRight).xCoordinate, theVectorToAlign.at(idRight).zCoordinate);
+    theAlignedVector.push_back(theInterpolatedPoint);
+  }
+  return theAlignedVector;
+}
+/********************************************************************************************************/
+std::uintmax_t getDirectorySize(const std::string& path) {
+  std::filesystem::path dirPath = std::filesystem::path(path).lexically_normal();
+  std::uintmax_t folderSize = 0;
+
+  try {
+    if (std::filesystem::exists(dirPath) && std::filesystem::is_directory(dirPath)) {
+      // Recursively iterate through the directory and accumulate file sizes
+      for (const auto& entry : std::filesystem::recursive_directory_iterator(dirPath)) {
+        if (entry.is_regular_file()) {
+          folderSize += entry.file_size();
+        }
+      }
+    } else {
+      if (myRuntimeInfo != nullptr) {
+        myRuntimeInfo->err << "Path does not exist or is not a directory: " << path << std::endl;
+      } else {
+        std::cerr << "Path does not exist or is not a directory: " << path << std::endl;
+      }
+    }
+  } catch (const std::filesystem::filesystem_error& e) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "Filesystem error: " << e.what() << std::endl;
+    } else {
+      std::cerr << "Filesystem error: " << e.what() << std::endl;
+    }
+  }
+
+  return folderSize;
+}
+/********************************************************************************************************/
+std::string size2Str(std::int64_t size) {
+  // Define size units similar to Windows Explorer with binary size calculation
+  constexpr std::array<const char*, 9> UNITS = {"Bytes", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
+  double temp = static_cast<double>(size);
+  int unitIndex = 0;
+
+  // Convert size to the largest appropriate unit
+  while (temp >= 1024.0 && unitIndex < UNITS.size() - 1) {
+    temp /= 1024.0;
+    ++unitIndex;
+  }
+
+  // Format the result with 2 decimal places
+  std::ostringstream result;
+  result << std::fixed << std::setprecision(2) << temp << " " << UNITS[unitIndex];
+  return result.str();
+}
+
+/********************************************************************************************************/
+void createFolder(const std::string& directoryPath) {
+  std::filesystem::path dirPath = std::filesystem::path(directoryPath).lexically_normal();
+
+  try {
+    // Attempt to create the directory (and any necessary parent directories)
+    if (!std::filesystem::exists(dirPath)) {
+      std::filesystem::create_directories(dirPath);
+    } else {
+      if (myRuntimeInfo != nullptr) {
+        myRuntimeInfo->err << "Directory already exists: " << directoryPath << std::endl;
+      } else {
+        std::cerr << "Directory already exists: " << directoryPath << std::endl;
+      }
+    }
+  } catch (const std::filesystem::filesystem_error& e) {
+    if (myRuntimeInfo != nullptr) {
+      myRuntimeInfo->err << "Error creating directory: " << e.what() << std::endl;
+    } else {
+      std::cerr << "Error creating directory: " << e.what() << std::endl;
+    }
+    throwError(__FILE__, __func__, __LINE__, "Directory could not be created. Abort program!");
+  }
+}
diff --git a/standardFiles/test/CMakeLists.txt b/standardFiles/test/CMakeLists.txt
new file mode 100644
index 00000000..9227b050
--- /dev/null
+++ b/standardFiles/test/CMakeLists.txt
@@ -0,0 +1,52 @@
+# Convert the module sources to a path found by CMake
+list(TRANSFORM LIBRARY_SOURCES PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/../ OUTPUT_VARIABLE TEST_SOURCES)
+
+# ==============================================
+# Add the test executable
+#
+# *** IMPORTANT ***
+# -> Change *.cpp files according to the tests
+# ==============================================
+add_executable(test_${LIBRARY_NAME}
+    test_standardFiles.cpp
+    ${TEST_SOURCES}
+)
+
+# Link the test executable against UNICADO libs and gtest
+target_link_libraries( test_${LIBRARY_NAME}
+    PRIVATE
+        standardFiles
+        aixml
+        runtimeInfo
+        GTest::gtest_main
+)
+
+# Set compile definitions for the test executable
+target_compile_options( test_${LIBRARY_NAME} PRIVATE "-w") # Skip warnings
+
+# The the original source folder as includes, to that the test can access the
+# original source files
+target_include_directories( test_${LIBRARY_NAME}
+    PRIVATE
+        ${CMAKE_CURRENT_SOURCE_DIR}/../src/
+		${CMAKE_CURRENT_SOURCE_DIR}/../include/
+)
+
+# Build the test runner into the current directory
+set_target_properties( test_${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )
+
+# Add a custom target to run the tests with cmake
+add_custom_target(runtest_${LIBRARY_NAME}
+        # COMMAND CTEST_OUTPUT_ON_FAILURE=1 GTEST_COLOR=1
+        COMMAND test_${LIBRARY_NAME}
+        DEPENDS test_${LIBRARY_NAME})
+
+# *optional* Add the test executable to ctest
+# gtest_discover_tests(test_${LIBRARY_NAME})
+
+# Set compile options according to operating system
+if( WIN32 )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "_POSIX_THREAD_SAFE_FUNCTIONS;BUILD_STANDARDFILES_DLL")
+elseif( UNIX )
+    target_compile_definitions( test_${LIBRARY_NAME} PRIVATE "BUILD_STANDARDFILES_SO")
+endif()
diff --git a/standardFiles/test/test_standardFiles.cpp b/standardFiles/test/test_standardFiles.cpp
new file mode 100644
index 00000000..28ef289c
--- /dev/null
+++ b/standardFiles/test/test_standardFiles.cpp
@@ -0,0 +1,80 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <standardFiles/functions.h>
+#include <gtest/gtest.h>
+#include <algorithm>
+
+
+
+class RegressionCalculationFixture : public::testing::Test {
+ protected:
+  void SetUp() override {
+    coefficients_ord_1 = std::vector<double>({0.0,1.0});
+    coefficients_ord_2 = std::vector<double>({1.5,2.3,3.2});
+    coefficients_ord_3 = std::vector<double>({1.5,2.3,3.2,5.2});
+    for (int i = 0; i < 10; ++i) {
+      x.push_back( 3.2*i - 5.0 );
+    }
+    y_ord_1.resize(x.size());
+    y_ord_2.resize(x.size());
+    y_ord_3.resize(x.size());
+    std::transform(x.begin(),x.end(), y_ord_1.begin(), [this](double val) { return coefficients_ord_1.at(0) + coefficients_ord_1.at(1)*val;});
+    std::transform(x.begin(),x.end(), y_ord_2.begin(), [this](double val) { return coefficients_ord_2.at(0) + coefficients_ord_2.at(1)*val + coefficients_ord_2.at(2)*val*val;});
+    std::transform(x.begin(),x.end(), y_ord_3.begin(), [this](double val) { return coefficients_ord_3.at(0) + coefficients_ord_3.at(1)*val + coefficients_ord_3.at(2)*val*val + coefficients_ord_3.at(3)*val*val*val;});
+  }
+ public:
+  std::vector<double> x;
+  std::vector<double> y_ord_1;
+  std::vector<double> y_ord_2;
+  std::vector<double> y_ord_3;
+  std::vector<double> coefficients_ord_1;
+  std::vector<double> coefficients_ord_2;
+  std::vector<double> coefficients_ord_3;
+};
+
+TEST_F(RegressionCalculationFixture, EigenExecutionOrderOne) {
+  int regressionOrder = 1;
+  std::vector<double> output = calcRegressionCoefficientsUsingQRdecomp(x, y_ord_1, regressionOrder);
+  for (int i = 0; i < regressionOrder+1; ++i) {
+    std::cout << output.at(i) << std::endl;
+    EXPECT_NEAR(coefficients_ord_1.at(i),output.at(i),ACCURACY_HIGH);
+  }
+}
+
+TEST_F(RegressionCalculationFixture, EigenExecutionOrderTwo) {
+  int regressionOrder = 2;
+  std::vector<double> output = calcRegressionCoefficientsUsingQRdecomp(x, y_ord_2, regressionOrder);
+  for (int i = 0; i < regressionOrder+1; ++i) {
+    std::cout << output.at(i) << std::endl;
+    EXPECT_NEAR(coefficients_ord_2.at(i),output.at(i),ACCURACY_HIGH);
+  }
+}
+
+TEST_F(RegressionCalculationFixture, EigenExecutionOrderThree) {
+  int regressionOrder = 3;
+  std::vector<double> output = calcRegressionCoefficientsUsingQRdecomp(x, y_ord_3, regressionOrder);
+  for (int i = 0; i < regressionOrder+1; ++i) {
+    std::cout << output.at(i) << std::endl;
+    EXPECT_NEAR(coefficients_ord_3.at(i),output.at(i),ACCURACY_HIGH);
+  }
+}
diff --git a/svl/CMakeLists.txt b/svl/CMakeLists.txt
new file mode 100644
index 00000000..bc18fdf5
--- /dev/null
+++ b/svl/CMakeLists.txt
@@ -0,0 +1,31 @@
+# Set the library name
+set( LIBRARY_NAME svl )
+
+# Set the library sources
+set( LIBRARY_SOURCES
+    src/LibSVL.cpp 
+    src/Basics.cpp 
+    resources.rc
+)
+
+# Create the library target
+add_library( ${LIBRARY_NAME} STATIC ${LIBRARY_SOURCES} )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Add the include directories as the public interface
+target_include_directories( ${LIBRARY_NAME} PUBLIC include )
+
+# Add the __CMATH__ symbol to not provide the abs function since gcc comes with it
+target_compile_definitions( ${LIBRARY_NAME} PUBLIC __CMATH__)
+
+# Add the install rules
+install(TARGETS ${LIBRARY_NAME} EXPORT ${LIBRARY_NAME}Targets
+    RUNTIME DESTINATION unicadoRuntimeLibs # Windows
+    LIBRARY DESTINATION unicadoRuntimeLibs # Linux
+)
+
+# Add the export rules
+export(EXPORT ${LIBRARY_NAME}Targets
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
diff --git a/svl/LICENSE b/svl/LICENSE
new file mode 100644
index 00000000..aa819aeb
--- /dev/null
+++ b/svl/LICENSE
@@ -0,0 +1,23 @@
+
+Except where otherwise noted, Copyright (c) 2002 Andrew Willmott.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form have no conditions on them.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/svl/include/SVLConfig.h b/svl/include/SVLConfig.h
new file mode 100644
index 00000000..9879c2d3
--- /dev/null
+++ b/svl/include/SVLConfig.h
@@ -0,0 +1,34 @@
+/*
+    File:           SVLConfig.h
+
+    Function:       Contains configuration options for compiling the SVL
+                    library.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+*/
+
+//
+//  Current options are as follows:
+//
+//  VL_HAS_ABSF    - has the absf() call.
+//  VL_HAS_IEEEFP  - ieeefp.h exists.
+//  VL_HAS_DRAND   - has the drand48() call.
+//  VL_ROW_ORIENT  - Use row-oriented transforms, so you can swap 'em with
+//                   OpenGL. If this is defined, transformations are
+//                   v = v * Rot3x(u, 0.5), rather than v = Rot3x(u, 0.5) * v.
+//                   This is off by default.
+//  VL_USE_MEMCPY  - Use memcpy and friends for generic vector operations.
+//                   Generally memcpy is only faster than loop-based copies
+//                   for n > n0, so this should be enabled if the average
+//                   vector size is larger than n0. Some values of n0:
+//                       SGI R4400: 30
+//                       Intel i686, 750MHz: 5
+//
+
+// --- Configuration ----------------------------------------------------------
+
+#define SVL_CONFIG Win32_MSVC
+
+#define VL_USE_MEMCPY
diff --git a/svl/include/svl/Basics.h b/svl/include/svl/Basics.h
new file mode 100644
index 00000000..5fe21046
--- /dev/null
+++ b/svl/include/svl/Basics.h
@@ -0,0 +1,162 @@
+/*
+    File:           Basics.h
+
+    Function:       Basic definitions for all files. Contains type
+                    definitions, assertion and debugging facilities, and
+                    miscellaneous useful template functions.
+
+                    This is a cut-down version for SVL.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+    Notes:          This header is affected by the following defines:
+
+                    VL_CHECKING     - Include code for assertions,
+                                      range errors and warnings.
+                    VL_FLOAT        - Use floats for real numbers. (Doubles
+                                      are the default.)
+                    VL_NO_BOOL      - There is no bool type.
+                    VL_NO_TF        - true and false are not predefined.
+*/
+
+#ifndef __Basics__
+#define __Basics__
+
+#include "SVLConfig.h"
+#include <iostream>
+#include <cmath>
+
+
+// --- Basic types -------------------------------------------------------------
+
+typedef void            Void;
+typedef float           Float;
+typedef double          Double;
+typedef char            Char;
+typedef int             Short;
+typedef int             Int;
+typedef long            Long;
+typedef unsigned char   Byte;
+typedef unsigned int    UInt;
+
+#ifndef VL_FLOAT
+typedef Double          Real;
+#else
+typedef Float           Real;
+#endif
+
+#define SELF (*this)    // A syntactic convenience.
+
+
+// --- Boolean type ------------------------------------------------------------
+
+// X11 #defines 'Bool' -- typical.
+
+#ifdef Bool
+#undef Bool
+#endif
+
+#ifndef VL_NO_BOOL
+// if the compiler implements the bool type...
+typedef bool Bool;
+#else
+// if not, make up our own.
+class Bool
+{
+public:
+
+    Bool() : val(0) {};
+    Bool(Int b) : val(b) {};
+
+    operator Int() { return val; };
+
+private:
+    Int val;
+};
+#ifdef VL_NO_TF
+enum {false, true};
+#endif
+#endif
+
+
+// --- Assertions and Range checking -------------------------------------------
+
+#define _svlError(e)               _Assert(false, e, __FILE__, __LINE__)
+#define _svlWarning(w)             _Expect(false, w, __FILE__, __LINE__)
+
+#if defined(VL_CHECKING)
+#define Assert(b, e)            _Assert(b, e, __FILE__, __LINE__)
+    // Assert that b is true. e is an error message to be printed if b
+    // is false.
+#define Expect(b, w)            _Expect(b, w, __FILE__, __LINE__)
+    // Prints warning w if b is false
+#define CheckRange(i, l, u, r)  _CheckRange(i, l, u, r, __FILE__, __LINE__)
+    // Checks whether i is in the range [lowerBound, upperBound).
+#else
+#define Assert(b, e)
+#define Expect(b, w)
+#define CheckRange(a, l, u, r)
+#endif
+
+Void _Assert(Int condition, const Char *errorMessage, const Char *file, Int line);
+Void _Expect(Int condition, const Char *warningMessage, const Char *file, Int line);
+Void _CheckRange(Int i, Int lowerBound, Int upperBound, const Char *rangeMessage,
+        const Char *file, Int line);
+
+
+// --- Inlines -----------------------------------------------------------------
+
+template<class Value>
+    inline Value Min(Value x, Value y)
+    {
+        if (x <= y)
+            return(x);
+        else
+            return(y);
+    };
+
+template<class Value>
+    inline Value Max(Value x, Value y)
+    {
+        if (x >= y)
+            return(x);
+        else
+            return(y);
+    };
+
+template<class Value>
+    inline Void Swap(Value &x, Value &y)
+    {
+        Value t;
+
+        t = x;
+        x = y;
+        y = t;
+    };
+
+template<class Value>
+    inline Value Mix(Value x, Value y, Real s)
+    {
+        return(x + (y - x) * s);
+    };
+
+template<class Value>
+    inline Value Clip(Value x, Value min, Value max)
+    {
+        if (x < min)
+            return(min);
+        else if (x > max)
+            return(max);
+        else
+            return(x);
+    };
+
+template<class Value>
+    inline Value sqr(Value x)
+    {
+        return(x * x);
+    };
+
+#endif
diff --git a/svl/include/svl/Constants.h b/svl/include/svl/Constants.h
new file mode 100644
index 00000000..0261dd35
--- /dev/null
+++ b/svl/include/svl/Constants.h
@@ -0,0 +1,43 @@
+/*
+    File:       Constants.h
+
+    Function:   Contains various constants for VL.
+
+    Author:     Andrew Willmott
+
+    Copyright:  (c) 1999-2001, Andrew Willmott
+*/
+
+#ifndef __VLConstants__
+#define __VLConstants__
+
+#include <cmath>
+
+
+// --- Mathematical constants -------------------------------------------------
+
+
+#ifdef M_PI
+const Real          vl_pi = M_PI;
+const Real          vl_halfPi = M_PI_2;
+#elif defined(_PI)
+const Real          vl_pi = _PI;
+const Real          vl_halfPi = vl_pi / 2.0;
+#else
+const Real          vl_pi = 3.14159265358979323846;
+const Real          vl_halfPi = vl_pi / 2.0;
+#endif
+
+#ifdef HUGE_VAL
+const Double        vl_inf = HUGE_VAL;
+#endif
+
+enum    ZeroOrOne   { vl_zero = 0, vl_0 = 0, vl_one = 1, vl_I = 1, vl_1 = 1 };
+enum    Block       { vl_Z = 0, vl_B = 1, vl_block = 1 };
+enum    Axis        { vl_x, vl_y, vl_z, vl_w };
+typedef Axis        vl_axis;
+
+const UInt          VL_REF_FLAG = UInt(1) << (sizeof(UInt) * 8 - 1);
+const UInt          VL_REF_MASK = (~VL_REF_FLAG);
+
+#endif
diff --git a/svl/include/svl/Mat.h b/svl/include/svl/Mat.h
new file mode 100644
index 00000000..682cdd3e
--- /dev/null
+++ b/svl/include/svl/Mat.h
@@ -0,0 +1,213 @@
+/*
+    File:           Mat.h
+
+    Function:       Defines a generic resizeable matrix.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+ */
+
+#ifndef __Mat__
+#define __Mat__
+
+#include "svl/Vec.h"
+
+class Mat2;
+class Mat3;
+class Mat4;
+
+
+// --- Mat Class --------------------------------------------------------------
+
+class Mat
+{
+public:
+
+    // Constructors
+
+                Mat();                          // Null matrix
+                Mat(Int rows, Int cols);        // Uninitialised matrix
+                Mat(Int rows, Int cols, Double elt0 ...);   // Mat(2, 2, 1.0, 2.0, 3.0, 4.0)
+                Mat(Int nrows, Int ncols, Real *ndata);     // Create reference matrix
+                Mat(const Mat &m);              // Copy constructor
+                Mat(const Mat2 &m);             // reference to a Mat2
+                Mat(const Mat3 &m);             // reference to a Mat3
+                Mat(const Mat4 &m);             // reference to a Mat4
+                Mat(Int rows, Int cols, ZeroOrOne k); // I * k
+                Mat(Int rows, Int cols, Block k); // block matrix (m[i][j] = k)
+
+                ~Mat();
+
+    // Accessor methods
+
+    Int         Rows() const { return(rows & VL_REF_MASK); };
+    Int         Cols() const { return(cols); };
+
+    Vec         operator [] (Int i);            // Indexing by row
+    Vec         operator [] (Int i) const;      // Indexing by row
+
+    Real        &Elt(Int i, Int j);             // Indexing by elt
+    Real        Elt(Int i, Int j) const;
+
+    Void        SetSize(Int nrows, Int ncols);
+    Void        SetSize(const Mat &m);
+    Bool        IsSquare() const
+                { return((rows & VL_REF_MASK) == cols); };
+
+    Real        *Ref() const;                   // Return pointer to data
+
+    // Assignment operators
+
+    Mat         &operator =  (const Mat &m);    // Assignment of a matrix
+    Mat         &operator =  (ZeroOrOne k);     // Set to k * I...
+    Mat         &operator =  (Block k);         // Set to a block matrix...
+    Mat         &operator =  (const Mat2 &m);
+    Mat         &operator =  (const Mat3 &m);
+    Mat         &operator =  (const Mat4 &m);
+
+    // In-Place Operators
+
+    Mat         &operator += (const Mat &m);
+    Mat         &operator -= (const Mat &m);
+    Mat         &operator *= (const Mat &m);
+    Mat         &operator *= (Real s);
+    Mat         &operator /= (Real s);
+
+    //  Matrix initialisers
+
+    Void        MakeZero();
+    Void        MakeDiag(Real k);
+    Void        MakeDiag();
+    Void        MakeBlock(Real k);
+    Void        MakeBlock();
+
+    Mat         &Clamp(Real fuzz);
+    Mat         &Clamp();
+
+    // Private...
+
+protected:
+
+    Real        *data;
+    UInt        rows;
+    UInt        cols;
+
+    Bool        IsRef() { return((rows & VL_REF_FLAG) != 0); };
+};
+
+
+// --- Mat Comparison Operators -----------------------------------------------
+
+Bool            operator == (const Mat &m, const Mat &n);
+Bool            operator != (const Mat &m, const Mat &n);
+
+
+// --- Mat Arithmetic Operators -----------------------------------------------
+
+Mat             operator + (const Mat &m, const Mat &n);
+Mat             operator - (const Mat &m, const Mat &n);
+Mat             operator - (const Mat &m);
+Mat             operator * (const Mat &m, const Mat &n);
+Mat             operator * (const Mat &m, Real s);
+inline Mat      operator * (Real s, const Mat &m);
+Mat             operator / (const Mat &m, Real s);
+
+Vec             operator * (const Mat &m, const Vec &v);
+Vec             operator * (const Vec &v, const Mat &m);
+
+Mat             trans(const Mat &m);                // Transpose
+Real            trace(const Mat &m);                // Trace
+Mat             inv(const Mat &m, Real *determinant = 0, Real pEps = 1e-20);
+                                                    // Inverse
+Mat             oprod(const Vec &a, const Vec &b);  // Outer product
+
+Mat             clamped(const Mat &m, Real fuzz);
+Mat             clamped(const Mat &m);
+
+
+// --- Mat Input & Output -----------------------------------------------------
+
+std::ostream         &operator << (std::ostream &s, const Mat &m);
+std::istream         &operator >> (std::istream &s, Mat &m);
+
+
+// --- Mat Inlines ------------------------------------------------------------
+
+inline Mat::Mat() : data(0), rows(0), cols(0)
+{
+}
+
+inline Mat::Mat(Int rows, Int cols) : rows(rows), cols(cols)
+{
+    Assert(rows > 0 && cols > 0, "(Mat) illegal matrix size");
+
+    data = new Real[rows * cols];
+}
+
+inline Mat::Mat(Int nrows, Int ncols, Real *ndata) :
+    data(ndata), rows(nrows | VL_REF_FLAG), cols(ncols)
+{
+}
+
+inline Vec Mat::operator [] (Int i)
+{
+    CheckRange(i, 0, Rows(), "(Mat::[i]) i index out of range");
+
+    return(Vec(cols, data + i * cols));
+}
+
+inline Vec Mat::operator [] (Int i) const
+{
+    CheckRange(i, 0, Rows(), "(Mat::[i]) i index out of range");
+
+    return(Vec(cols, data + i * cols));
+}
+
+inline Real &Mat::Elt(Int i, Int j)
+{
+    CheckRange(i, 0, Rows(), "(Mat::e(i,j)) i index out of range");
+    CheckRange(j, 0, Cols(), "(Mat::e(i,j)) j index out of range");
+
+    return(data[i * cols + j]);
+}
+
+inline Real Mat::Elt(Int i, Int j) const
+{
+    CheckRange(i, 0, Rows(), "(Mat::e(i,j)) i index out of range");
+    CheckRange(j, 0, Cols(), "(Mat::e(i,j)) j index out of range");
+
+    return(data[i * cols + j]);
+}
+
+inline Real *Mat::Ref() const
+{
+    return(data);
+}
+
+inline Mat operator * (Real s, const Mat &m)
+{
+    return(m * s);
+}
+
+inline Mat &Mat::operator = (ZeroOrOne k)
+{
+    MakeDiag(k);
+
+    return(SELF);
+}
+
+inline Mat &Mat::operator = (Block k)
+{
+    MakeBlock((ZeroOrOne) k);
+
+    return(SELF);
+}
+
+inline Mat::~Mat()
+{
+    if (!IsRef())
+        delete[] data;
+}
+
+#endif
diff --git a/svl/include/svl/Mat2.h b/svl/include/svl/Mat2.h
new file mode 100644
index 00000000..3a6ed6e1
--- /dev/null
+++ b/svl/include/svl/Mat2.h
@@ -0,0 +1,379 @@
+/*
+    File:           Mat2.h
+
+    Function:       Defines a 2 x 2 matrix.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+ */
+
+#ifndef __Mat2__
+#define __Mat2__
+
+#include "svl/Vec2.h"
+
+
+// --- Mat2 Class -------------------------------------------------------------
+
+class Mat2
+{
+public:
+
+    // Constructors
+
+                Mat2();
+                Mat2(Real a, Real b, Real c, Real d);   // Create from rows
+                Mat2(const Mat2 &m);                    // Copy constructor
+                Mat2(ZeroOrOne k);
+                Mat2(Block k);
+
+    // Accessor functions
+
+    Int         Rows() const { return(2); };
+    Int         Cols() const { return(2); };
+
+    Vec2        &operator [] (Int i);
+    const Vec2  &operator [] (Int i) const;
+
+    Real        *Ref() const;               // Return pointer to data
+
+    // Assignment operators
+
+    Mat2        &operator =  (const Mat2 &m);
+    Mat2        &operator =  (ZeroOrOne k);
+    Mat2        &operator =  (Block k);
+    Mat2        &operator += (const Mat2 &m);
+    Mat2        &operator -= (const Mat2 &m);
+    Mat2        &operator *= (const Mat2 &m);
+    Mat2        &operator *= (Real s);
+    Mat2        &operator /= (Real s);
+
+    // Comparison operators
+
+    Bool        operator == (const Mat2 &m) const;  // M == N?
+    Bool        operator != (const Mat2 &m) const;  // M != N?
+
+    // Arithmetic operators
+
+    Mat2        operator + (const Mat2 &m) const;   // M + N
+    Mat2        operator - (const Mat2 &m) const;   // M - N
+    Mat2        operator - () const;                // -M
+    Mat2        operator * (const Mat2 &m) const;   // M * N
+    Mat2        operator * (Real s) const;          // M * s
+    Mat2        operator / (Real s) const;          // M / s
+
+    // Initialisers
+
+    Void        MakeZero();                         // Zero matrix
+    Void        MakeDiag(Real k = vl_one);          // I
+    Void        MakeBlock(Real k = vl_one);         // all elts=k
+
+    // Vector Transformations
+
+    Mat2&       MakeRot(Real theta);
+    Mat2&       MakeScale(const Vec2 &s);
+
+    // Private...
+
+protected:
+
+    Vec2        row[2];     // Rows of the matrix
+};
+
+
+// --- Matrix operators -------------------------------------------------------
+
+inline Vec2     &operator *= (Vec2 &v, const Mat2 &m);      // v *= m
+inline Vec2     operator * (const Mat2 &m, const Vec2 &v);  // m * v
+inline Vec2     operator * (const Vec2 &v, const Mat2 &m);  // v * m
+inline Mat2     operator * (Real s, const Mat2 &m);         // s * m
+
+inline Mat2     trans(const Mat2 &m);               // Transpose
+inline Real     trace(const Mat2 &m);               // Trace
+inline Mat2     adj(const Mat2 &m);                 // Adjoint
+Real            det(const Mat2 &m);                 // Determinant
+Mat2            inv(const Mat2 &m);                 // Inverse
+Mat2            oprod(const Vec2 &a, const Vec2 &b);
+                                                    // Outer product
+
+// The xform functions help avoid dependence on whether row or column
+// vectors are used to represent points and vectors.
+inline Vec2     xform(const Mat2 &m, const Vec2 &v); // Transform of v by m
+inline Mat2     xform(const Mat2 &m, const Mat2 &n); // xform v -> m(n(v))
+
+std::ostream         &operator << (std::ostream &s, const Mat2 &m);
+std::istream         &operator >> (std::istream &s, Mat2 &m);
+
+
+// --- Inlines ----------------------------------------------------------------
+
+inline Vec2 &Mat2::operator [] (Int i)
+{
+    CheckRange(i, 0, 2, "(Mat2::[i]) index out of range");
+    return(row[i]);
+}
+
+inline const Vec2 &Mat2::operator [] (Int i) const
+{
+    CheckRange(i, 0, 2, "(Mat2::[i]) index out of range");
+    return(row[i]);
+}
+
+inline Real *Mat2::Ref() const
+{
+    return((Real*) row);
+}
+
+inline Mat2::Mat2()
+{
+}
+
+inline Mat2::Mat2(Real a, Real b, Real c, Real d)
+{
+    row[0][0] = a;  row[0][1] = b;
+    row[1][0] = c;  row[1][1] = d;
+}
+
+inline Mat2::Mat2(const Mat2 &m)
+{
+    row[0] = m[0];
+    row[1] = m[1];
+}
+
+
+inline Void Mat2::MakeZero()
+{
+    row[0][0] = vl_zero; row[0][1] = vl_zero;
+    row[1][0] = vl_zero; row[1][1] = vl_zero;
+}
+
+inline Void Mat2::MakeDiag(Real k)
+{
+    row[0][0] = k;          row[0][1] = vl_zero;
+    row[1][0] = vl_zero;    row[1][1] = k;
+}
+
+inline Void Mat2::MakeBlock(Real k)
+{
+    row[0][0] = k; row[0][1] = k;
+    row[1][0] = k; row[1][1] = k;
+}
+
+inline Mat2::Mat2(ZeroOrOne k)
+{
+    MakeDiag(k);
+}
+
+inline Mat2::Mat2(Block k)
+{
+    MakeBlock((ZeroOrOne) k);
+}
+
+inline Mat2 &Mat2::operator = (ZeroOrOne k)
+{
+    MakeDiag(k);
+
+    return(SELF);
+}
+
+inline Mat2 &Mat2::operator = (Block k)
+{
+    MakeBlock((ZeroOrOne) k);
+
+    return(SELF);
+}
+
+inline Mat2 &Mat2::operator = (const Mat2 &m)
+{
+    row[0] = m[0];
+    row[1] = m[1];
+
+    return(SELF);
+}
+
+inline Mat2 &Mat2::operator += (const Mat2 &m)
+{
+    row[0] += m[0];
+    row[1] += m[1];
+
+    return(SELF);
+}
+
+inline Mat2 &Mat2::operator -= (const Mat2 &m)
+{
+    row[0] -= m[0];
+    row[1] -= m[1];
+
+    return(SELF);
+}
+
+inline Mat2 &Mat2::operator *= (const Mat2 &m)
+{
+    SELF = SELF * m;
+
+    return(SELF);
+}
+
+inline Mat2 &Mat2::operator *= (Real s)
+{
+    row[0] *= s;
+    row[1] *= s;
+
+    return(SELF);
+}
+
+inline Mat2 &Mat2::operator /= (Real s)
+{
+    row[0] /= s;
+    row[1] /= s;
+
+    return(SELF);
+}
+
+
+inline Mat2 Mat2::operator + (const Mat2 &m) const
+{
+    Mat2 result;
+
+    result[0] = row[0] + m[0];
+    result[1] = row[1] + m[1];
+
+    return(result);
+}
+
+inline Mat2 Mat2::operator - (const Mat2 &m) const
+{
+    Mat2 result;
+
+    result[0] = row[0] - m[0];
+    result[1] = row[1] - m[1];
+
+    return(result);
+}
+
+inline Mat2 Mat2::operator - () const
+{
+    Mat2 result;
+
+    result[0] = -row[0];
+    result[1] = -row[1];
+
+    return(result);
+}
+
+inline Mat2 Mat2::operator * (const Mat2 &m) const
+{
+#define N(x,y) row[x][y]
+#define M(x,y) m.row[x][y]
+#define R(x,y) result[x][y]
+
+    Mat2 result;
+
+    R(0,0) = N(0,0) * M(0,0) + N(0,1) * M(1,0);
+    R(0,1) = N(0,0) * M(0,1) + N(0,1) * M(1,1);
+    R(1,0) = N(1,0) * M(0,0) + N(1,1) * M(1,0);
+    R(1,1) = N(1,0) * M(0,1) + N(1,1) * M(1,1);
+
+    return(result);
+
+#undef N
+#undef M
+#undef R
+}
+
+inline Mat2 Mat2::operator * (Real s) const
+{
+    Mat2 result;
+
+    result[0] = row[0] * s;
+    result[1] = row[1] * s;
+
+    return(result);
+}
+
+inline Mat2 Mat2::operator / (Real s) const
+{
+    Mat2 result;
+
+    result[0] = row[0] / s;
+    result[1] = row[1] / s;
+
+    return(result);
+}
+
+inline Mat2  operator *  (Real s, const Mat2 &m)
+{
+    return(m * s);
+}
+
+inline Vec2 operator * (const Mat2 &m, const Vec2 &v)
+{
+    Vec2 result;
+
+    result[0] = m[0][0] * v[0] + m[0][1] * v[1];
+    result[1] = m[1][0] * v[0] + m[1][1] * v[1];
+
+    return(result);
+}
+
+inline Vec2 operator * (const Vec2 &v, const Mat2 &m)
+{
+    Vec2 result;
+
+    result[0] = v[0] * m[0][0] + v[1] * m[1][0];
+    result[1] = v[0] * m[0][1] + v[1] * m[1][1];
+
+    return(result);
+}
+
+inline Vec2 &operator *= (Vec2 &v, const Mat2 &m)
+{
+    Real t;
+
+    t    = v[0] * m[0][0] + v[1] * m[1][0];
+    v[1] = v[0] * m[0][1] + v[1] * m[1][1];
+    v[0] = t;
+
+    return(v);
+}
+
+
+inline Mat2 trans(const Mat2 &m)
+{
+    Mat2 result;
+
+    result[0][0] = m[0][0]; result[0][1] = m[1][0];
+    result[1][0] = m[0][1]; result[1][1] = m[1][1];
+
+    return(result);
+}
+
+inline Real trace(const Mat2 &m)
+{
+    return(m[0][0] + m[1][1]);
+}
+
+inline Mat2 adj(const Mat2 &m)
+{
+    Mat2 result;
+
+    result[0] =  cross(m[1]);
+    result[1] = -cross(m[0]);
+
+    return(result);
+}
+
+#ifdef VL_ROW_ORIENT
+inline Vec2 xform(const Mat2 &m, const Vec2 &v)
+{ return(v * m); }
+inline Mat2 xform(const Mat2 &m, const Mat2 &n)
+{ return(n * m); }
+#else
+inline Vec2 xform(const Mat2 &m, const Vec2 &v)
+{ return(m * v); }
+inline Mat2 xform(const Mat2 &m, const Mat2 &n)
+{ return(m * n); }
+#endif
+
+#endif
diff --git a/svl/include/svl/Mat3.h b/svl/include/svl/Mat3.h
new file mode 100644
index 00000000..c7392fd0
--- /dev/null
+++ b/svl/include/svl/Mat3.h
@@ -0,0 +1,224 @@
+/*
+    File:           Mat3.h
+
+    Function:       Defines a 3 x 3 matrix.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+*/
+
+#ifndef __Mat3__
+#define __Mat3__
+
+#include "svl/Vec3.h"
+
+
+// --- Mat3 Class -------------------------------------------------------------
+
+
+class Vec4;
+
+class Mat3
+{
+public:
+
+    // Constructors
+
+                Mat3();
+                Mat3(Real a, Real b, Real c,
+                     Real d, Real e, Real f,
+                     Real g, Real h, Real i);
+                Mat3(const Mat3 &m);
+                Mat3(ZeroOrOne k);
+                Mat3(Block k);
+
+    // Accessor functions
+
+    Int         Rows() const { return(3); };
+    Int         Cols() const { return(3); };
+
+    Vec3        &operator [] (Int i);
+    const Vec3  &operator [] (Int i) const;
+
+    Real        *Ref() const;               // Return pointer to data
+
+    // Assignment operators
+
+    Mat3        &operator =  (const Mat3 &m);
+    Mat3        &operator =  (ZeroOrOne k);
+    Mat3        &operator =  (Block k);
+    Mat3        &operator += (const Mat3 &m);
+    Mat3        &operator -= (const Mat3 &m);
+    Mat3        &operator *= (const Mat3 &m);
+    Mat3        &operator *= (Real s);
+    Mat3        &operator /= (Real s);
+
+    // Comparison operators
+
+    Bool        operator == (const Mat3 &m) const;  // M == N?
+    Bool        operator != (const Mat3 &m) const;  // M != N?
+
+    // Arithmetic operators
+
+    Mat3        operator + (const Mat3 &m) const;   // M + N
+    Mat3        operator - (const Mat3 &m) const;   // M - N
+    Mat3        operator - () const;                // -M
+    Mat3        operator * (const Mat3 &m) const;   // M * N
+    Mat3        operator * (Real s) const;          // M * s
+    Mat3        operator / (Real s) const;          // M / s
+
+    // Initialisers
+
+    Void        MakeZero();                 // Zero matrix
+    Void        MakeDiag(Real k = vl_one);  // I
+    Void        MakeBlock(Real k = vl_one); // all elts = k
+
+    // Vector Transforms
+
+    Mat3&       MakeRot(const Vec3 &axis, Real theta);
+    Mat3&       MakeRot(const Vec4 &q);     // Rotate by quaternion
+    Mat3&       MakeScale(const Vec3 &s);
+
+    // Homogeneous Transforms
+
+    Mat3&       MakeHRot(Real theta);       // Rotate by theta rads
+    Mat3&       MakeHScale(const Vec2 &s);  // Scale by s
+    Mat3&       MakeHTrans(const Vec2 &t);  // Translation by t
+
+    // Private...
+
+protected:
+
+    Vec3        row[3];
+};
+
+
+// --- Matrix operators -------------------------------------------------------
+
+inline Vec3     &operator *= (Vec3 &v, const Mat3 &m);      // v *= m
+inline Vec3     operator * (const Mat3 &m, const Vec3 &v);  // m * v
+inline Vec3     operator * (const Vec3 &v, const Mat3 &m);  // v * m
+inline Mat3     operator * (const Real s, const Mat3 &m);   // s * m
+
+Mat3            trans(const Mat3 &m);                   // Transpose
+Real            trace(const Mat3 &m);                   // Trace
+Mat3            adj(const Mat3 &m);                     // Adjoint
+Real            det(const Mat3 &m);                     // Determinant
+Mat3            inv(const Mat3 &m);                     // Inverse
+Mat3            oprod(const Vec3 &a, const Vec3 &b);    // Outer product
+
+// The xform functions help avoid dependence on whether row or column
+// vectors are used to represent points and vectors.
+inline Vec3     xform(const Mat3 &m, const Vec3 &v); // Transform of v by m
+inline Vec2     xform(const Mat3 &m, const Vec2 &v); // Hom. xform of v by m
+inline Mat3     xform(const Mat3 &m, const Mat3 &n); // Xform v -> m(n(v))
+
+std::ostream         &operator << (std::ostream &s, const Mat3 &m);
+std::istream         &operator >> (std::istream &s, Mat3 &m);
+
+
+// --- Inlines ----------------------------------------------------------------
+
+inline Mat3::Mat3()
+{
+}
+
+inline Vec3 &Mat3::operator [] (Int i)
+{
+    CheckRange(i, 0, 3, "(Mat3::[i]) index out of range");
+    return(row[i]);
+}
+
+inline const Vec3 &Mat3::operator [] (Int i) const
+{
+    CheckRange(i, 0, 3, "(Mat3::[i]) index out of range");
+    return(row[i]);
+}
+
+inline Real *Mat3::Ref() const
+{
+    return((Real *) row);
+}
+
+inline Mat3::Mat3(ZeroOrOne k)
+{
+    MakeDiag(k);
+}
+
+inline Mat3::Mat3(Block k)
+{
+    MakeBlock((ZeroOrOne) k);
+}
+
+inline Mat3 &Mat3::operator = (ZeroOrOne k)
+{
+    MakeDiag(k);
+
+    return(SELF);
+}
+
+inline Mat3 &Mat3::operator = (Block k)
+{
+    MakeBlock((ZeroOrOne) k);
+
+    return(SELF);
+}
+
+inline Mat3 operator *  (const Real s, const Mat3 &m)
+{
+    return(m * s);
+}
+
+inline Vec3 operator * (const Mat3 &m, const Vec3 &v)
+{
+    Vec3 result;
+
+    result[0] = v[0] * m[0][0] + v[1] * m[0][1] + v[2] * m[0][2];
+    result[1] = v[0] * m[1][0] + v[1] * m[1][1] + v[2] * m[1][2];
+    result[2] = v[0] * m[2][0] + v[1] * m[2][1] + v[2] * m[2][2];
+
+    return(result);
+}
+
+inline Vec3 operator * (const Vec3 &v, const Mat3 &m)
+{
+    Vec3 result;
+
+    result[0] = v[0] * m[0][0] + v[1] * m[1][0] + v[2] * m[2][0];
+    result[1] = v[0] * m[0][1] + v[1] * m[1][1] + v[2] * m[2][1];
+    result[2] = v[0] * m[0][2] + v[1] * m[1][2] + v[2] * m[2][2];
+
+    return(result);
+}
+
+inline Vec3 &operator *= (Vec3 &v, const Mat3 &m)
+{
+    Real t0, t1;
+
+    t0   = v[0] * m[0][0] + v[1] * m[1][0] + v[2] * m[2][0];
+    t1   = v[0] * m[0][1] + v[1] * m[1][1] + v[2] * m[2][1];
+    v[2] = v[0] * m[0][2] + v[1] * m[1][2] + v[2] * m[2][2];
+    v[0] = t0;
+    v[1] = t1;
+
+    return(v);
+}
+
+#ifdef VL_ROW_ORIENT
+inline Vec2 xform(const Mat3 &m, const Vec2 &v)
+{ return(proj(Vec3(v, 1.0) * m)); }
+inline Vec3 xform(const Mat3 &m, const Vec3 &v)
+{ return(v * m); }
+inline Mat3 xform(const Mat3 &m, const Mat3 &n)
+{ return(n * m); }
+#else
+inline Vec2 xform(const Mat3 &m, const Vec2 &v)
+{ return(proj(m * Vec3(v, 1.0))); }
+inline Vec3 xform(const Mat3 &m, const Vec3 &v)
+{ return(m * v); }
+inline Mat3 xform(const Mat3 &m, const Mat3 &n)
+{ return(m * n); }
+#endif
+
+#endif
diff --git a/svl/include/svl/Mat4.h b/svl/include/svl/Mat4.h
new file mode 100644
index 00000000..9d18ce4b
--- /dev/null
+++ b/svl/include/svl/Mat4.h
@@ -0,0 +1,189 @@
+/*
+    File:           Mat4.h
+
+    Function:       Defines a 4 x 4 matrix.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+ */
+
+#ifndef __Mat4__
+#define __Mat4__
+
+#include "svl/Vec3.h"
+#include "svl/Vec4.h"
+
+
+// --- Mat4 Class -------------------------------------------------------------
+
+class Mat4
+{
+public:
+
+    // Constructors
+
+                Mat4();
+                Mat4(Real a, Real b, Real c, Real d,
+                     Real e, Real f, Real g, Real h,
+                     Real i, Real j, Real k, Real l,
+                     Real m, Real n, Real o, Real p);
+                Mat4(const Mat4 &m);
+                Mat4(ZeroOrOne k);
+                Mat4(Block k);
+
+    // Accessor functions
+
+    Int          Rows() const { return(4); };
+    Int          Cols() const { return(4); };
+
+    Vec4        &operator [] (Int i);
+    const Vec4  &operator [] (Int i) const;
+
+    Real        *Ref() const;
+
+    // Assignment operators
+
+    Mat4        &operator =  (const Mat4 &m);
+    Mat4        &operator =  (ZeroOrOne k);
+    Mat4        &operator =  (Block k);
+    Mat4        &operator += (const Mat4 &m);
+    Mat4        &operator -= (const Mat4 &m);
+    Mat4        &operator *= (const Mat4 &m);
+    Mat4        &operator *= (Real s);
+    Mat4        &operator /= (Real s);
+
+    // Comparison operators
+
+    Bool        operator == (const Mat4 &m) const;  // M == N?
+    Bool        operator != (const Mat4 &m) const;  // M != N?
+
+    // Arithmetic operators
+
+    Mat4        operator + (const Mat4 &m) const;   // M + N
+    Mat4        operator - (const Mat4 &m) const;   // M - N
+    Mat4        operator - () const;                // -M
+    Mat4        operator * (const Mat4 &m) const;   // M * N
+    Mat4        operator * (Real s) const;          // M * s
+    Mat4        operator / (Real s) const;          // M / s
+
+    // Initialisers
+
+    Void        MakeZero();                         // Zero matrix
+    Void        MakeDiag(Real k = vl_one);          // I
+    Void        MakeBlock(Real k = vl_one);         // all elts = k
+
+    // Homogeneous Transforms
+
+    Mat4&       MakeHRot(const Vec3 &axis, Real theta);
+                                    // Rotate by theta radians about axis
+    Mat4&       MakeHRot(const Vec4 &q);    // Rotate by quaternion
+    Mat4&       MakeHScale(const Vec3 &s);  // Scale by components of s
+
+    Mat4&       MakeHTrans(const Vec3 &t);  // Translation by t
+
+    Mat4&       Transpose();                // transpose in place
+    Mat4&       AddShift(const Vec3 &t);    // Concatenate shift
+
+    // Private...
+
+protected:
+
+    Vec4        row[4];
+};
+
+
+// --- Matrix operators -------------------------------------------------------
+
+Vec4            operator * (const Mat4 &m, const Vec4 &v);  // m * v
+Vec4            operator * (const Vec4 &v, const Mat4 &m);  // v * m
+Vec4            &operator *= (Vec4 &a, const Mat4 &m);      // v *= m
+inline Mat4     operator * (Real s, const Mat4 &m);         // s * m
+
+Mat4            trans(const Mat4 &m);               // Transpose
+Real            trace(const Mat4 &m);               // Trace
+Mat4            adj(const Mat4 &m);                 // Adjoint
+Real            det(const Mat4 &m);                 // Determinant
+Mat4            inv(const Mat4 &m);                 // Inverse
+Mat4            oprod(const Vec4 &a, const Vec4 &b);
+                                                    // Outer product
+
+// The xform functions help avoid dependence on whether row or column
+// vectors are used to represent points and vectors.
+inline Vec4     xform(const Mat4 &m, const Vec4 &v); // Transform of v by m
+inline Vec3     xform(const Mat4 &m, const Vec3 &v); // Hom. xform of v by m
+inline Mat4     xform(const Mat4 &m, const Mat4 &n); // Xform v -> m(n(v))
+
+std::ostream         &operator << (std::ostream &s, const Mat4 &m);
+std::istream         &operator >> (std::istream &s, Mat4 &m);
+
+
+// --- Inlines ----------------------------------------------------------------
+
+inline Mat4::Mat4()
+{
+}
+
+inline Vec4 &Mat4::operator [] (Int i)
+{
+    CheckRange(i, 0, 4, "(Mat4::[i]) index out of range");
+    return(row[i]);
+}
+
+inline const Vec4 &Mat4::operator [] (Int i) const
+{
+    CheckRange(i, 0, 4, "(Mat4::[i]) index out of range");
+    return(row[i]);
+}
+
+inline Real *Mat4::Ref() const
+{
+    return((Real *) row);
+}
+
+inline Mat4::Mat4(ZeroOrOne k)
+{
+    MakeDiag(k);
+}
+
+inline Mat4::Mat4(Block k)
+{
+    MakeBlock((ZeroOrOne) k);
+}
+
+inline Mat4 &Mat4::operator = (ZeroOrOne k)
+{
+    MakeDiag(k);
+
+    return(SELF);
+}
+
+inline Mat4 &Mat4::operator = (Block k)
+{
+    MakeBlock((ZeroOrOne) k);
+
+    return(SELF);
+}
+
+inline Mat4 operator * (Real s, const Mat4 &m)
+{
+    return(m * s);
+}
+
+#ifdef VL_ROW_ORIENT
+inline Vec3 xform(const Mat4 &m, const Vec3 &v)
+{ return(proj(Vec4(v, 1.0) * m)); }
+inline Vec4 xform(const Mat4 &m, const Vec4 &v)
+{ return(v * m); }
+inline Mat4 xform(const Mat4 &m, const Mat4 &n)
+{ return(n * m); }
+#else
+inline Vec3 xform(const Mat4 &m, const Vec3 &v)
+{ return(proj(m * Vec4(v, 1.0))); }
+inline Vec4 xform(const Mat4 &m, const Vec4 &v)
+{ return(m * v); }
+inline Mat4 xform(const Mat4 &m, const Mat4 &n)
+{ return(m * n); }
+#endif
+
+#endif
diff --git a/svl/include/svl/SVL.h b/svl/include/svl/SVL.h
new file mode 100644
index 00000000..0cd13783
--- /dev/null
+++ b/svl/include/svl/SVL.h
@@ -0,0 +1,43 @@
+/*
+    File:           SVL.h
+
+    Function:       Master header for a simple version of the VL library.
+                    The various classes are named Vec2, Mat3, Vec, etc.
+                    Link with -lsvl, or define the symbol VL_DEBUG and
+                    link with -lsvl.dbg for the debugging version.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+ */
+
+
+#ifndef __SVL__
+#define __SVL__
+
+#define SVL_VERSION "1.5"
+#define SVL_VER_NUM 10500
+
+#ifdef VL_DEBUG
+#define VL_CHECKING
+#endif
+
+#include <iostream>
+
+#include "svl/Basics.h"
+#include "svl/Constants.h"
+#include "svl/Utils.h"
+
+#include "svl/Vec2.h"
+#include "svl/Vec3.h"
+#include "svl/Vec4.h"
+#include "svl/Vec.h"
+
+#include "svl/Mat2.h"
+#include "svl/Mat3.h"
+#include "svl/Mat4.h"
+#include "svl/Mat.h"
+
+#include "svl/Transform.h"
+
+#endif
diff --git a/svl/include/svl/SVLgl.h b/svl/include/svl/SVLgl.h
new file mode 100644
index 00000000..7207768e
--- /dev/null
+++ b/svl/include/svl/SVLgl.h
@@ -0,0 +1,54 @@
+/*
+    File:       SVLgl.h
+
+    Purpose:    Provides some handy wrappers for using svl with
+                OpenGL.
+ */
+
+#ifndef __SVL_GL__
+#define __SVL_GL__
+
+#ifdef VL_FLOAT
+
+inline Void glVertex(const Vec2 &a)
+{ glVertex2fv(a.Ref()); }
+
+inline Void glVertex(const Vec3 &a)
+{ glVertex3fv(a.Ref()); }
+
+inline Void glVertex(const Vec4 &a)
+{ glVertex4fv(a.Ref()); }
+
+inline Void glColor(const Vec3 &a)
+{ glColor3fv(a.Ref()); }
+
+inline Void glColor(const Vec4 &a)
+{ glColor4fv(a.Ref()); }
+
+inline Void glNormal(const Vec3 &a)
+{ glNormal3fv(a.Ref()); }
+
+#else
+
+inline Void glVertex(const Vec2 &a)
+{ glVertex2dv(a.Ref()); }
+
+inline Void glVertex(const Vec3 &a)
+{ glVertex3dv(a.Ref()); }
+
+inline Void glVertex(const Vec4 &a)
+{ glVertex4dv(a.Ref()); }
+
+inline Void glColor(const Vec3 &a)
+{ glColor3dv(a.Ref()); }
+
+inline Void glColor(const Vec4 &a)
+{ glColor4dv(a.Ref()); }
+
+inline Void glNormal(const Vec3 &a)
+{ glNormal3dv(a.Ref()); }
+
+
+#endif
+
+#endif
diff --git a/svl/include/svl/Transform.h b/svl/include/svl/Transform.h
new file mode 100644
index 00000000..46ab4c8a
--- /dev/null
+++ b/svl/include/svl/Transform.h
@@ -0,0 +1,41 @@
+/*
+    File:           Transform.h
+
+    Function:       Provides transformation constructors.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+*/
+
+#ifndef __SVL_TRANSFORM__
+#define __SVL_TRANSFORM__
+
+inline Mat2 Rot2(Real theta)
+            { Mat2 result; result.MakeRot(theta); return(result); }
+inline Mat2 Scale2(const Vec2 &s)
+            { Mat2 result; result.MakeScale(s); return(result); }
+
+inline Mat3 Rot3(const Vec3 &axis, Real theta)
+            { Mat3 result; result.MakeRot(axis, theta); return(result); }
+inline Mat3 Rot3(const Vec4 &q)
+            { Mat3 result; result.MakeRot(q); return(result); }
+inline Mat3 Scale3(const Vec3 &s)
+            { Mat3 result; result.MakeScale(s); return(result); }
+inline Mat3 HRot3(Real theta)
+            { Mat3 result; result.MakeHRot(theta); return(result); }
+inline Mat3 HScale3(const Vec2 &s)
+            { Mat3 result; result.MakeHScale(s); return(result); }
+inline Mat3 HTrans3(const Vec2 &t)
+            { Mat3 result; result.MakeHTrans(t); return(result); }
+
+inline Mat4 HRot4(const Vec3 &axis, Real theta)
+            { Mat4 result; result.MakeHRot(axis, theta); return(result); }
+inline Mat4 HRot4(const Vec4 &q)
+            { Mat4 result; result.MakeHRot(q); return(result); }
+inline Mat4 HScale4(const Vec3 &s)
+            { Mat4 result; result.MakeHScale(s); return(result); }
+inline Mat4 HTrans4(const Vec3 &t)
+            { Mat4 result; result.MakeHTrans(t); return(result); }
+
+#endif
diff --git a/svl/include/svl/Utils.h b/svl/include/svl/Utils.h
new file mode 100644
index 00000000..88eaafdd
--- /dev/null
+++ b/svl/include/svl/Utils.h
@@ -0,0 +1,85 @@
+/*
+    File:           Utils.h
+
+    Function:       Various math definitions for VL
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+ */
+
+#ifndef __VL_MATH__
+#define __VL_MATH__
+
+#include <cstdlib>
+
+// --- Inlines ----------------------------------------------------------------
+
+// additions to arithmetic functions
+
+#ifdef VL_HAS_IEEEFP
+#include <ieeefp.h>
+#define vl_is_finite(X) finite(X)
+#elif defined (__GNUC__) && defined(__USE_MISC)
+#define vl_is_finite(X) finite(X)
+#else
+#define vl_is_finite(X) (1)
+#endif
+
+#ifdef VL_HAS_DRAND
+inline Double vl_rand()
+{ return(drand48()); }
+#else
+#ifndef RAND_MAX
+// we're on something totally sucky, like SunOS
+#define RAND_MAX (Double(1 << 30) * 4.0 - 1.0)
+#endif
+inline Double vl_rand()
+{ return(rand() / (RAND_MAX + 1.0)); }
+#endif
+
+#ifndef __CMATH__
+// GNU's complex.h defines its own abs(double)
+#ifdef VL_HAS_ABSF
+inline Float abs(Float x)
+{ return (fabsf(x)); }
+#endif
+inline Double abs(Double x)
+{ return (fabs(x)); }
+#endif
+#ifdef VL_HAS_ABSF
+inline Float len(Float x)
+{ return (fabsf(x)); }
+#endif
+inline Double len(Double x)
+{ return (fabs(x)); }
+
+inline Float sqrlen(Float r)
+{ return(sqr(r)); }
+inline Double sqrlen(Double r)
+{ return(sqr(r)); }
+
+inline Float mix(Float a, Float b, Float s)
+{ return((1.0f - s) * a + s * b); }
+inline Double mix(Double a, Double b, Double s)
+{ return((1.0 - s) * a + s * b); }
+
+inline Double sign(Double d)
+{
+    if (d < 0)
+        return(-1.0);
+    else
+        return(1.0);
+}
+
+// useful routines
+
+inline Bool IsPowerOfTwo(Int a)
+{ return((a & -a) == a); };
+
+inline Void SetReal(Float &a, Double b)
+{ a = Float(b); }
+inline Void SetReal(Double &a, Double b)
+{ a = b; }
+
+#endif
diff --git a/svl/include/svl/Vec.h b/svl/include/svl/Vec.h
new file mode 100644
index 00000000..04f03813
--- /dev/null
+++ b/svl/include/svl/Vec.h
@@ -0,0 +1,237 @@
+/*
+    File:           Vec.h
+
+    Function:       Defines a generic resizeable vector.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+ */
+
+#ifndef __Vec__
+#define __Vec__
+
+class Vec2;
+class Vec3;
+class Vec4;
+
+
+// --- Vec Class --------------------------------------------------------------
+
+class Vec
+{
+public:
+
+    // Constructors
+
+                Vec();                          // Null vector
+    explicit    Vec(Int n);                     // n-element vector
+                Vec(Int n, double elt0, ...);   // e.g. Vec(3, 1.1, 2.0, 3.4)
+                Vec(Int n, Real *data);         // Vector reference
+                Vec(const Vec &v);              // Copy constructor
+                Vec(const Vec2 &v);             // reference to a Vec2
+                Vec(const Vec3 &v);             // reference to a Vec3
+                Vec(const Vec4 &v);             // reference to a Vec4
+                Vec(Int n, ZeroOrOne);          // Zero or all-ones vector
+                Vec(Int n, Axis a);             // Unit vector
+               ~Vec();                          // Destructor
+
+    // Accessor functions
+
+    Int         Elts() const;
+
+    Real        &operator [] (Int i);
+    Real        operator [] (Int i) const;
+
+    Void        SetSize(Int n);                 // Resize the vector
+    Real        *Ref() const;                   // Return pointer to data
+
+    // Assignment operators
+
+    Vec         &operator =  (const Vec &v);    // v = a etc.
+    Vec         &operator =  (ZeroOrOne k);
+    Vec         &operator =  (Axis a);
+    Vec         &operator =  (const Vec2 &v);
+    Vec         &operator =  (const Vec3 &v);
+    Vec         &operator =  (const Vec4 &v);
+
+    // In-Place operators
+
+    Vec         &operator += (const Vec &v);
+    Vec         &operator -= (const Vec &v);
+    Vec         &operator *= (const Vec &v);
+    Vec         &operator *= (Real s);
+    Vec         &operator /= (const Vec &v);
+    Vec         &operator /= (Real s);
+
+    //  Vector initialisers
+
+    Vec         &MakeZero();
+    Vec         &MakeUnit(Int i, Real k = vl_one);
+    Vec         &MakeBlock(Real k = vl_one);
+
+    Vec         &Normalise();                   // Normalise vector
+    Vec         &Clamp(Real fuzz);
+    Vec         &Clamp();
+
+    Bool        IsRef() const { return((elts & VL_REF_FLAG) != 0); };
+
+    // Private...
+
+protected:
+
+    Real        *data;
+    UInt        elts;
+};
+
+
+// --- Vec Comparison Operators -----------------------------------------------
+
+Bool            operator == (const Vec &a, const Vec &b);
+Bool            operator != (const Vec &a, const Vec &b);
+
+
+// --- Vec Arithmetic Operators -----------------------------------------------
+
+Vec             operator + (const Vec &a, const Vec &b);
+Vec             operator - (const Vec &a, const Vec &b);
+Vec             operator - (const Vec &v);
+Vec             operator * (const Vec &a, const Vec &b);
+Vec             operator * (const Vec &v, Real s);
+Vec             operator / (const Vec &a, const Vec &b);
+Vec             operator / (const Vec &v, Real s);
+Vec             operator * (Real s, const Vec &v);
+
+Real            dot(const Vec &a, const Vec &b);// v . a
+inline Real     len(const Vec &v);              // || v ||
+inline Real     sqrlen(const Vec &v);           // v . v
+inline Vec      norm(const Vec &v);             // v / || v ||
+inline Void     normalise(Vec &v);              // v = norm(v)
+
+Vec             clamped(const Vec &v, Real fuzz);
+Vec             clamped(const Vec &v);
+
+
+// --- Vec Input & Output -----------------------------------------------------
+
+std::ostream         &operator << (std::ostream &s, const Vec &v);
+std::istream         &operator >> (std::istream &s, Vec &v);
+
+
+// --- Sub-vector functions ---------------------------------------------------
+
+inline Vec      sub(const Vec &v, Int start, Int length);
+inline Vec      first(const Vec &v, Int length);
+inline Vec      last(const Vec &v, Int length);
+
+
+// --- Vec inlines ------------------------------------------------------------
+
+inline Vec::Vec() : data(0), elts(0)
+{
+}
+
+inline Vec::Vec(Int n) : elts(n)
+{
+    Assert(n > 0,"(Vec) illegal vector size");
+
+    data = new Real[n];
+}
+
+inline Vec::Vec(Int n, Real *data) : data(data), elts(n | VL_REF_FLAG)
+{
+}
+
+inline Int Vec::Elts() const
+{
+    return(elts & VL_REF_MASK);
+}
+
+inline Real &Vec::operator [] (Int i)
+{
+    CheckRange(i, 0, Elts(), "Vec::[i]");
+
+    return(data[i]);
+}
+
+inline Real Vec::operator [] (Int i) const
+{
+    CheckRange(i, 0, Elts(), "Vec::[i]");
+
+    return(data[i]);
+}
+
+inline Real *Vec::Ref() const
+{
+    return(data);
+}
+
+inline Vec &Vec::operator = (ZeroOrOne k)
+{
+    MakeBlock(k);
+
+    return(SELF);
+}
+
+inline Vec &Vec::operator = (Axis a)
+{
+    MakeUnit(a);
+
+    return(SELF);
+}
+
+inline Real len(const Vec &v)
+{
+    return(sqrt(dot(v, v)));
+}
+
+inline Real sqrlen(const Vec &v)
+{
+    return(dot(v, v));
+}
+
+inline Vec norm(const Vec &v)
+{
+    Assert(sqrlen(v) > 0.0, "normalising length-zero vector");
+    return(v / len(v));
+}
+
+inline Void normalise(Vec &v)
+{
+    v /= len(v);
+}
+
+inline Vec sub(const Vec &v, Int start, Int length)
+{
+    Assert(start >= 0 && length > 0 && start + length <= v.Elts(),
+        "(sub(Vec)) illegal subset of vector");
+
+    return(Vec(length, v.Ref() + start));
+}
+
+inline Vec first(const Vec &v, Int length)
+{
+    Assert(length > 0 && length <= v.Elts(),
+        "(first(Vec)) illegal subset of vector");
+
+    return(Vec(length, v.Ref()));
+}
+
+inline Vec last(const Vec &v, Int length)
+{
+    Assert(length > 0 && length <= v.Elts(),
+        "(last(Vec)) illegal subset of vector");
+
+    return(Vec(length, v.Ref() + v.Elts() - length));
+}
+
+inline Vec &Vec::Normalise()
+{
+    Assert(sqrlen(SELF) > 0.0, "normalising length-zero vector");
+    SELF /= len(SELF);
+    return(SELF);
+}
+
+
+#endif
+
diff --git a/svl/include/svl/Vec2.h b/svl/include/svl/Vec2.h
new file mode 100644
index 00000000..47877788
--- /dev/null
+++ b/svl/include/svl/Vec2.h
@@ -0,0 +1,364 @@
+/*
+    File:           Vec2.h
+
+    Function:       Defines a length-2 vector.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+ */
+
+#ifndef __Vec2__
+#define __Vec2__
+
+
+// --- Vec2 Class -------------------------------------------------------------
+
+
+class Vec2
+{
+public:
+
+    // Constructors
+
+                Vec2();
+                Vec2(Real x, Real y);       // (x, y)
+                Vec2(const Vec2 &v);        // Copy constructor
+                Vec2(ZeroOrOne k);          // v[i] = vl_zero
+                Vec2(Axis k);               // v[k] = 1
+
+    // Accessor functions
+
+    Real        &operator [] (Int i);
+    const Real  &operator [] (Int i) const;
+
+    Int         Elts() const { return(2); };
+    Real        *Ref() const;                       // Return ptr to data
+
+    // Assignment operators
+
+    Vec2        &operator =  (const Vec2 &a);
+    Vec2        &operator =  (ZeroOrOne k);
+    Vec2        &operator =  (Axis k);
+
+    Vec2        &operator += (const Vec2 &a);
+    Vec2        &operator -= (const Vec2 &a);
+    Vec2        &operator *= (const Vec2 &a);
+    Vec2        &operator *= (Real s);
+    Vec2        &operator /= (const Vec2 &a);
+    Vec2        &operator /= (Real s);
+
+    // Comparison operators
+
+    Bool        operator == (const Vec2 &a) const;  // v == a?
+    Bool        operator != (const Vec2 &a) const;  // v != a?
+
+    // Arithmetic operators
+
+    Vec2        operator + (const Vec2 &a) const;   // v + a
+    Vec2        operator - (const Vec2 &a) const;   // v - a
+    Vec2        operator - () const;                // -v
+    Vec2        operator * (const Vec2 &a) const;   // v * a (vx * ax, ...)
+    Vec2        operator * (Real s) const;          // v * s
+    Vec2        operator / (const Vec2 &a) const;   // v / a (vx / ax, ...)
+    Vec2        operator / (Real s) const;          // v / s
+
+    // Initialisers
+
+    Vec2        &MakeZero();                        // Zero vector
+    Vec2        &MakeUnit(Int i, Real k = vl_one);  // I[i]
+    Vec2        &MakeBlock(Real k = vl_one);        // All-k vector
+
+    Vec2        &Normalise();                       // normalise vector
+
+    // Private...
+
+protected:
+
+    Real            elt[2];
+};
+
+
+// --- Vec operators ----------------------------------------------------------
+
+inline Vec2     operator * (Real s, const Vec2 &v); // s * v
+inline Real     dot(const Vec2 &a, const Vec2 &b);  // v . a
+inline Real     len(const Vec2 &v);                 // || v ||
+inline Real     sqrlen(const Vec2 &v);              // v . v
+inline Vec2     norm(const Vec2 &v);                // v / || v ||
+inline Void     normalise(Vec2 &v);                 // v = norm(v)
+inline Vec2     cross(const Vec2 &v);               // cross prod.
+
+std::ostream &operator << (std::ostream &s, const Vec2 &v);
+std::istream &operator >> (std::istream &s, Vec2 &v);
+
+
+// --- Inlines ----------------------------------------------------------------
+
+inline Real &Vec2::operator [] (Int i)
+{
+    CheckRange(i, 0, 2, "(Vec2::[i]) index out of range");
+    return(elt[i]);
+}
+
+inline const Real &Vec2::operator [] (Int i) const
+{
+    CheckRange(i, 0, 2, "(Vec2::[i]) index out of range");
+    return(elt[i]);
+}
+
+inline Vec2::Vec2()
+{
+}
+
+inline Vec2::Vec2(Real x, Real y)
+{
+    elt[0] = x;
+    elt[1] = y;
+}
+
+inline Vec2::Vec2(const Vec2 &v)
+{
+    elt[0] = v[0];
+    elt[1] = v[1];
+}
+
+inline Real *Vec2::Ref() const
+{
+    return((Real *) elt);
+}
+
+inline Vec2 &Vec2::operator = (const Vec2 &v)
+{
+    elt[0] = v[0];
+    elt[1] = v[1];
+
+    return(SELF);
+}
+
+inline Vec2 &Vec2::operator += (const Vec2 &v)
+{
+    elt[0] += v[0];
+    elt[1] += v[1];
+
+    return(SELF);
+}
+
+inline Vec2 &Vec2::operator -= (const Vec2 &v)
+{
+    elt[0] -= v[0];
+    elt[1] -= v[1];
+
+    return(SELF);
+}
+
+inline Vec2 &Vec2::operator *= (const Vec2 &v)
+{
+    elt[0] *= v[0];
+    elt[1] *= v[1];
+
+    return(SELF);
+}
+
+inline Vec2 &Vec2::operator *= (Real s)
+{
+    elt[0] *= s;
+    elt[1] *= s;
+
+    return(SELF);
+}
+
+inline Vec2 &Vec2::operator /= (const Vec2 &v)
+{
+    elt[0] /= v[0];
+    elt[1] /= v[1];
+
+    return(SELF);
+}
+
+inline Vec2 &Vec2::operator /= (Real s)
+{
+    elt[0] /= s;
+    elt[1] /= s;
+
+    return(SELF);
+}
+
+inline Vec2 Vec2::operator + (const Vec2 &a) const
+{
+    Vec2 result;
+
+    result[0] = elt[0] + a[0];
+    result[1] = elt[1] + a[1];
+
+    return(result);
+}
+
+inline Vec2 Vec2::operator - (const Vec2 &a) const
+{
+    Vec2 result;
+
+    result[0] = elt[0] - a[0];
+    result[1] = elt[1] - a[1];
+
+    return(result);
+}
+
+inline Vec2 Vec2::operator - () const
+{
+    Vec2 result;
+
+    result[0] = -elt[0];
+    result[1] = -elt[1];
+
+    return(result);
+}
+
+inline Vec2 Vec2::operator * (const Vec2 &a) const
+{
+    Vec2 result;
+
+    result[0] = elt[0] * a[0];
+    result[1] = elt[1] * a[1];
+
+    return(result);
+}
+
+inline Vec2 Vec2::operator * (Real s) const
+{
+    Vec2 result;
+
+    result[0] = elt[0] * s;
+    result[1] = elt[1] * s;
+
+    return(result);
+}
+
+inline Vec2 operator * (Real s, const Vec2 &v)
+{
+    return(v * s);
+}
+
+inline Vec2 Vec2::operator / (const Vec2 &a) const
+{
+    Vec2 result;
+
+    result[0] = elt[0] / a[0];
+    result[1] = elt[1] / a[1];
+
+    return(result);
+}
+
+inline Vec2 Vec2::operator / (Real s) const
+{
+    Vec2 result;
+
+    result[0] = elt[0] / s;
+    result[1] = elt[1] / s;
+
+    return(result);
+}
+
+inline Real dot(const Vec2 &a, const Vec2 &b)
+{
+    return(a[0] * b[0] + a[1] * b[1]);
+}
+
+inline Vec2 cross(const Vec2 &a)
+{
+    Vec2 result;
+
+    result[0] =  a[1];
+    result[1] = -a[0];
+
+    return(result);
+}
+
+inline Real len(const Vec2 &v)
+{
+    return(sqrt(dot(v, v)));
+}
+
+inline Real sqrlen(const Vec2 &v)
+{
+    return(dot(v, v));
+}
+
+inline Vec2 norm(const Vec2 &v)
+{
+    Assert(sqrlen(v) > 0.0, "normalising length-zero vector");
+    return(v / len(v));
+}
+
+inline Void normalise(Vec2 &v)
+{
+    v /= len(v);
+}
+
+inline Vec2 &Vec2::MakeUnit(Int i, Real k)
+{
+    if (i == 0)
+    { elt[0] = k; elt[1] = vl_zero; }
+    else if (i == 1)
+    { elt[0] = vl_zero; elt[1] = k; }
+    else
+        _svlError("(Vec2::Unit) illegal unit vector");
+    return(SELF);
+}
+
+inline Vec2 &Vec2::MakeZero()
+{
+    elt[0] = vl_zero; elt[1] = vl_zero;
+    return(SELF);
+}
+
+inline Vec2 &Vec2::MakeBlock(Real k)
+{
+    elt[0] = k; elt[1] = k;
+    return(SELF);
+}
+
+inline Vec2 &Vec2::Normalise()
+{
+    Assert(sqrlen(SELF) > 0.0, "normalising length-zero vector");
+    SELF /= len(SELF);
+    return(SELF);
+}
+
+
+inline Vec2::Vec2(ZeroOrOne k)
+{
+    elt[0] = k;
+    elt[1] = k;
+}
+
+inline Vec2::Vec2(Axis k)
+{
+    MakeUnit(k, vl_one);
+}
+
+inline Vec2 &Vec2::operator = (ZeroOrOne k)
+{
+    elt[0] = k; elt[1] = k;
+
+    return(SELF);
+}
+
+inline Vec2 &Vec2::operator = (Axis k)
+{
+    MakeUnit(k, vl_1);
+
+    return(SELF);
+}
+
+inline Bool Vec2::operator == (const Vec2 &a) const
+{
+    return(elt[0] == a[0] && elt[1] == a[1]);
+}
+
+inline Bool Vec2::operator != (const Vec2 &a) const
+{
+    return(elt[0] != a[0] || elt[1] != a[1]);
+}
+
+#endif
diff --git a/svl/include/svl/Vec3.h b/svl/include/svl/Vec3.h
new file mode 100644
index 00000000..10eee5cd
--- /dev/null
+++ b/svl/include/svl/Vec3.h
@@ -0,0 +1,414 @@
+/*
+    File:           Vec3.h
+
+    Function:       Defines a length-3 vector.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+ */
+
+#ifndef __Vec3__
+#define __Vec3__
+
+#include "svl/Vec2.h"
+
+
+// --- Vec3 Class -------------------------------------------------------------
+
+class Vec3
+{
+public:
+
+    // Constructors
+
+                Vec3();
+                Vec3(Real x, Real y, Real z);   // [x, y, z]
+                Vec3(const Vec3 &v);            // Copy constructor
+                Vec3(const Vec2 &v, Real w);    // Hom. 2D vector
+                Vec3(ZeroOrOne k);
+                Vec3(Axis a);
+
+    // Accessor functions
+
+    Int         Elts() const { return(3); };
+
+    Real        &operator [] (Int i);
+    const Real  &operator [] (Int i) const;
+
+    Real        *Ref() const;                   // Return pointer to data
+
+    // Assignment operators
+
+    Vec3        &operator =  (const Vec3 &a);
+    Vec3        &operator =  (ZeroOrOne k);
+    Vec3        &operator += (const Vec3 &a);
+    Vec3        &operator -= (const Vec3 &a);
+    Vec3        &operator *= (const Vec3 &a);
+    Vec3        &operator *= (Real s);
+    Vec3        &operator /= (const Vec3 &a);
+    Vec3        &operator /= (Real s);
+
+    // Comparison operators
+
+    Bool        operator == (const Vec3 &a) const;  // v == a?
+    Bool        operator != (const Vec3 &a) const;  // v != a?
+    Bool        operator <  (const Vec3 &a) const; // v <  a?
+    Bool        operator >= (const Vec3 &a) const; // v >= a?
+
+    // Arithmetic operators
+
+    Vec3        operator + (const Vec3 &a) const;   // v + a
+    Vec3        operator - (const Vec3 &a) const;   // v - a
+    Vec3        operator - () const;                // -v
+    Vec3        operator * (const Vec3 &a) const;   // v * a (vx * ax, ...)
+    Vec3        operator * (Real s) const;          // v * s
+    Vec3        operator / (const Vec3 &a) const;   // v / a (vx / ax, ...)
+    Vec3        operator / (Real s) const;          // v / s
+
+    // Initialisers
+
+    Vec3        &MakeZero();                        // Zero vector
+    Vec3        &MakeUnit(Int i, Real k = vl_one);  // I[i]
+    Vec3        &MakeBlock(Real k = vl_one);        // All-k vector
+
+    Vec3        &Normalise();                       // normalise vector
+
+    // Private...
+
+protected:
+
+    Real elt[3];
+};
+
+
+// --- Vec operators ----------------------------------------------------------
+
+inline Vec3     operator * (Real s, const Vec3 &v); // s * v
+inline Real     dot(const Vec3 &a, const Vec3 &b);  // v . a
+inline Real     len(const Vec3 &v);                 // || v ||
+inline Real     sqrlen(const Vec3 &v);              // v . v
+inline Vec3     norm(const Vec3 &v);                // v / || v ||
+inline Void     normalise(Vec3 &v);                 // v = norm(v)
+inline Vec3     cross(const Vec3 &a, const Vec3 &b);// a x b
+inline Vec2     proj(const Vec3 &v);                // hom. projection
+
+std::ostream &operator << (std::ostream &s, const Vec3 &v);
+std::istream &operator >> (std::istream &s, Vec3 &v);
+
+
+// --- Inlines ----------------------------------------------------------------
+
+inline Real &Vec3::operator [] (Int i)
+{
+    CheckRange(i, 0, 3, "(Vec3::[i]) index out of range");
+    return(elt[i]);
+}
+
+inline const Real &Vec3::operator [] (Int i) const
+{
+    CheckRange(i, 0, 3, "(Vec3::[i]) index out of range");
+    return(elt[i]);
+}
+
+inline Vec3::Vec3()
+{
+}
+
+inline Vec3::Vec3(Real x, Real y, Real z)
+{
+    elt[0] = x;
+    elt[1] = y;
+    elt[2] = z;
+}
+
+inline Vec3::Vec3(const Vec3 &v)
+{
+    elt[0] = v[0];
+    elt[1] = v[1];
+    elt[2] = v[2];
+}
+
+inline Vec3::Vec3(const Vec2 &v, Real w)
+{
+    elt[0] = v[0];
+    elt[1] = v[1];
+    elt[2] = w;
+}
+
+inline Real *Vec3::Ref() const
+{
+    return((Real *) elt);
+}
+
+inline Vec3 &Vec3::operator = (const Vec3 &v)
+{
+    elt[0] = v[0];
+    elt[1] = v[1];
+    elt[2] = v[2];
+
+    return(SELF);
+}
+
+inline Vec3 &Vec3::operator += (const Vec3 &v)
+{
+    elt[0] += v[0];
+    elt[1] += v[1];
+    elt[2] += v[2];
+
+    return(SELF);
+}
+
+inline Vec3 &Vec3::operator -= (const Vec3 &v)
+{
+    elt[0] -= v[0];
+    elt[1] -= v[1];
+    elt[2] -= v[2];
+
+    return(SELF);
+}
+
+inline Vec3 &Vec3::operator *= (const Vec3 &a)
+{
+    elt[0] *= a[0];
+    elt[1] *= a[1];
+    elt[2] *= a[2];
+
+    return(SELF);
+}
+
+inline Vec3 &Vec3::operator *= (Real s)
+{
+    elt[0] *= s;
+    elt[1] *= s;
+    elt[2] *= s;
+
+    return(SELF);
+}
+
+inline Vec3 &Vec3::operator /= (const Vec3 &a)
+{
+    elt[0] /= a[0];
+    elt[1] /= a[1];
+    elt[2] /= a[2];
+
+    return(SELF);
+}
+
+inline Vec3 &Vec3::operator /= (Real s)
+{
+    elt[0] /= s;
+    elt[1] /= s;
+    elt[2] /= s;
+
+    return(SELF);
+}
+
+inline Vec3 Vec3::operator + (const Vec3 &a) const
+{
+    Vec3 result;
+
+    result[0] = elt[0] + a[0];
+    result[1] = elt[1] + a[1];
+    result[2] = elt[2] + a[2];
+
+    return(result);
+}
+
+inline Vec3 Vec3::operator - (const Vec3 &a) const
+{
+    Vec3 result;
+
+    result[0] = elt[0] - a[0];
+    result[1] = elt[1] - a[1];
+    result[2] = elt[2] - a[2];
+
+    return(result);
+}
+
+inline Vec3 Vec3::operator - () const
+{
+    Vec3 result;
+
+    result[0] = -elt[0];
+    result[1] = -elt[1];
+    result[2] = -elt[2];
+
+    return(result);
+}
+
+inline Vec3 Vec3::operator * (const Vec3 &a) const
+{
+    Vec3 result;
+
+    result[0] = elt[0] * a[0];
+    result[1] = elt[1] * a[1];
+    result[2] = elt[2] * a[2];
+
+    return(result);
+}
+
+inline Vec3 Vec3::operator * (Real s) const
+{
+    Vec3 result;
+
+    result[0] = elt[0] * s;
+    result[1] = elt[1] * s;
+    result[2] = elt[2] * s;
+
+    return(result);
+}
+
+inline Vec3 Vec3::operator / (const Vec3 &a) const
+{
+    Vec3 result;
+
+    result[0] = elt[0] / a[0];
+    result[1] = elt[1] / a[1];
+    result[2] = elt[2] / a[2];
+
+    return(result);
+}
+
+inline Vec3 Vec3::operator / (Real s) const
+{
+    Vec3 result;
+
+    result[0] = elt[0] / s;
+    result[1] = elt[1] / s;
+    result[2] = elt[2] / s;
+
+    return(result);
+}
+
+inline Vec3 operator * (Real s, const Vec3 &v)
+{
+    return(v * s);
+}
+
+inline Vec3 &Vec3::MakeUnit(Int n, Real k)
+{
+    if (n == 0)
+    { elt[0] = k; elt[1] = vl_zero; elt[2] = vl_zero; }
+    else if (n == 1)
+    { elt[0] = vl_zero; elt[1] = k; elt[2] = vl_zero; }
+    else if (n == 2)
+    { elt[0] = vl_zero; elt[1] = vl_zero; elt[2] = k; }
+    else
+        _svlError("(Vec3::Unit) illegal unit vector");
+
+    return(SELF);
+}
+
+inline Vec3 &Vec3::MakeZero()
+{
+    elt[0] = vl_zero; elt[1] = vl_zero; elt[2] = vl_zero;
+
+    return(SELF);
+}
+
+inline Vec3 &Vec3::MakeBlock(Real k)
+{
+    elt[0] = k; elt[1] = k; elt[2] = k;
+
+    return(SELF);
+}
+
+inline Vec3 &Vec3::Normalise()
+{
+    Assert(sqrlen(SELF) > 0.0, "normalising length-zero vector");
+    SELF /= len(SELF);
+
+    return(SELF);
+}
+
+
+inline Vec3::Vec3(ZeroOrOne k)
+{
+    elt[0] = k; elt[1] = k; elt[2] = k;
+}
+
+inline Vec3 &Vec3::operator = (ZeroOrOne k)
+{
+    elt[0] = k; elt[1] = k; elt[2] = k;
+
+    return(SELF);
+}
+
+inline Vec3::Vec3(Axis a)
+{
+    MakeUnit(a, vl_one);
+}
+
+
+inline Bool Vec3::operator == (const Vec3 &a) const
+{
+    return(elt[0] == a[0] && elt[1] == a[1] && elt[2] == a[2]);
+}
+
+inline Bool Vec3::operator != (const Vec3 &a) const
+{
+    return(elt[0] != a[0] || elt[1] != a[1] || elt[2] != a[2]);
+}
+
+inline Bool Vec3::operator < (const Vec3 &a) const
+{
+    return(elt[0] < a[0] && elt[1] < a[1] && elt[2] < a[2]);
+}
+
+inline Bool Vec3::operator >= (const Vec3 &a) const
+{
+    return(elt[0] >= a[0] && elt[1] >= a[1] && elt[2] >= a[2]);
+}
+
+
+inline Real dot(const Vec3 &a, const Vec3 &b)
+{
+    return(a[0] * b[0] + a[1] * b[1] + a[2] * b[2]);
+}
+
+inline Real len(const Vec3 &v)
+{
+    return(sqrt(dot(v, v)));
+}
+
+inline Real sqrlen(const Vec3 &v)
+{
+    return(dot(v, v));
+}
+
+inline Vec3 norm(const Vec3 &v)
+{
+    Assert(sqrlen(v) > 0.0, "normalising length-zero vector");
+    return(v / len(v));
+}
+
+inline Void normalise(Vec3 &v)
+{
+    v /= len(v);
+}
+
+inline Vec3 cross(const Vec3 &a, const Vec3 &b)
+{
+    Vec3 result;
+
+    result[0] = a[1] * b[2] - a[2] * b[1];
+    result[1] = a[2] * b[0] - a[0] * b[2];
+    result[2] = a[0] * b[1] - a[1] * b[0];
+
+    return(result);
+}
+
+inline Vec2 proj(const Vec3 &v)
+{
+    Vec2 result;
+
+    Assert(v[2] != 0, "(Vec3/proj) last elt. is zero");
+
+    result[0] = v[0] / v[2];
+    result[1] = v[1] / v[2];
+
+    return(result);
+}
+
+#endif
diff --git a/svl/include/svl/Vec4.h b/svl/include/svl/Vec4.h
new file mode 100644
index 00000000..11df2da7
--- /dev/null
+++ b/svl/include/svl/Vec4.h
@@ -0,0 +1,379 @@
+/*
+    File:           Vec4.h
+
+    Function:       Defines a length-4 vector.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+ */
+
+#ifndef __Vec4__
+#define __Vec4__
+
+#include "svl/Vec3.h"
+
+
+// --- Vec4 Class -------------------------------------------------------------
+
+class Vec4
+{
+public:
+
+    // Constructors
+
+                Vec4();
+                Vec4(Real x, Real y, Real z, Real w);   // [x, y, z, w]
+                Vec4(const Vec4 &v);                    // Copy constructor
+                Vec4(const Vec3 &v, Real w);            // Hom. 3D vector
+                Vec4(ZeroOrOne k);
+                Vec4(Axis k);
+
+    // Accessor functions
+
+    Int         Elts() const { return(4); };
+
+    Real        &operator [] (Int i);
+    const Real  &operator [] (Int i) const;
+
+    Real        *Ref() const;                   // Return pointer to data
+
+    // Assignment operators
+
+    Vec4        &operator =  (const Vec4 &a);
+    Vec4        &operator =  (ZeroOrOne k);
+    Vec4        &operator =  (Axis k);
+    Vec4        &operator += (const Vec4 &a);
+    Vec4        &operator -= (const Vec4 &a);
+    Vec4        &operator *= (const Vec4 &a);
+    Vec4        &operator *= (Real s);
+    Vec4        &operator /= (const Vec4 &a);
+    Vec4        &operator /= (Real s);
+
+    // Comparison operators
+
+    Bool        operator == (const Vec4 &a) const;  // v == a ?
+    Bool        operator != (const Vec4 &a) const;  // v != a ?
+
+    // Arithmetic operators
+
+    Vec4        operator + (const Vec4 &a) const;   // v + a
+    Vec4        operator - (const Vec4 &a) const;   // v - a
+    Vec4        operator - () const;                // -v
+    Vec4        operator * (const Vec4 &a) const;   // v * a (vx * ax, ...)
+    Vec4        operator * (Real s) const;          // v * s
+    Vec4        operator / (const Vec4 &a) const;   // v / a (vx / ax, ...)
+    Vec4        operator / (Real s) const;          // v / s
+
+
+    // Initialisers
+
+    Vec4        &MakeZero();                        // Zero vector
+    Vec4        &MakeUnit(Int i, Real k = vl_one);  // kI[i]
+    Vec4        &MakeBlock(Real k = vl_one);        // All-k vector
+
+    Vec4        &Normalise();                       // normalise vector
+
+    // Private...
+
+protected:
+
+    Real        elt[4];
+};
+
+
+// --- Vec operators ----------------------------------------------------------
+
+inline Vec4     operator * (Real s, const Vec4 &v); // Left mult. by s
+inline Real     dot(const Vec4 &a, const Vec4 &b);  // v . a
+inline Real     len(const Vec4 &v);                 // || v ||
+inline Real     sqrlen(const Vec4 &v);              // v . v
+inline Vec4     norm(const Vec4 &v);                // v / || v ||
+inline Void     normalise(Vec4 &v);                 // v = norm(v)
+Vec4            cross(const Vec4 &a, const Vec4 &b, const Vec4 &c);
+                                                    // 4D cross prod.
+Vec3            proj(const Vec4 &v);                // hom. projection
+
+std::ostream &operator << (std::ostream &s, const Vec4 &v);
+std::istream &operator >> (std::istream &s, Vec4 &v);
+
+
+// --- Inlines ----------------------------------------------------------------
+
+inline Real &Vec4::operator [] (Int i)
+{
+    CheckRange(i, 0, 4, "(Vec4::[i]) index out of range");
+    return(elt[i]);
+}
+
+inline const Real &Vec4::operator [] (Int i) const
+{
+    CheckRange(i, 0, 4, "(Vec4::[i]) index out of range");
+    return(elt[i]);
+}
+
+
+inline Vec4::Vec4()
+{
+}
+
+inline Vec4::Vec4(Real x, Real y, Real z, Real w)
+{
+    elt[0] = x;
+    elt[1] = y;
+    elt[2] = z;
+    elt[3] = w;
+}
+
+inline Vec4::Vec4(const Vec4 &v)
+{
+    elt[0] = v[0];
+    elt[1] = v[1];
+    elt[2] = v[2];
+    elt[3] = v[3];
+}
+
+inline Vec4::Vec4(const Vec3 &v, Real w)
+{
+    elt[0] = v[0];
+    elt[1] = v[1];
+    elt[2] = v[2];
+    elt[3] = w;
+}
+
+inline Real *Vec4::Ref() const
+{
+    return((Real *) elt);
+}
+
+inline Vec4 &Vec4::operator = (const Vec4 &v)
+{
+    elt[0] = v[0];
+    elt[1] = v[1];
+    elt[2] = v[2];
+    elt[3] = v[3];
+
+    return(SELF);
+}
+
+inline Vec4 &Vec4::operator += (const Vec4 &v)
+{
+    elt[0] += v[0];
+    elt[1] += v[1];
+    elt[2] += v[2];
+    elt[3] += v[3];
+
+    return(SELF);
+}
+
+inline Vec4 &Vec4::operator -= (const Vec4 &v)
+{
+    elt[0] -= v[0];
+    elt[1] -= v[1];
+    elt[2] -= v[2];
+    elt[3] -= v[3];
+
+    return(SELF);
+}
+
+inline Vec4 &Vec4::operator *= (const Vec4 &v)
+{
+    elt[0] *= v[0];
+    elt[1] *= v[1];
+    elt[2] *= v[2];
+    elt[3] *= v[3];
+
+    return(SELF);
+}
+
+inline Vec4 &Vec4::operator *= (Real s)
+{
+    elt[0] *= s;
+    elt[1] *= s;
+    elt[2] *= s;
+    elt[3] *= s;
+
+    return(SELF);
+}
+
+inline Vec4 &Vec4::operator /= (const Vec4 &v)
+{
+    elt[0] /= v[0];
+    elt[1] /= v[1];
+    elt[2] /= v[2];
+    elt[3] /= v[3];
+
+    return(SELF);
+}
+
+inline Vec4 &Vec4::operator /= (Real s)
+{
+    elt[0] /= s;
+    elt[1] /= s;
+    elt[2] /= s;
+    elt[3] /= s;
+
+    return(SELF);
+}
+
+
+inline Vec4 Vec4::operator + (const Vec4 &a) const
+{
+    Vec4 result;
+
+    result[0] = elt[0] + a[0];
+    result[1] = elt[1] + a[1];
+    result[2] = elt[2] + a[2];
+    result[3] = elt[3] + a[3];
+
+    return(result);
+}
+
+inline Vec4 Vec4::operator - (const Vec4 &a) const
+{
+    Vec4 result;
+
+    result[0] = elt[0] - a[0];
+    result[1] = elt[1] - a[1];
+    result[2] = elt[2] - a[2];
+    result[3] = elt[3] - a[3];
+
+    return(result);
+}
+
+inline Vec4 Vec4::operator - () const
+{
+    Vec4 result;
+
+    result[0] = -elt[0];
+    result[1] = -elt[1];
+    result[2] = -elt[2];
+    result[3] = -elt[3];
+
+    return(result);
+}
+
+inline Vec4 Vec4::operator * (const Vec4 &a) const
+{
+    Vec4 result;
+
+    result[0] = elt[0] * a[0];
+    result[1] = elt[1] * a[1];
+    result[2] = elt[2] * a[2];
+    result[3] = elt[3] * a[3];
+
+    return(result);
+}
+
+inline Vec4 Vec4::operator * (Real s) const
+{
+    Vec4 result;
+
+    result[0] = elt[0] * s;
+    result[1] = elt[1] * s;
+    result[2] = elt[2] * s;
+    result[3] = elt[3] * s;
+
+    return(result);
+}
+
+inline Vec4 Vec4::operator / (const Vec4 &a) const
+{
+    Vec4 result;
+
+    result[0] = elt[0] / a[0];
+    result[1] = elt[1] / a[1];
+    result[2] = elt[2] / a[2];
+    result[3] = elt[3] / a[3];
+
+    return(result);
+}
+
+inline Vec4 Vec4::operator / (Real s) const
+{
+    Vec4 result;
+
+    result[0] = elt[0] / s;
+    result[1] = elt[1] / s;
+    result[2] = elt[2] / s;
+    result[3] = elt[3] / s;
+
+    return(result);
+}
+
+inline Vec4 operator * (Real s, const Vec4 &v)
+{
+    return(v * s);
+}
+
+inline Vec4 &Vec4::MakeZero()
+{
+    elt[0] = vl_zero; elt[1] = vl_zero; elt[2] = vl_zero; elt[3] = vl_zero;
+    return(SELF);
+}
+
+inline Vec4 &Vec4::MakeBlock(Real k)
+{
+    elt[0] = k; elt[1] = k; elt[2] = k; elt[3] = k;
+    return(SELF);
+}
+
+inline Vec4 &Vec4::Normalise()
+{
+    Assert(sqrlen(SELF) > 0.0, "normalising length-zero vector");
+    SELF /= len(SELF);
+    return(SELF);
+}
+
+inline Vec4::Vec4(ZeroOrOne k)
+{
+    MakeBlock(k);
+}
+
+inline Vec4::Vec4(Axis k)
+{
+    MakeUnit(k, vl_1);
+}
+
+inline Vec4 &Vec4::operator = (ZeroOrOne k)
+{
+    MakeBlock(k);
+
+    return(SELF);
+}
+
+inline Vec4 &Vec4::operator = (Axis k)
+{
+    MakeUnit(k, vl_1);
+
+    return(SELF);
+}
+
+
+inline Real dot(const Vec4 &a, const Vec4 &b)
+{
+    return(a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3]);
+}
+
+inline Real len(const Vec4 &v)
+{
+    return(sqrt(dot(v, v)));
+}
+
+inline Real sqrlen(const Vec4 &v)
+{
+    return(dot(v, v));
+}
+
+inline Vec4 norm(const Vec4 &v)
+{
+    Assert(sqrlen(v) > 0.0, "normalising length-zero vector");
+    return(v / len(v));
+}
+
+inline Void normalise(Vec4 &v)
+{
+    v /= len(v);
+}
+
+#endif
diff --git a/svl/resources.rc b/svl/resources.rc
new file mode 100644
index 00000000..3907c3b4
--- /dev/null
+++ b/svl/resources.rc
@@ -0,0 +1,25 @@
+#ifdef _WIN32
+    #include <windows.h>
+#endif // _WIN32
+VS_VERSION_INFO VERSIONINFO
+    FILEVERSION    1,0,0
+    PRODUCTVERSION 1,0,0
+{
+    BLOCK "StringFileInfo"
+    {
+        BLOCK "040904b0"
+        {
+            VALUE "CompanyName",        ""
+            VALUE "FileDescription",    "svl\0"
+            VALUE "FileVersion",        "1.0.0"
+            VALUE "LegalCopyright",     "(C) 1995-2001, Andrew Willmott\0"
+            VALUE "OriginalFilename",   "svl.dll\0"
+            VALUE "ProductName",        "svl\0"
+            VALUE "ProductVersion",     "1.0.0"
+        }
+    }
+    BLOCK "VarFileInfo"
+    {
+        VALUE "Translation", 0x409, 1200
+    }
+}
diff --git a/svl/src/Basics.cpp b/svl/src/Basics.cpp
new file mode 100644
index 00000000..cfd68ea6
--- /dev/null
+++ b/svl/src/Basics.cpp
@@ -0,0 +1,75 @@
+/*
+    File:           Basics.cpp
+
+    Function:       Implements Basics.h
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+    Notes:          
+
+*/
+
+#include "svl/Basics.h"
+#include <cstdio>
+#include <cstdlib>
+#include <iostream>
+
+
+using namespace std;
+
+
+// --- Error functions for range and routine checking -------------------------
+
+
+static Void DebuggerBreak()
+{
+    abort();
+}
+
+Void _Assert(Int condition, const Char *errorMessage, const Char *file, Int line)
+{
+    if (!condition)
+    {
+        Char reply;
+        
+        cerr << "\n*** Assert failed (line " << line << " in " << 
+            file << "): " << errorMessage << endl;
+        cerr << "    Continue? [y/n] ";
+        cin >> reply;
+        
+        if (reply != 'y')
+        {
+            DebuggerBreak();
+            exit(1);
+        }
+    }
+}
+
+Void _Expect(Int condition, const Char *warningMessage, const Char *file, Int line)
+{
+    if (!condition)
+        cerr << "\n*** Warning (line " << line << " in " << file << "): " <<
+            warningMessage << endl;
+}
+
+Void _CheckRange(Int i, Int lowerBound, Int upperBound, 
+                 const Char *rangeMessage, const Char *file, Int line)
+{
+    if (i < lowerBound || i >= upperBound)
+    {
+        Char reply;
+        
+        cerr << "\n*** Range Error (line " << line << " in " << file <<
+            "): " << rangeMessage << endl;  
+        cerr << "    Continue? [y/n] ";
+        cin >> reply;
+        
+        if (reply != 'y')
+        {
+            DebuggerBreak();
+            exit(1);
+        }
+    }
+}
diff --git a/svl/src/LibSVL.cpp b/svl/src/LibSVL.cpp
new file mode 100644
index 00000000..b377bef3
--- /dev/null
+++ b/svl/src/LibSVL.cpp
@@ -0,0 +1,32 @@
+/*
+    File:       LibSVL.cpp
+
+    Purpose:    Compiles all code necessary for SVL.h.
+
+    Author:     Andrew Willmott
+*/
+
+#define __SVL__
+
+#ifdef VL_DEBUG
+#define VL_CHECKING
+#endif
+
+#include <iostream>
+#include <iomanip>
+
+using namespace std;
+
+#include "svl/Basics.h"
+#include "svl/Constants.h"
+#include "svl/Utils.h"
+
+#include "Vec2.cpp"
+#include "Vec3.cpp"
+#include "Vec4.cpp"
+#include "Vec.cpp"
+
+#include "Mat2.cpp"
+#include "Mat3.cpp"
+#include "Mat4.cpp"
+#include "Mat.cpp"
diff --git a/svl/src/Mat.cpp b/svl/src/Mat.cpp
new file mode 100644
index 00000000..ba0e6d20
--- /dev/null
+++ b/svl/src/Mat.cpp
@@ -0,0 +1,659 @@
+/*
+    File:           Mat.cpp
+
+    Function:       Implements Mat.h
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+*/
+
+#include "svl/Mat.h"
+
+#include <cctype>
+#include <cstring>
+#include <cstdarg>
+#include <iomanip>
+
+
+// --- Mat Constructors & Destructors -----------------------------------------
+
+
+Mat::Mat(Int rows, Int cols, ZeroOrOne k) : rows(rows), cols(cols)
+{
+    Assert(rows > 0 && cols > 0, "(Mat) illegal matrix size");
+
+    data = new Real[rows * cols];
+
+    MakeDiag(k);
+}
+
+Mat::Mat(Int rows, Int cols, Block k) : rows(rows), cols(cols)
+{
+    Assert(rows > 0 && cols > 0, "(Mat) illegal matrix size");
+
+    data = new Real[rows * cols];
+
+    MakeBlock(k);
+}
+
+Mat::Mat(Int rows, Int cols, double elt0, ...) : rows(rows), cols(cols)
+// The double is hardwired here because it is the only type that will work
+// with var args and C++ real numbers.
+{
+    Assert(rows > 0 && cols > 0, "(Mat) illegal matrix size");
+
+    va_list ap;
+    Int     i, j;
+
+    data = new Real[rows * cols];
+    va_start(ap, elt0);
+
+    SetReal(data[0], elt0);
+
+    for (i = 1; i < cols; i++)
+        SetReal(Elt(0, i), va_arg(ap, double));
+
+    for (i = 1; i < rows; i++)
+        for (j = 0; j < cols; j++)
+            SetReal(Elt(i, j), va_arg(ap, double));
+
+    va_end(ap);
+}
+
+Mat::Mat(const Mat &m) : cols(m.cols)
+{
+    Assert(m.data != 0, "(Mat) Can't construct from null matrix");
+    rows = m.Rows();
+
+    UInt    elts = rows * cols;
+
+    data = new Real[elts];
+#ifdef VL_USE_MEMCPY
+    memcpy(data, m.data, elts * sizeof(Real));
+#else
+    for (UInt i = 0; i < elts; i++)
+        data[i] = m.data[i];
+#endif
+}
+
+Mat::Mat(const Mat2 &m) : data(m.Ref()), rows(2 | VL_REF_FLAG), cols(2)
+{
+}
+
+Mat::Mat(const Mat3 &m) : data(m.Ref()), rows(3 | VL_REF_FLAG), cols(3)
+{
+}
+
+Mat::Mat(const Mat4 &m) : data(m.Ref()), rows(4 | VL_REF_FLAG), cols(4)
+{
+}
+
+
+// --- Mat Assignment Operators -----------------------------------------------
+
+
+Mat &Mat::operator = (const Mat &m)
+{
+    if (!IsRef())
+        SetSize(m.Rows(), m.Cols());
+    else
+        Assert(Rows() == m.Rows(), "(Mat::=) Matrix rows don't match");
+    for (Int i = 0; i < Rows(); i++)
+        SELF[i] = m[i];
+
+    return(SELF);
+}
+
+Mat &Mat::operator = (const Mat2 &m)
+{
+    if (!IsRef())
+        SetSize(m.Rows(), m.Cols());
+    else
+        Assert(Rows() == m.Rows(), "(Mat::=) Matrix rows don't match");
+    for (Int i = 0; i < Rows(); i++)
+        SELF[i] = m[i];
+
+    return(SELF);
+}
+
+Mat &Mat::operator = (const Mat3 &m)
+{
+    if (!IsRef())
+        SetSize(m.Rows(), m.Cols());
+    else
+        Assert(Rows() == m.Rows(), "(Mat::=) Matrix rows don't match");
+    for (Int i = 0; i < Rows(); i++)
+        SELF[i] = m[i];
+
+    return(SELF);
+}
+
+Mat &Mat::operator = (const Mat4 &m)
+{
+    if (!IsRef())
+        SetSize(m.Rows(), m.Cols());
+    else
+        Assert(Rows() == m.Rows(), "(Mat::=) Matrix rows don't match");
+
+    for (Int i = 0; i < Rows(); i++)
+        SELF[i] = m[i];
+
+    return(SELF);
+}
+
+Void Mat::SetSize(Int nrows, Int ncols)
+{
+	UInt	elts = nrows * ncols;
+	Assert(nrows > 0 && ncols > 0, "(Mat::SetSize) Illegal matrix size.");
+	UInt	oldElts = Rows() * Cols();
+
+	if (IsRef())
+	{
+		// Abort! We don't allow this operation on references.
+		_svlError("(Mat::SetSize) Trying to resize a matrix reference");
+	}
+
+	rows = nrows;
+	cols = ncols;
+
+	// Don't reallocate if we already have enough storage
+	if (elts <= oldElts)
+		return;
+
+	// Otherwise, delete old storage and reallocate
+	delete[] data;
+	data = 0;
+	data = new Real[elts]; // may throw an exception
+}
+
+Void Mat::SetSize(const Mat &m)
+{
+    SetSize(m.Rows(), m.Cols());
+}
+
+Void Mat::MakeZero()
+{
+#ifdef VL_USE_MEMCPY
+    memset(data, 0, sizeof(Real) * Rows() * Cols());
+#else
+    Int     i;
+
+    for (i = 0; i < Rows(); i++)
+        SELF[i] = vl_zero;
+#endif
+}
+
+Void Mat::MakeDiag(Real k)
+{
+    Int     i, j;
+
+    for (i = 0; i < Rows(); i++)
+        for (j = 0; j < Cols(); j++)
+            if (i == j)
+                Elt(i,j) = k;
+            else
+                Elt(i,j) = vl_zero;
+}
+
+Void Mat::MakeDiag()
+{
+    Int     i, j;
+
+    for (i = 0; i < Rows(); i++)
+        for (j = 0; j < Cols(); j++)
+            Elt(i,j) = (i == j) ? vl_one : vl_zero;
+}
+
+Void Mat::MakeBlock(Real k)
+{
+    Int     i;
+
+    for (i = 0; i < Rows(); i++)
+        SELF[i].MakeBlock(k);
+}
+
+Void Mat::MakeBlock()
+{
+    Int     i, j;
+
+    for (i = 0; i < Rows(); i++)
+        for (j = 0; j < Cols(); j++)
+            Elt(i,j) = vl_one;
+}
+
+
+// --- Mat Assignment Operators -----------------------------------------------
+
+
+Mat &Mat::operator += (const Mat &m)
+{
+    Assert(Rows() == m.Rows(), "(Mat::+=) matrix rows don't match");
+
+    Int     i;
+
+    for (i = 0; i < Rows(); i++)
+        SELF[i] += m[i];
+
+    return(SELF);
+}
+
+Mat &Mat::operator -= (const Mat &m)
+{
+    Assert(Rows() == m.Rows(), "(Mat::-=) matrix rows don't match");
+
+    Int     i;
+
+    for (i = 0; i < Rows(); i++)
+        SELF[i] -= m[i];
+
+    return(SELF);
+}
+
+Mat &Mat::operator *= (const Mat &m)
+{
+    Assert(Cols() == m.Cols(), "(Mat::*=) matrix columns don't match");
+
+    Int     i;
+
+    for (i = 0; i < Rows(); i++)
+        SELF[i] = SELF[i] * m;
+
+    return(SELF);
+}
+
+Mat &Mat::operator *= (Real s)
+{
+    Int     i;
+
+    for (i = 0; i < Rows(); i++)
+        SELF[i] *= s;
+
+    return(SELF);
+}
+
+Mat &Mat::operator /= (Real s)
+{
+    Int     i;
+
+    for (i = 0; i < Rows(); i++)
+        SELF[i] /= s;
+
+    return(SELF);
+}
+
+
+// --- Mat Comparison Operators -----------------------------------------------
+
+
+Bool operator == (const Mat &m, const Mat &n)
+{
+    Assert(n.Rows() == m.Rows(), "(Mat::==) matrix rows don't match");
+
+    Int     i;
+
+    for (i = 0; i < m.Rows(); i++)
+        if (m[i] != n[i])
+            return(0);
+
+    return(1);
+}
+
+Bool operator != (const Mat &m, const Mat &n)
+{
+    Assert(n.Rows() == m.Rows(), "(Mat::!=) matrix rows don't match");
+
+    Int     i;
+
+    for (i = 0; i < m.Rows(); i++)
+        if (m[i] != n[i])
+            return(1);
+
+    return(0);
+}
+
+
+// --- Mat Arithmetic Operators -----------------------------------------------
+
+
+Mat operator + (const Mat &m, const Mat &n)
+{
+    Assert(n.Rows() == m.Rows(), "(Mat::+) matrix rows don't match");
+
+    Mat result(m.Rows(), m.Cols());
+    Int     i;
+
+    for (i = 0; i < m.Rows(); i++)
+        result[i] = m[i] + n[i];
+
+    return(result);
+}
+
+Mat operator - (const Mat &m, const Mat &n)
+{
+    Assert(n.Rows() == m.Rows(), "(Mat::-) matrix rows don't match");
+
+    Mat result(m.Rows(), m.Cols());
+    Int     i;
+
+    for (i = 0; i < m.Rows(); i++)
+        result[i] = m[i] - n[i];
+
+    return(result);
+}
+
+Mat operator - (const Mat &m)
+{
+    Mat result(m.Rows(), m.Cols());
+    Int     i;
+
+    for (i = 0; i < m.Rows(); i++)
+        result[i] = -m[i];
+
+    return(result);
+}
+
+Mat operator * (const Mat &m, const Mat &n)
+{
+    Assert(m.Cols() == n.Rows(), "(Mat::*m) matrix cols don't match");
+
+    Mat result(m.Rows(), n.Cols());
+    Int     i;
+
+    for (i = 0; i < m.Rows(); i++)
+        result[i] = m[i] * n;
+
+    return(result);
+}
+
+Vec operator * (const Mat &m, const Vec &v)
+{
+    Assert(m.Cols() == v.Elts(), "(Mat::*v) matrix and vector sizes don't match");
+
+    Int     i;
+    Vec result(m.Rows());
+
+    for (i = 0; i < m.Rows(); i++)
+        result[i] = dot(v, m[i]);
+
+    return(result);
+}
+
+Mat operator * (const Mat &m, Real s)
+{
+    Int     i;
+    Mat result(m.Rows(), m.Cols());
+
+    for (i = 0; i < m.Rows(); i++)
+        result[i] = m[i] * s;
+
+    return(result);
+}
+
+Mat operator / (const Mat &m, Real s)
+{
+    Int     i;
+    Mat result(m.Rows(), m.Cols());
+
+    for (i = 0; i < m.Rows(); i++)
+        result[i] = m[i] / s;
+
+    return(result);
+}
+
+
+// --- Mat Mat-Vec Functions --------------------------------------------------
+
+
+Vec operator * (const Vec &v, const Mat &m)         // v * m
+{
+    Assert(v.Elts() == m.Rows(), "(Mat::v*m) vector/matrix sizes don't match");
+
+    Vec     result(m.Cols(), vl_zero);
+    Int     i;
+
+    for (i = 0; i < m.Rows(); i++)
+        result += m[i] * v[i];
+
+    return(result);
+}
+
+
+// --- Mat Special Functions --------------------------------------------------
+
+
+Mat trans(const Mat &m)
+{
+    Int     i,j;
+    Mat result(m.Cols(), m.Rows());
+
+    for (i = 0; i < m.Rows(); i++)
+        for (j = 0; j < m.Cols(); j++)
+            result.Elt(j,i) = m.Elt(i,j);
+
+    return(result);
+}
+
+Real trace(const Mat &m)
+{
+    Int     i;
+    Real    result = vl_0;
+
+    for (i = 0; i < m.Rows(); i++)
+        result += m.Elt(i,i);
+
+    return(result);
+}
+
+Mat &Mat::Clamp(Real fuzz)
+//  clamps all values of the matrix with a magnitude
+//  smaller than fuzz to zero.
+{
+    Int i;
+
+    for (i = 0; i < Rows(); i++)
+        SELF[i].Clamp(fuzz);
+
+    return(SELF);
+}
+
+Mat &Mat::Clamp()
+{
+    return(Clamp(1e-7));
+}
+
+Mat clamped(const Mat &m, Real fuzz)
+//  clamps all values of the matrix with a magnitude
+//  smaller than fuzz to zero.
+{
+    Mat result(m);
+
+    return(result.Clamp(fuzz));
+}
+
+Mat clamped(const Mat &m)
+{
+    return(clamped(m, 1e-7));
+}
+
+Mat oprod(const Vec &a, const Vec &b)
+// returns outerproduct of a and b:  a * trans(b)
+{
+    Mat result;
+    Int     i;
+
+    result.SetSize(a.Elts(), b.Elts());
+    for (i = 0; i < a.Elts(); i++)
+        result[i] = a[i] * b;
+
+    return(result);
+}
+
+
+// --- Mat Input & Output -----------------------------------------------------
+
+
+ostream &operator << (ostream &s, const Mat &m)
+{
+    Int i, w = s.width();
+
+    s << '[';
+    for (i = 0; i < m.Rows() - 1; i++)
+        s << setw(w) << m[i] << endl;
+    s << setw(w) << m[i] << ']' << endl;
+    return(s);
+}
+
+inline Void CopyPartialMat(const Mat &m, Mat &n, Int numRows)
+{
+    for (Int i = 0; i < numRows; i++)
+        n[i] = m[i];
+}
+
+istream &operator >> (istream &s, Mat &m)
+{
+    Int     size = 1;
+    Char    c;
+    Mat     inMat;
+
+    //  Expected format: [row0 row1 row2 ...]
+
+    while (isspace(s.peek()))           //  chomp white space
+        s.get(c);
+
+    if (s.peek() == '[')
+    {
+        Vec     row;
+
+        s.get(c);
+
+        s >> row;
+        inMat.SetSize(2 * row.Elts(), row.Elts());
+        inMat[0] = row;
+
+        while (isspace(s.peek()))       //  chomp white space
+            s.get(c);
+
+        while (s.peek() != ']')         //  resize if needed
+        {
+            if (size == inMat.Rows())
+            {
+                Mat     holdMat(inMat);
+
+                inMat.SetSize(size * 2, inMat.Cols());
+                CopyPartialMat(holdMat, inMat, size);
+            }
+
+            s >> row;           //  read a row
+            inMat[size++] = row;
+
+            if (!s)
+            {
+                _svlWarning("Couldn't read matrix row");
+                return(s);
+            }
+
+            while (isspace(s.peek()))   //  chomp white space
+                s.get(c);
+        }
+        s.get(c);
+    }
+    else
+    {
+        s.clear(ios::failbit);
+        _svlWarning("Error: Expected '[' while reading matrix");
+        return(s);
+    }
+
+    m.SetSize(size, inMat.Cols());
+    CopyPartialMat(inMat, m, size);
+
+    return(s);
+}
+
+// --- Matrix Inversion -------------------------------------------------------
+
+#if !defined(CL_CHECKING) && !defined(VL_CHECKING)
+// we #define away pAssertEps if it is not used, to avoid
+// compiler warnings.
+#define pAssertEps
+#endif
+
+Mat inv(const Mat &m, Real *determinant, Real pAssertEps)
+// matrix inversion using Gaussian pivoting
+{
+    Assert(m.IsSquare(), "(inv) Matrix not square");
+
+    Int             i, j, k;
+    Int             n = m.Rows();
+    Real            t, pivot, det;
+    Real            max;
+    Mat         A(m);
+    Mat         B(n, n, vl_I);
+
+    // ---------- Forward elimination ---------- ------------------------------
+
+    det = vl_1;
+
+    for (i = 0; i < n; i++)             // Eliminate in column i, below diag
+    {
+        max = -1.0;
+
+        for (k = i; k < n; k++)         // Find a pivot for column i
+            if (len(A[k][i]) > max)
+            {
+                max = len(A[k][i]);
+                j = k;
+            }
+
+        Assert(max > pAssertEps, "(inv) Matrix not invertible");
+
+        if (j != i)                     // Swap rows i and j
+        {
+            for (k = i; k < n; k++)
+                Swap(A.Elt(i, k), A.Elt(j, k));
+            for (k = 0; k < n; k++)
+                Swap(B.Elt(i, k), B.Elt(j, k));
+
+            det = -det;
+        }
+
+        pivot = A.Elt(i, i);
+        Assert(abs(pivot) > pAssertEps, "(inv) Matrix not invertible");
+        det *= pivot;
+
+        for (k = i + 1; k < n; k++)     // Only do elements to the right of the pivot
+            A.Elt(i, k) /= pivot;
+
+        for (k = 0; k < n; k++)
+            B.Elt(i, k) /= pivot;
+
+        // We know that A(i, i) will be set to 1, so don't bother to do it
+
+        for (j = i + 1; j < n; j++)
+        {                               // Eliminate in rows below i
+            t = A.Elt(j, i);            // We're gonna zero this guy
+            for (k = i + 1; k < n; k++) // Subtract scaled row i from row j
+                A.Elt(j, k) -= A.Elt(i, k) * t; // (Ignore k <= i, we know they're 0)
+            for (k = 0; k < n; k++)
+                B.Elt(j, k) -= B.Elt(i, k) * t;
+        }
+    }
+
+    // ---------- Backward elimination ---------- -----------------------------
+
+    for (i = n - 1; i > 0; i--)         // Eliminate in column i, above diag
+    {
+        for (j = 0; j < i; j++)         // Eliminate in rows above i
+        {
+            t = A.Elt(j, i);            // We're gonna zero this guy
+            for (k = 0; k < n; k++)     // Subtract scaled row i from row j
+                B.Elt(j, k) -= B.Elt(i, k) * t;
+        }
+    }
+    if (determinant)
+        *determinant = det;
+    return(B);
+}
+
diff --git a/svl/src/Mat2.cpp b/svl/src/Mat2.cpp
new file mode 100644
index 00000000..811df185
--- /dev/null
+++ b/svl/src/Mat2.cpp
@@ -0,0 +1,134 @@
+/*
+    File:           Mat2.cpp
+
+    Function:       Implements Mat2.h
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+*/
+
+#include "svl/Mat2.h"
+#include <cctype>
+#include <iomanip>
+
+
+Bool Mat2::operator == (const Mat2 &m) const
+{
+    return(row[0] == m[0] && row[1] == m[1]);
+}
+
+Bool Mat2::operator != (const Mat2 &m) const
+{
+    return(row[0] != m[0] || row[1] != m[1]);
+}
+
+
+Real det(const Mat2 &m)
+{
+    return(dot(m[0], cross(m[1])));
+}
+
+Mat2 inv(const Mat2 &m)
+{
+    Real            mDet;
+    Mat2            result;
+
+    result[0][0] =  m[1][1]; result[0][1] = -m[0][1];
+    result[1][0] = -m[1][0]; result[1][1] =  m[0][0];
+
+    mDet = m[0][0] * result[0][0] + m[0][1] * result[1][0];
+    Assert(mDet != 0.0, "(Mat2::inv) matrix is non-singular");
+    result /= mDet;
+
+    return(result);
+}
+
+Mat2 oprod(const Vec2 &a, const Vec2 &b)
+// returns outerproduct of a and b:  a * trans(b)
+{
+    Mat2    result;
+
+    result[0] = a[0] * b;
+    result[1] = a[1] * b;
+
+    return(result);
+}
+
+ostream &operator << (ostream &s, const Mat2 &m)
+{
+    Int w = s.width();
+
+    return(s << '[' << m[0] << endl << setw(w) << m[1] << ']' << endl);
+}
+
+istream &operator >> (istream &s, Mat2 &m)
+{
+    Mat2    result;
+    Char    c;
+
+    // Expected format: [[1 2] [3 4]]
+    // Each vector is a row of the row matrix.
+
+    while (s >> c && isspace(c))        // ignore leading white space
+        ;
+
+    if (c == '[')
+    {
+        s >> result[0] >> result[1];
+
+        if (!s)
+        {
+            cerr << "Expected number while reading matrix\n";
+            return(s);
+        }
+
+        while (s >> c && isspace(c))
+            ;
+
+        if (c != ']')
+        {
+            s.clear(ios::failbit);
+            cerr << "Expected ']' while reading matrix\n";
+            return(s);
+        }
+    }
+    else
+    {
+        s.clear(ios::failbit);
+        cerr << "Expected '[' while reading matrix\n";
+        return(s);
+    }
+
+    m = result;
+    return(s);
+}
+
+
+Mat2 &Mat2::MakeRot(Real theta)
+{
+    Real    c, s;
+
+    SetReal(s, sin(theta));
+    SetReal(c, cos(theta));
+
+#ifdef VL_ROW_ORIENT
+    row[0][0] =  c; row[0][1] = s;
+    row[1][0] = -s; row[1][1] = c;
+#else
+    row[0][0] = c; row[0][1] = -s;
+    row[1][0] = s; row[1][1] =  c;
+#endif
+
+    return(SELF);
+}
+
+Mat2 &Mat2::MakeScale(const Vec2 &s)
+{
+    row[0][0] = s[0]; row[0][1] = vl_0;
+    row[1][0] = vl_0; row[1][1] = s[1];
+
+    return(SELF);
+}
+
diff --git a/svl/src/Mat3.cpp b/svl/src/Mat3.cpp
new file mode 100644
index 00000000..6701b803
--- /dev/null
+++ b/svl/src/Mat3.cpp
@@ -0,0 +1,428 @@
+/*
+    File:           Mat3.cpp
+
+    Function:       Implements Mat3.h
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+*/
+
+#include "svl/Mat3.h"
+#include "svl/Vec4.h"
+#include <cctype>
+#include <iomanip>
+
+
+Mat3::Mat3(Real a, Real b, Real c,
+           Real d, Real e, Real f,
+           Real g, Real h, Real i)
+{
+    row[0][0] = a;  row[0][1] = b;  row[0][2] = c;
+    row[1][0] = d;  row[1][1] = e;  row[1][2] = f;
+    row[2][0] = g;  row[2][1] = h;  row[2][2] = i;
+}
+
+Mat3::Mat3(const Mat3 &m)
+{
+    row[0] = m[0];
+    row[1] = m[1];
+    row[2] = m[2];
+}
+
+Mat3 &Mat3::operator = (const Mat3 &m)
+{
+    row[0] = m[0];
+    row[1] = m[1];
+    row[2] = m[2];
+
+    return(SELF);
+}
+
+Mat3 &Mat3::operator += (const Mat3 &m)
+{
+    row[0] += m[0];
+    row[1] += m[1];
+    row[2] += m[2];
+
+    return(SELF);
+}
+
+Mat3 &Mat3::operator -= (const Mat3 &m)
+{
+    row[0] -= m[0];
+    row[1] -= m[1];
+    row[2] -= m[2];
+
+    return(SELF);
+}
+
+Mat3 &Mat3::operator *= (const Mat3 &m)
+{
+    SELF = SELF * m;
+
+    return(SELF);
+}
+
+Mat3 &Mat3::operator *= (Real s)
+{
+    row[0] *= s;
+    row[1] *= s;
+    row[2] *= s;
+
+    return(SELF);
+}
+
+Mat3 &Mat3::operator /= (Real s)
+{
+    row[0] /= s;
+    row[1] /= s;
+    row[2] /= s;
+
+    return(SELF);
+}
+
+
+Bool Mat3::operator == (const Mat3 &m) const
+{
+    return(row[0] == m[0] && row[1] == m[1] && row[2] == m[2]);
+}
+
+Bool Mat3::operator != (const Mat3 &m) const
+{
+    return(row[0] != m[0] || row[1] != m[1] || row[2] != m[2]);
+}
+
+
+Mat3 Mat3::operator + (const Mat3 &m) const
+{
+    Mat3 result;
+
+    result[0] = row[0] + m[0];
+    result[1] = row[1] + m[1];
+    result[2] = row[2] + m[2];
+
+    return(result);
+}
+
+Mat3 Mat3::operator - (const Mat3 &m) const
+{
+    Mat3 result;
+
+    result[0] = row[0] - m[0];
+    result[1] = row[1] - m[1];
+    result[2] = row[2] - m[2];
+
+    return(result);
+}
+
+Mat3 Mat3::operator - () const
+{
+    Mat3 result;
+
+    result[0] = -row[0];
+    result[1] = -row[1];
+    result[2] = -row[2];
+
+    return(result);
+}
+
+Mat3 Mat3::operator * (const Mat3 &m) const
+{
+#define N(x,y) row[x][y]
+#define M(x,y) m[x][y]
+#define R(x,y) result[x][y]
+
+    Mat3 result;
+
+    R(0,0) = N(0,0) * M(0,0) + N(0,1) * M(1,0) + N(0,2) * M(2,0);
+    R(0,1) = N(0,0) * M(0,1) + N(0,1) * M(1,1) + N(0,2) * M(2,1);
+    R(0,2) = N(0,0) * M(0,2) + N(0,1) * M(1,2) + N(0,2) * M(2,2);
+
+    R(1,0) = N(1,0) * M(0,0) + N(1,1) * M(1,0) + N(1,2) * M(2,0);
+    R(1,1) = N(1,0) * M(0,1) + N(1,1) * M(1,1) + N(1,2) * M(2,1);
+    R(1,2) = N(1,0) * M(0,2) + N(1,1) * M(1,2) + N(1,2) * M(2,2);
+
+    R(2,0) = N(2,0) * M(0,0) + N(2,1) * M(1,0) + N(2,2) * M(2,0);
+    R(2,1) = N(2,0) * M(0,1) + N(2,1) * M(1,1) + N(2,2) * M(2,1);
+    R(2,2) = N(2,0) * M(0,2) + N(2,1) * M(1,2) + N(2,2) * M(2,2);
+
+    return(result);
+
+#undef N
+#undef M
+#undef R
+}
+
+Mat3 Mat3::operator * (Real s) const
+{
+    Mat3 result;
+
+    result[0] = row[0] * s;
+    result[1] = row[1] * s;
+    result[2] = row[2] * s;
+
+    return(result);
+}
+
+Mat3 Mat3::operator / (Real s) const
+{
+    Mat3 result;
+
+    result[0] = row[0] / s;
+    result[1] = row[1] / s;
+    result[2] = row[2] / s;
+
+    return(result);
+}
+
+Mat3 trans(const Mat3 &m)
+{
+#define M(x,y) m[x][y]
+#define R(x,y) result[x][y]
+
+    Mat3 result;
+
+    R(0,0) = M(0,0); R(0,1) = M(1,0); R(0,2) = M(2,0);
+    R(1,0) = M(0,1); R(1,1) = M(1,1); R(1,2) = M(2,1);
+    R(2,0) = M(0,2); R(2,1) = M(1,2); R(2,2) = M(2,2);
+
+    return(result);
+
+#undef M
+#undef R
+}
+
+Mat3 adj(const Mat3 &m)
+{
+    Mat3    result;
+
+    result[0] = cross(m[1], m[2]);
+    result[1] = cross(m[2], m[0]);
+    result[2] = cross(m[0], m[1]);
+
+    return(result);
+}
+
+
+Real trace(const Mat3 &m)
+{
+    return(m[0][0] + m[1][1] + m[2][2]);
+}
+
+Real det(const Mat3 &m)
+{
+    return(dot(m[0], cross(m[1], m[2])));
+}
+
+Mat3 inv(const Mat3 &m)
+{
+    Real    mDet;
+    Mat3    adjoint;
+    Mat3    result;
+
+    adjoint = adj(m);
+    mDet = dot(adjoint[0], m[0]);
+
+    Assert(mDet != 0, "(Mat3::inv) matrix is non-singular");
+
+    result = trans(adjoint);
+    result /= mDet;
+
+    return(result);
+}
+
+Mat3 oprod(const Vec3 &a, const Vec3 &b)
+// returns outerproduct of a and b:  a * trans(b)
+{
+    Mat3    result;
+
+    result[0] = a[0] * b;
+    result[1] = a[1] * b;
+    result[2] = a[2] * b;
+
+    return(result);
+}
+
+Void Mat3::MakeZero()
+{
+    Int     i;
+
+    for (i = 0; i < 9; i++)
+        ((Real*) row)[i] = vl_zero;
+}
+
+Void Mat3::MakeDiag(Real k)
+{
+    Int     i, j;
+
+    for (i = 0; i < 3; i++)
+        for (j = 0; j < 3; j++)
+            if (i == j)
+                row[i][j] = k;
+            else
+                row[i][j] = vl_zero;
+}
+
+Void Mat3::MakeBlock(Real k)
+{
+    Int     i;
+
+    for (i = 0; i < 9; i++)
+        ((Real *) row)[i] = k;
+}
+
+ostream &operator << (ostream &s, const Mat3 &m)
+{
+    Int     w = s.width();
+
+    return(s << '[' << m[0] << endl << setw(w) << m[1] << endl << setw(w)
+           << m[2] << ']' << endl);
+}
+
+istream &operator >> (istream &s, Mat3 &m)
+{
+    Mat3    result;
+    Char    c;
+
+    // Expected format: [[1 2 3] [4 5 6] [7 8 9]]
+    // Each vector is a column of the matrix.
+
+    while (s >> c && isspace(c))        // ignore leading white space
+        ;
+
+    if (c == '[')
+    {
+        s >> result[0] >> result[1] >> result[2];
+
+        if (!s)
+        {
+            cerr << "Expected number while reading matrix\n";
+            return(s);
+        }
+
+        while (s >> c && isspace(c))
+            ;
+
+        if (c != ']')
+        {
+            s.clear(ios::failbit);
+            cerr << "Expected ']' while reading matrix\n";
+            return(s);
+        }
+    }
+    else
+    {
+        s.clear(ios::failbit);
+        cerr << "Expected '[' while reading matrix\n";
+        return(s);
+    }
+
+    m = result;
+    return(s);
+}
+
+
+Mat3 &Mat3::MakeRot(const Vec4 &q)
+{
+    Real    i2 =  2 * q[0],
+            j2 =  2 * q[1],
+            k2 =  2 * q[2],
+            ij = i2 * q[1],
+            ik = i2 * q[2],
+            jk = j2 * q[2],
+            ri = i2 * q[3],
+            rj = j2 * q[3],
+            rk = k2 * q[3];
+
+    i2 *= q[0];
+    j2 *= q[1];
+    k2 *= q[2];
+
+#if VL_ROW_ORIENT
+    row[0][0] = 1 - j2 - k2;  row[0][1] = ij + rk    ;  row[0][2] = ik - rj;
+    row[1][0] = ij - rk    ;  row[1][1] = 1 - i2 - k2;  row[1][2] = jk + ri;
+    row[2][0] = ik + rj    ;  row[2][1] = jk - ri    ;  row[2][2] = 1 - i2 - j2;
+#else
+    row[0][0] = 1 - j2 - k2;  row[0][1] = ij - rk    ;  row[0][2] = ik + rj;
+    row[1][0] = ij + rk    ;  row[1][1] = 1 - i2 - k2;  row[1][2] = jk - ri;
+    row[2][0] = ik - rj    ;  row[2][1] = jk + ri    ;  row[2][2] = 1 - i2 - j2;
+#endif
+
+    return(SELF);
+}
+
+Mat3 &Mat3::MakeRot(const Vec3 &axis, Real theta)
+{
+    Real            s;
+    Vec4            q;
+
+    theta /= 2.0;
+    s = sin(theta);
+
+    q[0] = s * axis[0];
+    q[1] = s * axis[1];
+    q[2] = s * axis[2];
+    q[3] = cos(theta);
+
+    MakeRot(q);
+
+    return(SELF);
+}
+
+Mat3 &Mat3::MakeScale(const Vec3 &s)
+{
+    MakeZero();
+
+    row[0][0] = s[0];
+    row[1][1] = s[1];
+    row[2][2] = s[2];
+
+    return(SELF);
+}
+
+Mat3 &Mat3::MakeHRot(Real theta)
+{
+    Real    c, s;
+
+    MakeDiag();
+
+    s = sin(theta);
+    c = cos(theta);
+
+#ifdef VL_ROW_ORIENT
+    row[0][0] =  c; row[0][1] =  s;
+    row[1][0] = -s; row[1][1] =  c;
+#else
+    row[0][0] =  c; row[0][1] = -s;
+    row[1][0] =  s; row[1][1] =  c;
+#endif
+
+    return(SELF);
+}
+
+Mat3 &Mat3::MakeHScale(const Vec2 &s)
+{
+    MakeDiag();
+
+    row[0][0] = s[0];
+    row[1][1] = s[1];
+
+    return(SELF);
+}
+
+Mat3 &Mat3::MakeHTrans(const Vec2 &t)
+{
+    MakeDiag();
+
+#ifdef VL_ROW_ORIENT
+    row[2][0] = t[0];
+    row[2][1] = t[1];
+#else
+    row[0][2] = t[0];
+    row[1][2] = t[1];
+#endif
+
+    return(SELF);
+}
diff --git a/svl/src/Mat4.cpp b/svl/src/Mat4.cpp
new file mode 100644
index 00000000..9d8de3c9
--- /dev/null
+++ b/svl/src/Mat4.cpp
@@ -0,0 +1,489 @@
+/*
+    File:           Mat4.cpp
+
+    Function:       Implements Mat4.h
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+*/
+
+#include "svl/Mat4.h"
+#include <cctype>
+#include <iomanip>
+
+
+Mat4::Mat4(Real a, Real b, Real c, Real d,
+           Real e, Real f, Real g, Real h,
+           Real i, Real j, Real k, Real l,
+           Real m, Real n, Real o, Real p)
+{
+    row[0][0] = a;  row[0][1] = b;  row[0][2] = c;  row[0][3] = d;
+    row[1][0] = e;  row[1][1] = f;  row[1][2] = g;  row[1][3] = h;
+    row[2][0] = i;  row[2][1] = j;  row[2][2] = k;  row[2][3] = l;
+    row[3][0] = m;  row[3][1] = n;  row[3][2] = o;  row[3][3] = p;
+}
+
+Mat4::Mat4(const Mat4 &m)
+{
+    row[0] = m[0];
+    row[1] = m[1];
+    row[2] = m[2];
+    row[3] = m[3];
+}
+
+
+Mat4 &Mat4::operator = (const Mat4 &m)
+{
+    row[0] = m[0];
+    row[1] = m[1];
+    row[2] = m[2];
+    row[3] = m[3];
+
+    return(SELF);
+}
+
+Mat4 &Mat4::operator += (const Mat4 &m)
+{
+    row[0] += m[0];
+    row[1] += m[1];
+    row[2] += m[2];
+    row[3] += m[3];
+
+    return(SELF);
+}
+
+Mat4 &Mat4::operator -= (const Mat4 &m)
+{
+    row[0] -= m[0];
+    row[1] -= m[1];
+    row[2] -= m[2];
+    row[3] -= m[3];
+
+    return(SELF);
+}
+
+Mat4 &Mat4::operator *= (const Mat4 &m)
+{
+    SELF = SELF * m;
+
+    return(SELF);
+}
+
+Mat4 &Mat4::operator *= (Real s)
+{
+    row[0] *= s;
+    row[1] *= s;
+    row[2] *= s;
+    row[3] *= s;
+
+    return(SELF);
+}
+
+Mat4 &Mat4::operator /= (Real s)
+{
+    row[0] /= s;
+    row[1] /= s;
+    row[2] /= s;
+    row[3] /= s;
+
+    return(SELF);
+}
+
+
+Bool Mat4::operator == (const Mat4 &m) const
+{
+    return(row[0] == m[0] && row[1] == m[1] && row[2] == m[2] && row[3] == m[3]);
+}
+
+Bool Mat4::operator != (const Mat4 &m) const
+{
+    return(row[0] != m[0] || row[1] != m[1] || row[2] != m[2] || row[3] != m[3]);
+}
+
+
+Mat4 Mat4::operator + (const Mat4 &m) const
+{
+    Mat4 result;
+
+    result[0] = row[0] + m[0];
+    result[1] = row[1] + m[1];
+    result[2] = row[2] + m[2];
+    result[3] = row[3] + m[3];
+
+    return(result);
+}
+
+Mat4 Mat4::operator - (const Mat4 &m) const
+{
+    Mat4 result;
+
+    result[0] = row[0] - m[0];
+    result[1] = row[1] - m[1];
+    result[2] = row[2] - m[2];
+    result[3] = row[3] - m[3];
+
+    return(result);
+}
+
+Mat4 Mat4::operator - () const
+{
+    Mat4 result;
+
+    result[0] = -row[0];
+    result[1] = -row[1];
+    result[2] = -row[2];
+    result[3] = -row[3];
+
+    return(result);
+}
+
+Mat4 Mat4::operator * (const Mat4 &m) const
+{
+#define N(x,y) row[x][y]
+#define M(x,y) m[x][y]
+#define R(x,y) result[x][y]
+
+    Mat4 result;
+
+    R(0,0) = N(0,0) * M(0,0) + N(0,1) * M(1,0) + N(0,2) * M(2,0) + N(0,3) * M(3,0);
+    R(0,1) = N(0,0) * M(0,1) + N(0,1) * M(1,1) + N(0,2) * M(2,1) + N(0,3) * M(3,1);
+    R(0,2) = N(0,0) * M(0,2) + N(0,1) * M(1,2) + N(0,2) * M(2,2) + N(0,3) * M(3,2);
+    R(0,3) = N(0,0) * M(0,3) + N(0,1) * M(1,3) + N(0,2) * M(2,3) + N(0,3) * M(3,3);
+
+    R(1,0) = N(1,0) * M(0,0) + N(1,1) * M(1,0) + N(1,2) * M(2,0) + N(1,3) * M(3,0);
+    R(1,1) = N(1,0) * M(0,1) + N(1,1) * M(1,1) + N(1,2) * M(2,1) + N(1,3) * M(3,1);
+    R(1,2) = N(1,0) * M(0,2) + N(1,1) * M(1,2) + N(1,2) * M(2,2) + N(1,3) * M(3,2);
+    R(1,3) = N(1,0) * M(0,3) + N(1,1) * M(1,3) + N(1,2) * M(2,3) + N(1,3) * M(3,3);
+
+    R(2,0) = N(2,0) * M(0,0) + N(2,1) * M(1,0) + N(2,2) * M(2,0) + N(2,3) * M(3,0);
+    R(2,1) = N(2,0) * M(0,1) + N(2,1) * M(1,1) + N(2,2) * M(2,1) + N(2,3) * M(3,1);
+    R(2,2) = N(2,0) * M(0,2) + N(2,1) * M(1,2) + N(2,2) * M(2,2) + N(2,3) * M(3,2);
+    R(2,3) = N(2,0) * M(0,3) + N(2,1) * M(1,3) + N(2,2) * M(2,3) + N(2,3) * M(3,3);
+
+    R(3,0) = N(3,0) * M(0,0) + N(3,1) * M(1,0) + N(3,2) * M(2,0) + N(3,3) * M(3,0);
+    R(3,1) = N(3,0) * M(0,1) + N(3,1) * M(1,1) + N(3,2) * M(2,1) + N(3,3) * M(3,1);
+    R(3,2) = N(3,0) * M(0,2) + N(3,1) * M(1,2) + N(3,2) * M(2,2) + N(3,3) * M(3,2);
+    R(3,3) = N(3,0) * M(0,3) + N(3,1) * M(1,3) + N(3,2) * M(2,3) + N(3,3) * M(3,3);
+
+    return(result);
+
+#undef N
+#undef M
+#undef R
+}
+
+Mat4 Mat4::operator * (Real s) const
+{
+    Mat4 result;
+
+    result[0] = row[0] * s;
+    result[1] = row[1] * s;
+    result[2] = row[2] * s;
+    result[3] = row[3] * s;
+
+    return(result);
+}
+
+Mat4 Mat4::operator / (Real s) const
+{
+    Mat4 result;
+
+    result[0] = row[0] / s;
+    result[1] = row[1] / s;
+    result[2] = row[2] / s;
+    result[3] = row[3] / s;
+
+    return(result);
+}
+
+Vec4 operator * (const Mat4 &m, const Vec4 &v)          // m * v
+{
+    Vec4 result;
+
+    result[0] = v[0] * m[0][0] + v[1] * m[0][1] + v[2] * m[0][2] + v[3] * m[0][3];
+    result[1] = v[0] * m[1][0] + v[1] * m[1][1] + v[2] * m[1][2] + v[3] * m[1][3];
+    result[2] = v[0] * m[2][0] + v[1] * m[2][1] + v[2] * m[2][2] + v[3] * m[2][3];
+    result[3] = v[0] * m[3][0] + v[1] * m[3][1] + v[2] * m[3][2] + v[3] * m[3][3];
+
+    return(result);
+}
+
+Vec4 operator * (const Vec4 &v, const Mat4 &m)          // v * m
+{
+    Vec4 result;
+
+    result[0] = v[0] * m[0][0] + v[1] * m[1][0] + v[2] * m[2][0] + v[3] * m[3][0];
+    result[1] = v[0] * m[0][1] + v[1] * m[1][1] + v[2] * m[2][1] + v[3] * m[3][1];
+    result[2] = v[0] * m[0][2] + v[1] * m[1][2] + v[2] * m[2][2] + v[3] * m[3][2];
+    result[3] = v[0] * m[0][3] + v[1] * m[1][3] + v[2] * m[2][3] + v[3] * m[3][3];
+
+    return(result);
+}
+
+Vec4 &operator *= (Vec4 &v, const Mat4 &m)              // v *= m
+{
+    Real    t0, t1, t2;
+
+    t0   = v[0] * m[0][0] + v[1] * m[1][0] + v[2] * m[2][0] + v[3] * m[3][0];
+    t1   = v[0] * m[0][1] + v[1] * m[1][1] + v[2] * m[2][1] + v[3] * m[3][1];
+    t2   = v[0] * m[0][2] + v[1] * m[1][2] + v[2] * m[2][2] + v[3] * m[3][2];
+    v[3] = v[0] * m[0][3] + v[1] * m[1][3] + v[2] * m[2][3] + v[3] * m[3][3];
+    v[0] = t0;
+    v[1] = t1;
+    v[2] = t2;
+
+    return(v);
+}
+
+Mat4 trans(const Mat4 &m)
+{
+#define M(x,y) m[x][y]
+#define R(x,y) result[x][y]
+
+    Mat4 result;
+
+    R(0,0) = M(0,0); R(0,1) = M(1,0); R(0,2) = M(2,0); R(0,3) = M(3,0);
+    R(1,0) = M(0,1); R(1,1) = M(1,1); R(1,2) = M(2,1); R(1,3) = M(3,1);
+    R(2,0) = M(0,2); R(2,1) = M(1,2); R(2,2) = M(2,2); R(2,3) = M(3,2);
+    R(3,0) = M(0,3); R(3,1) = M(1,3); R(3,2) = M(2,3); R(3,3) = M(3,3);
+
+    return(result);
+
+#undef M
+#undef R
+}
+
+Mat4 adj(const Mat4 &m)
+{
+    Mat4    result;
+
+    result[0] =  cross(m[1], m[2], m[3]);
+    result[1] = -cross(m[0], m[2], m[3]);
+    result[2] =  cross(m[0], m[1], m[3]);
+    result[3] = -cross(m[0], m[1], m[2]);
+
+    return(result);
+}
+
+Real trace(const Mat4 &m)
+{
+    return(m[0][0] + m[1][1] + m[2][2] + m[3][3]);
+}
+
+Real det(const Mat4 &m)
+{
+    return(dot(m[0], cross(m[1], m[2], m[3])));
+}
+
+Mat4 inv(const Mat4 &m)
+{
+    Real    mDet;
+    Mat4    adjoint;
+    Mat4    result;
+
+    adjoint = adj(m);               // Find the adjoint
+    mDet = dot(adjoint[0], m[0]);
+
+    Assert(mDet != 0, "(Mat4::inv) matrix is non-singular");
+
+    result = trans(adjoint);
+    result /= mDet;
+
+    return(result);
+}
+
+Mat4 oprod(const Vec4 &a, const Vec4 &b)
+// returns outerproduct of a and b:  a * trans(b)
+{
+    Mat4    result;
+
+    result[0] = a[0] * b;
+    result[1] = a[1] * b;
+    result[2] = a[2] * b;
+    result[3] = a[3] * b;
+
+    return(result);
+}
+
+Void Mat4::MakeZero()
+{
+    Int     i;
+
+    for (i = 0; i < 16; i++)
+        ((Real *) row)[i] = vl_zero;
+}
+
+Void Mat4::MakeDiag(Real k)
+{
+    Int     i, j;
+
+    for (i = 0; i < 4; i++)
+        for (j = 0; j < 4; j++)
+            if (i == j)
+                row[i][j] = k;
+            else
+                row[i][j] = vl_zero;
+}
+
+Void Mat4::MakeBlock(Real k)
+{
+    Int     i;
+
+    for (i = 0; i < 16; i++)
+        ((Real *) row)[i] = k;
+}
+
+ostream &operator << (ostream &s, const Mat4 &m)
+{
+    Int w = s.width();
+
+    return(s << '[' << m[0] << endl << setw(w) << m[1] << endl
+         << setw(w) << m[2] << endl << setw(w) << m[3] << ']' << endl);
+}
+
+istream &operator >> (istream &s, Mat4 &m)
+{
+    Mat4    result;
+    Char    c;
+
+    // Expected format: [[1 2 3] [4 5 6] [7 8 9]]
+    // Each vector is a column of the matrix.
+
+    while (s >> c && isspace(c))        // ignore leading white space
+        ;
+
+    if (c == '[')
+    {
+        s >> result[0] >> result[1] >> result[2] >> result[3];
+
+        if (!s)
+        {
+            cerr << "Expected number while reading matrix\n";
+            return(s);
+        }
+
+        while (s >> c && isspace(c))
+            ;
+
+        if (c != ']')
+        {
+            s.clear(ios::failbit);
+            cerr << "Expected ']' while reading matrix\n";
+            return(s);
+        }
+    }
+    else
+    {
+        s.clear(ios::failbit);
+        cerr << "Expected '[' while reading matrix\n";
+        return(s);
+    }
+
+    m = result;
+    return(s);
+}
+
+
+Mat4& Mat4::MakeHRot(const Vec4 &q)
+{
+    Real    i2 =  2 * q[0],
+            j2 =  2 * q[1],
+            k2 =  2 * q[2],
+            ij = i2 * q[1],
+            ik = i2 * q[2],
+            jk = j2 * q[2],
+            ri = i2 * q[3],
+            rj = j2 * q[3],
+            rk = k2 * q[3];
+
+    MakeDiag();
+
+    i2 *= q[0];
+    j2 *= q[1];
+    k2 *= q[2];
+
+#if VL_ROW_ORIENT
+    row[0][0] = 1 - j2 - k2;  row[0][1] = ij + rk   ;  row[0][2] = ik - rj;
+    row[1][0] = ij - rk    ;  row[1][1] = 1 - i2- k2;  row[1][2] = jk + ri;
+    row[2][0] = ik + rj    ;  row[2][1] = jk - ri   ;  row[2][2] = 1 - i2 - j2;
+#else
+    row[0][0] = 1 - j2 - k2;  row[0][1] = ij - rk   ;  row[0][2] = ik + rj;
+    row[1][0] = ij + rk    ;  row[1][1] = 1 - i2- k2;  row[1][2] = jk - ri;
+    row[2][0] = ik - rj    ;  row[2][1] = jk + ri   ;  row[2][2] = 1 - i2 - j2;
+#endif
+
+    return(SELF);
+}
+
+Mat4& Mat4::MakeHRot(const Vec3 &axis, Real theta)
+{
+    Real        s;
+    Vec4        q;
+
+    theta /= 2.0;
+    s = sin(theta);
+
+    q[0] = s * axis[0];
+    q[1] = s * axis[1];
+    q[2] = s * axis[2];
+    q[3] = cos(theta);
+
+    MakeHRot(q);
+
+    return(SELF);
+}
+
+Mat4& Mat4::MakeHScale(const Vec3 &s)
+{
+    MakeDiag();
+
+    row[0][0] = s[0];
+    row[1][1] = s[1];
+    row[2][2] = s[2];
+
+    return(SELF);
+}
+
+Mat4& Mat4::MakeHTrans(const Vec3 &t)
+{
+    MakeDiag();
+
+#ifdef VL_ROW_ORIENT
+    row[3][0] = t[0];
+    row[3][1] = t[1];
+    row[3][2] = t[2];
+#else
+    row[0][3] = t[0];
+    row[1][3] = t[1];
+    row[2][3] = t[2];
+#endif
+
+    return(SELF);
+}
+
+Mat4& Mat4::Transpose()
+{
+    row[0][1] = row[1][0]; row[0][2] = row[2][0]; row[0][3] = row[3][0];
+    row[1][0] = row[0][1]; row[1][2] = row[2][1]; row[1][3] = row[3][1];
+    row[2][0] = row[0][2]; row[2][1] = row[1][2]; row[2][3] = row[3][2];
+    row[3][0] = row[0][3]; row[3][1] = row[1][3]; row[3][2] = row[2][3];
+
+    return(SELF);
+}
+
+Mat4& Mat4::AddShift(const Vec3 &t)
+{
+#ifdef VL_ROW_ORIENT
+    row[3][0] += t[0];
+    row[3][1] += t[1];
+    row[3][2] += t[2];
+#else
+    row[0][3] += t[0];
+    row[1][3] += t[1];
+    row[2][3] += t[2];
+#endif
+
+    return(SELF);
+}
diff --git a/svl/src/SVLConfigBase.h b/svl/src/SVLConfigBase.h
new file mode 100644
index 00000000..21be8cf5
--- /dev/null
+++ b/svl/src/SVLConfigBase.h
@@ -0,0 +1,31 @@
+/*
+    File:           SVLConfig.h
+
+    Function:       Contains configuration options for compiling the SVL
+                    library.
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+*/
+
+//
+//  Current options are as follows:
+//
+//  VL_HAS_ABSF    - has the absf() call.
+//  VL_HAS_IEEEFP  - ieeefp.h exists.
+//  VL_HAS_DRAND   - has the drand48() call.
+//  VL_ROW_ORIENT  - Use row-oriented transforms, so you can swap 'em with
+//                   OpenGL. If this is defined, transformations are
+//                   v = v * Rot3x(u, 0.5), rather than v = Rot3x(u, 0.5) * v.
+//                   This is off by default.
+//  VL_USE_MEMCPY  - Use memcpy and friends for generic vector operations.
+//                   Generally memcpy is only faster than loop-based copies
+//                   for n > n0, so this should be enabled if the average
+//                   vector size is larger than n0. Some values of n0:
+//                       SGI R4400: 30
+//                       Intel i686, 750MHz: 5
+//
+
+// --- Configuration ----------------------------------------------------------
+
diff --git a/svl/src/Vec.cpp b/svl/src/Vec.cpp
new file mode 100644
index 00000000..63e4075d
--- /dev/null
+++ b/svl/src/Vec.cpp
@@ -0,0 +1,542 @@
+/*
+    File:           Vec.cpp
+
+    Function:       Implements Vec.h
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+*/
+
+
+#include "svl/Vec.h"
+
+#include <cctype>
+#include <cstring>
+#include <cstdarg>
+#include <iomanip>
+
+
+// --- Vec Constructors -------------------------------------------------------
+
+
+Vec::Vec(Int n, ZeroOrOne k) : elts(n)
+{
+    Assert(n > 0,"(Vec) illegal vector size");
+
+    data = new Real[n];
+
+    MakeBlock(k);
+}
+
+Vec::Vec(Int n, Axis a) : elts(n)
+{
+    Assert(n > 0,"(Vec) illegal vector size");
+
+    data = new Real[n];
+
+    MakeUnit(a);
+}
+
+Vec::Vec(const Vec &v)
+{
+    Assert(v.data != 0, "(Vec) Can't construct from a null vector");
+
+    elts = v.Elts();
+    data = new Real[elts];
+
+#ifdef VL_USE_MEMCPY
+    memcpy(data, v.Ref(), sizeof(Real) * Elts());
+#else
+    for (Int i = 0; i < Elts(); i++)
+        data[i] = v[i];
+#endif
+}
+
+Vec::Vec(const Vec2 &v) : data(v.Ref()), elts(v.Elts() | VL_REF_FLAG)
+{
+}
+
+Vec::Vec(const Vec3 &v) : data(v.Ref()), elts(v.Elts() | VL_REF_FLAG)
+{
+}
+
+Vec::Vec(const Vec4 &v) : data(v.Ref()), elts(v.Elts() | VL_REF_FLAG)
+{
+}
+
+Vec::Vec(Int n, double elt0, ...) : elts(n)
+{
+    Assert(n > 0,"(Vec) illegal vector size");
+
+    va_list ap;
+    Int     i = 1;
+
+    data = new Real[n];
+    va_start(ap, elt0);
+
+    SetReal(data[0], elt0);
+
+    while (--n)
+        SetReal(data[i++], va_arg(ap, double));
+
+    va_end(ap);
+}
+
+Vec::~Vec()
+{
+    Assert(elts != 0,"(Vec) illegal vector size");
+
+    if (!IsRef())
+        delete[] data;
+}
+
+
+// --- Vec Assignment Operators -----------------------------------------------
+
+
+Vec &Vec::operator = (const Vec &v)
+{
+    if (!IsRef())
+        SetSize(v.Elts());
+    else
+        Assert(Elts() == v.Elts(), "(Vec::=) Vector sizes don't match");
+
+#ifdef VL_USE_MEMCPY
+    memcpy(data, v.data, sizeof(Real) * Elts());
+#else
+    for (Int i = 0; i < Elts(); i++)
+        data[i] = v[i];
+#endif
+
+    return(SELF);
+}
+
+Vec &Vec::operator = (const Vec2 &v)
+{
+    if (!IsRef())
+        SetSize(v.Elts());
+    else
+        Assert(Elts() == v.Elts(), "(Vec::=) Vector sizes don't match");
+
+    data[0] = v[0];
+    data[1] = v[1];
+
+    return(SELF);
+}
+
+Vec &Vec::operator = (const Vec3 &v)
+{
+    if (!IsRef())
+        SetSize(v.Elts());
+    else
+        Assert(Elts() == v.Elts(), "(Vec::=) Vector sizes don't match");
+
+    data[0] = v[0];
+    data[1] = v[1];
+    data[2] = v[2];
+
+    return(SELF);
+}
+
+Vec &Vec::operator = (const Vec4 &v)
+{
+    if (!IsRef())
+        SetSize(v.Elts());
+    else
+        Assert(Elts() == v.Elts(), "(Vec::=) Vector sizes don't match");
+
+    data[0] = v[0];
+    data[1] = v[1];
+    data[2] = v[2];
+    data[3] = v[3];
+
+    return(SELF);
+}
+
+Void Vec::SetSize(Int ni)
+{
+    Assert(ni > 0, "(Vec::SetSize) Illegal vector size");
+    UInt    n = UInt(ni);
+
+    if (!IsRef())
+    {
+        // Don't reallocate if we already have enough storage
+
+        if (n <= elts)
+        {
+            elts = n;
+            return;
+        }
+
+        // Otherwise, delete old storage
+
+        delete[] data;
+
+        elts = n;
+        data = new Real[elts];
+    }
+    else
+        Assert(false, "(Vec::SetSize) Can't resize a vector reference");
+}
+
+Vec &Vec::MakeZero()
+{
+#ifdef VL_USE_MEMCPY
+    memset(data, 0, sizeof(Real) * Elts());
+#else
+    Int j;
+
+    for (j = 0; j < Elts(); j++)
+        data[j] = vl_zero;
+#endif
+
+    return(SELF);
+}
+
+Vec &Vec::MakeUnit(Int i, Real k)
+{
+    MakeZero();
+    data[i] = k;
+
+    return(SELF);
+}
+
+Vec &Vec::MakeBlock(Real k)
+{
+    Int     i;
+
+    for (i = 0; i < Elts(); i++)
+        data[i] = k;
+
+    return(SELF);
+}
+
+
+// --- Vec In-Place operators -------------------------------------------------
+
+
+Vec &Vec::operator += (const Vec &b)
+{
+    Assert(Elts() == b.Elts(), "(Vec::+=) vector sizes don't match");
+
+    Int     i;
+
+    for (i = 0; i < Elts(); i++)
+        data[i] += b[i];
+
+    return(SELF);
+}
+
+Vec &Vec::operator -= (const Vec &b)
+{
+    Assert(Elts() == b.Elts(), "(Vec::-=) vector sizes don't match");
+
+    Int     i;
+
+    for (i = 0; i < Elts(); i++)
+        data[i] -= b[i];
+
+    return(SELF);
+}
+
+Vec &Vec::operator *= (const Vec &b)
+{
+    Assert(Elts() == b.Elts(), "(Vec::*=) Vec sizes don't match");
+
+    Int     i;
+
+    for (i = 0; i < Elts(); i++)
+        data[i] *= b[i];
+
+    return(SELF);
+}
+
+Vec &Vec::operator *= (Real s)
+{
+    Int     i;
+
+    for (i = 0; i < Elts(); i++)
+        data[i] *= s;
+
+    return(SELF);
+}
+
+Vec &Vec::operator /= (const Vec &b)
+{
+    Assert(Elts() == b.Elts(), "(Vec::/=) Vec sizes don't match");
+
+    Int     i;
+
+    for (i = 0; i < Elts(); i++)
+        data[i] /= b[i];
+
+    return(SELF);
+}
+
+Vec &Vec::operator /= (Real s)
+{
+    Int     i;
+
+    for (i = 0; i < Elts(); i++)
+        data[i] /= s;
+
+    return(SELF);
+}
+
+
+// --- Vec Comparison Operators -----------------------------------------------
+
+
+Bool operator == (const Vec &a, const Vec &b)
+{
+    Int     i;
+
+    for (i = 0; i < a.Elts(); i++)
+        if (a[i] != b[i])
+            return(0);
+
+    return(1);
+}
+
+Bool operator != (const Vec &a, const Vec &b)
+{
+    Int     i;
+
+    for (i = 0; i < a.Elts(); i++)
+        if (a[i] != b[i])
+            return(1);
+
+    return(0);
+}
+
+
+// --- Vec Arithmetic Operators -----------------------------------------------
+
+
+Vec operator + (const Vec &a, const Vec &b)
+{
+    Assert(a.Elts() == b.Elts(), "(Vec::+) Vec sizes don't match");
+
+    Vec     result(a.Elts());
+    Int     i;
+
+    for (i = 0; i < a.Elts(); i++)
+        result[i] = a[i] + b[i];
+
+    return(result);
+}
+
+Vec operator - (const Vec &a, const Vec &b)
+{
+    Assert(a.Elts() == b.Elts(), "(Vec::-) Vec sizes don't match");
+
+    Vec     result(a.Elts());
+    Int     i;
+
+    for (i = 0; i < a.Elts(); i++)
+        result[i] = a[i] - b[i];
+
+    return(result);
+}
+
+Vec operator - (const Vec &v)
+{
+    Vec     result(v.Elts());
+    Int     i;
+
+    for (i = 0; i < v.Elts(); i++)
+        result[i] = - v[i];
+
+    return(result);
+}
+
+Vec operator * (const Vec &a, const Vec &b)
+{
+    Assert(a.Elts() == b.Elts(), "(Vec::*) Vec sizes don't match");
+
+    Vec     result(a.Elts());
+    Int     i;
+
+    for (i = 0; i < a.Elts(); i++)
+        result[i] = a[i] * b[i];
+
+    return(result);
+}
+
+Vec operator * (const Vec &v, Real s)
+{
+    Vec     result(v.Elts());
+    Int     i;
+
+    for (i = 0; i < v.Elts(); i++)
+        result[i] = v[i] * s;
+
+    return(result);
+}
+
+Vec operator / (const Vec &a, const Vec &b)
+{
+    Assert(a.Elts() == b.Elts(), "(Vec::/) Vec sizes don't match");
+
+    Vec     result(a.Elts());
+    Int     i;
+
+    for (i = 0; i < a.Elts(); i++)
+        result[i] = a[i] / b[i];
+
+    return(result);
+}
+
+Vec operator / (const Vec &v, Real s)
+{
+    Vec     result(v.Elts());
+    Int     i;
+
+    for (i = 0; i < v.Elts(); i++)
+        result[i] = v[i] / s;
+
+    return(result);
+}
+
+Real dot(const Vec &a, const Vec &b)
+{
+    Assert(a.Elts() == b.Elts(), "(Vec::dot) Vec sizes don't match");
+
+    Real    sum = vl_zero;
+    Int     i;
+
+    for (i = 0; i < a.Elts(); i++)
+        sum += a[i] * b[i];
+
+    return(sum);
+}
+
+Vec operator * (Real s, const Vec &v)
+{
+    Vec     result(v.Elts());
+    Int     i;
+
+    for (i = 0; i < v.Elts(); i++)
+        result[i] = v[i] * s;
+
+    return(result);
+}
+
+Vec &Vec::Clamp(Real fuzz)
+//  clamps all values of the matrix with a magnitude
+//  smaller than fuzz to zero.
+{
+    Int i;
+
+    for (i = 0; i < Elts(); i++)
+        if (len(SELF[i]) < fuzz)
+            SELF[i] = vl_zero;
+
+    return(SELF);
+}
+
+Vec &Vec::Clamp()
+{
+    return(Clamp(1e-7));
+}
+
+Vec clamped(const Vec &v, Real fuzz)
+//  clamps all values of the matrix with a magnitude
+//  smaller than fuzz to zero.
+{
+    Vec result(v);
+
+    return(result.Clamp(fuzz));
+}
+
+Vec clamped(const Vec &v)
+{
+    return(clamped(v, 1e-7));
+}
+
+
+// --- Vec Input & Output -----------------------------------------------------
+
+
+ostream &operator << (ostream &s, const Vec &v)
+{
+    Int i, w;
+
+    s << '[';
+
+    if (v.Elts() > 0)
+    {
+        w = s.width();
+        s << v[0];
+
+        for (i = 1; i < v.Elts(); i++)
+            s << ' ' << setw(w) << v[i];
+    }
+
+    s << ']';
+
+    return(s);
+}
+
+inline Void CopyPartialVec(const Vec &u, Vec &v, Int numElts)
+{
+    for (Int i = 0; i < numElts; i++)
+        v[i] = u[i];
+}
+
+istream &operator >> (istream &s, Vec &v)
+{
+    Int     size = 0;
+    Vec     inVec(16);
+    Char    c;
+
+    //  Expected format: [a b c d ...]
+
+    while (isspace(s.peek()))           //  chomp white space
+        s.get(c);
+
+    if (s.peek() == '[')
+    {
+        s.get(c);
+
+
+        while (isspace(s.peek()))       //  chomp white space
+            s.get(c);
+
+        while (s.peek() != ']')         //  resize if needed
+        {
+            if (size == inVec.Elts())
+            {
+                Vec     holdVec(inVec);
+
+                inVec.SetSize(size * 2);
+                CopyPartialVec(holdVec, inVec, size);
+            }
+
+            s >> inVec[size++];         //  read an item
+
+            if (!s)
+            {
+                _svlWarning("Couldn't read vector element");
+                return(s);
+            }
+
+            while (isspace(s.peek()))   //  chomp white space
+                s.get(c);
+        }
+        s.get(c);
+    }
+    else
+    {
+        s.clear(ios::failbit);
+        _svlWarning("Error: Expected '[' while reading vector");
+        return(s);
+    }
+
+    v.SetSize(size);
+    CopyPartialVec(inVec, v, size);
+
+    return(s);
+}
diff --git a/svl/src/Vec2.cpp b/svl/src/Vec2.cpp
new file mode 100644
index 00000000..10999399
--- /dev/null
+++ b/svl/src/Vec2.cpp
@@ -0,0 +1,65 @@
+/*
+    File:           Vec2.cpp
+
+    Function:       Implements Vec2.h
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+*/
+
+
+#include "svl/Vec2.h"
+#include <cctype>
+#include <iomanip>
+
+
+ostream &operator << (ostream &s, const Vec2 &v)
+{
+    Int w = s.width();
+
+    return(s << '[' << v[0] << ' ' << setw(w) << v[1] << ']');
+}
+
+istream &operator >> (istream &s, Vec2 &v)
+{
+    Vec2    result;
+    Char    c;
+
+    // Expected format: [1 2]
+
+    while (s >> c && isspace(c))
+        ;
+
+    if (c == '[')
+    {
+        s >> result[0] >> result[1];
+
+        if (!s)
+        {
+            cerr << "Error: Expected number while reading vector\n";
+            return(s);
+        }
+
+        while (s >> c && isspace(c))
+            ;
+
+        if (c != ']')
+        {
+            s.clear(ios::failbit);
+            cerr << "Error: Expected ']' while reading vector\n";
+            return(s);
+        }
+    }
+    else
+    {
+        s.clear(ios::failbit);
+        cerr << "Error: Expected '[' while reading vector\n";
+        return(s);
+    }
+
+    v = result;
+    return(s);
+}
+
diff --git a/svl/src/Vec3.cpp b/svl/src/Vec3.cpp
new file mode 100644
index 00000000..c2ebb16a
--- /dev/null
+++ b/svl/src/Vec3.cpp
@@ -0,0 +1,65 @@
+/*
+    File:           Vec3.cpp
+
+    Function:       Implements Vec3.h
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+*/
+
+
+#include "svl/Vec3.h"
+#include <cctype>
+#include <iomanip>
+
+
+ostream &operator << (ostream &s, const Vec3 &v)
+{
+    Int w = s.width();
+
+    return(s << '[' << v[0] << ' ' << setw(w) << v[1] << ' ' << setw(w) << v[2] << ']');
+}
+
+istream &operator >> (istream &s, Vec3 &v)
+{
+    Vec3    result;
+    Char    c;
+
+    // Expected format: [1 2 3]
+
+    while (s >> c && isspace(c))
+        ;
+
+    if (c == '[')
+    {
+        s >> result[0] >> result[1] >> result[2];
+
+        if (!s)
+        {
+            cerr << "Error: Expected number while reading vector\n";
+            return(s);
+        }
+
+        while (s >> c && isspace(c))
+            ;
+
+        if (c != ']')
+        {
+            s.clear(ios::failbit);
+            cerr << "Error: Expected ']' while reading vector\n";
+            return(s);
+        }
+    }
+    else
+    {
+        s.clear(ios::failbit);
+        cerr << "Error: Expected '[' while reading vector\n";
+        return(s);
+    }
+
+    v = result;
+    return(s);
+}
+
diff --git a/svl/src/Vec4.cpp b/svl/src/Vec4.cpp
new file mode 100644
index 00000000..c8f5b213
--- /dev/null
+++ b/svl/src/Vec4.cpp
@@ -0,0 +1,124 @@
+/*
+    File:           Vec4.cpp
+
+    Function:       Implements Vec4.h
+
+    Author(s):      Andrew Willmott
+
+    Copyright:      (c) 1995-2001, Andrew Willmott
+
+*/
+
+
+#include "svl/Vec4.h"
+#include <cctype>
+#include <iomanip>
+
+
+Vec4 &Vec4::MakeUnit(Int n, Real k)
+{
+    if (n == 0)
+    { elt[0] = k; elt[1] = vl_zero; elt[2] = vl_zero; elt[3] = vl_zero; }
+    else if (n == 1)
+    { elt[0] = vl_zero; elt[1] = k; elt[2] = vl_zero; elt[3] = vl_zero; }
+    else if (n == 2)
+    { elt[0] = vl_zero; elt[1] = vl_zero; elt[2] = k; elt[3] = vl_zero; }
+    else if (n == 3)
+    { elt[0] = vl_zero; elt[1] = vl_zero; elt[2] = vl_zero; elt[3] = k; }
+    else
+        _svlError("(Vec4::MakeUnit) illegal unit vector");
+
+    return(SELF);
+}
+
+Bool Vec4::operator == (const Vec4 &a) const
+{
+    return(elt[0] == a[0] && elt[1] == a[1] && elt[2] == a[2] && elt[3] == a[3]);
+}
+
+Bool Vec4::operator != (const Vec4 &a) const
+{
+    return(elt[0] != a[0] || elt[1] != a[1] || elt[2] != a[2] || elt[3] != a[3]);
+}
+
+Vec4 cross(const Vec4 &a, const Vec4 &b, const Vec4 &c)
+{
+    Vec4 result;
+    // XXX can this be improved? Look at assembly.
+#define ROW(i)       a[i], b[i], c[i]
+#define DET(i,j,k)   dot(Vec3(ROW(i)), cross(Vec3(ROW(j)), Vec3(ROW(k))))
+
+    result[0] =  DET(1,2,3);
+    result[1] = -DET(0,2,3);
+    result[2] =  DET(0,1,3);
+    result[3] = -DET(0,1,2);
+
+    return(result);
+
+#undef ROW
+#undef DET
+}
+
+Vec3 proj(const Vec4 &v)
+{
+    Vec3 result;
+
+    Assert(v[3] != 0, "(Vec4/proj) last elt. is zero");
+
+    result[0] = v[0] / v[3];
+    result[1] = v[1] / v[3];
+    result[2] = v[2] / v[3];
+
+    return(result);
+}
+
+
+ostream &operator << (ostream &s, const Vec4 &v)
+{
+    Int w = s.width();
+
+    return(s << '[' << v[0] << ' ' << setw(w) << v[1] << ' '
+        << setw(w) << v[2] << ' ' << setw(w) << v[3] << ']');
+}
+
+istream &operator >> (istream &s, Vec4 &v)
+{
+    Vec4    result;
+    Char    c;
+
+    // Expected format: [1 2 3 4]
+
+    while (s >> c && isspace(c))
+        ;
+
+    if (c == '[')
+    {
+        s >> result[0] >> result[1] >> result[2] >> result[3];
+
+        if (!s)
+        {
+            cerr << "Error: Expected number while reading vector\n";
+            return(s);
+        }
+
+        while (s >> c && isspace(c))
+            ;
+
+        if (c != ']')
+        {
+            s.clear(ios::failbit);
+            cerr << "Error: Expected ']' while reading vector\n";
+            return(s);
+        }
+    }
+    else
+    {
+        s.clear(ios::failbit);
+        cerr << "Error: Expected '[' while reading vector\n";
+        return(s);
+    }
+
+    v = result;
+    return(s);
+}
+
diff --git a/unitConversion/CMakeLists.txt b/unitConversion/CMakeLists.txt
new file mode 100644
index 00000000..3862748c
--- /dev/null
+++ b/unitConversion/CMakeLists.txt
@@ -0,0 +1,54 @@
+# Set the library name
+set( LIBRARY_NAME unitConversion )
+
+# Create the library target -> this is a header only library
+add_library( ${LIBRARY_NAME} INTERFACE )
+add_library( UnicadoLibs::${LIBRARY_NAME} ALIAS ${LIBRARY_NAME} ) # Create an alias target with a namespace alias
+
+# Add the include directories as the public interface
+target_sources( ${LIBRARY_NAME}
+PUBLIC
+    FILE_SET HEADERS
+    BASE_DIRS include
+    FILES
+        "include/unitConversion/constants.h"
+        "include/unitConversion/unitBase.h"
+        "include/unitConversion/unitConversion.h"
+        "include/unitConversion/unitConversionConf.h"
+)
+
+# Link against dependent libraries
+target_link_libraries( ${LIBRARY_NAME} INTERFACE atmosphere)
+
+
+# Add the install rules
+#install(TARGETS ${LIBRARY_NAME} FILE_SET HEADERS)
+
+# Add the export rules
+export(TARGETS ${LIBRARY_NAME}
+    FILE "${PROJECT_SOURCE_DIR}/cmake/UnicadoLibs${LIBRARY_NAME}Targets.cmake"
+    NAMESPACE UnicadoLibs::
+)
+
+# === Add python bindings ===
+pybind11_add_module( py11${LIBRARY_NAME}
+    src/py_unit_conversion.cpp
+)
+
+target_include_directories(py11${LIBRARY_NAME} PUBLIC include)
+
+# On Windows the Python Debug builds are not properly supported -> warn about this
+if(MSVC AND CMAKE_BUILD_TYPE MATCHES "Debug")
+    message(WARNING "\n[${PROJECT_NAME}] -> Building Python binding of ${LIBRARY_NAME} in Debug Mode on Windows. This is not properly supported!")
+endif()
+
+# Set the output directory for the python binding -> Use generator expressions to force multi-generator output to the same location
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyunitconversion/pyunitconversion$<0:>) # .dll for Windows
+set_target_properties(py11${LIBRARY_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyunitconversion/pyunitconversion$<0:>) # .so for Unix
+
+# Add the package to the package list for exporting the target
+# and propagate the resulting list back to the parent scope
+list( APPEND PYTHON_TARGETS ${CMAKE_CURRENT_LIST_DIR}/pyunitconversion)
+set( PYTHON_TARGETS ${PYTHON_TARGETS} PARENT_SCOPE )
+
+install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/pyunitconversion DESTINATION lib)
\ No newline at end of file
diff --git a/unitConversion/include/unitConversion/constants.h b/unitConversion/include/unitConversion/constants.h
new file mode 100644
index 00000000..0af86a6d
--- /dev/null
+++ b/unitConversion/include/unitConversion/constants.h
@@ -0,0 +1,151 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef UNITCONVERSION_CONSTANTS_H_
+#define UNITCONVERSION_CONSTANTS_H_
+
+#include <cmath>
+
+//Astronomical_Unit in Meter
+//Mean Sun-Earth distance
+#define AU 149597870700.
+
+//AMU Chemical in Kilogram
+//1/16 of the weighted average mass of the 3 naturally occurring neutral isotopes of oxygen.
+#define AMU_CHEMICAL 1.66026000E-27
+
+//AMU Physical in Kilogram
+//1/16 of the mass of a neutral oxygen 16 atom.
+#define AMU_PHYSICAL 1.65981000E-27
+
+//Atomic Mass Unit in Kilogram
+//defined to be 1/12 of the mass of carbon 12
+#define ATOMIC_MASS_UNIT 1.6605402E-27
+
+//Avogadro Constant in Particles/mol
+//Number of particles in 1 mole of substance
+#define AVOGADRO_CONSTANT 6.02214129E+23
+
+//Bohr Radius in Meter
+//the most probable distance between the proton and electron in a hydrogen atom in its ground state.
+#define BOHR_RADIUS 5.2917721092E-11
+
+//Boltzmann Constant k in Joule/Kelvin
+//physical constant relating energy at the individual particle level with temperature
+#define BOLTZMANN_CONSTANT 1.3806488E-23
+
+//Coulomb's Constant(electric force constant) in Newton*(Meter^2)/(Coulomb^2)
+//proportionality constant in equations relating electric variables
+#define COULOMBS_CONSTANT 8.9875517873681764E+9
+
+//Electron Rest Mass me in Kilogram
+//the mass of a stationary electron
+#define ELECTRON_REST_MASS 9.10938215E-31
+
+//Proton Mass mp in Kilogram
+//Particle mass
+#define PROTON_MASS 1.672621777E-27
+
+//Neutron  Mass mn in Kilogram
+#define NEUTRON_MASS 1.674927351E-27
+
+//Electron Electric Charge in Coulomb
+//Elementary charge
+#define ELECTRON_ELECTRIC_CHARGE 1.602176565E-19
+
+//Faraday Constant F in Coulomb/mol
+//the magnitude of electric charge per mole of electrons
+#define FARADAY_CONSTANT 9.64853399E+4
+
+//Fine Structure Constant
+//mu0 * c * (e^2) / h
+#define FINE_STRUCTURE_CONSTANT 0.00729735281
+
+//G Force Acceleration of gravity, g in Meter / (Second^2)
+//Earth Gravity
+#define G_FORCE 9.80665
+
+//Gravitational Constant in Newton * (Meter^2) / (Kilogram^2)
+//an empirical physical constant involved in the calculation(s) of gravitational force between two bodies
+#define GRAVITATIONAL_CONSTANT 6.674E-11
+
+//Gas Constant R in Joule / (Kelvin * mol)
+//physical constant which is featured in many fundamental equations in the physical sciences
+#define GAS_CONSTANT 8.3144621
+
+//Isentropic exponent for dry air at 20 °C (kappa)
+//ratio of the heat capacity at constant pressure to heat capacity at constant volume
+#define ISENTROPIC_EXPONENT_DRY_AIR 1.4
+
+// Specific heat capacity water in J/(kg*K)
+// Amount of heat that must be added to one unit of mass of a substance in order to cause an increase of one unit in temperature.
+#define HEAT_CAPACITY_WATER 4184.
+
+//Specific Gas Constant R in J / (Kelvin * Kilogram)
+//The specific gas constant of a gas is given by the molar gas constant divided by the molar mass of the gas/mixture.
+#define SPECIFIC_GAS_CONSTANT_DRY_AIR 287.058
+
+//PI
+//mathematical constant, the ratio of a circle's circumference to its diameter
+#define PI 3.14159265358979323846
+
+//Planck Constant h in Joule * Second
+//physical constant that is the quantum of action in quantum mechanics
+#define PLANCK_CONSTANT 6.62606957E-34
+
+//Speed of Light in Meter/Second
+//universal physical constant important in many areas of physics
+#define SPEED_OF_LIGHT 299792458.
+
+//Standard Temperature in Kelvin
+//IUPAC established standard temperature as a temperature of 273.15 K
+#define STANDARD_TEMPERATURE 273.15
+
+//Temperature ISA: Temperature after ISA in Kelvin (ISO 2533)
+//ICAO established standard temperature as a temperature of 288.15 K
+#define ISA_TEMPERATURE 288.15
+
+//Density ISA: Density after ISA in kg/(m^3) (ISO 2533)
+//ICAO established standard density in level NN of 1.225 kg/(m^3)
+#define ISA_DENSITY 1.225
+
+//Pressure ISA: Pressure after ISA in N/(m^2) (ISO 2533)
+//ICAO established standard pressure in level NN of 101325 N/(m^2)
+#define ISA_PRESSURE 101325.
+
+//Sutherland Constant C in Kelvin for dry air
+//Sutherland constant vary with gas
+#define SUTHERLAND_CONSTANT_DRY_AIR 110.4
+
+//Viscosity ISA: Dynamic Viscosity after ISA in Pa*s
+#define DYNAMIC_VISCOSITY_SEALEVEL 1.716E-5
+
+//Accuracy constants
+//Accuracy constants used for comparison of doubles (==, !=)
+#define ACCURACY_LOW 1E-4
+#define ACCURACY_MEDIUM 1E-7
+#define ACCURACY_HIGH 1E-10
+
+// Transition altitude ATC limit FL100 in [m]
+#define TRANSITION_ALTITUDE 3048.
+
+#endif // UNITCONVERSION_CONSTANTS_H_
diff --git a/unitConversion/include/unitConversion/unitBase.h b/unitConversion/include/unitConversion/unitBase.h
new file mode 100644
index 00000000..b118a64a
--- /dev/null
+++ b/unitConversion/include/unitConversion/unitBase.h
@@ -0,0 +1,137 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef UNITCONVERSION_UNITBASE_H_
+#define UNITCONVERSION_UNITBASE_H_
+
+//Pascal
+//The SI-Unit Pascal has to be seperated of the keyword _pascal in C++
+#ifdef PASCAL
+    #undef PASCAL
+#endif
+
+enum unitBase
+{
+    //Length
+    FOOT,
+    INCH,
+    MILE,
+    METER,
+    NAUTICALMILE,
+
+    //Volume
+    GALLON,
+    LITER,
+
+    //Energy
+    BRITISHTHERMALUNIT,
+    FOOTPOUND,
+    WATTHOUR,
+    GRAMFORCEMETER,
+    NEWTONMETER,
+    JOULE,
+    CALORIES,
+
+    //Power
+    HORSEPOWER,
+    WATT,
+    FOOTPOUNDFORCEPERSECOND,
+
+    //Speed
+    KNOTS,
+    METERPERSECOND,
+    KILOMETERPERHOUR,
+    FOOTPERMINUTE,
+    //Air dependend
+    MACH,
+    TRUEAIRSPEED,
+    CALIBRATEDAIRSPEED,
+
+    //Time
+    SECOND,
+    MINUTE,
+    HOUR,
+
+    //Radian/Degree
+    RADIAN,
+    DEGREE,
+
+    //Pressure
+    PASCAL,
+    BAR,
+    ATMOSPHERE,
+    PSI,
+
+    //Mass
+    GRAM,
+    POUND,
+
+    //Force
+    NEWTON,
+    DYN,
+    KILOPOND,
+    POUNDFORCE,
+    POUNDAL,
+
+    //Temperature
+    FAHRENHEIT,
+    KELVIN,
+    CELCIUS,
+
+    //Internally Used Types
+    //!DO NOT USE
+    CUBICMETER
+};
+
+enum unitPrefix
+{
+    YOTTA,
+    ZETTA,
+    EXA,
+    PETA,
+    TERA,
+    GIGA,
+    MEGA,
+    KILO,
+    HECTO,
+    DECA,
+    NOPREFIX,
+    DECI,
+    CENTI,
+    MILLI,
+    MICRO,
+    NANO,
+    PIKO,
+    FEMTO,
+    ATTO,
+    ZEPTO,
+    YOKTO
+};
+
+enum unitDimension
+{
+    LENGTH,
+    AREA,
+    VOLUME
+};
+
+#endif // UNITCONVERSION_UNITBASE_H_
diff --git a/unitConversion/include/unitConversion/unitConversion.h b/unitConversion/include/unitConversion/unitConversion.h
new file mode 100644
index 00000000..892778c7
--- /dev/null
+++ b/unitConversion/include/unitConversion/unitConversion.h
@@ -0,0 +1,309 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef UNITCONVERSION_UNITCONVERSION_H_
+#define UNITCONVERSION_UNITCONVERSION_H_
+
+#include <atmosphere/atmosphere.h>
+#include "unitBase.h"
+#include "unitConversionConf.h"
+
+using namespace UnitConversionConfiguration;
+
+//!   If you make any alterations be sure to update ALL other tools as well.
+//!   This works likes a no dependencies library in ALL tools.
+
+/*
+ *  Unit Conversion Library
+ *  Convert available types from
+ *
+ *  Length | Area | Volume | Energy | Power | Speed | Air pressure dependent Speed
+ *  Time | Radian/Degree | Pressure | Mass | Temperature
+ *
+ *  Check unitBase.h for various Unit Bases. As well as SI Unit Prefixes.
+ *
+ *  Use the overloaded convertUnit() function for conversion.
+ *  Choose from :
+ *
+ *  convertUnit(unitBase from, unitBase  to, value)
+ *  convertUnit(unitPrefix fromPref, unitBase from, unitBase  to, T value)
+ *  convertUnit(unitBase from, unitPrefix toPref, unitBase to, T value)
+ *  convertUnit(unitPrefix fromPref, unitBase from, unitPrefix toPref, unitBase to, T value)
+ *  //Preferred for Area und Volume conversion but Length is also possible
+ *  convertUnit(unitDimension dimension, unitPrefix fromPref, unitBase from, unitPrefix toPref, unitBase to, T value)
+ *  //Preferred for air dependent speed to air independent speed and the other way round
+ *  convertUnit(unitBase from, unitBase to, double FlightLevel, const atmosphere &atm, T value)
+ *
+ *  Examples :
+ *
+ *  Convert 2.5 Hours to Seconds
+ *  convertUnit(HOUR, SECOND, 2.5);
+ *
+ *  Convert 11.1 KiloWatt to Horsepower
+ *  convertUnit(KILO, WATT, HORSEPOWER, 11.1);
+ *
+ *  Convert 2534.1233 British Thermal Units to Mega Joule
+ *  convertUnit(BRITISHTHERMALUNIT, MEGA, JOULE, 2534.1233);
+ *
+ *  Convert 2.3 KiloWattHours to Mega Joule
+ *  convertUnit(KILO, WATTHOUR, MEGA, JOULE, 2.3);
+ *
+ *  Convert 13.2 Gallons to Deci Cubic Meters
+ *  convertUnit(VOLUME, NOPREFIX, GALLON, DECI, METER, 13.2);
+ *
+ *  Convert 0.85 Mach to Knots at Flight Level 10000.
+ *  convertUnit(MACH, KNOTS, 10000., atm, 0.85);
+ *
+ *  Written by Lukas Nolte under supervision from Florian Schueltke at ILR RWTH AACHEN.
+ */
+
+
+//Standard converUnit function
+// Checks input type unitBase from and calls specific type function
+// which returns value time conversion factor based on output unitBase to
+// If unitBase from can't be handled here (like LITER) it throws a char*
+// with error message
+template <typename T>
+T convertUnit(unitBase from, unitBase  to, T value)
+{
+    //Length
+    if(from == FOOT || from == INCH || from == MILE || from == METER ||
+       from == NAUTICALMILE)
+    {
+        return convertLength(from, to, value);
+    }
+    //Energy
+    if(from == BRITISHTHERMALUNIT || from == FOOTPOUND || from == WATTHOUR
+       || from == GRAMFORCEMETER || from == NEWTONMETER ||from == JOULE ||
+       from == CALORIES)
+    {
+        return convertEnergy(from, to, value);
+    }
+    //Power
+    if(from == HORSEPOWER || from == WATT || from == FOOTPOUNDFORCEPERSECOND)
+    {
+        return convertPower(from, to, value);
+    }
+    //Speed
+    if(to == KNOTS || to == METERPERSECOND || to == KILOMETERPERHOUR || to == FOOTPERMINUTE)
+    {
+        return convertSpeed(from, to , value);
+    }
+    //Time
+    if(from == SECOND|| from == MINUTE || from == HOUR)
+    {
+        return convertTime(from, to, value);
+    }
+    //Radian/Degree
+    if(from == RADIAN || from == DEGREE)
+    {
+        return convertRadianDegree(from, to, value);
+    }
+    //Pressure
+    if(from == PASCAL || from == BAR || from == ATMOSPHERE || from == PSI)
+    {
+        return convertPressure(from, to, value);
+    }
+    //Mass
+    if(from == GRAM || from == POUND)
+    {
+        return convertMass(from, to, value);
+    }
+    //Force
+    if(from == NEWTON || from == DYN || from == KILOPOND || from == POUNDFORCE || from == POUNDAL)
+    {
+        return convertForce(from, to, value);
+    }
+    //Temperature
+    if(from == FAHRENHEIT || from == KELVIN || from == CELCIUS)
+    {
+        return convertTemperature(from, to, value);
+    }
+    //From Unit is not known
+    throw "Wrong Input Unit in function convertUnit. Check enum unitBase for types.";
+}
+
+//convertUnit function with prefixes
+// calls standard convertUnit() and calculates return value with prefixes
+template <typename T>
+T convertUnit(unitPrefix fromPref, unitBase from, unitBase  to, T value)
+{
+    return convertUnit(from, to, value) * getPrefix(fromPref);
+}
+template <typename T>
+T convertUnit(unitBase from, unitPrefix toPref, unitBase to, T value)
+{
+    return convertUnit(from, to, value) / getPrefix(toPref);
+}
+template <typename T>
+T convertUnit(unitPrefix fromPref, unitBase from, unitPrefix toPref, unitBase to, T value)
+{
+    return convertUnit(from, to, value) * getPrefix(fromPref) / getPrefix(toPref);
+}
+
+//Special convertUnit function to handle Volume and Area conversion
+template <typename T>
+T convertUnit(unitDimension dimension, unitPrefix fromPref, unitBase from, unitPrefix toPref, unitBase to, T value)
+{
+    switch (dimension)
+    {
+        //Length is handled with convertUnit function with prefixes
+        case LENGTH : return convertUnit(fromPref, from, toPref, to, value); break;
+        //Area is calculated by taking the conversion factor and the prefixes square multiplied by the value
+        case AREA : return pow(convertUnit(from, to, 1.),2)* value * pow(getPrefix(fromPref),2) / pow(getPrefix(toPref),2); break;
+        //In the case of Volume there are irregular types (Liter, Gallon) where the prefix is not taken to the power of three
+        case VOLUME :
+        {
+                T volumeInMETER;
+                //Are there irregular types to be converted?
+                //Or are from and to unit bases of length?
+                bool LengthIn = true, LengthOut = true;
+                if(from == GALLON || from == LITER)
+                {
+                    LengthIn = false;
+                }
+                if(to == GALLON || to == LITER)
+                {
+                    LengthOut = false;
+                }
+                //If both are irregular there can just be converted
+                if(!LengthIn && !LengthOut)
+                {
+                    return convertVolume(from, to, value) * getPrefix(fromPref) / getPrefix(toPref);
+                }
+                //If there is an irregular input unit base and an unit base of length output
+                //this is converted in cubic meter and then calls convertUnit() recursively
+                //with unit base of length inputs and outputs
+                if(!LengthIn && LengthOut)
+                {
+                    volumeInMETER = convertVolume(from, CUBICMETER, value) * getPrefix(fromPref);
+                    return convertUnit(VOLUME, NOPREFIX, METER, toPref, to, volumeInMETER);
+                }
+                //If there is a regular input unit base of length and an irregular unit base output
+                //this is converted to cubic meter and then calls convertUnit() recursively
+                //with both irregular types in input and output
+                if(LengthIn && !LengthOut)
+                {
+                    volumeInMETER = convertUnit(VOLUME, fromPref, from, NOPREFIX, METER, value);
+                    return convertVolume(CUBICMETER, to, volumeInMETER) / getPrefix(toPref);
+                }
+                //If both input and output are unit bases of length there are calculated like area
+                //with the difference that the factors are taken to the power of 3
+                if(LengthIn && LengthOut)
+                {
+                    return pow(convertUnit(from, to, 1.),3)* value  * pow(getPrefix(fromPref),3) / pow(getPrefix(toPref),3);
+                }
+        } break;
+        default : throw "Wrong Dimension in function convertUnit. Check enum unitDimension for types.";
+    }
+    throw "Wrong Dimension in function convertUnit. Check enum unitDimension for types.";
+}
+//Overloded function which is only for Speed
+template <typename T>
+T convertUnit(unitBase from, unitBase to, double FlightLevel, const atmosphere &atm, T value)
+{
+    T speedInMeterPerSecond;
+    //Do you need to know the "air"(flight level/temperature/pressure) to calculate the speed?
+    bool airDependentIn = true, airDependentOut = true;
+    if(from == KNOTS || from == METERPERSECOND || from == KILOMETERPERHOUR || from == FOOTPERMINUTE)
+    {
+        airDependentIn = false;
+    }
+    if(to == KNOTS || to == METERPERSECOND || to == KILOMETERPERHOUR || to == FOOTPERMINUTE)
+    {
+        airDependentOut = false;
+    }
+    //If both types are air independent it is a simple factor calculation
+    if(!airDependentIn && !airDependentOut)
+    {
+        return convertSpeed(from, to, value);
+    }
+    //Extra If to break the function running indefinitely
+    //Meter per second to Mach can easily be converted if you know the speed of sound
+        if(from == METERPERSECOND && to == MACH)
+        {
+            return value / atm.getSpeedOfSound(FlightLevel);
+        }
+        if(from == MACH && to == METERPERSECOND)
+        {
+            return value * atm.getSpeedOfSound(FlightLevel);
+        }
+    //If there is an air independent input type it is converted to meter per second
+    //Then there is a recursive conversion between meter per second and Mach
+    //Then Mach is converted to the air dependent output type
+    if(!airDependentIn && airDependentOut)
+    {
+        speedInMeterPerSecond = convertSpeed(from, METERPERSECOND, value);
+        speedInMeterPerSecond = convertUnit(METERPERSECOND, MACH, FlightLevel, atm, speedInMeterPerSecond);
+        return convertUnit(MACH, to, FlightLevel, atm, speedInMeterPerSecond);
+    }
+    //If there is an air dependent input type it is converted to Mach
+    //Then there is a recursive conversion between Mach and meter per second
+    //Then meter per second is converted to the air independent output type
+    if(airDependentIn && !airDependentOut)
+    {
+        speedInMeterPerSecond = convertUnit(from, MACH, FlightLevel, atm, value);
+        speedInMeterPerSecond = convertUnit(MACH, METERPERSECOND, FlightLevel, atm, speedInMeterPerSecond);
+        return convertSpeed(METERPERSECOND, to, speedInMeterPerSecond);
+    }
+    //Both types depend on FlightLevel
+    //Switch case construct to call the specific conversion functions in unitConversionConf.h
+    if(airDependentIn && airDependentOut)
+    {
+        switch (from)
+        {
+        case MACH :
+            {
+                switch (to)
+                {
+                case MACH : return value; break;
+                case TRUEAIRSPEED : return mach2tas(value, FlightLevel, atm); break;
+                case CALIBRATEDAIRSPEED : return mach2cas(value, FlightLevel, atm); break;
+                default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+                }
+            }
+        case TRUEAIRSPEED :
+            {
+                switch (to)
+                {
+                case MACH : return tas2mach(value, FlightLevel, atm); break;
+                case TRUEAIRSPEED : return value; break;
+                case CALIBRATEDAIRSPEED : return tas2cas(value, FlightLevel, atm); break;
+                default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+                }
+            }
+        case CALIBRATEDAIRSPEED :
+            {
+                switch (to)
+                {
+                case MACH : return cas2mach(value, FlightLevel, atm); break;
+                case TRUEAIRSPEED : return cas2tas(value, FlightLevel, atm); break;
+                case CALIBRATEDAIRSPEED : return value; break;
+                default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+                }
+            }
+        default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+        }
+    }
+    throw "Wrong Input Unit in function convertUnit. Check enum unitBase for types.";
+}
+#endif // UNITCONVERSION_UNITCONVERSION_H_
diff --git a/unitConversion/include/unitConversion/unitConversionConf.h b/unitConversion/include/unitConversion/unitConversionConf.h
new file mode 100644
index 00000000..4f8200e0
--- /dev/null
+++ b/unitConversion/include/unitConversion/unitConversionConf.h
@@ -0,0 +1,818 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#ifndef UNITCONVERSION_UNITCONVERSIONCONF_H_
+#define UNITCONVERSION_UNITCONVERSIONCONF_H_
+
+#include <atmosphere/atmosphere.h>
+#include <cmath>
+#include "unitBase.h"
+
+//!   If you make any alterations be sure to update ALL other tools as well.
+//!   This works likes a no dependencies library in ALL tools.
+
+//own namespace to not pollute the namespace as well as
+// unpredictable behavior if these functions are used without the
+// necessary safety checks performed by convertUnit()
+namespace UnitConversionConfiguration
+{
+
+//!!!!!!!!!LENGTH!!!!!!!!!!!!!
+template <typename T>
+T convertFoot(unitBase to, T value)
+{
+    switch (to)
+    {
+    case FOOT : return value; break;
+    case INCH : return value * 12.; break;
+    case MILE : return value * 0.000189393939; break;
+    case METER : return value * 0.3048; break;
+    case NAUTICALMILE : return value * 0.000164578834; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertInch(unitBase to, T value)
+{
+    switch (to)
+    {
+    case FOOT : return value * 0.0833333333; break;
+    case INCH : return value; break;
+    case MILE : return value * 1.57828283 * pow(10, -5); break;
+    case METER : return value * 0.0254; break;
+    case NAUTICALMILE : return value * 1.37149028 * pow(10,-5); break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertMile(unitBase to, T value)
+{
+    switch (to)
+    {
+    case FOOT : return value * 5280.; break;
+    case INCH : return value * 63360.; break;
+    case MILE : return value; break;
+    case METER : return value * 1609.344; break;
+    case NAUTICALMILE : return value * 0.868976242; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertMeter(unitBase to, T value)
+{
+    switch (to)
+    {
+    case FOOT : return value * 3.2808399; break;
+    case INCH : return value * 39.3700787; break;
+    case MILE : return value * 0.000621371192; break;
+    case METER : return value; break;
+    case NAUTICALMILE : return value * 0.000539956803; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertNauticalMile(unitBase to, T value)
+{
+    switch (to)
+    {
+    case FOOT : return value * 6076.11549; break;
+    case INCH : return value * 72913.3858; break;
+    case MILE : return value * 1.15077945; break;
+    case METER : return value * 1852.; break;
+    case NAUTICALMILE : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertLength function handles all length types.
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertLength(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case FOOT : return convertFoot(to, value); break;
+    case INCH : return convertInch(to, value); break;
+    case MILE : return convertMile(to, value); break;
+    case METER : return convertMeter(to, value); break;
+    case NAUTICALMILE : return convertNauticalMile(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+
+//!!!!!!!!!!!!VOLUME!!!!!!!!!!!!!
+template <typename T>
+T convertGallon(unitBase to, T value)
+{
+    switch (to)
+    {
+    case GALLON : return value; break;
+    case CUBICMETER : return value * 0.00378541178; break;
+    case LITER : return value * 3.78541178; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertCubicMeter(unitBase to, T value)
+{
+    switch (to)
+    {
+    case GALLON : return value * 264.172052; break;
+    case CUBICMETER : return value; break;
+    case LITER : return value * 1000.; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertLiter(unitBase to, T value)
+{
+    switch (to)
+    {
+    case GALLON : return value * 0.264172052; break;
+    case CUBICMETER : return value * 0.001; break;
+    case LITER : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertVolume function handles some Volume types.
+//Cubic length types are handled in convertUnit(VOLUME,..)
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertVolume(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case GALLON : return convertGallon(to, value); break;
+    case CUBICMETER : return convertCubicMeter(to, value); break;
+    case LITER : return convertLiter(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+
+//!!!!!!!!!!!!!ENERGY!!!!!!!!!!!!!!!
+template <typename T>
+T convertBritishThermalUnit(unitBase to, T value)
+{
+    switch (to)
+    {
+    case BRITISHTHERMALUNIT : return value; break;
+    case FOOTPOUND : return value * 778.169262; break;
+    case WATTHOUR : return value * 0.29307107; break;
+    case GRAMFORCEMETER : return value * 107585.756; break;
+    case NEWTONMETER : return value * 1055.05585; break;
+    case JOULE : return value * 1055.05585; break;
+    case CALORIES : return value * 252.164401; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertFootPound(unitBase to, T value)
+{
+    switch (to)
+    {
+    case BRITISHTHERMALUNIT : return value * 0.00128506746; break;
+    case FOOTPOUND : return value; break;
+    case WATTHOUR : return value * 0.000376616097; break;
+    case GRAMFORCEMETER : return value * 138.254954; break;
+    case NEWTONMETER : return value * 1.35581795; break;
+    case JOULE : return value * 1.35581795; break;
+    case CALORIES : return value * 0.324048267; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertWattHour(unitBase to, T value)
+{
+    switch (to)
+    {
+    case BRITISHTHERMALUNIT : return value * 3.41214163; break;
+    case FOOTPOUND : return value * 2655.22374; break;
+    case WATTHOUR : return value; break;
+    case GRAMFORCEMETER : return value * 367097.837; break;
+    case NEWTONMETER : return value * 3600.; break;
+    case JOULE : return value * 3600.; break;
+    case CALORIES : return value * 860.42065; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertGramForceMeter(unitBase to, T value)
+{
+    switch (to)
+    {
+    case BRITISHTHERMALUNIT : return value * 9.29491076 * pow(10,-6); break;
+    case FOOTPOUND : return value * 0.00723301385; break;
+    case WATTHOUR : return value * 2.72406944 * pow(10,-6) ; break;
+    case GRAMFORCEMETER : return value * 107.585756; break;
+    case NEWTONMETER : return value * 0.00980665; break;
+    case JOULE : return value * 0.00980665; break;
+    case CALORIES : return value * 0.0023438456; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertNewtonMeter(unitBase to, T value)
+{
+    switch (to)
+    {
+    case BRITISHTHERMALUNIT : return value * 0.239005736; break;
+    case FOOTPOUND : return value * 0.737562149; break;
+    case WATTHOUR : return value * 0.000277777778; break;
+    case GRAMFORCEMETER : return value * 101.971621; break;
+    case NEWTONMETER : return value; break;
+    case JOULE : return value; break;
+    case CALORIES : return value * 0.239005736; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertJoule(unitBase to, T value)
+{
+    switch (to)
+    {
+    case BRITISHTHERMALUNIT : return value * 0.239005736; break;
+    case FOOTPOUND : return value * 0.737562149; break;
+    case WATTHOUR : return value * 0.000277777778; break;
+    case GRAMFORCEMETER : return value * 101.971621; break;
+    case NEWTONMETER : return value; break;
+    case JOULE : return value; break;
+    case CALORIES : return value * 0.239005736; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertCalories(unitBase to, T value)
+{
+    switch (to)
+    {
+    case BRITISHTHERMALUNIT : return value * 0.00396566683; break;
+    case FOOTPOUND : return value * 3.08596003; break;
+    case WATTHOUR : return value * 0.00116222222; break;
+    case GRAMFORCEMETER : return value * 426.649264; break;
+    case NEWTONMETER : return value * 4.18400; break;
+    case JOULE : return value * 4.18400; break;
+    case CALORIES : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertEnergy function handles all energy types.
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertEnergy(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case BRITISHTHERMALUNIT : return convertBritishThermalUnit(to, value); break;
+    case FOOTPOUND : return convertFootPound(to, value); break;
+    case WATTHOUR : return convertWattHour(to, value); break;
+    case GRAMFORCEMETER : return convertGramForceMeter(to, value); break;
+    case NEWTONMETER : return convertNewtonMeter(to, value); break;
+    case JOULE : return convertJoule(to, value); break;
+    case CALORIES : return convertCalories(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//!!!!!!!!!!!!!!!POWER!!!!!!!!!!!!!!!!!
+template <typename T>
+T convertHorsePower(unitBase to, T value)
+{
+    switch (to)
+    {
+    case HORSEPOWER : return value; break;
+    case WATT : return value * 745.699872; break;
+    case FOOTPOUNDFORCEPERSECOND : return value * 550.; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertWatt(unitBase to, T value)
+{
+    switch (to)
+    {
+    case HORSEPOWER : return value * 0.00134102209; break;
+    case WATT : return value; break;
+    case FOOTPOUNDFORCEPERSECOND : return value * 0.737562149; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertFootPoundForcePerSecond(unitBase to, T value)
+{
+    switch (to)
+    {
+    case HORSEPOWER : return value * 0.001818182; break;
+    case WATT : return value * 1.355817948; break;
+    case FOOTPOUNDFORCEPERSECOND : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertPower function handles all power types.
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertPower(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case HORSEPOWER : return convertHorsePower(to, value); break;
+    case WATT : return convertWatt(to, value); break;
+    case FOOTPOUNDFORCEPERSECOND : return convertFootPoundForcePerSecond(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+
+//!!!!!!!!!!!!!!SPEED!!!!!!!!!!!!!!!!!!
+//functions with name tas2cas/cas2tas/tas2mach/mach2tas/cas2mach/mach2tas
+// are take from previous mission analysis project at revision 3902
+// air dependent calculations are handled in them
+template <typename T>
+T tas2cas(T TAS, double FL, const atmosphere &atm)
+{
+    double mu((1.4-1)/1.4);
+    const double &p_0 = atm.p_0;
+    const double &r_0 = atm.rho_0;
+    double p = atm.getPressure(FL);
+    double r = atm.getDensity(FL);
+
+    return sqrt(2.*p_0/mu/r_0*(pow((1.+p/p_0*(pow((1+mu/2*r/p*TAS*TAS),1./mu)-1.)),mu)-1.));
+}
+template <typename T>
+T cas2tas(T CAS, double FL, const atmosphere &atm)
+{
+    double mu((1.4-1)/1.4);
+    const double &p_0 = atm.p_0;
+    const double &r_0 = atm.rho_0;
+    double p = atm.getPressure(FL);
+    double r = atm.getDensity(FL);
+
+    return sqrt(2.*p/mu/r*(pow((1.+p_0/p*(pow((1+mu/2*r_0/p_0*CAS*CAS),1./mu)-1.)),mu)-1.));
+}
+template <typename T>
+T tas2mach(T TAS, double FL, const atmosphere &atm)
+{
+    return TAS/atm.getSpeedOfSound(FL);
+}
+template <typename T>
+T mach2tas(T M, double FL, const atmosphere &atm)
+{
+    return M*atm.getSpeedOfSound(FL);
+}
+template <typename T>
+T cas2mach(T CAS, double FL, const atmosphere &atm)
+{
+    double mu((1.4-1)/1.4);
+    const double &p_0 = atm.p_0;
+    const double &r_0 = atm.rho_0;
+    double p = atm.getPressure(FL);
+    double r = atm.getDensity(FL);
+
+    return sqrt(2.*p/mu/r*(pow((1.+p_0/p*(pow((1+mu/2*r_0/p_0*CAS*CAS),1./mu)-1.)),mu)-1.))/atm.getSpeedOfSound(FL);
+}
+template <typename T>
+T mach2cas(T M, double FL, const atmosphere &atm)
+{
+    double mu((1.4-1)/1.4);
+    const double &p_0 = atm.p_0;
+    const double &r_0 = atm.rho_0;
+    double p = atm.getPressure(FL);
+    double r = atm.getDensity(FL);
+    double a = atm.getSpeedOfSound(FL);
+
+    return sqrt(2.*p_0/mu/r_0*(pow((1.+p/p_0*(pow((1+mu/2*r/p*M*M*a*a),1./mu)-1.)),mu)-1.));
+}
+template <typename T>
+T convertKnots(unitBase to, T value)
+{
+    switch (to)
+    {
+    case KNOTS : return value; break;
+    case METERPERSECOND : return value * 0.514444444; break;
+    case KILOMETERPERHOUR : return value * 1.85200; break;
+    case FOOTPERMINUTE : return value * 101.2677165354331; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertMeterPerSecond(unitBase to, T value)
+{
+    switch (to)
+    {
+    case KNOTS : return value * 1.94384449; break;
+    case METERPERSECOND : return value; break;
+    case KILOMETERPERHOUR : return value * 3.6; break;
+    case FOOTPERMINUTE : return value * 196.8503937; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertKiloMeterPerHour(unitBase to, T value)
+{
+    switch (to)
+    {
+    case KNOTS : return value * 0.539956803; break;
+    case METERPERSECOND : return value * 0.277777778; break;
+    case KILOMETERPERHOUR : return value; break;
+    case FOOTPERMINUTE : return value * 54.68064; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertFootPerMinute(unitBase to, T value)
+{
+    switch (to)
+    {
+    case KNOTS : return value * 0.009874815333; break;
+    case METERPERSECOND : return value * 0.00508; break;
+    case KILOMETERPERHOUR : return value * 0.018288; break;
+    case FOOTPERMINUTE : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertSpeed function handles air independent speed types.
+//conversion of air dependent to air independent speed is handled
+// in convertUnit(...,...,FlightLevel,atm,...)
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertSpeed(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case KNOTS : return convertKnots(to, value); break;
+    case METERPERSECOND : return convertMeterPerSecond(to, value); break;
+    case KILOMETERPERHOUR : return convertKiloMeterPerHour(to, value); break;
+    case FOOTPERMINUTE : return convertFootPerMinute(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+
+//!!!!!!!!!!!TIME!!!!!!!!!!!!!!!!!!!!!
+template <typename T>
+T convertSecond(unitBase to, T value)
+{
+    switch (to)
+    {
+    case SECOND : return value; break;
+    case MINUTE : return value * 0.0166666667; break;
+    case HOUR : return value * 0.000277777778; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertMinute(unitBase to, T value)
+{
+    switch (to)
+    {
+    case SECOND : return value * 60.; break;
+    case MINUTE : return value; break;
+    case HOUR : return value * 0.0166666667; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertHour(unitBase to, T value)
+{
+    switch (to)
+    {
+    case SECOND : return value * 3600.; break;
+    case MINUTE : return value * 60.; break;
+    case HOUR : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertTime function handles all time types.
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertTime(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case SECOND : return convertSecond(to, value); break;
+    case MINUTE : return convertMinute(to, value); break;
+    case HOUR : return convertHour(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+
+//!!!!!!!!!!!!!!!!!!RADIAN/DEGREE!!!!!!!!!!!!!!!!!!!!!
+template <typename T>
+T convertRadian(unitBase to, T value)
+{
+    switch (to)
+    {
+    case RADIAN : return value; break;
+    case DEGREE : return value * 57.2957795; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertDegree(unitBase to, T value)
+{
+    switch (to)
+    {
+    case RADIAN : return value * 0.0174532925; break;
+    case DEGREE : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertRadianDegree function handles all Radian or Degree types.
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertRadianDegree(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case RADIAN : return convertRadian(to, value); break;
+    case DEGREE : return convertDegree(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+
+//!!!!!!!!!!!!!!!!!PRESSURE!!!!!!!!!!!!!!!!!!!!!!!
+template <typename T>
+T convertPascal(unitBase to, T value)
+{
+    switch (to)
+    {
+    case PASCAL : return value; break;
+    case BAR : return value * 1.0 * pow(10,-5); break;
+    case ATMOSPHERE : return value * 9.86923267 * pow(10,-6); break;
+    case PSI : return value * 0.000145037738; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertBar(unitBase to, T value)
+{
+    switch (to)
+    {
+    case PASCAL : return value * 100000.; break;
+    case BAR : return value; break;
+    case ATMOSPHERE : return value * 0.986923267; break;
+    case PSI : return value * 14.5037738; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertAtmosphere(unitBase to, T value)
+{
+    switch (to)
+    {
+    case PASCAL : return value * 101325.; break;
+    case BAR : return value * 1.01325; break;
+    case ATMOSPHERE : return value; break;
+    case PSI : return value * 14.6959488; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertPsi(unitBase to, T value)
+{
+    switch (to)
+    {
+    case PASCAL : return value * 6894.75729; break;
+    case BAR : return value * 0.0689475729; break;
+    case ATMOSPHERE : return value * 0.0680459639; break;
+    case PSI : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertPressure function handles all pressure types.
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertPressure(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case PASCAL : return convertPascal(to, value); break;
+    case BAR : return convertBar(to, value); break;
+    case ATMOSPHERE : return convertAtmosphere(to, value); break;
+    case PSI : return convertPsi(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+
+//!!!!!!!!!!!!!!!!!MASS!!!!!!!!!!!!!!!!!!!!!!
+template <typename T>
+T convertGram(unitBase to, T value)
+{
+    switch (to)
+    {
+    case GRAM : return value; break;
+    case POUND : return value * 0.00220462262; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertPound(unitBase to, T value)
+{
+    switch (to)
+    {
+    case GRAM : return value * 453.59237; break;
+    case POUND : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertMass function handles all mass types.
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertMass(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case GRAM : return convertGram(to, value); break;
+    case POUND : return convertPound(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//!!!!!!!!!!!!!!!!!FORCE!!!!!!!!!!!!!!!!!!!!!!
+template <typename T>
+T convertNewton(unitBase to, T value)
+{
+    switch (to)
+    {
+    case NEWTON : return value; break;
+    case DYN : return value * 1.0 * pow(10,5.); break;
+    case KILOPOND : return value * 0.10197162129779282425700927431896; break;
+    case POUNDFORCE : return value * 0.22480894309971048291003941340318; break;
+    case POUNDAL : return value * 7.2330138512098943806749934824484; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertDyn(unitBase to, T value)
+{
+    switch (to)
+    {
+    case NEWTON : return value * 1.0 * pow(10,-5.); break;
+    case DYN : return value; break;
+    case KILOPOND : return value * 0.10197162129779282425700927431896 * pow(10,-5.); break;
+    case POUNDFORCE : return value * 0.22480894309971048291003941340318  * pow(10,-5.); break;
+    case POUNDAL : return value * 7.2330138512098943806749934824484 * pow(10,-5.); break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertKilopond(unitBase to, T value)
+{
+    switch (to)
+    {
+    case NEWTON : return value * 9.80665; break;
+    case DYN : return value * 9.80665 * pow(10,5.); break;
+    case KILOPOND : return value; break;
+    case POUNDFORCE : return value * 2.2046226218487758072297380134503; break;
+    case POUNDAL : return value * 70.931635283967510728246424834653; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertPoundforce(unitBase to, T value)
+{
+    switch (to)
+    {
+    case NEWTON : return value * 4.4482216152605; break;
+    case DYN : return value  * 4.4482216152605 * pow(10,5.); break;
+    case KILOPOND : return value * 0.45359237; break;
+    case POUNDFORCE : return value; break;
+    case POUNDAL : return value * 32.174048556430446194225721784777; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertPoundal(unitBase to, T value)
+{
+    switch (to)
+    {
+    case NEWTON : return value * 0.138254954376; break;
+    case DYN : return value  * 0.138254954376 * pow(10,5.); break;
+    case KILOPOND : return value * 0.01409808185017309682715300331918; break;
+    case POUNDFORCE : return value * 1.0 / 32.174048556430446194225721784777; break;
+    case POUNDAL : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertForce function handles all force types.
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertForce(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case NEWTON : return convertNewton(to, value); break;
+    case DYN : return convertDyn(to, value); break;
+    case KILOPOND : return convertKilopond(to, value); break;
+    case POUNDFORCE : return convertPoundforce(to, value); break;
+    case POUNDAL : return convertPoundal(to, value); break;
+    default : throw "Wrong Dimension in function convertUnit. Check enum unitBase for types.";
+    }
+}
+
+//!!!!!!!!!!!!!!!!!TEMPERATURE!!!!!!!!!!!!!!!!!
+// Conversion equations taken from "en.wikipedia.org/wiki/Conversion_of_units_of_temperature"
+template <typename T>
+T convertFahrenheit(unitBase to, T value)
+{
+    switch (to)
+    {
+    case FAHRENHEIT : return value; break;
+    case KELVIN : return (value + 459.67) * 5 / 9; break;
+    case CELCIUS : return (value - 32) * 5 / 9; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertKelvin(unitBase to, T value)
+{
+    switch (to)
+    {
+    case FAHRENHEIT : return value * 1.8 - 459.67; break;
+    case KELVIN : return value; break;
+    case CELCIUS : return value - 273.15; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+template <typename T>
+T convertCelcius(unitBase to, T value)
+{
+    switch (to)
+    {
+    case FAHRENHEIT : return value * 1.8 + 32; break;
+    case KELVIN : return value + 273.15; break;
+    case CELCIUS : return value; break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+//convertTemperature function handles all temperature types.
+//Makes sure input base to output base uses right value.
+//Calls specific input base function.
+template <typename T>
+T convertTemperature(unitBase from, unitBase to, T value)
+{
+    switch (from)
+    {
+    case FAHRENHEIT : return convertFahrenheit(to, value); break;
+    case KELVIN : return convertKelvin(to, value); break;
+    case CELCIUS : return convertCelcius(to, value); break;
+    default : throw "Wrong Output Unit in function convertUnit. Check enum unitBase for types.";
+    }
+}
+
+//!!!!!!!!!!!!!!PREFIX!!!!!!!!!!!!!!!!!!!!!!
+//Standard SI unit prefix operator
+inline long double getPrefix(unitPrefix pref)
+{
+    switch (pref)
+    {
+        case YOTTA : return pow(10,24); break;
+        case ZETTA : return pow(10,21); break;
+        case EXA : return pow(10,18); break;
+        case PETA : return pow(10,15); break;
+        case TERA : return pow(10,12); break;
+        case GIGA : return pow(10,9); break;
+        case MEGA : return pow(10,6); break;
+        case KILO : return pow(10,3); break;
+        case HECTO : return pow(10,2); break;
+        case DECA : return pow(10,1); break;
+        case NOPREFIX : return pow(10,0); break;
+        case DECI : return pow(10,-1); break;
+        case CENTI : return pow(10,-2); break;
+        case MILLI : return pow(10,-3); break;
+        case MICRO : return pow(10,-6); break;
+        case NANO : return pow(10,-9); break;
+        case PIKO : return pow(10,-12); break;
+        case FEMTO : return pow(10,-15); break;
+        case ATTO : return pow(10,-18); break;
+        case ZEPTO : return pow(10,-21); break;
+        case YOKTO : return pow(10,-24); break;
+        default : throw "Wrong Prefix in function convertUnit. Check enum unitPrefix for types.";
+    }
+}
+
+}
+#endif // UNITCONVERSION_UNITCONVERSIONCONF_H_
diff --git a/unitConversion/pyunitconversion/pyproject.toml b/unitConversion/pyunitconversion/pyproject.toml
new file mode 100644
index 00000000..0fd9005f
--- /dev/null
+++ b/unitConversion/pyunitconversion/pyproject.toml
@@ -0,0 +1,18 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[tool.setuptools.package-data]
+pyunitconversion = ["*.so", "*.dll", "*.pyd"]
+
+[project]
+name = "pyunitconversion"
+version = "3.0.0"
+description = "Python binding of the unitconversion C++ library of UNICADO"
+requires-python = ">=3.10"
+authors = [
+    {name = "Christopher Ruwisch", email = "christopher.ruwisch@tu-berlin.de"},
+]
+classifiers = [
+"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
+]
diff --git a/unitConversion/pyunitconversion/pyunitconversion/__init__.py b/unitConversion/pyunitconversion/pyunitconversion/__init__.py
new file mode 100644
index 00000000..5a5b7095
--- /dev/null
+++ b/unitConversion/pyunitconversion/pyunitconversion/__init__.py
@@ -0,0 +1,30 @@
+# UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+#
+# Copyright (C) 2025 UNICADO consortium
+#
+# 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 3 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, see <https://www.gnu.org/licenses/>.
+#
+# Description:
+# This file is part of UNICADO.
+
+"""Python package of the unitConversion C++ library.
+
+    Imports the pre-build binary and exposes its interface.
+"""
+# Package information
+__version__ = "0.5.0"
+__author__ = "Christopher Ruwisch, christopher.ruwisch@tu-berlin.de"
+
+# Import the binary and expose all members
+from .py11unitConversion import *
diff --git a/unitConversion/readMe.txt b/unitConversion/readMe.txt
new file mode 100644
index 00000000..fc331bdc
--- /dev/null
+++ b/unitConversion/readMe.txt
@@ -0,0 +1,8 @@
+***** READ-ME zur Verwendung der UnitConversion *****
+
+1) Kopieren des Ordners unitConversion in den Source-Ordner des zu bearbeitenden Moduls (mit Au�nahme "testUnitConversion.cpp", die nur Testzwecken dient)
+2) Hinzufuegen der neuen Header-Dateien zum jeweiligen Modul in der CodeBlocks-Projektdatei <myModule>.cbp (rechte Maustaste auf Modulnamen im Editorbaum von CodeBlocks und dann "Add Files")
+3) ggf. Hinzufuegen der Aerodynamik-Klassen, falls diese noch nicht vorhanden sind (Ordner ISA), da diese beim Umwandeln einiger Einheiten benoetigt werden
+4) Unter Project->Build Options->Search Directory->Compiler die Ordner ISA und unitConversion hinzufuegen
+5) Ersetzen aller hardgecodeter Umrechnungen unter Verwendung der Befehle der UnitConversion
+6) Ausfuehren von micadoCheck
\ No newline at end of file
diff --git a/unitConversion/src/py_unit_conversion.cpp b/unitConversion/src/py_unit_conversion.cpp
new file mode 100644
index 00000000..eed34409
--- /dev/null
+++ b/unitConversion/src/py_unit_conversion.cpp
@@ -0,0 +1,160 @@
+/*
+ * UNICADO - UNIversity Conceptual Aircraft Design and Optimization
+ *
+ * Copyright (C) 2025 UNICADO consortium
+ *
+ * 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 3 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, see <https://www.gnu.org/licenses/>.
+ *
+ * Description:
+ * This file is part of UNICADO.
+ */
+
+#include <pybind11/pybind11.h>
+
+#include "unitConversion/constants.h"
+
+class Constants {
+ public:
+  static constexpr double au = AU;                                                       // Example constant: Astronomical Unit in kilometers
+  static constexpr double amu_chemical = AMU_CHEMICAL;                                   // AMU Chemical in Kilogram
+  static constexpr double amu_physical = AMU_PHYSICAL;                                   // AMU Physical in Kilogram
+  static constexpr double atomic_mass_unit = ATOMIC_MASS_UNIT;                           // Atomic Mass Unit in Kilogram
+  static constexpr double avogadro_constant = AVOGADRO_CONSTANT;                         // Avogadro Constant in Particles/mol
+  static constexpr double bohr_radius = BOHR_RADIUS;                                     // Bohr Radius in Meter
+  static constexpr double boltzmann_constant = BOLTZMANN_CONSTANT;                       // Boltzmann Constant in Joule/Kelvin
+  static constexpr double coulombs_constant = COULOMBS_CONSTANT;                         // Coulomb's Constant in Newton*(Meter^2)/(Coulomb^2)
+  static constexpr double electron_rest_mass = ELECTRON_REST_MASS;                       // Electron Rest Mass in Kilogram
+  static constexpr double proton_mass = PROTON_MASS;                                     // Proton Mass in Kilogram
+  static constexpr double neutron_mass = NEUTRON_MASS;                                   // Neutron Mass in Kilogram
+  static constexpr double electron_electric_charge = ELECTRON_ELECTRIC_CHARGE;           // Electron Electric Charge in Coulomb
+  static constexpr double faraday_constant = FARADAY_CONSTANT;                           // Faraday Constant in Coulomb/mol
+  static constexpr double fine_structure_constant = FINE_STRUCTURE_CONSTANT;             // Fine Structure Constant
+  static constexpr double g_force = G_FORCE;                                             // G Force in Meter/Second^2
+  static constexpr double gravitational_constant = GRAVITATIONAL_CONSTANT;               // Gravitational Constant in Newton * (Meter^2) / (Kilogram^2)
+  static constexpr double gas_constant = GAS_CONSTANT;                                   // Gas Constant in Joule / (Kelvin * mol)
+  static constexpr double heat_capacity_water = HEAT_CAPACITY_WATER;                     // Specific heat capacity for water in J/(kg·K)
+  static constexpr double isentropic_exponent_dry_air = ISENTROPIC_EXPONENT_DRY_AIR;     // Isentropic exponent for dry air at 20 °C
+  static constexpr double specific_gas_constant_dry_air = SPECIFIC_GAS_CONSTANT_DRY_AIR; // Specific gas constant for dry air in J/(kg·K)
+  static constexpr double pi = PI;                                                       // Pi
+  static constexpr double planck_constant = PLANCK_CONSTANT;                             // Planck Constant in Joule * Second
+  static constexpr double speed_of_light = SPEED_OF_LIGHT;                               // Speed of Light in Meter/Second
+  static constexpr double standard_temperature = STANDARD_TEMPERATURE;                   // Standard Temperature in Kelvin
+  static constexpr double isa_temperature = ISA_TEMPERATURE;                             // ISA Temperature in Kelvin (ISO 2533)
+  static constexpr double isa_density = ISA_DENSITY;                                     // ISA Density in kg/m^3 (ISO 2533)
+  static constexpr double isa_pressure = ISA_PRESSURE;                                   // ISA Pressure in N/m^2 (ISO 2533)
+  static constexpr double sutherland_constant_dry_air = SUTHERLAND_CONSTANT_DRY_AIR;     // Sutherland Constant for dry air in Kelvin
+  static constexpr double dynamic_viscosity_sealevel = DYNAMIC_VISCOSITY_SEALEVEL;       // Dynamic Viscosity at sea level in Pa·s
+  static constexpr double accuracy_low = ACCURACY_LOW;                                   // Accuracy constant - low
+  static constexpr double accuracy_medium = ACCURACY_MEDIUM;                             // Accuracy constant - medium
+  static constexpr double accuracy_high = ACCURACY_HIGH;                                 // Accuracy constant - high
+  static constexpr double transition_altitude = TRANSITION_ALTITUDE;                     // Transition altitude ATC limit FL100 in meters
+};
+
+namespace py = pybind11;
+
+/* === Python bindings === */
+PYBIND11_MODULE(py11unitConversion, m) {
+  m.doc() = "Python bindings for unitConversion.";
+  py::class_<Constants>(m, "constants")
+      .def_property_readonly_static(
+          "AU", [](py::object /* self */) { return Constants::au; }, "Astronomical Unit in kilometers")
+      .def_property_readonly_static(
+          "AMU_CHEMICAL", [](py::object /* self */) { return Constants::amu_chemical; }, "AMU Chemical in Kilogram")
+      .def_property_readonly_static(
+          "AMU_PHYSICAL", [](py::object /* self */) { return Constants::amu_physical; }, "AMU Physical in Kilogram")
+      .def_property_readonly_static(
+          "ATOMIC_MASS_UNIT", [](py::object /* self */) { return Constants::atomic_mass_unit; },
+          "Atomic Mass Unit in Kilogram")
+      .def_property_readonly_static(
+          "AVOGADRO_CONSTANT", [](py::object /* self */) { return Constants::avogadro_constant; },
+          "Avogadro Constant in Particles/mol")
+      .def_property_readonly_static(
+          "BOHR_RADIUS", [](py::object /* self */) { return Constants::bohr_radius; }, "Bohr Radius in Meter")
+      .def_property_readonly_static(
+          "BOLTZMANN_CONSTANT", [](py::object /* self */) { return Constants::boltzmann_constant; },
+          "Boltzmann Constant in Joule/Kelvin")
+      .def_property_readonly_static(
+          "COULOMBS_CONSTANT", [](py::object /* self */) { return Constants::coulombs_constant; },
+          "Coulomb's Constant in Newton*(Meter^2)/(Coulomb^2)")
+      .def_property_readonly_static(
+          "ELECTRON_REST_MASS", [](py::object /* self */) { return Constants::electron_rest_mass; },
+          "Electron Rest Mass in Kilogram")
+      .def_property_readonly_static(
+          "PROTON_MASS", [](py::object /* self */) { return Constants::proton_mass; }, "Proton Mass in Kilogram")
+      .def_property_readonly_static(
+          "NEUTRON_MASS", [](py::object /* self */) { return Constants::neutron_mass; }, "Neutron Mass in Kilogram")
+      .def_property_readonly_static(
+          "ELECTRON_ELECTRIC_CHARGE", [](py::object /* self */) { return Constants::electron_electric_charge; },
+          "Electron Electric Charge in Coulomb")
+      .def_property_readonly_static(
+          "FARADAY_CONSTANT", [](py::object /* self */) { return Constants::faraday_constant; },
+          "Faraday Constant in Coulomb/mol")
+      .def_property_readonly_static(
+          "FINE_STRUCTURE_CONSTANT", [](py::object /* self */) { return Constants::fine_structure_constant; },
+          "Fine Structure Constant")
+      .def_property_readonly_static(
+          "G_FORCE", [](py::object /* self */) { return Constants::g_force; }, "G Force in Meter/Second^2")
+      .def_property_readonly_static(
+          "GRAVITATIONAL_CONSTANT", [](py::object /* self */) { return Constants::gravitational_constant; },
+          "Gravitational Constant in Newton * (Meter^2) / (Kilogram^2)")
+      .def_property_readonly_static(
+          "GAS_CONSTANT", [](py::object /* self */) { return Constants::gas_constant; },
+          "Gas Constant in Joule / (Kelvin * mol)")
+      .def_property_readonly_static(
+          "HEAT_CAPACITY_WATER", [](py::object /* self */) { return Constants::heat_capacity_water; },
+          "Specific heat capacity for water in J/(kg·K)")
+      .def_property_readonly_static(
+          "ISENTROPIC_EXPONENT_DRY_AIR", [](py::object /* self */) { return Constants::isentropic_exponent_dry_air; },
+          "Isentropic exponent for dry air at 20 °C")
+      .def_property_readonly_static(
+          "SPECIFIC_GAS_CONSTANT_DRY_AIR",
+          [](py::object /* self */) { return Constants::specific_gas_constant_dry_air; },
+          "Specific gas constant for dry air in J/(kg·K)")
+      .def_property_readonly_static(
+          "PI", [](py::object /* self */) { return Constants::pi; }, "Pi")
+      .def_property_readonly_static(
+          "PLANCK_CONSTANT", [](py::object /* self */) { return Constants::planck_constant; },
+          "Planck Constant in Joule * Second")
+      .def_property_readonly_static(
+          "SPEED_OF_LIGHT", [](py::object /* self */) { return Constants::speed_of_light; },
+          "Speed of Light in Meter/Second")
+      .def_property_readonly_static(
+          "STANDARD_TEMPERATURE", [](py::object /* self */) { return Constants::standard_temperature; },
+          "Standard Temperature in Kelvin")
+      .def_property_readonly_static(
+          "ISA_TEMPERATURE", [](py::object /* self */) { return Constants::isa_temperature; },
+          "ISA Temperature in Kelvin (ISO 2533)")
+      .def_property_readonly_static(
+          "ISA_DENSITY", [](py::object /* self */) { return Constants::isa_density; },
+          "ISA Density in kg/m^3 (ISO 2533)")
+      .def_property_readonly_static(
+          "ISA_PRESSURE", [](py::object /* self */) { return Constants::isa_pressure; },
+          "ISA Pressure in N/m^2 (ISO 2533)")
+      .def_property_readonly_static(
+          "SUTHERLAND_CONSTANT_DRY_AIR", [](py::object /* self */) { return Constants::sutherland_constant_dry_air; },
+          "Sutherland Constant for dry air in Kelvin")
+      .def_property_readonly_static(
+          "DYNAMIC_VISCOSITY_SEALEVEL", [](py::object /* self */) { return Constants::dynamic_viscosity_sealevel; },
+          "Dynamic Viscosity at sea level in Pa·s")
+      .def_property_readonly_static(
+          "ACCURACY_LOW", [](py::object /* self */) { return Constants::accuracy_low; }, "Accuracy constant - low")
+      .def_property_readonly_static(
+          "ACCURACY_MEDIUM", [](py::object /* self */) { return Constants::accuracy_medium; },
+          "Accuracy constant - medium")
+      .def_property_readonly_static(
+          "ACCURACY_HIGH", [](py::object /* self */) { return Constants::accuracy_high; }, "Accuracy constant - high")
+      .def_property_readonly_static(
+          "TRANSITION_ALTITUDE", [](py::object /* self */) { return Constants::transition_altitude; },
+          "Transition altitude ATC limit FL100 in meters");
+}
-- 
GitLab